phoneengine/audiohandling/inc/cpeaudiodata.h
changeset 0 5f000ab63145
child 27 2f8f8080a020
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneengine/audiohandling/inc/cpeaudiodata.h	Mon Jan 18 20:18:27 2010 +0200
@@ -0,0 +1,299 @@
+/*
+* Copyright (c) 2002-2007 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:  This file contains the header file of the class CPEAudioData 
+*                 which is the interface class for Audio Handling Module
+*
+*/
+
+
+#ifndef CPEAUDIODATA_H
+#define CPEAUDIODATA_H
+
+//  INCLUDES
+#include "mpeaudiodata.h"
+#include <PSVariables.h>
+ 
+#include <TelephonyAudioRouting.h>
+// CONSTANTS
+// None.
+
+// MACROS
+// None.
+
+// DATA TYPES
+// None.
+
+// FUNCTION PROTOTYPES
+// None.
+
+// FORWARD DECLARATIONS
+class MPEPhoneModelInternal;
+class CPEAudioDtmfTonePlayer;
+class CPEAudioRoutingMonitor;
+class CPECallAudioRoutingHandler;
+class CPEAudioFactory;
+class CTelephonyAudioRouting;
+
+// CLASS DECLARATION
+
+/**
+*  This file contains the header file of the class CPEAudioData, 
+*  which is an interface class to audio 
+*  properties of the system
+*
+*  @lib audiohandling.lib
+*  @since S60_5.0
+*/
+class CPEAudioData: 
+        public CBase, 
+        public MPEAudioData 
+    {
+    
+    public:
+
+        /**
+        * Destructor.
+        */
+        IMPORT_C virtual ~CPEAudioData();
+
+    protected:
+
+        /**
+        * C++ default constructor.
+        */
+        CPEAudioData( MPEPhoneModelInternal& aPhoneModel );
+
+    public: // from MPEAudioData
+       
+        /**
+        * Retrieves Audio mute synchronously.
+        * @param  aAudioMute, audio mute is returned in this parameter.
+        */
+        IMPORT_C void GetAudioMuteSync( TBool& aAudioMute ) const;
+
+        /**
+        * Retrieves Audio volume synchronously.
+        * @param  aAudioVolume, audio volume is returned in this parameter.
+        */
+        IMPORT_C void GetAudioVolumeSync( TInt& aAudioVolume ) const;
+                
+        /**
+        * Makes synchronous request to set Audio Mute.
+        * @param  aAudioMute, mute to be set.
+        */
+        IMPORT_C void SetAudioMuteSync( const TBool aAudioMute );
+
+        /**
+        * Makes synchronous request to set Audio Volume.
+        * @param  aAudioVolume, volume to be set.
+        */
+        IMPORT_C void SetAudioVolumeSync( const TInt aAudioVolume );
+
+        /**
+        * Makes request to Telephony Audio Routing to set audio output path
+        * @param aOutput, audio output path
+        * @param aShowNote, audio note status
+        * @return KErrNone or possible errorcode.
+        */
+        IMPORT_C TInt SetAudioOutput( 
+            const TPEAudioOutput aOutput,
+            TBool aShowNote );
+  
+        /**
+        * Gets volume levels, audio mute, audio mode and audio volume 
+        * at startup and starts monitors.
+        * @param  None.
+        * @return None.
+        */
+        IMPORT_C void StartUp();
+  
+        /**
+        * Sets default volume level if muted when call ended
+        */
+        IMPORT_C void SetDefaultVolume();
+ 
+        /**
+        * Handles call audio route preference changed
+        */
+        IMPORT_C TInt CallAudioRoutePreferenceChanged();
+     
+        /**
+        * Initialises call audio route when call is alerting or answered
+        */
+        IMPORT_C TInt HandleCallStarting( TBool aVideoCall );
+        
+        /**
+        * Initialises energency call audio route
+        */
+        IMPORT_C TInt HandleEnergencyCallStarting();
+        
+        /**
+        * Ends call audio route when call disconnected
+        */
+        IMPORT_C void HandleCallEnding();
+    
+    public: // new
+        
+        /**
+        * Sends AudioHandlingError message to PhoneEngine and saves 
+        * errorcode to member variable.
+        * @param  aErrorCode, errorcode that is saved to member variable.
+        * @return None.
+        */
+        void SendErrorMessage( const TInt aErrorCode );
+
+        /**
+        * Forwards message given as parameter to PhoneEngine.
+        * @param  aMessage, message to be forwarded.
+        * @return None.
+        */
+        void SendMessage( 
+            const MEngineMonitor::TPEMessagesFromPhoneEngine aMessage );
+
+        /**
+        * Forwards message given as parameter to Phone Engine
+        * @param  aMessage, message to be forwarded.
+        * @param  aOutput, audio output path that is saved in member variable.
+        * @return None.
+        */
+        void SendMessage( const MEngineMonitor::TPEMessagesFromPhoneEngine aMessage, 
+                          const CTelephonyAudioRouting::TAudioOutput aOutput );
+
+        /**
+        * Forwards message given as parameter to Phone Engine
+        * @param  aMessage, message to be forwarded.
+        * @param  aOutput, audio output path that is saved in member variable.
+        * @return None.
+        */
+        void SendMessage( const MEngineMonitor::TPEMessagesFromPhoneEngine aMessage, 
+                          CTelephonyAudioRouting& aTelephonyAudioRouting );
+
+        /**
+        * Sets value of audio routing preference
+        */        
+        void SetRoutePreference( TBool aShowNote );
+
+        /**
+        * Return value of audio routing preference
+        */
+        CTelephonyAudioRouting::TAudioOutput RoutePreference();
+        
+        /**
+        * Return value of previous output
+        */        
+        CTelephonyAudioRouting::TAudioOutput PreviousOutput();
+        
+        /**
+        * Return value of current output
+        */        
+        CTelephonyAudioRouting::TAudioOutput Output();
+ 
+        /**
+        * Return status of wired accessory availability
+        */
+        TBool IsWiredAvailable();
+        
+        /**
+        * Return status of BT accessory availability
+        */        
+        TBool IsBTAvailable();
+
+        /**
+        * Return status of TTY accessory availability
+        */        
+        TBool IsTTYAvailable();
+        
+        /**
+        * Set new audio route to TAR
+        */
+        void SetTAROutput( CTelephonyAudioRouting::TAudioOutput aOutput,
+                           TBool aShowNote );
+     
+
+    protected:
+
+        /**
+        * By default Symbian 2nd phase constructor is private, but we use 
+        * it at generalized class.
+        */
+        void ConstructL( CPEAudioFactory& aAudioFactory ); 
+
+    protected:  // New functions
+        
+        /**
+         * Protected function for derived classes to implement for
+         * extended volume handling. Default implementation is empty.
+         * @since S60 v5.0
+         * @param aVolume New volume value.
+         */
+        virtual void DoHandleVolumeChange( TInt aVolume );
+     
+    private:
+    
+        /**
+        * Gets all audio volume values from reporitory and update member variables
+        */
+        void InitializeAudioVolumes();
+        
+                       
+        /**
+        * Makes request to Telephony Audio Routing to get available audio outputs
+        * @return list of available outputs
+        */
+        TArray< TPEAudioOutput> GetAvailableOutputs( 
+                CTelephonyAudioRouting& aTelephonyAudioRouting );
+
+        /**
+        * Converts TAR route value to PE value
+        */
+        TPEAudioOutput ConvertToPE( CTelephonyAudioRouting::TAudioOutput aOutput );
+
+        /**
+        * Converts PE route value to TAR value
+        */        
+        CTelephonyAudioRouting::TAudioOutput ConvertToTAR( TPEAudioOutput aOutput );
+        /**
+        * Return status of mic mute
+        */
+        TBool IsMuted() const;
+
+    protected:
+        // CPhoneModel object which owns this object. 
+        MPEPhoneModelInternal& iPhoneModel;
+        // Audio Routing Monitor
+        CPEAudioRoutingMonitor* iAudioRoutingMonitor;
+        // Audio Routing Handler
+        CPECallAudioRoutingHandler* iAudioRoutingHandler;
+        // Telephony Audio Routing interface
+        CTelephonyAudioRouting* iAudioRouting;
+        // Available Audio Outputs
+        RArray<TPEAudioOutput> iPEavailableOutputs;
+        //Flag to indicate whether is Call audio route initialized
+        TBool iRouteInitialized;
+        #ifdef __WINSCW__
+        // dummy implementation for WINSCW
+        TInt  iVolume;
+        TBool iMute; 
+        #endif        
+        // HeadSet Mode Audio volume
+        TInt iHeadSetVolume;
+        // Loudspeaker Mode Audio volume
+        TInt iLoudspeakerVolume;
+        // ETrue when audio output changed 
+        TBool iAudioOutputChanged; 
+     };
+
+#endif      // CPEAUDIODATA_H  
+            
+// End of File