diff -r 000000000000 -r 4e1aa6a622a0 resourcemgmt/hwresourcesmgr/server/src/HWRMPowerStatePluginHandler.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/resourcemgmt/hwresourcesmgr/server/src/HWRMPowerStatePluginHandler.cpp Tue Feb 02 00:53:00 2010 +0200 @@ -0,0 +1,201 @@ +// Copyright (c) 2006-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: +// + + + + +// INCLUDE FILES +#include +#include +#include "HWRMPowerStatePluginHandler.h" +#include "HWRMtrace.h" +#include "HWRMConfiguration.h" +#include "HWRMPrivateCRKeys.h" +#include "HWRMPrivatePSKeys.h" + + +// EXTERNAL DATA STRUCTURES +// None + +// EXTERNAL FUNCTION PROTOTYPES +// None + +// CONSTANTS +// None + +// MACROS +// None + +// LOCAL CONSTANTS AND MACROS +// None + +// MODULE DATA STRUCTURES +// None + +// LOCAL FUNCTION PROTOTYPES +// None + +// FORWARD DECLARATIONS +// None + +// ============================= LOCAL FUNCTIONS =============================== + +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// CHWRMPluginHandler::CHWRMPluginHandler +// C++ constructor. +// ----------------------------------------------------------------------------- +// +CHWRMPowerStatePluginHandler::CHWRMPowerStatePluginHandler(TBool aChargerBlockVibra, + TBool aChargerBlockFeedbackVibration) + : iPlugin(NULL), + iChargerBlockVibra(aChargerBlockVibra), + iChargerBlockVibraFeedback(aChargerBlockFeedbackVibration) + { + COMPONENT_TRACE1(_L("HWRM Server - CHWRMPowerStatePluginHandler::CHWRMPowerStatePluginHandler()") ); + COMPONENT_TRACE1(_L("HWRM Server - CHWRMPowerStatePluginHandler::CHWRMPowerStatePluginHandler - return" ) ); + } + +// ----------------------------------------------------------------------------- +// CHWRMPowerStatePluginHandler::ConstructL +// 2nd phase constructor gets plugin instance. +// ----------------------------------------------------------------------------- +// +void CHWRMPowerStatePluginHandler::ConstructL() + { + COMPONENT_TRACE1(_L("HWRM Server - CHWRMPowerStatePluginHandler::ConstructL()") ); + + // Define and attach to the P&S values + // Battery level + User::LeaveIfError( RProperty::Define( KPSUidHWRMPowerState, + KHWRMBatteryLevel, RProperty::EInt, + KNoCapability, KHWRMSidOnlyPolicy ) ); + User::LeaveIfError( iBattLevelProp.Attach( KPSUidHWRMPowerState, + KHWRMBatteryLevel ) ); + // Battery status + User::LeaveIfError( RProperty::Define( KPSUidHWRMPowerState, + KHWRMBatteryStatus, RProperty::EInt, + KNoCapability, KHWRMSidOnlyPolicy ) ); + User::LeaveIfError( iBattStatusProp.Attach( KPSUidHWRMPowerState, + KHWRMBatteryStatus ) ); + // Charging status + User::LeaveIfError( RProperty::Define( KPSUidHWRMPowerState, + KHWRMChargingStatus, RProperty::EInt, + KNoCapability, KHWRMSidOnlyPolicy ) ); + User::LeaveIfError( iChargingStatusProp.Attach( KPSUidHWRMPowerState, + KHWRMChargingStatus ) ); + + // Get plugin instance + iPlugin = CHWRMPowerStatePlugin::NewL( this ); + + COMPONENT_TRACE1(_L("HWRM Server - CHWRMPowerStatePluginHandler::ConstructL - return") ); + } + +// ----------------------------------------------------------------------------- +// CHWRMPowerStatePluginHandler::NewL +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +CHWRMPowerStatePluginHandler* CHWRMPowerStatePluginHandler::NewL(TBool aChargerBlockVibra, + TBool aChargerBlockFeedbackVibration) + { + COMPONENT_TRACE1(_L("HWRM Server - CHWRMPowerStatePluginHandler::NewL()") ); + + CHWRMPowerStatePluginHandler* self = new( ELeave ) + CHWRMPowerStatePluginHandler(aChargerBlockVibra, aChargerBlockFeedbackVibration); + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop(); + + COMPONENT_TRACE2(_L("HWRM Server - CHWRMPowerStatePluginHandler::NewL - return 0x%x"), self ); + + return self; + } + +// --------------------------------------------------------- +// Destructor +// --------------------------------------------------------- +// +CHWRMPowerStatePluginHandler::~CHWRMPowerStatePluginHandler() + { + COMPONENT_TRACE1(_L("HWRM Server - CHWRMPowerStatePluginHandler::~CHWRMPowerStatePluginHandler()") ); + + // delete the plugin + delete iPlugin; + + // close the P&S properties + iBattLevelProp.Close(); + iBattStatusProp.Close(); + iChargingStatusProp.Close(); + + COMPONENT_TRACE1(_L("HWRM Server - CHWRMPowerStatePluginHandler::~CHWRMPowerStatePluginHandler - return ") ); + } + +// ----------------------------------------------------------------------------- +// CHWRMPowerStatePluginHandler::NotifyStateChange +// Implementation of power state callback method. +// ----------------------------------------------------------------------------- +// +void CHWRMPowerStatePluginHandler::NotifyStateChange( const TUint32 aKey, + TInt aValue ) + { + COMPONENT_TRACE3(_L("HWRM Server - CHWRMPowerStatePluginHandler::NotifyStateChangeL(%d, %d)"), aKey, aValue ); + + // update P&S key with the new values + switch( aKey ) + { + case KHWRMBatteryLevel: + { + COMPONENT_TRACE2(_L("HWRM Server - KHWRMBatteryLevel key value=%d"), aValue ); + iBattLevelProp.Set( aValue ); + break; + } + case KHWRMBatteryStatus: + { + COMPONENT_TRACE2(_L("HWRM Server - KHWRMBatteryStatus key value=%d"), aValue ); + iBattStatusProp.Set( aValue ); + break; + } + case KHWRMChargingStatus: + { + COMPONENT_TRACE2(_L("HWRM Server - KHWRMChargingStatus key value=%d"), aValue ); + iChargingStatusProp.Set( aValue ); + if ( iChargerBlockVibra || iChargerBlockVibraFeedback ) + { + if ( aValue == EChargingStatusCharging || + aValue == EChargingStatusNotCharging || + aValue == EChargingStatusAlmostComplete || + aValue == EChargingStatusChargingComplete || + aValue == EChargingStatusChargingContinued ) + { + RProperty::Set(KPSUidHWRMPrivate, KHWRMInternalVibraBlocked, ETrue); + } + else + { + RProperty::Set(KPSUidHWRMPrivate, KHWRMInternalVibraBlocked, EFalse); + } + } + break; + } + default: + break; + } + + COMPONENT_TRACE1(_L("HWRM Server - CHWRMPowerStatePluginHandler::NotifyStateChangeL - return") ); + } + + +// End of File