os/mm/devsoundextensions/telephonyaudiorouting/Server/inc/TelephonyAudioRoutingServerSession.h
First public contribution.
2 * Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
4 * This component and the accompanying materials are made available
5 * under the terms of "Eclipse Public License v1.0"
6 * which accompanies this distribution, and is available
7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
9 * Initial Contributors:
10 * Nokia Corporation - initial contribution.
14 * Description: Server-side session implementation
20 #ifndef TELEPHONYAUDIOROUTINGSERVERSESSION_H
21 #define TELEPHONYAUDIOROUTINGSERVERSESSION_H
23 #include "TelephonyAudioRoutingServer.h"
24 #include "TelephonyAudioRoutingClientServer.h"
25 #include "TelephonyAudioRouting.h"
27 class CTelephonyAudioRoutingServer;
30 * Server-side session implementation
33 * @lib TelephonyAudioRoutingServer.lib
34 * @since Series 60 3.1
36 class CTelephonyAudioRoutingServerSession : public CSession2
42 * C++ default constructor.
44 CTelephonyAudioRoutingServerSession(TInt aSessionId);
47 * Returns the session ID.
48 * @since Series 60 3.1
54 * Notifies the client-side session that the SetOutput request is complete.
55 * @since Series 60 3.1
56 * @param aOutput: client obj, aError: Error code of operation, aShowNote: for show note display
59 void SetOutputComplete(CTelephonyAudioRouting::TAudioOutput aOutput, TInt aError, TBool aShowNote);
62 * Notifies the client-side session that available audio outputs have changed.
63 * @since Series 60 3.1
64 * @param aOutputs: array of available outputs
67 void AvailableOutputsChanged( const TArray<CTelephonyAudioRouting::TAudioOutput>& aOutputs);
70 * Notifies the client-side session that the current audio output has changed.
71 * @since Series 60 3.1
72 * @param aMessage: server side message containing output info
75 void OutputChangedL(const RMessage2& aMessage);
78 * After output has been changed, this method notifies all other clients
79 * @since Series 60 3.1
80 * @params aOutput: client obj, TBool aShowNote
83 void OutputChanged(CTelephonyAudioRouting::TAudioOutput aOutput, TBool aShowNote);
86 * Notification that user has requested to change the audio output.
87 * @since Series 60 3.1
88 * @param aOutput: client obj
91 void OutputChangeRequested(CTelephonyAudioRouting::TAudioOutput aOutput);
95 ~CTelephonyAudioRoutingServerSession();
98 * Provides ref to server
99 * @since Series 60 3.1
101 * @return ref to CTelephonyAudioRoutingServer
103 inline CTelephonyAudioRoutingServer& Server();
107 * Handles the servicing of a client request that has been passed to the server.
109 void ServiceL(const RMessage2& aMessage);
112 * Handles an error from ServiceL()
113 * @since Series 60 3.1
114 * @param aMessage: server side message, aError: error code
117 void ServiceError(const RMessage2& aMessage,TInt aError);
120 * Send a request to audio policy to set audio output.
121 * @since Series 60 3.1
122 * @param aMessage: server side message for policy
125 void DoSetOutputL (const RMessage2& aMessage);
128 * Returns the number of available outputs to client-side session.
129 * @since Series 60 3.1
130 * @param aMessage: server side message
133 void GetNoOfAvailableOutputs (const RMessage2& aMessage);
136 * Returns the available audio outputs to client-side session.
137 * @since Series 60 3.1
138 * @param aMessage: server side message
141 void GetAvailableOutputsL (const RMessage2& aMessage);
144 * Add a message to message queue. Complete the message when output changes.
145 * @since Series 60 3.1
146 * @param aMessage: server side message
149 void NotifyIfOutputChangedL (const RMessage2& aMessage);
152 * Add a message to message queue. Complete the message when available audio
154 * @since Series 60 3.1
155 * @param aMessage: server side message
158 void NotifyIfAvailOutputsChangedL (const RMessage2& aMessage);
161 * Used by policy session to listen to any SetOutput request from other sessions.
162 * @since Series 60 3.1
163 * @param aMessage: server side message
166 void MonitorOutputChangeL (const RMessage2& aMessage);
169 * Set the policy session Id.
170 * @since Series 60 3.1
171 * @param aMessage: server side message
174 void SetPolicySessionId(const RMessage2& aMessage);
177 * Used by policy session to indicate that the SetOutput request is complete.
178 * @since Series 60 3.1
179 * @param aMessage: server side message
182 void OutputChangeCompleteL(const RMessage2& aMessage);
185 * Notify the client-side session that available outputs have changed.
186 * @since Series 60 3.1
187 * @param aMessage: server side message
190 void DoAvailableOutputsChangedL (const RMessage2& aMessage);
193 * Cancel the outstanding request.
194 * @since Series 60 3.1
195 * @param aMessage: server side message
198 void CancelRequestL(const RMessage2& aMessage);
201 * Session initialization.
202 * @since Series 60 3.1
203 * @param aMessage: server side message
206 void InitializeL(const RMessage2& aMessage);
209 * Gets default values form server for the client
210 * @since Series 60 3.1
211 * @param aMessage: server side message
214 void GetDefaultValuesL(const RMessage2& aMessage);
218 const TInt iSessionId;
219 RArray<RMessage2> iMessageArray;
220 RArray<CTelephonyAudioRouting::TAudioOutput> iSessionAvailableOutputs;
227 #endif // TELEPHONYAUDIOROUTINGSERVERSESSION_H