sl@0: /* sl@0: * Copyright (c) 2002-2004 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: This class is the main interface to the TelephonyAudioRoutingServer. sl@0: * It implements the client-side session. sl@0: * sl@0: */ sl@0: sl@0: sl@0: sl@0: #ifndef TELEPHONYAUDIOROUTINGSESSION_H sl@0: #define TELEPHONYAUDIOROUTINGSESSION_H sl@0: sl@0: #include sl@0: #include sl@0: #include "TelephonyAudioRouting.h" sl@0: #include "MTelephonyAudioRoutingPolicyObserver.h" sl@0: #include "TelephonyAudioRoutingClientServer.h" sl@0: sl@0: sl@0: class CTelephonyAudioRoutingRequest; sl@0: class CTelephonyAudioRoutingManager; sl@0: sl@0: // CLASS DECLARATION sl@0: sl@0: /** sl@0: * Main interface to the TelephonyAudioRoutingServer. sl@0: * It implements the client-side session. sl@0: * sl@0: * @lib TelephonyAudioRoutingSession.lib sl@0: * @since Series 60 3.1 sl@0: */ sl@0: sl@0: class RTelephonyAudioRoutingSession : public RSessionBase sl@0: { sl@0: sl@0: public: sl@0: sl@0: IMPORT_C RTelephonyAudioRoutingSession(); sl@0: sl@0: public: sl@0: sl@0: /** sl@0: * Connects a client to the server. sl@0: * @since Series 60 3.1 sl@0: * @param aAudioRouting obj: client obj, aObserver: Client's observer class sl@0: * @return TInt connection success or failure sl@0: */ sl@0: IMPORT_C TInt ConnectL(CTelephonyAudioRouting& aAudioRouting, MTelephonyAudioRoutingObserver& aObserver); sl@0: sl@0: /** sl@0: * Closes connection to the server. sl@0: * @since Series 60 3.1 sl@0: * @param none sl@0: * @return void sl@0: */ sl@0: IMPORT_C void Close(); sl@0: sl@0: /** sl@0: * Gets the client side version number. sl@0: * @since Series 60 3.1 sl@0: * @param none sl@0: * @return TVersion: version sl@0: */ sl@0: IMPORT_C TVersion Version() const; sl@0: sl@0: /** sl@0: * Send a SetOutput request to server. sl@0: * @since Series 60 3.1 sl@0: * @params aOutput: output value to set sl@0: * aShowNote: Boolean to indicate note option sl@0: * @return void sl@0: */ sl@0: IMPORT_C void SetOutput(CTelephonyAudioRouting::TAudioOutput aOutput, TBool aShowNote); sl@0: sl@0: /** sl@0: * Get the available audio outputs from the server. sl@0: * @since Series 60 3.1 sl@0: * @param none sl@0: * @return void sl@0: */ sl@0: IMPORT_C void GetAvailableOutputsL(); sl@0: sl@0: /** sl@0: * Cancel a previously send request. sl@0: * @since Series 60 3.1 sl@0: * @param aRequest: request to cancel sl@0: * @return void sl@0: */ sl@0: IMPORT_C void CancelRequest(TTelAudRtngServRqst aRequest); sl@0: sl@0: /** sl@0: * Send a request to server to receive notification whenever current audio output changes. sl@0: * @since Series 60 3.1 sl@0: * @param none sl@0: * @return void sl@0: */ sl@0: IMPORT_C void NotifyIfOutputChanged(); sl@0: sl@0: /** sl@0: * Send a request to server to receive notification whenever available audio output changes. sl@0: * @since Series 60 3.1 sl@0: * @param none sl@0: * @return void sl@0: */ sl@0: IMPORT_C void NotifyIfAvailableOutputsChanged(); sl@0: sl@0: // Accessor methods: sl@0: sl@0: /** sl@0: * Provide caller with iCurrentAudioOutputPkg sl@0: * @since Series 60 3.1 sl@0: * @param none sl@0: * @return iCurrentAudioOutputPkg sl@0: */ sl@0: IMPORT_C TPckgBuf& CurrentAudioOutputPkg(); sl@0: sl@0: /** sl@0: * Provide caller with iPreviousAudioOutputPkg sl@0: * @since Series 60 3.1 sl@0: * @param none sl@0: * @return iPreviousAudioOutputPkg sl@0: */ sl@0: IMPORT_C TPckgBuf& PreviousAudioOutputPkg(); sl@0: sl@0: /** sl@0: * Provide caller with iErrPkg sl@0: * @since Series 60 3.1 sl@0: * @param none sl@0: * @return iErrPkg value sl@0: */ sl@0: IMPORT_C TPckgBuf& ErrPkg(); sl@0: sl@0: /** sl@0: * Provide caller with iAvailableOutputs array sl@0: * @since Series 60 3.1 sl@0: * @param none sl@0: * @return: Array of available outputs sl@0: */ sl@0: IMPORT_C RArray& AvailableOutputs(); sl@0: sl@0: /** sl@0: * Sets value for iOkToGetShowNoteMode after successful completion of SetOutput call sl@0: * @since Series 60 3.1 sl@0: * @param none sl@0: * @return: none sl@0: */ sl@0: IMPORT_C void SetShowNoteMode(); sl@0: sl@0: sl@0: /** sl@0: * Provides caller with value for iShowNoteModePkg sl@0: * @since Series 60 3.1 sl@0: * @param none sl@0: * @return: none sl@0: */ sl@0: IMPORT_C TPckgBuf& ShowNoteMode(); sl@0: sl@0: sl@0: /** sl@0: * Will reset iOkToGetShowNoteMode value to EFalse sl@0: * @since Series 60 3.1 sl@0: * @param none sl@0: * @return: none sl@0: */ sl@0: IMPORT_C void ResetShowNoteMode(); sl@0: sl@0: sl@0: /** sl@0: * Provides caller with value for iOkToGetShowNoteMode sl@0: * @since Series 60 3.1 sl@0: * @param none sl@0: * @return: none sl@0: */ sl@0: IMPORT_C TBool OkToGetShowNoteMode(); sl@0: sl@0: sl@0: /** sl@0: * Provides caller with default values from server sl@0: * @since Series 60 3.1 sl@0: * @param none sl@0: * @return: none sl@0: */ sl@0: IMPORT_C void GetDefaultValuesL(); sl@0: sl@0: private: sl@0: sl@0: /** sl@0: * Start asynchronous request handlers. sl@0: * @since Series 60 3.1 sl@0: * @param aAudioRouting: client obj, aObserver: client's observer class for callbacks sl@0: * @return void sl@0: */ sl@0: void StartRequestHandlersL( CTelephonyAudioRouting& aAudioRouting, MTelephonyAudioRoutingObserver& aObserver ); sl@0: sl@0: sl@0: private: sl@0: sl@0: TPckgBuf iCurrentAudioOutputPkg; sl@0: TPckgBuf iPreviousAudioOutputPkg; sl@0: TPckgBuf iErrPkg; sl@0: TPckgBuf iShowNoteModePkg; sl@0: TPckgBuf iDefaultValuePkg; sl@0: RArray iAvailableOutputs; sl@0: sl@0: RPointerArray iRequests; sl@0: sl@0: TBool iConnected; sl@0: TBool iOkToGetShowNoteMode; sl@0: sl@0: sl@0: }; sl@0: sl@0: sl@0: #endif //TELEPHONYAUDIOROUTINGSESSION_H sl@0: sl@0: