--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/callaudiocontrol/inc/CallAudioControlImpl.h Tue Feb 02 01:08:46 2010 +0200
@@ -0,0 +1,142 @@
+/*
+* Copyright (c) 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: Defines the interface to CallAudioControlImpl
+*
+*/
+
+#ifndef CALLAUDIOCONTROLIMPL_H
+#define CALLAUDIOCONTROLIMPL_H
+
+// INCLUDES
+#include <e32base.h>
+#include <TelephonyAudioRouting.h>
+#include <RoutingObserver.h>
+#include <UplinkGainObserver.h>
+#include <DownlinkVolumeObserver.h>
+#include <MTelephonyAudioRoutingObserver.h>
+#include <centralrepository.h>
+
+#ifdef __SERIES60_31__
+#include <TSEngInterface.h>
+#include <RPhCltServer.h>
+#include <PhCltExt.h> // link against PhoneClientExt.lib
+#include <MediatorCommandInitiator.h>
+#else
+#include <CPhCltCommandHandler.h> // wasn't introduced until 3.2
+#endif
+
+#include "CallAudioControlUtility.h"
+#include "CallAudioControl.h"
+
+// FORWARD DECLARATIONS
+class CRoutingObserver;
+class CCallAudioControlProperty;
+class CCallAudioControlRepository;
+
+// CLASS DECLARATION
+class CCallAudioControlImpl : public CBase
+ , public MTelephonyAudioRoutingObserver
+#ifdef __SERIES60_31__
+ , public MMediatorCommandResponseObserver
+#endif
+ {
+
+ public:
+
+ static CCallAudioControlImpl* NewL();
+
+ ~CCallAudioControlImpl();
+
+ TInt AppendRoutingObserver( CRoutingObserver& aObserver );
+ TInt RemoveRoutingObserver( CRoutingObserver& aObserver );
+ TInt AppendDownlinkVolumeObserver( CDownlinkVolumeObserver& aObserver );
+ TInt RemoveDownlinkVolumeObserver( CDownlinkVolumeObserver& aObserver );
+ TInt AppendUplinkGainObserver( CUplinkGainObserver& aObserver );
+ TInt RemoveUplinkGainObserver( CUplinkGainObserver& aObserver );
+ TInt GetAvailableOutputs( RArray<CCallAudioControl::TAudioOutput>& aAvailableOutputs );
+ TInt GetOutput( CCallAudioControl::TAudioOutput& aOutput );
+ TInt SetOutput( CCallAudioControl::TAudioOutput aOutput );
+ TInt PreviousOutput( CCallAudioControl::TAudioOutput& aPrevOutput );
+ TInt GetMinDownlinkVolume( TUint& aVolume );
+ TInt GetDownlinkVolume( TUint& aVolume );
+ TInt GetMaxDownlinkVolume( TUint& aVolume );
+ TInt SetDownlinkVolume( TUint aVolume );
+ TInt GetUplinkMute( TBool& aMute );
+ TInt SetUplinkMute( TBool aMute );
+ void NotifyL(TAction aAction, TInt aError, TInt aValue);
+
+ private:
+
+ // For MTelephonyAudioRoutingObserver:
+ void AvailableOutputsChanged( CTelephonyAudioRouting& aTelephonyAudioRouting/*, const TArray<CTelephonyAudioRouting::TAudioOutput>& aOutputs*/);
+ void SetOutputComplete( CTelephonyAudioRouting& aTelephonyAudioRouting, TInt aErr);
+ void OutputChanged( CTelephonyAudioRouting& aTelephonyAudioRouting);
+ void ConstructL();
+ CCallAudioControlImpl();
+ TInt GetVolume();
+ TInt CheckIfOkToSetVolume();
+ TInt VerifyAndSetVolume(TInt aVolume);
+ TInt HandleCallStateChange();
+ TInt HandleEPVolumeChange(TInt aVolume);
+ TInt HandleIHFVolumeChange(TInt aVolume);
+ TInt HandleMuteChange(TBool aMute);
+ void NotifyVolumeObservers();
+ void NotifyGainObservers();
+ void NotifyRoutingObservers(TUint aEvent, TInt aError);
+ void NotifyRoutingObservers(TUint aEvent);
+ TInt SetMute(TBool aMute);
+ TBool IsCallActive();
+#ifdef __SERIES60_31__
+ // For MMediatorCommandResponseObserver
+ void CommandResponseL( TUid /*aKMediatorSecondaryDisplayDomain*/, TUid /*aKTSECategory*/,
+ TInt aCommandId,TInt aStatus, const TDesC8& /*aData*/ );
+
+#endif
+
+ // Data:
+ CTelephonyAudioRouting* iTelephonyAudioRouting;
+ RPointerArray<CRoutingObserver> iRoutingObservers;
+ RPointerArray<CDownlinkVolumeObserver> iDownlinkVolumeObservers;
+ RPointerArray<CUplinkGainObserver> iUplinkGainObservers;
+ CCallAudioControl::TAudioOutput iCurrentAudioOutput;
+ CCallAudioControl::TAudioOutput iPreviousAudioOutput;
+ CCallAudioControlProperty* iCsNotifier;
+ CCallAudioControlRepository* iEpVolumeNotifier;
+ CCallAudioControlRepository* iIhfVolumeNotifier;
+ CCallAudioControlProperty* iMuteNotifier;
+
+#ifdef __SERIES60_31__
+ CMediatorCommandInitiator* iCommandInitiator;
+ RPhCltServer iPhoneClientServer;
+ RLibrary iLibrary;
+#else
+ CPhCltCommandHandler* iPhoneClient;
+#endif
+ TInt iCallState;
+ TInt iVolume;
+ /* Needed to prevent notification going to the client modifying mute state */
+ TBool iPendingMuteSetOp; /* Holds true if there is a pending setmute opreation */
+ TBool iRequestedMuteState; /* Holds the current mute state */
+ TBool iPendingEpVolLevelOp;
+ TBool iRequestedEpVolLevel;
+ TBool iPendingIhfVolLevelOp;
+ TBool iRequestedIhfVolLevel;
+
+
+ TBool iWinsTesting;
+ };
+
+#endif // CALLAUDIOCONTROLIMPL_H
+
+// End of File