tsrc/telephonyaudioroutingstub/inc/telephonyaudiorouting.h
changeset 22 496ad160a278
parent 0 f0cf47e981f9
child 14 4c163c82e7ad
--- /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 <e32base.h>
+
+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<TAudioOutput>& Array of available outputs.
+        */     
+        const TArray<TAudioOutput>& 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<TAudioOutput> 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
+