diff -r ccd8e69b5392 -r 496ad160a278 tsrc/telephonyaudioroutingstub/inc/telephonyaudiorouting.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tsrc/telephonyaudioroutingstub/inc/telephonyaudiorouting.h Fri Jun 11 13:36:18 2010 +0300 @@ -0,0 +1,237 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +#ifndef TELEPHONYAUDIOROUTING_H +#define TELEPHONYAUDIOROUTING_H + +#include + +class MTelephonyAudioRoutingObserver; + +class CTelephonyAudioRouting + { + + public: // DATA TYPES + + //Output types + enum TAudioOutput + { + ENotActive, + ENone, + EHandset, + ELoudspeaker, + EWiredAudioAccessory, + EBTAudioAccessory, + ETTY + }; + + public: + + + /** + * Factory interface returning a new instance of CTelephonyAudioRouting. + * + * If the server is not created by the Adaptation, this leaves with KErrNotReady. + * If the client does not have MultimediaDD capability, this leaves with + * KErrPermissionDenied. + * + * Leaves on failure. + * + * @since Series 60 3.1 + */ + static CTelephonyAudioRouting* NewL( + MTelephonyAudioRoutingObserver& aObserver ); + + ~CTelephonyAudioRouting(); + + /** + * Returns array of currently available outputs. + * The array contains list of following outputs depending on whether the + * output is available or not at the time of query: + * - EHandset + * - ELoudspeaker + * - EWiredAudioAccessory, + * - EWiredAccessory, + * - EBTAudioAccessory + * - ETTY + * Audio can be routed to any of the available outputs in the list. + * + * @since Series 60 3.1 + * @param none. + * @return TArray& Array of available outputs. + */ + const TArray& AvailableOutputs(); + + /** + * Returns the current output configured by the client application to play + * telephony audio. + * Possible values are: + * - ENotActive : If output has not been set by any or one of the + * telephony apps has called SetOutputL(ENotActive) successfully. + * - ENone : If user has destroyed audio link by long key press on the + * BT device. + * - EHandset or ELoudspeaker or EWiredAudioAccessory or + * EBTAudioAccessory or ETTY depending on the last successful + * SetOutputL() call. EBTAudioAccessory is also returned when adaptation + * routes audio from device to BT accessory automatically when user + * initiated long key press event occurs. + * + * @since Series 60 3.1 + * @param none. + * @return TAudioOutput Current output. + */ + TAudioOutput Output(); + + /** + * Sends an asynchronous request to Adaptation to set the output + * where telephony audio will be routed. This request is completed only + * when the application receives + * MTelephonyAudioRoutingObserver::SetOutputComplete callback. + * + * If MTelephonyAudioRoutingObserver::SetOutputComplete returns KErrNone, + * aOutput requested by this application is configured by Adaptation. + * Otherwise there was error configuring aOutput and application should + * call CTelephonyAudioRouting::Output to get the active output. + * + * Leaves on following cases: + * - System wide error code when failure to send request. + * - KErrArgument when parameter is ENone. + * - KErrHardwareNotAvailable if aOutput is not in the list of available + * outputs. + * + * @since Series 60 3.1 + * @param aOutput : output requested by application. This can only be any + * of the outputs from AvailableOutputs() list or ENotActive. + * @return none. + */ + void SetOutputL( TAudioOutput aOutput = ENotActive ); + + /** + * Returns the second last output that was successfully configured to + * play telephony audio. + * Possible values are: + * - ENotActive : If output had not been set or one of the telephony + * apps had previously called SetOutputL(ENotActive) + * successfully. + * - EHandset or ELoudspeaker or EWiredAudioAccessory or + * EBTAudioAccessory or ETTY depending on the second last successful + * SetOutputL() call. + * + * @since Series 60 3.1 + * @param none. + * @return TAudioOutput Previous output that was configured for telephony + * audio. ENone will never be returned since telephony apps cannot call + * SetOutputL(ENone). + */ + TAudioOutput PreviousOutput(); + + /* + * Sends the Show Note mode to server along with the next SetOutputL() + * request. + * + * After SetOutputL() request from the Application is succesfully + * processed by the server and application receives SetOutputComplete() + * callback with KErrNone, it can query Show Note mode sent to server by + * calling GetShowNote(). + * + * Other observers wanting to query Show Note mode can call GetShowNote() + * after receiving OutputChanged() callback. + * + * @since Series 60 3.1 + * @param TBool aMode Show Note mode. ETrue or EFalse. + * @return KErrNone if succesfull, otherwise system-wide error code. + */ + TInt SetShowNote( TBool aMode ); + + /* + * Returns the the Show Note mode for the last succesfully completed + * SetOutputL() request. + * + * If the routing is initiated by the Adaptation with BT Long key press + * this will return ETrue. + * + * Once the Show Note mode is sent to server along with the SetOutputL() + * request, Show Note mode attribute for that client session will be + * reset to EFalse. GetShowNote() function for this client session will + * return EFalse until SetOutputL() request is completed and the observer + * receives OutputComplete() callback. If there is no error completing + * the request, GetShowNote() returns the Show Note value set by the + * Application. If there is error completing the request, GetShowNote() + * will return EFalse. + * + * For all other observers, After they receive OutputChanged() callback, + * GetShowNote() will return the Show Note value set by the Application + * that called SetOutputL(). + * + * @since Series 60 3.1 + * @param TBool aMode. On return of this function will contain + * Show Note mode. EFalse or ETrue. + * @return KErrNone if succesfull, otherwise system-wide error code. + */ + TInt GetShowNote( TBool& aMode ); + + private: + + CTelephonyAudioRouting( MTelephonyAudioRoutingObserver& aObserver ); + void ConstructL(); + + public: // stub data + + MTelephonyAudioRoutingObserver& iObserver; + + RArray iAvailableOutputs; + TAudioOutput iCurrentOutput; + TAudioOutput iPreviousOutput; + + TBool iShowNoteMode; + + // If this variable is set to other value than KErrNone, next operation + // with no-fail quarantee fails either by leaving or by using return + // code. Failing code is value of variable. Operation requested is not + // completed. Variable is set to KErrNone before failing simulation. + TInt iForceFailWithCode; + }; + + +// CLASS DECLARATION + +/** +* This class defines the TAR default data structure. +* +* @lib TelephonyAudioRouting.lib +* @since 3.0 +*/ +class TTelephonyAudioRoutingDefaultParams + { + public: + + /** + * Constructor. + */ + TTelephonyAudioRoutingDefaultParams() : iCurrentAudio(CTelephonyAudioRouting::ENotActive),iPreviousAudio(CTelephonyAudioRouting::ENotActive),iShowNoteMode(EFalse) + {} + + CTelephonyAudioRouting::TAudioOutput iCurrentAudio; + CTelephonyAudioRouting::TAudioOutput iPreviousAudio; + TBool iShowNoteMode; + + }; + + + +#endif // TELEPHONYAUDIOROUTING_H +