diff -r 6a29d5ad0713 -r 0707dd69d236 bluetoothengine/bteng/inc/btengsrvsettingsmgr.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bluetoothengine/bteng/inc/btengsrvsettingsmgr.h Fri Mar 12 15:43:23 2010 +0200 @@ -0,0 +1,312 @@ +/* +* 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: Class to manage Bluetooth hardware and stack settings. +* +*/ + +#ifndef BTENGSRVSETTINGSMGR_H +#define BTENGSRVSETTINGSMGR_H + +#include +#include +#ifndef __WINS__ +#include +#endif //__WINS__ + +#include "btengprivatecrkeys.h" +#include "btengconstants.h" +#include "btengactive.h" + +class CBTEngServer; + + +/** + * ?one_line_short_description + * ?more_complete_description + * + * @code + * ?good_class_usage_example(s) + * @endcode + * + * @lib ?library + * @since S60 ?S60_version *** for example, S60 v3.0 + */ +NONSHARABLE_CLASS( CBTEngSrvSettingsMgr ) : public CBase, + public MBTEngActiveObserver + { + +public: + + /** + * Two-phased constructor. + * @param aServer Pointer to server instance. + */ + static CBTEngSrvSettingsMgr* NewL( CBTEngServer* aServer ); + + /** + * Destructor. + */ + virtual ~CBTEngSrvSettingsMgr(); + + /** + * Utility to get the Bluetooth hardware power state. + * + * @since Symbian^3 + * @param aState On return, this will contain the current HW power state. + * @return KErrNone if successful, otherwise one of the system-wide error codes. + */ + TInt GetHwPowerState( TBTPowerState& aState ); + + /** + * Set the Bluetooth hardware power state. + * + * @since Symbian^3 + * @param aState The new power state. + */ + TInt SetHwPowerState( TBTPowerState aState ); + + /** + * Set Bluetooth on or off. This function is for internal classes of bteng server + * for power management. + * + * @since Symbian^3 + * @param aState The new power state. + * @param aTemporary Turn BT off after use (ETrue) or not (EFalse). + */ + void SetPowerStateL( TBTPowerState aState, TBool aTemporary ); + + /** + * Set Bluetooth on or off upon a client power management request. + * This function is only for power management request from clients of bteng server. + * + * @since Symbian^3 + * @param aState The new power state. + * @param aTemporary Turn BT off after use (ETrue) or not (EFalse). + */ + void SetPowerStateL( const RMessage2 aMessage ); + + /** + * Initialize Bluetooth stack settings. + * + * @since S60 v3.2 + * @param ?arg1 ?description + */ + void InitBTStackL(); + + /** + * Reset settings and disconnect all links. + * + * @since Symbian^3 + */ + void StopBTStackL(); + + /** + * Update the central repository key for Bluetooth power state. + * + * @since Symbian^3 + * @param aValue The new Bluetooth power state. + */ + void UpdateCenRepPowerKeyL( TBTPowerState aValue ); + + /** + * ?description + * + * @since S60 v3.2 + * @param ?arg1 ?description + */ + void SetUiIndicatorsL(); + + /** + * ?description + * + * @since S60 v3.2 + * @param ?arg1 ?description + */ + void SetIndicatorStateL( const TInt aIndicator, const TInt aState ); + + /** + * Update the Bluetooth visibility mode. + * + * @since Symbian^3 + * @param ?arg1 ?description + */ + void SetVisibilityModeL( TBTVisibilityMode aMode, TInt aTime ); + + /** + * Update the Bluetooth visibility mode. + * + * @since Symbian^3 + * @param ?arg1 ?description + */ + void UpdateVisibilityModeL( TInt aStackScanMode ); + + /** + * Set Device Under Test mode. + * + * @since Symbian^3 + * @param aDutMode The mode to be set (DUT mode on or off). + */ + void SetDutMode( TInt aDutMode ); + + /** + * Timed visible mode has expired. + * + * @since Symbian^3 + */ + void ScanModeTimerCompletedL(); + + /** + * Check whether BT should be turned off automatically. + * + * @since Symbian^3 + */ + void CheckAutoPowerOffL(); + + /** + * Queue a timer if secure simple pairing debug mode has been enabled. + * + * @since Symbian^3 + * @param aDebugMode State of Simple Pairing debug mode. + */ + void CheckSspDebugModeL( TBool aDebugMode ); + + /** + * Be informed that a session will be closed. + * + * @since Symbian^3 + * @param aSession the session to be cloased. + */ + void SessionClosed(CSession2* aSession ); + +private: + +// from base class MBTEngActiveObserver + + /** + * From MBTEngActiveObserver. + * Callback to notify that an outstanding request has completed. + * + * @since Symbian^3 + * @param aActive Pointer to the active object that completed. + * @param aId The ID that identifies the outstanding request. + * @param aStatus The status of the completed request. + */ + virtual void RequestCompletedL( CBTEngActive* aActive, TInt aId, TInt aStatus ); + + /** + * From MBTEngActiveObserver. + * Callback to notify that an error has occurred in RunL. + * + * @since Symbian^3 + * @param aActive Pointer to the active object that completed. + * @param aId The ID that identifies the outstanding request. + * @param aStatus The status of the completed request. + */ + virtual void HandleError( CBTEngActive* aActive, TInt aId, TInt aError ); + +private: + + /** + * C++ default constructor. + */ + CBTEngSrvSettingsMgr( CBTEngServer* aServer ); + + /** + * Symbian second-phase constructor. + */ + void ConstructL(); + + /** + * Open a handle to the Bluetooth power manager, and + * initialize the power to off. + * + * @since Symbian^3 + */ + void LoadBTPowerManagerL(); + + /** + * Checks if a client requests temporary power on/off, and keeps track + * of the number of clients requesting that. + * + * @since Symbian^3 + * @param aCurrentState On return, will contain the current power state. + * @param aNewState The requested power state. + * @param aTemporary Indicates if this is about a tempororary state change. + */ + void CheckTemporaryPowerStateL( TBTPowerState& aCurrentState, + TBTPowerState aNewState, TBool aTemporary ); + + /** + * Set the Class of Device. + * + * @since Symbian^3 + */ + void SetClassOfDeviceL(); + +private: // data + +#ifdef __WINS__ + /** + * Current BT power state (power manager is not used in emulator). + */ + TBTPowerState iPowerState; +#endif //__WINS__ + + /** + * Flag indicating if BT is allowed to be turned on. + */ + BluetoothFeatures::TEnterpriseEnablementMode iEnterpriseEnablementMode; + + /** + * Flag indicating if BT is going to be switched off automatically. + */ + TBool iAutoSwitchOff; + + /** + * Number of clients that are using BT temporarily. + * Note that this is equal or less than the active number of links. + */ + TInt iAutoOffClients; + + /** + * Flag indicating hidden mode has been set for temporary power on. + */ + TBool iRestoreVisibility; + + /** + * BT power control. + */ + RBTPowerControl iPowerMgr; + + /** + * Active object helper. + * Own. + */ + CBTEngActive* iActive; + + /** + * The server instance. + * Not own. + */ + CBTEngServer* iServer; + + /** + * Client-server message for power change requests. + */ + RMessage2 iMessage; + + }; + + +#endif // BTENGSRVSETTINGS_H