sl@0: /* sl@0: * Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). sl@0: * All rights reserved. sl@0: * This component and the accompanying materials are made available sl@0: * under the terms of "Eclipse Public License v1.0" sl@0: * which accompanies this distribution, and is available sl@0: * at the URL "http://www.eclipse.org/legal/epl-v10.html". sl@0: * sl@0: * Initial Contributors: sl@0: * Nokia Corporation - initial contribution. sl@0: * sl@0: * Contributors: sl@0: * sl@0: * Description: Server-side session implementation sl@0: * sl@0: */ sl@0: sl@0: sl@0: sl@0: #ifndef TELEPHONYAUDIOROUTINGSERVERSESSION_H sl@0: #define TELEPHONYAUDIOROUTINGSERVERSESSION_H sl@0: sl@0: #include "TelephonyAudioRoutingServer.h" sl@0: #include "TelephonyAudioRoutingClientServer.h" sl@0: #include "TelephonyAudioRouting.h" sl@0: sl@0: class CTelephonyAudioRoutingServer; sl@0: sl@0: /** sl@0: * Server-side session implementation sl@0: * sl@0: * sl@0: * @lib TelephonyAudioRoutingServer.lib sl@0: * @since Series 60 3.1 sl@0: */ sl@0: class CTelephonyAudioRoutingServerSession : public CSession2 sl@0: { sl@0: sl@0: public: sl@0: sl@0: /** sl@0: * C++ default constructor. sl@0: */ sl@0: CTelephonyAudioRoutingServerSession(TInt aSessionId); sl@0: sl@0: /** sl@0: * Returns the session ID. sl@0: * @since Series 60 3.1 sl@0: * @return sessionId sl@0: */ sl@0: TInt SessionId(); sl@0: sl@0: /** sl@0: * Notifies the client-side session that the SetOutput request is complete. sl@0: * @since Series 60 3.1 sl@0: * @param aOutput: client obj, aError: Error code of operation, aShowNote: for show note display sl@0: * @return void sl@0: */ sl@0: void SetOutputComplete(CTelephonyAudioRouting::TAudioOutput aOutput, TInt aError, TBool aShowNote); sl@0: sl@0: /** sl@0: * Notifies the client-side session that available audio outputs have changed. sl@0: * @since Series 60 3.1 sl@0: * @param aOutputs: array of available outputs sl@0: * @return void sl@0: */ sl@0: void AvailableOutputsChanged( const TArray& aOutputs); sl@0: sl@0: /** sl@0: * Notifies the client-side session that the current audio output has changed. sl@0: * @since Series 60 3.1 sl@0: * @param aMessage: server side message containing output info sl@0: * @return void sl@0: */ sl@0: void OutputChangedL(const RMessage2& aMessage); sl@0: sl@0: /** sl@0: * After output has been changed, this method notifies all other clients sl@0: * @since Series 60 3.1 sl@0: * @params aOutput: client obj, TBool aShowNote sl@0: * @return void sl@0: */ sl@0: void OutputChanged(CTelephonyAudioRouting::TAudioOutput aOutput, TBool aShowNote); sl@0: sl@0: /** sl@0: * Notification that user has requested to change the audio output. sl@0: * @since Series 60 3.1 sl@0: * @param aOutput: client obj sl@0: * @return void sl@0: */ sl@0: void OutputChangeRequested(CTelephonyAudioRouting::TAudioOutput aOutput); sl@0: sl@0: private: sl@0: sl@0: ~CTelephonyAudioRoutingServerSession(); sl@0: sl@0: /** sl@0: * Provides ref to server sl@0: * @since Series 60 3.1 sl@0: * @param void sl@0: * @return ref to CTelephonyAudioRoutingServer sl@0: */ sl@0: inline CTelephonyAudioRoutingServer& Server(); sl@0: sl@0: /** sl@0: * From CSession2 sl@0: * Handles the servicing of a client request that has been passed to the server. sl@0: */ sl@0: void ServiceL(const RMessage2& aMessage); sl@0: sl@0: /** sl@0: * Handles an error from ServiceL() sl@0: * @since Series 60 3.1 sl@0: * @param aMessage: server side message, aError: error code sl@0: * @return void sl@0: */ sl@0: void ServiceError(const RMessage2& aMessage,TInt aError); sl@0: sl@0: /** sl@0: * Send a request to audio policy to set audio output. sl@0: * @since Series 60 3.1 sl@0: * @param aMessage: server side message for policy sl@0: * @return void sl@0: */ sl@0: void DoSetOutputL (const RMessage2& aMessage); sl@0: sl@0: /** sl@0: * Returns the number of available outputs to client-side session. sl@0: * @since Series 60 3.1 sl@0: * @param aMessage: server side message sl@0: * @return void sl@0: */ sl@0: void GetNoOfAvailableOutputs (const RMessage2& aMessage); sl@0: sl@0: /** sl@0: * Returns the available audio outputs to client-side session. sl@0: * @since Series 60 3.1 sl@0: * @param aMessage: server side message sl@0: * @return void sl@0: */ sl@0: void GetAvailableOutputsL (const RMessage2& aMessage); sl@0: sl@0: /** sl@0: * Add a message to message queue. Complete the message when output changes. sl@0: * @since Series 60 3.1 sl@0: * @param aMessage: server side message sl@0: * @return void sl@0: */ sl@0: void NotifyIfOutputChangedL (const RMessage2& aMessage); sl@0: sl@0: /** sl@0: * Add a message to message queue. Complete the message when available audio sl@0: * outputs change. sl@0: * @since Series 60 3.1 sl@0: * @param aMessage: server side message sl@0: * @return void sl@0: */ sl@0: void NotifyIfAvailOutputsChangedL (const RMessage2& aMessage); sl@0: sl@0: /** sl@0: * Used by policy session to listen to any SetOutput request from other sessions. sl@0: * @since Series 60 3.1 sl@0: * @param aMessage: server side message sl@0: * @return void sl@0: */ sl@0: void MonitorOutputChangeL (const RMessage2& aMessage); sl@0: sl@0: /** sl@0: * Set the policy session Id. sl@0: * @since Series 60 3.1 sl@0: * @param aMessage: server side message sl@0: * @return void sl@0: */ sl@0: void SetPolicySessionId(const RMessage2& aMessage); sl@0: sl@0: /** sl@0: * Used by policy session to indicate that the SetOutput request is complete. sl@0: * @since Series 60 3.1 sl@0: * @param aMessage: server side message sl@0: * @return void sl@0: */ sl@0: void OutputChangeCompleteL(const RMessage2& aMessage); sl@0: sl@0: /** sl@0: * Notify the client-side session that available outputs have changed. sl@0: * @since Series 60 3.1 sl@0: * @param aMessage: server side message sl@0: * @return void sl@0: */ sl@0: void DoAvailableOutputsChangedL (const RMessage2& aMessage); sl@0: sl@0: /** sl@0: * Cancel the outstanding request. sl@0: * @since Series 60 3.1 sl@0: * @param aMessage: server side message sl@0: * @return void sl@0: */ sl@0: void CancelRequestL(const RMessage2& aMessage); sl@0: sl@0: /** sl@0: * Session initialization. sl@0: * @since Series 60 3.1 sl@0: * @param aMessage: server side message sl@0: * @return void sl@0: */ sl@0: void InitializeL(const RMessage2& aMessage); sl@0: sl@0: /** sl@0: * Gets default values form server for the client sl@0: * @since Series 60 3.1 sl@0: * @param aMessage: server side message sl@0: * @return void sl@0: */ sl@0: void GetDefaultValuesL(const RMessage2& aMessage); sl@0: sl@0: private: sl@0: sl@0: const TInt iSessionId; sl@0: RArray iMessageArray; sl@0: RArray iSessionAvailableOutputs; sl@0: TBool iPolicyFlag; sl@0: TBool iConnected; sl@0: sl@0: sl@0: }; sl@0: sl@0: #endif // TELEPHONYAUDIOROUTINGSERVERSESSION_H