os/mm/devsoundextensions/telephonyaudiorouting/Server/inc/TelephonyAudioRoutingServerSession.h
author sl
Tue, 10 Jun 2014 14:32:02 +0200
changeset 1 260cb5ec6c19
permissions -rw-r--r--
Update contrib.
sl@0
     1
/*
sl@0
     2
* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
sl@0
     3
* All rights reserved.
sl@0
     4
* This component and the accompanying materials are made available
sl@0
     5
* under the terms of "Eclipse Public License v1.0"
sl@0
     6
* which accompanies this distribution, and is available
sl@0
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
sl@0
     8
*
sl@0
     9
* Initial Contributors:
sl@0
    10
* Nokia Corporation - initial contribution.
sl@0
    11
*
sl@0
    12
* Contributors:
sl@0
    13
*
sl@0
    14
* Description:   Server-side session implementation
sl@0
    15
*
sl@0
    16
*/
sl@0
    17
sl@0
    18
sl@0
    19
sl@0
    20
#ifndef TELEPHONYAUDIOROUTINGSERVERSESSION_H
sl@0
    21
#define TELEPHONYAUDIOROUTINGSERVERSESSION_H
sl@0
    22
sl@0
    23
#include "TelephonyAudioRoutingServer.h"
sl@0
    24
#include "TelephonyAudioRoutingClientServer.h"
sl@0
    25
#include "TelephonyAudioRouting.h"
sl@0
    26
sl@0
    27
class CTelephonyAudioRoutingServer;
sl@0
    28
sl@0
    29
/**
sl@0
    30
*  Server-side session implementation
sl@0
    31
*  
sl@0
    32
*
sl@0
    33
*  @lib TelephonyAudioRoutingServer.lib
sl@0
    34
*  @since Series 60 3.1
sl@0
    35
*/
sl@0
    36
class CTelephonyAudioRoutingServerSession : public CSession2
sl@0
    37
	{
sl@0
    38
		
sl@0
    39
	public:
sl@0
    40
	
sl@0
    41
		/**
sl@0
    42
        * C++ default constructor.
sl@0
    43
        */
sl@0
    44
		CTelephonyAudioRoutingServerSession(TInt aSessionId);
sl@0
    45
		
sl@0
    46
		/**
sl@0
    47
        * Returns the session ID.
sl@0
    48
        * @since Series 60 3.1
sl@0
    49
        * @return sessionId
sl@0
    50
        */
sl@0
    51
		TInt SessionId();
sl@0
    52
		
sl@0
    53
		/**
sl@0
    54
        * Notifies the client-side session that the SetOutput request is complete.
sl@0
    55
        * @since Series 60 3.1
sl@0
    56
        * @param aOutput: client obj, aError: Error code of operation, aShowNote: for show note display
sl@0
    57
        * @return void
sl@0
    58
        */
sl@0
    59
		void SetOutputComplete(CTelephonyAudioRouting::TAudioOutput aOutput, TInt aError, TBool aShowNote);
sl@0
    60
		
sl@0
    61
		/**
sl@0
    62
        * Notifies the client-side session that available audio outputs have changed.
sl@0
    63
        * @since Series 60 3.1
sl@0
    64
        * @param aOutputs: array of available outputs
sl@0
    65
        * @return void
sl@0
    66
        */
sl@0
    67
		void AvailableOutputsChanged( const TArray<CTelephonyAudioRouting::TAudioOutput>& aOutputs);
sl@0
    68
		
sl@0
    69
		/**
sl@0
    70
        * Notifies the client-side session that the current audio output has changed.
sl@0
    71
        * @since Series 60 3.1
sl@0
    72
        * @param aMessage: server side message containing output info
sl@0
    73
        * @return void
sl@0
    74
        */
sl@0
    75
		void OutputChangedL(const RMessage2& aMessage);
sl@0
    76
		
sl@0
    77
		/**
sl@0
    78
        * After output has been changed, this method notifies all other clients
sl@0
    79
        * @since Series 60 3.1
sl@0
    80
        * @params aOutput: client obj, TBool aShowNote
sl@0
    81
        * @return void
sl@0
    82
        */
sl@0
    83
		void OutputChanged(CTelephonyAudioRouting::TAudioOutput aOutput, TBool aShowNote);		
sl@0
    84
		
sl@0
    85
		/**
sl@0
    86
        * Notification that user has requested to change the audio output.
sl@0
    87
        * @since Series 60 3.1
sl@0
    88
        * @param aOutput: client obj
sl@0
    89
        * @return void
sl@0
    90
        */
sl@0
    91
		void OutputChangeRequested(CTelephonyAudioRouting::TAudioOutput aOutput);
sl@0
    92
sl@0
    93
 	private:
sl@0
    94
sl@0
    95
		~CTelephonyAudioRoutingServerSession();
sl@0
    96
		
sl@0
    97
		/**
sl@0
    98
        * Provides ref to server
sl@0
    99
        * @since Series 60 3.1
sl@0
   100
        * @param void
sl@0
   101
        * @return ref to CTelephonyAudioRoutingServer
sl@0
   102
        */
sl@0
   103
		inline CTelephonyAudioRoutingServer& Server();
sl@0
   104
		
sl@0
   105
		/**
sl@0
   106
        * From CSession2
sl@0
   107
        * Handles the servicing of a client request that has been passed to the server.
sl@0
   108
        */
sl@0
   109
		void ServiceL(const RMessage2& aMessage);
sl@0
   110
		
sl@0
   111
		/**
sl@0
   112
        * Handles an error from ServiceL()
sl@0
   113
        * @since Series 60 3.1
sl@0
   114
        * @param aMessage: server side message, aError: error code
sl@0
   115
        * @return void
sl@0
   116
        */
sl@0
   117
		void ServiceError(const RMessage2& aMessage,TInt aError);
sl@0
   118
		
sl@0
   119
		/**
sl@0
   120
        * Send a request to audio policy to set audio output.
sl@0
   121
        * @since Series 60 3.1
sl@0
   122
        * @param aMessage: server side message for policy
sl@0
   123
        * @return void
sl@0
   124
        */
sl@0
   125
		void DoSetOutputL (const RMessage2& aMessage);
sl@0
   126
		
sl@0
   127
		/**
sl@0
   128
        * Returns the number of available outputs to client-side session.
sl@0
   129
        * @since Series 60 3.1
sl@0
   130
        * @param aMessage: server side message
sl@0
   131
        * @return void
sl@0
   132
        */
sl@0
   133
		void GetNoOfAvailableOutputs (const RMessage2& aMessage);
sl@0
   134
		
sl@0
   135
		/**
sl@0
   136
        * Returns the available audio outputs to client-side session.
sl@0
   137
        * @since Series 60 3.1
sl@0
   138
        * @param aMessage: server side message
sl@0
   139
        * @return void
sl@0
   140
        */
sl@0
   141
		void GetAvailableOutputsL (const RMessage2& aMessage);
sl@0
   142
		
sl@0
   143
		/**
sl@0
   144
        * Add a message to message queue. Complete the message when output changes.
sl@0
   145
        * @since Series 60 3.1
sl@0
   146
        * @param aMessage: server side message
sl@0
   147
        * @return void
sl@0
   148
        */
sl@0
   149
		void NotifyIfOutputChangedL (const RMessage2& aMessage);
sl@0
   150
		
sl@0
   151
		/**
sl@0
   152
        * Add a message to message queue. Complete the message when available audio 
sl@0
   153
		* outputs change.
sl@0
   154
        * @since Series 60 3.1
sl@0
   155
        * @param aMessage: server side message
sl@0
   156
        * @return void
sl@0
   157
        */
sl@0
   158
		void NotifyIfAvailOutputsChangedL (const RMessage2& aMessage);
sl@0
   159
		
sl@0
   160
		/**
sl@0
   161
        * Used by policy session to listen to any SetOutput request from other sessions.
sl@0
   162
        * @since Series 60 3.1
sl@0
   163
        * @param aMessage: server side message
sl@0
   164
        * @return void
sl@0
   165
        */
sl@0
   166
		void MonitorOutputChangeL (const RMessage2& aMessage);
sl@0
   167
		
sl@0
   168
		/**
sl@0
   169
        * Set the policy session Id.
sl@0
   170
        * @since Series 60 3.1
sl@0
   171
        * @param aMessage: server side message
sl@0
   172
        * @return void
sl@0
   173
        */
sl@0
   174
		void SetPolicySessionId(const RMessage2& aMessage);
sl@0
   175
		
sl@0
   176
		/**
sl@0
   177
        * Used by policy session to indicate that the SetOutput request is complete.
sl@0
   178
        * @since Series 60 3.1
sl@0
   179
        * @param aMessage: server side message
sl@0
   180
        * @return void
sl@0
   181
        */
sl@0
   182
		void OutputChangeCompleteL(const RMessage2& aMessage);
sl@0
   183
		
sl@0
   184
		/**
sl@0
   185
        * Notify the client-side session that available outputs have changed.
sl@0
   186
        * @since Series 60 3.1
sl@0
   187
        * @param aMessage: server side message
sl@0
   188
        * @return void
sl@0
   189
        */
sl@0
   190
		void DoAvailableOutputsChangedL (const RMessage2& aMessage);
sl@0
   191
		
sl@0
   192
		/**
sl@0
   193
        * Cancel the outstanding request.
sl@0
   194
        * @since Series 60 3.1
sl@0
   195
        * @param aMessage: server side message
sl@0
   196
        * @return void
sl@0
   197
        */
sl@0
   198
		void CancelRequestL(const RMessage2& aMessage);
sl@0
   199
		
sl@0
   200
		/**
sl@0
   201
        * Session initialization.
sl@0
   202
        * @since Series 60 3.1
sl@0
   203
        * @param aMessage: server side message
sl@0
   204
        * @return void
sl@0
   205
        */
sl@0
   206
		void InitializeL(const RMessage2& aMessage);
sl@0
   207
		
sl@0
   208
		/**
sl@0
   209
        * Gets default values form server for the client
sl@0
   210
        * @since Series 60 3.1
sl@0
   211
        * @param aMessage: server side message
sl@0
   212
        * @return void
sl@0
   213
        */
sl@0
   214
		void GetDefaultValuesL(const RMessage2& aMessage);	
sl@0
   215
sl@0
   216
	private:
sl@0
   217
	
sl@0
   218
		const TInt iSessionId;
sl@0
   219
		RArray<RMessage2> iMessageArray;
sl@0
   220
   		RArray<CTelephonyAudioRouting::TAudioOutput> iSessionAvailableOutputs;		
sl@0
   221
  		TBool iPolicyFlag;
sl@0
   222
  		TBool iConnected;
sl@0
   223
  		
sl@0
   224
  	
sl@0
   225
  	};
sl@0
   226
	
sl@0
   227
#endif 		// TELEPHONYAUDIOROUTINGSERVERSESSION_H