diff -r 000000000000 -r f63038272f30 bluetoothengine/btsac/btrcc/inc/btrccAbsoluteVolumeLevelController.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bluetoothengine/btsac/btrcc/inc/btrccAbsoluteVolumeLevelController.h Mon Jan 18 20:28:57 2010 +0200 @@ -0,0 +1,128 @@ +/* +* Copyright (c) 2005-2006 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 class implements volume control of AVRCP Controller. +* +* +*/ + + +#ifndef BTRCCABSOLUTEVOLUMELEVELCONTROLLER_H +#define BTRCCABSOLUTEVOLUMELEVELCONTROLLER_H + +// INCLUDES +#include +#include // BT protocol wide types +#include "btrccVolumeLevelControllerBase.h" +#include "absolutevolumeapicontrollerobserver.h" +#include "absolutevolumeapicontroller.h" +#include "absolutevolumeapitargetobserver.h" +//#include + +// FORWARD DECLARATIONS +class CRemConInterfaceSelector; +class CRemConCoreApiController; +class CBTRCCActive; + +// CLASS DECLARATION + +/** +* A listener for incoming handsfree attachments/detachments. +*/ +NONSHARABLE_CLASS(CBTRCCAbsoluteVolumeLevelController) : + public CBTRCCVolumeLevelControllerBase, + public MRemConAbsoluteVolumeControllerObserver + { + public: // Constructors and destructor + + /** + * Two-phased constructor. + * + */ + static CBTRCCAbsoluteVolumeLevelController* NewL(CRemConInterfaceSelector& aInterfaceSelector, MBTRCCVolumeControllerObserver& aObserver); + + /** + * Destructor. + */ + virtual ~CBTRCCAbsoluteVolumeLevelController(); + + + private: + + /** + * C++ default constructor. + */ + CBTRCCAbsoluteVolumeLevelController(MBTRCCVolumeControllerObserver& aObserver); + + /** + * Symbian 2nd phase constructor. + */ + void ConstructL(CRemConInterfaceSelector& aInterfaceSelector); + + public: // From MBTRCCActiveObserver + + void RequestCompletedL(CBTRCCActive& aActive, TInt aErr); + + void CancelRequest(TInt aServiceId); + + public: // From CBTRCCVolumeLevelControllerBase + + void DoStart(TInt aInitialVolume); // Set the initial volume. + + void DoStop(); // Stop monitoring for volume level changes. + + void DoReset(); // Reset the volume level. + + private: // From CBTRCCVolumeLevelControllerBase + + void AdjustRemoteVolume(TInt aVolume); + + TInt GetPhoneVolume(TInt &aVol); + + public: // New methods + + + private: // From MRemConAbsoluteVolumeControllerObserver + + void MrcavcoCurrentVolume(TUint32 aVolume, TUint32 aMaxVolume, TInt aError); + + void MrcavcoSetAbsoluteVolumeResponse(TUint32 aVolume, TUint32 aMaxVolume, TInt aError); + + void MrcavcoAbsoluteVolumeNotificationError(); + + private: + void AccessoryChangedVolume(TUint32 aVolume, TUint32 aMaxVolume, TInt aError); + TBool ValidVolumeParams(TUint32 aVolume, TUint32 aMaxVolume); + + void RegisterVolumeChangeNotification(); + + private: // Data + + CRemConAbsoluteVolumeController* iRemConAbsoluteVolumeController; // changes the accessory's volume level. + + // This active object listens to the absolute volume API. + CBTRCCActive *iBtrccAbsoluteVolumeActive; + + // Not owned + CRemConInterfaceSelector *iInterfaceSelector; + + TInt iLocalMaxVolume; // maximum volume level of phone + + TUint iNumRemotes; // not used, but needed for the remote controlling API. + + TInt iRetryCounter; + }; + +#endif // BTRCCABSOLUTEVOLUMELEVELCONTROLLER_H + +// End of File