resourcemgmt/hwresourcesmgr/server/src/HWRMPowerStatePluginHandler.cpp
changeset 0 4e1aa6a622a0
--- /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 <ecom/ecom.h>
+#include <centralrepository.h>
+#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