--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/resourcemgmt/hwresourcesmgr/server/src/HWRMPowerCommonData.cpp Tue Feb 02 00:53:00 2010 +0200
@@ -0,0 +1,1293 @@
+// 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 <centralrepository.h>
+#include "HWRMtrace.h"
+#include "HWRMPowerCommonData.h"
+#include "HWRMClientServer.h"
+#include "HWRMPowerDomainCRKeys.h"
+#include "HWRMPrivateCRKeys.h"
+#include "HWRMConfiguration.h"
+#include "HWRMPowerService.h"
+#include "HWRMPower.h"
+#include "HWRMPowerService.h"
+
+// EXTERNAL DATA STRUCTURES
+// None
+
+// EXTERNAL FUNCTION PROTOTYPES
+// None
+
+// CONSTANTS
+const TInt KMilliToMicroSeconds = 1000;
+
+// MACROS
+// None
+
+// LOCAL CONSTANTS AND MACROS
+// None
+
+// MODULE DATA STRUCTURES
+// None
+
+// LOCAL FUNCTION PROTOTYPES
+// None
+
+// FORWARD DECLARATIONS
+// None
+
+// ============================= LOCAL FUNCTIONS ===============================
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CHWRMPowerCommonData::CHWRMPowerCommonData
+// C++ constructor
+// -----------------------------------------------------------------------------
+//
+CHWRMPowerCommonData::CHWRMPowerCommonData()
+ :iBatteryInfoQue(_FOFF(TBatteryInfoData,iSglQueLink)),
+ iBatteryInfoIter(iBatteryInfoQue),
+ iBatteryVoltageInfoQue(_FOFF(TBatteryInfoData,iSglQueLink)),
+ iBatteryVoltageInfoIter(iBatteryVoltageInfoQue)
+#ifdef SYMBIAN_HWRM_EXTPOWERINFO
+ ,iChargerTypeInfoQue(_FOFF(TBatteryInfoData,iSglQueLink)),
+ iChargerTypeInfoIter(iChargerTypeInfoQue)
+#endif //SYMBIAN_HWRM_EXTPOWERINFO
+ {
+ COMPONENT_TRACE1(_L( "HWRM Server - CHWRMPowerCommonData::CHWRMPowerCommonData()" ) );
+
+ COMPONENT_TRACE1(_L( "HWRM Server - CHWRMPowerCommonData::CHWRMPowerCommonData - return" ) );
+ }
+
+// -----------------------------------------------------------------------------
+// CHWRMPowerCommonData::ConstructL
+// Symbian 2nd phase constructor can leave.
+// -----------------------------------------------------------------------------
+//
+void CHWRMPowerCommonData::ConstructL(CHWRMPluginHandler* aPluginHandler)
+ {
+ COMPONENT_TRACE1(_L( "HWRM Server - CHWRMPowerCommonData::ConstructL()" ) );
+
+ // Get read only values from cenrep
+ iRepository = CRepository::NewL(KCRUidPowerSettings);
+
+ iMaxReportingPeriodNotifyHandler = CCenRepListener::NewL(*this,
+ *iRepository,
+ KPowerMaxReportingPeriod);
+ iMaxReportingPeriodNotifyHandler->StartListeningL();
+
+ TInt value(0);
+ User::LeaveIfError(iRepository->Get(KPowerBaseTimeInterval, value));
+ if ( value < 1 )
+ {
+ User::Leave(KErrArgument);
+ }
+ iBaseTimeInterval = value * 1000; // milliseconds to microseconds
+
+ COMPONENT_TRACE2(_L( "HWRM Server - CHWRMPowerCommonData::ConstructL - iBaseTimeInterval: %d" ), iBaseTimeInterval );
+
+ User::LeaveIfError(iRepository->Get(KPowerMaxReportingPeriod, value));
+ if ( value < 1 )
+ {
+ User::Leave(KErrArgument);
+ }
+ iMaximumReportingPeriod = value * KMilliToMicroSeconds; // milliseconds to microseconds
+
+ COMPONENT_TRACE2(_L( "HWRM Server - CHWRMPowerCommonData::ConstructL - iMaximumReportingPeriod: %d" ), iMaximumReportingPeriod );
+
+ // Register for indications from HWRM plugin.
+ aPluginHandler->RegisterForIndications(this);
+
+ iPowerService = CHWRMPowerService::NewL(aPluginHandler, *this);
+
+ iPowerReportMeasurementsTimer = CHWRMGenericTimer::NewL(*this, iMaximumReportingPeriod, EPowerReportClientsId);
+
+#ifdef SYMBIAN_HWRM_EXTPOWERINFO
+ iChargingCurrentMeasurementsTimer = CHWRMGenericTimer::NewL(*this, iMaximumReportingPeriod, EChargingCurrentClientsId);
+
+ //Timer should not be started for charging time measurements. So pass KHWRMGenericTimerMaxTime.
+ iChargingTimeMeasurementsTimer = CHWRMGenericTimer::NewL(*this, KHWRMGenericTimerMaxTime, EChargingTimeClientsId);
+#endif //SYMBIAN_HWRM_EXTPOWERINFO
+
+ iPowerReportClientsData = CClientsData::NewL(*iPowerReportMeasurementsTimer);
+#ifdef SYMBIAN_HWRM_EXTPOWERINFO
+ iChargingCurrentClientsData = CClientsData::NewL(*iChargingCurrentMeasurementsTimer);
+ iChargingTimeClientsData = CClientsData::NewL(*iChargingTimeMeasurementsTimer);
+#endif //SYMBIAN_HWRM_EXTPOWERINFO
+
+ COMPONENT_TRACE1(_L( "HWRM Server - CHWRMPowerCommonData::ConstructL - return" ) );
+ }
+
+// -----------------------------------------------------------------------------
+// CHWRMPowerCommonData::NewL
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+CHWRMPowerCommonData* CHWRMPowerCommonData::NewL(CHWRMPluginHandler* aPluginHandler)
+ {
+ COMPONENT_TRACE1(_L( "HWRM Server - CHWRMPowerCommonData::NewL()" ) );
+
+ CHWRMPowerCommonData* self = new( ELeave ) CHWRMPowerCommonData();
+
+ CleanupStack::PushL( self );
+ self->ConstructL(aPluginHandler);
+ CleanupStack::Pop();
+
+ COMPONENT_TRACE2(_L( "HWRM Server - CHWRMPowerCommonData::NewL - return 0x%x" ), self );
+
+ return self;
+ }
+
+// ---------------------------------------------------------
+// Destructor
+// ---------------------------------------------------------
+//
+CHWRMPowerCommonData::~CHWRMPowerCommonData()
+ {
+ COMPONENT_TRACE1(_L( "HWRM Server - CHWRMPowerCommonData::~CHWRMPowerCommonData()" ) );
+
+ delete iPowerService;
+ iPowerService = NULL;
+
+ iMaxReportingPeriodNotifyHandler->StopListening();
+ delete iMaxReportingPeriodNotifyHandler;
+ iMaxReportingPeriodNotifyHandler = NULL;
+
+ delete iRepository;
+ iRepository = NULL;
+
+ delete iPowerReportClientsData;
+ iPowerReportClientsData = NULL;
+
+#ifdef SYMBIAN_HWRM_EXTPOWERINFO
+
+ delete iChargingCurrentClientsData;
+ iChargingCurrentClientsData = NULL;
+
+ delete iChargingTimeClientsData;
+ iChargingTimeClientsData = NULL;
+
+#endif //SYMBIAN_HWRM_EXTPOWERINFO
+
+ if (iPowerReportMeasurementsTimer)
+ {
+ iPowerReportMeasurementsTimer->Cancel();
+ delete iPowerReportMeasurementsTimer;
+ iPowerReportMeasurementsTimer = NULL;
+ }
+
+#ifdef SYMBIAN_HWRM_EXTPOWERINFO
+
+ if(iChargingCurrentMeasurementsTimer)
+ {
+ iChargingCurrentMeasurementsTimer->Cancel();
+ delete iChargingCurrentMeasurementsTimer;
+ iChargingCurrentMeasurementsTimer = NULL;
+ }
+
+ if (iChargingTimeMeasurementsTimer)
+ {
+ iChargingTimeMeasurementsTimer->Cancel();
+ delete iChargingTimeMeasurementsTimer;
+ iChargingTimeMeasurementsTimer = NULL;
+ }
+
+#endif //SYMBIAN_HWRM_EXTPOWERINFO
+
+ TBatteryInfoData* batteryInfoData;
+
+ iBatteryInfoIter.SetToFirst();
+
+ while((batteryInfoData = iBatteryInfoIter++) != NULL)
+ {
+ iBatteryInfoQue.Remove(*batteryInfoData);
+ delete batteryInfoData;
+ }
+
+ iBatteryVoltageInfoIter.SetToFirst();
+
+ while((batteryInfoData = iBatteryVoltageInfoIter++) != NULL)
+ {
+ iBatteryVoltageInfoQue.Remove(*batteryInfoData);
+ delete batteryInfoData;
+ }
+
+#ifdef SYMBIAN_HWRM_EXTPOWERINFO
+
+ iChargerTypeInfoIter.SetToFirst();
+
+ while((batteryInfoData = iChargerTypeInfoIter++) != NULL)
+ {
+ iChargerTypeInfoQue.Remove(*batteryInfoData);
+ delete batteryInfoData;
+ }
+
+#endif //SYMBIAN_HWRM_EXTPOWERINFO
+
+
+ COMPONENT_TRACE1(_L( "HWRM Server - CHWRMPowerCommonData::~CHWRMPowerCommonData - return" ) );
+ }
+
+// ---------------------------------------------------------
+// CHWRMPowerCommonData::ProcessIndicationL
+// Callback function From MHWRMIndicationHandler
+// Called by the plugin handler to indicate that a new
+// measurement report is ready
+// ---------------------------------------------------------
+//
+void CHWRMPowerCommonData::ProcessIndicationL( const TUint32 aId, TDesC8& aData )
+ {
+ COMPONENT_TRACE1(_L( "HWRM Server - CHWRMPowerCommonData::ProcessIndicationL()" ) );
+
+ switch (aId)
+ {
+ case HWRMPowerCommand::EAverageBatteryPowerIndicationId:
+ {
+ if (iPowerReportClientsData->IsMeasuringOn())
+ {
+ HWRMPowerCommand::TBatteryPowerReportPackage batteryPowerReportPckg;
+ batteryPowerReportPckg.Copy(aData);
+ HWRMPowerCommand::TBatteryPowerReport batteryPowerReport = batteryPowerReportPckg();
+
+ if (batteryPowerReport.iErrorCode == KErrNone)
+ {
+ iPowerReportClientsData->BatteryMeasurementIndicationL(batteryPowerReportPckg);
+ }
+ }
+ }
+ break;
+
+ #ifdef SYMBIAN_HWRM_EXTPOWERINFO
+
+ case HWRMPowerCommand::EAverageBatteryChargingCurrentIndicationId:
+ {
+ if (iChargingCurrentClientsData->IsMeasuringOn())
+ {
+ HWRMPowerCommand::TBatteryChargingCurrentReportPackage batteryChargeCurrentReportPckg;
+ batteryChargeCurrentReportPckg.Copy(aData);
+ HWRMPowerCommand::TBatteryChargeCurrentReport batteryChargeCurrentReport= batteryChargeCurrentReportPckg();
+
+ if (batteryChargeCurrentReport.iErrorCode == KErrNone)
+ {
+ iChargingCurrentClientsData->BatteryMeasurementIndicationL(batteryChargeCurrentReportPckg);
+ }
+ }
+ }
+ break;
+
+ case HWRMPowerCommand::EBatteryFullChargingTimeIndicationId:
+ {
+ if (iChargingTimeClientsData->IsMeasuringOn())
+ {
+ HWRMPowerCommand::TBatteryFullChargingTimeReportPackage batteryChargeTimePckg;
+ batteryChargeTimePckg.Copy(aData);
+ HWRMPowerCommand::TBatteryFullChargingTimeReport batteryChargeTimeReport= batteryChargeTimePckg();
+
+ if (batteryChargeTimeReport.iErrorCode == KErrNone)
+ {
+ iChargingTimeClientsData->BatteryMeasurementIndicationL(batteryChargeTimePckg);
+ }
+ }
+ }
+ break;
+#endif //SYMBIAN_HWRM_EXTPOWERINFO
+
+ }
+ COMPONENT_TRACE1(_L( "HWRM Server - CHWRMPowerCommonData::EventIndicationL - return" ) );
+ }
+
+// ---------------------------------------------------------
+// CHWRMPowerCommonData::GenericTimerFired
+// Callback function From MHWRMGenericTimerCallback
+// Called when the timer is fired. The PowerCommonData
+// hold two of them one for Voltage, one for Consumption
+// Measurements. Informs clients, cleans up and stops the
+// plugin.
+// ---------------------------------------------------------
+//
+void CHWRMPowerCommonData::GenericTimerFired(TInt aTimerId, TBool /*aCutOff*/)
+ {
+ TInt err(KErrNone);
+
+ COMPONENT_TRACE1(_L( "HWRM Server - CHWRMPowerCommonData::GenericTimerFired()" ) );
+
+ switch(aTimerId)
+ {
+ case EPowerReportClientsId:
+ {
+ iPowerReportClientsData->MaxReportingPeriodReached();
+ TRAP(err, DoStopPowerMeasurementsL());
+ break;
+ }
+
+#ifdef SYMBIAN_HWRM_EXTPOWERINFO
+
+ case EChargingCurrentClientsId:
+ {
+ iChargingCurrentClientsData->MaxReportingPeriodReached();
+ TRAP(err,DoStopChargingCurrentMeasurementsL());
+ break;
+ }
+
+#endif //SYMBIAN_HWRM_EXTPOWERINFO
+ }
+
+ if (err != KErrNone)
+ {
+ // All the pending batch request have been completed now.
+ // Also plugin will not send any more measurements.
+ COMPONENT_TRACE3(_L( "HWRM Server - CHWRMPowerCommonData::GenericTimerFired(%d) - Stopping measurement failed: %d" ), aTimerId, err );
+ }
+
+ COMPONENT_TRACE1(_L( "HWRM Server - CHWRMPowerCommonData::GenericTimerFired - return" ) );
+ }
+
+// ---------------------------------------------------------
+// CHWRMPowerCommonData::DoStopPowerMeasurementsL
+// Issues a plugin command to stop the Power measurements.
+// ---------------------------------------------------------
+//
+void CHWRMPowerCommonData::DoStopPowerMeasurementsL()
+ {
+ COMPONENT_TRACE1(_L( "HWRM Server - CHWRMPowerCommonData::DoStopPowerMeasurementsL()" ) );
+
+ iPowerService->StopPowerMeasurementsL();
+
+ COMPONENT_TRACE1(_L( "HWRM Server - CHWRMPowerCommonData::DoStopPowerMeasurementsL - return" ) );
+ }
+
+
+
+#ifdef SYMBIAN_HWRM_EXTPOWERINFO
+// ---------------------------------------------------------
+// CHWRMPowerCommonData::DoStopChargingCurrentMeasurementsL
+// Issues a plugin command to stop the Charging current measurements.
+// ---------------------------------------------------------
+//
+void CHWRMPowerCommonData::DoStopChargingCurrentMeasurementsL()
+ {
+ COMPONENT_TRACE1(_L( "HWRM Server - CHWRMPowerCommonData::DoStopChargingCurrentMeasurementsL()" ) );
+
+ iPowerService->StopChargingCurrentMeasurementsL();
+
+ COMPONENT_TRACE1(_L( "HWRM Server - CHWRMPowerCommonData::DoStopChargingCurrentMeasurementsL - return" ) );
+ }
+
+// ---------------------------------------------------------
+// CHWRMPowerCommonData::DoStopChargingTimeMeasurementsL
+// Issues a plugin command to stop BatteryFull charging time measurement.
+// ---------------------------------------------------------
+//
+void CHWRMPowerCommonData::DoStopChargingTimeMeasurementsL()
+ {
+ COMPONENT_TRACE1(_L( "HWRM Server - CHWRMPowerCommonData::DoStopChargingTimeMeasurementsL()" ) );
+
+ iPowerService->StopChargingTimeMeasurementsL();
+
+ COMPONENT_TRACE1(_L( "HWRM Server - CHWRMPowerCommonData::DoStopChargingTimeMeasurementsL - return" ) );
+ }
+
+#endif //SYMBIAN_HWRM_EXTPOWERINFO
+
+// ---------------------------------------------------------
+// CHWRMPowerCommonData::DoMaxReportingValueChanged
+// Handles the max reporting period cenrep value changes for all measurements.
+// ---------------------------------------------------------
+void CHWRMPowerCommonData::MaxPeriodChangedL(TTimeIntervalMicroSeconds32& aNewMaxPeriod,
+ TTimeIntervalMicroSeconds32& aOldMaxPeriod)
+ {
+
+ DoMaxReportingValueChangedL(iPowerReportMeasurementsTimer, aNewMaxPeriod, aOldMaxPeriod);
+#ifdef SYMBIAN_HWRM_EXTPOWERINFO
+ DoMaxReportingValueChangedL(iChargingCurrentMeasurementsTimer, aNewMaxPeriod, aOldMaxPeriod);
+ DoMaxReportingValueChangedL(iChargingTimeMeasurementsTimer, aNewMaxPeriod, aOldMaxPeriod);
+#endif //SYMBIAN_HWRM_EXTPOWERINFO
+ }
+
+
+
+// ---------------------------------------------------------
+// CHWRMPowerCommonData::DoMaxReportingValueChangedL
+// Handles the max reporting period cenrep value changes.
+// ---------------------------------------------------------
+
+
+void CHWRMPowerCommonData::DoMaxReportingValueChangedL(CHWRMGenericTimer* aTimer,
+ TTimeIntervalMicroSeconds32& aNewMaxPeriod,
+ TTimeIntervalMicroSeconds32& aOldMaxPeriod)
+ {
+ /*
+ * Timer Usage:
+ * aTimer->IsActive() : Checks if timer is running(active, which means measurement is going on.)
+ * aTimer->Freeze() : Stop the timer.
+ * aTimer->GetTimerId(): Get the measurement(power,charging,..) corresponding to timer.
+ * aTimer->RunL() : Calls CHWRMPowerCommonData::GenericTimerFired, which stops the measurements.
+ *
+ * - If new max reporting period is negative, complete pending measurement with KErrGeneral and stop the measurements.
+ * - If timer is not running, just set the timer.
+ * - If new max reporting period is zero, stop the timer if running and measurements will go on for infinite duration.
+ * - If new max reporting period is more than elapsed time, stop current time and start for remaining time(Max-elapsed).
+ * - If new max reporting period is less than elapsed time, complete pending measurement with KErrTimedOut and stop the measurements.
+ */
+ #ifdef _DEBUG
+ _LIT(KHWRMPowerCommonDataPanic,"CHWRMPowerCommonData");
+ #endif
+ __ASSERT_DEBUG((aTimer)!=NULL, User::Panic(KHWRMPowerCommonDataPanic,KErrBadHandle));
+
+ if(aNewMaxPeriod.Int() < 0)
+ {
+ if(aTimer->IsActive())
+ {
+ //Cenrep value is negative, Inform client that timer has expired.
+ aTimer->Freeze();
+
+ switch(aTimer->GetTimerId())
+ {
+ case EPowerReportClientsId:
+ {
+ iPowerReportClientsData->MaxReportingPeriodReached(KErrGeneral);
+ break;
+ }
+
+#ifdef SYMBIAN_HWRM_EXTPOWERINFO
+
+ case EChargingCurrentClientsId:
+ {
+ iChargingCurrentClientsData->MaxReportingPeriodReached(KErrGeneral);
+ break;
+ }
+
+#endif //SYMBIAN_HWRM_EXTPOWERINFO
+
+ }
+ aTimer->RunL();
+ }
+ }
+ else
+ {
+ iMaximumReportingPeriod = aNewMaxPeriod.Int();
+
+ aTimer->SetMaximumTime(aNewMaxPeriod);
+
+ if(aOldMaxPeriod.Int() == 0)
+ {
+ aTimer->Set(aNewMaxPeriod);
+ }
+ else if(aTimer->IsActive())
+ {
+ if(aNewMaxPeriod.Int() == 0)
+ {
+ //Stop Timer and don't Start Timer
+ aTimer->Freeze();
+ }
+ else
+ {
+ //Ex: If aOldMaxPeriod=8sec, aNewMaxPeriod=10sec,
+ // elapsedTime=4sec, start timer with 6sec.
+
+ //Freeze will stop the timer and return remaining time.
+ TTimeIntervalMicroSeconds32 remainingTime = aTimer->Freeze();
+ TTimeIntervalMicroSeconds32 elapsedTime;
+ elapsedTime = aOldMaxPeriod.Int() - remainingTime.Int();
+ if(aNewMaxPeriod > elapsedTime)
+ {
+ //Start a new Timer.
+ aTimer->Set((aNewMaxPeriod.Int() - elapsedTime.Int()));
+ }
+ else
+ {
+ //Inform Client that Timer has expired.
+ aTimer->Freeze();
+ aTimer->RunL();
+ }
+ }
+ }
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CHWRMPowerCommonData::HandleNotifyInt
+// -----------------------------------------------------------------------------
+//
+void CHWRMPowerCommonData::HandleNotifyInt(TUint32 aId, TInt aNewValue)
+ {
+ COMPONENT_TRACE3(_L("HWRM Server - CHWRMPowerCommonData::HandleNotifyInt(0x%x, 0x%x)"), aId, aNewValue) ;
+
+ switch(aId)
+ {
+ case KPowerMaxReportingPeriod:
+ {
+ TTimeIntervalMicroSeconds32 oldMaxPeriod = iMaximumReportingPeriod;
+ TTimeIntervalMicroSeconds32 newMaxPeriod = aNewValue*KMilliToMicroSeconds;
+
+ if(oldMaxPeriod.Int() != newMaxPeriod.Int())
+ {
+ TRAP_IGNORE(MaxPeriodChangedL(newMaxPeriod, oldMaxPeriod));
+ }
+ break;
+ }
+ default:
+ COMPONENT_TRACE2(_L("HWRM Server - CHWRMPowerCommonData::HandleNotifyInt Cannot handle(0x%x)"), aId);
+ break;
+
+ }
+
+ COMPONENT_TRACE1(_L("HWRM Server - CHWRMPowerCommonData::HandleNotifyInt - return") );
+ }
+
+// -----------------------------------------------------------------------------
+// CHWRMPowerCommonData::HandleNotifyError
+// -----------------------------------------------------------------------------
+//
+#if defined(COMPONENT_TRACE_FLAG) && defined(_DEBUG)
+void CHWRMPowerCommonData::HandleNotifyError(TUint32 aId, TInt error, CCenRepListener* aHandler)
+#else
+void CHWRMPowerCommonData::HandleNotifyError(TUint32 /*aId*/, TInt /*error*/, CCenRepListener* /*aHandler*/)
+#endif
+ {
+ COMPONENT_TRACE4(_L("HWRM Server - CHWRMPowerCommonData::HandleNotifyError(0x%x, 0x%x, 0x%x)"), aId, error, aHandler);
+
+
+ COMPONENT_TRACE1(_L("HWRM Server - CHWRMPowerCommonData::HandleNotifyError - return") );
+ }
+
+// ---------------------------------------------------------
+// CHWRMPowerCommonData::DoSetPluginIntervalMultipleL
+// Issues a plugin command to set the plugin interval.
+// Used by charging current reporting.
+// ---------------------------------------------------------
+//
+void CHWRMPowerCommonData::DoSetPluginIntervalMultipleL(HWRMPowerCommand::TPowerCmd aCommand,
+ TUint aIntervalMultiple)
+ {
+ COMPONENT_TRACE1(_L( "HWRM Server - CHWRMPowerCommonData::DoSetPluginIntervalMultipleL()" ) );
+
+ iPowerService->SetPluginIntervalMultipleL(aCommand, aIntervalMultiple);
+
+ COMPONENT_TRACE1(_L( "HWRM Server - CHWRMPowerCommonData::DoSetPluginIntervalMultipleL - return" ) );
+ }
+
+
+// ---------------------------------------------------------
+// CHWRMPowerCommonData::DoGetBatteryInfoL
+// Issues a plugin command to get Battery Info. If there is
+// an outstanding plugin request there isn't a new
+// one issued but the appropriate data are
+// stored in a queue. This data are used later to complete
+// or cancel the client.
+// ---------------------------------------------------------
+//
+void CHWRMPowerCommonData::DoGetBatteryInfoL(const RMessage2& aMessage, const CHWRMPowerService& aPowerService)
+ {
+ COMPONENT_TRACE1(_L( "HWRM Server - CHWRMPowerCommonData::DoGetBatteryInfoL()" ) );
+
+ TBatteryInfoData* batteryInfoData = new(ELeave) TBatteryInfoData(aPowerService, aMessage);
+
+ if (iBatteryInfoQue.IsEmpty())
+ {
+ CleanupStack::PushL(batteryInfoData);
+
+ RMessage2 dummy;
+ iPowerService->GetBatteryInfoL(dummy);
+
+ CleanupStack::Pop(batteryInfoData);
+ }
+ iBatteryInfoQue.AddFirst(*batteryInfoData);
+
+ COMPONENT_TRACE1(_L( "HWRM Server - CHWRMPowerCommonData::DoGetBatteryInfoL - return" ) );
+ }
+
+// ---------------------------------------------------------
+// CHWRMPowerCommonData::DoGetBatteryVoltageInfoL
+// Issues a plugin command to get Battery Voltage Info. If there is
+// an outstanding plugin request there isn't a new
+// one issued but the appropriate data are
+// stored in a queue. This data are used later to complete
+// or cancel the client.
+// ---------------------------------------------------------
+//
+void CHWRMPowerCommonData::DoGetBatteryVoltageInfoL(const RMessage2& aMessage, const CHWRMPowerService& aPowerService)
+ {
+ COMPONENT_TRACE1(_L( "HWRM Server - CHWRMPowerCommonData::DoGetBatteryVoltageInfoL()" ) );
+
+ TBatteryInfoData* batteryVoltageInfoData = new(ELeave) TBatteryInfoData(aPowerService, aMessage);
+
+ if (iBatteryVoltageInfoQue.IsEmpty())
+ {
+ CleanupStack::PushL(batteryVoltageInfoData);
+
+ RMessage2 dummy;
+ iPowerService->GetBatteryVoltageInfoL(dummy);
+
+ CleanupStack::Pop(batteryVoltageInfoData);
+ }
+ iBatteryVoltageInfoQue.AddFirst(*batteryVoltageInfoData);
+
+ COMPONENT_TRACE1(_L( "HWRM Server - CHWRMPowerCommonData::DoGetBatteryVoltageInfoL - return" ) );
+ }
+
+// ---------------------------------------------------------
+// CHWRMPowerCommonData::CompletePendingGetBatteryInfo
+// Completes and removes from the respective list any pending
+// GetBatteryInfo requests.
+// ---------------------------------------------------------
+//
+void CHWRMPowerCommonData::CompletePendingGetBatteryInfo(TInt aReason, TPckg<CHWRMPower::TBatteryConsumptionData> &aDataPckg)
+ {
+ COMPONENT_TRACE1(_L( "HWRM Server - CHWRMPowerCommonData::CompletePendingGetBatteryInfo()" ) );
+
+ TBatteryInfoData* batteryInfoData;
+ TInt error;
+
+ //inform everybody
+ iBatteryInfoIter.SetToFirst();
+ while((batteryInfoData = iBatteryInfoIter++) != NULL)
+ {
+ error = aReason;
+ if (error == KErrNone)
+ {
+ error = batteryInfoData->iRequestedMessage.Write(0,aDataPckg);
+ }
+ batteryInfoData->iRequestedMessage.Complete(error);
+ iBatteryInfoQue.Remove(*batteryInfoData);
+
+ delete batteryInfoData;
+ }
+
+ COMPONENT_TRACE1(_L( "HWRM Server - CHWRMPowerCommonData::CompletePendingGetBatteryInfo - return" ) );
+ }
+
+// ---------------------------------------------------------
+// CHWRMPowerCommonData::CompletePendingGetBatteryVoltageInfo
+// Completes and removes from the respective list any pending
+// GetBatteryVoltageInfo requests.
+// ---------------------------------------------------------
+//
+void CHWRMPowerCommonData::CompletePendingGetBatteryVoltageInfo(TInt aReason, TPckg<CHWRMPower::TBatteryVoltageData> &aDataPckg)
+ {
+ COMPONENT_TRACE1(_L( "HWRM Server - CHWRMPowerCommonData::CompletePendingGetBatteryVoltageInfo()" ) );
+
+ TBatteryInfoData* batteryVoltageInfoData;
+ TInt error;
+
+ //inform everybody
+ iBatteryVoltageInfoIter.SetToFirst();
+ while((batteryVoltageInfoData = iBatteryVoltageInfoIter++) != NULL)
+ {
+ error = aReason;
+ if (error == KErrNone)
+ {
+ error = batteryVoltageInfoData->iRequestedMessage.Write(0,aDataPckg);
+ }
+ batteryVoltageInfoData->iRequestedMessage.Complete(error);
+ iBatteryVoltageInfoQue.Remove(*batteryVoltageInfoData);
+
+ delete batteryVoltageInfoData;
+ }
+
+ COMPONENT_TRACE1(_L( "HWRM Server - CHWRMPowerCommonData::CompletePendingGetBatteryVoltageInfo - return" ) );
+ }
+
+// ---------------------------------------------------------
+// CHWRMPowerCommonData::CancelPendingGetBatteryInfo
+// Cancels and removes from the respective list any pending
+// GetBatteryInfo requests.
+// ---------------------------------------------------------
+//
+void CHWRMPowerCommonData::CancelPendingGetBatteryInfo(CHWRMPowerService& aPowerService)
+ {
+ COMPONENT_TRACE1(_L( "HWRM Server - CHWRMPowerCommonData::CancelPendingGetBatteryInfo()" ) );
+
+ TBatteryInfoData* batteryInfoData;
+
+ //inform everybody
+ iBatteryInfoIter.SetToFirst();
+ while((batteryInfoData = iBatteryInfoIter++) != NULL)
+ {
+ if ( &(batteryInfoData->iPowerClientService) == &aPowerService)
+ {
+ batteryInfoData->iRequestedMessage.Complete(KErrCancel);
+ iBatteryInfoQue.Remove(*batteryInfoData);
+
+ delete batteryInfoData;
+ }
+ }
+
+ COMPONENT_TRACE1(_L( "HWRM Server - CHWRMPowerCommonData::CancelPendingGetBatteryInfo - return" ) );
+ }
+
+// ---------------------------------------------------------
+// CHWRMPowerCommonData::CancelPendingGetBatteryVoltageInfo
+// Cancels and removes from the respective list any pending
+// GetBatteryVoltageInfo requests.
+// ---------------------------------------------------------
+//
+void CHWRMPowerCommonData::CancelPendingGetBatteryVoltageInfo(CHWRMPowerService& aPowerService)
+ {
+ COMPONENT_TRACE1(_L( "HWRM Server - CHWRMPowerCommonData::CancelPendingGetBatteryVoltageInfo()" ) );
+
+ TBatteryInfoData* batteryVoltageInfoData;
+
+ //inform everybody
+ iBatteryVoltageInfoIter.SetToFirst();
+ while((batteryVoltageInfoData = iBatteryVoltageInfoIter++) != NULL)
+ {
+ if ( &(batteryVoltageInfoData->iPowerClientService) == &aPowerService)
+ {
+ batteryVoltageInfoData->iRequestedMessage.Complete(KErrCancel);
+ iBatteryVoltageInfoQue.Remove(*batteryVoltageInfoData);
+
+ delete batteryVoltageInfoData;
+ }
+ }
+
+ COMPONENT_TRACE1(_L( "HWRM Server - CHWRMPowerCommonData::CancelPendingGetBatteryVoltageInfo - return" ) );
+ }
+#ifdef SYMBIAN_HWRM_EXTPOWERINFO
+// ---------------------------------------------------------
+// CHWRMPowerCommonData::DoGetChargerTypeL
+// Issues a plugin command to get charger type. If there is
+// an outstanding plugin request there isn't a new
+// one issued but the appropriate data are
+// stored in a queue. This data are used later to complete
+// the request.
+// ---------------------------------------------------------
+//
+void CHWRMPowerCommonData::DoGetChargerTypeL(const RMessage2& aMessage, const CHWRMPowerService& aPowerService)
+ {
+ COMPONENT_TRACE1(_L( "HWRM Server - CHWRMPowerCommonData::DoGetChargerTypeL()" ) );
+
+ TBatteryInfoData* batteryInfoData = new(ELeave) TBatteryInfoData(aPowerService, aMessage);
+
+ if (iChargerTypeInfoQue.IsEmpty())
+ {
+ CleanupStack::PushL(batteryInfoData);
+
+ RMessage2 dummy;
+ iPowerService->GetChargerTypeL(dummy);
+
+ CleanupStack::Pop(batteryInfoData);
+ }
+ iChargerTypeInfoQue.AddFirst(*batteryInfoData);
+
+ COMPONENT_TRACE1(_L( "HWRM Server - CHWRMPowerCommonData::DoGetChargerTypeL - return" ) );
+ }
+
+// ---------------------------------------------------------
+// CHWRMPowerCommonData::CompletePendingGetChargerType
+// Completes and removes from the respective list any pending
+// GetChargerType requests.
+// ---------------------------------------------------------
+//
+void CHWRMPowerCommonData::CompletePendingGetChargerType(TInt aReason, TPckg<CHWRMPower::TBatteryChargerType> &aDataPckg)
+ {
+ COMPONENT_TRACE1(_L( "HWRM Server - CHWRMPowerCommonData::CompletePendingGetChargerType()" ) );
+
+ TBatteryInfoData* batteryInfoData;
+ TInt error;
+
+ //inform everybody
+ iChargerTypeInfoIter.SetToFirst();
+ while((batteryInfoData = iChargerTypeInfoIter++) != NULL)
+ {
+ error = aReason;
+ if (error == KErrNone)
+ {
+ error = batteryInfoData->iRequestedMessage.Write(0,aDataPckg);
+ }
+ batteryInfoData->iRequestedMessage.Complete(error);
+ iChargerTypeInfoQue.Remove(*batteryInfoData);
+
+ delete batteryInfoData;
+ }
+
+ COMPONENT_TRACE1(_L( "HWRM Server - CHWRMPowerCommonData::CompletePendingGetChargerType - return" ) );
+ }
+
+// ---------------------------------------------------------
+// CHWRMPowerCommonData::CancelPendingGetChargerType
+// Cancels and removes from the respective list any pending
+// GetChargerType requests.
+// ---------------------------------------------------------
+//
+void CHWRMPowerCommonData::CancelPendingGetChargerType(CHWRMPowerService& aPowerService)
+ {
+ COMPONENT_TRACE1(_L( "HWRM Server - CHWRMPowerCommonData::CancelPendingGetChargerType()" ) );
+
+ TBatteryInfoData* batteryInfoData;
+
+ //inform everybody
+ iChargerTypeInfoIter.SetToFirst();
+ while((batteryInfoData = iChargerTypeInfoIter++) != NULL)
+ {
+ if ( &(batteryInfoData->iPowerClientService) == &aPowerService)
+ {
+ batteryInfoData->iRequestedMessage.Complete(KErrCancel);
+ iChargerTypeInfoQue.Remove(*batteryInfoData);
+
+ delete batteryInfoData;
+ }
+ }
+
+ COMPONENT_TRACE1(_L( "HWRM Server - CHWRMPowerCommonData::CancelPendingGetChargerType - return" ) );
+ }
+
+#endif //SYMBIAN_HWRM_EXTPOWERINFO
+
+// ---------------------------------------------------------
+// CClientsData::NewL
+// Two-phased constructor.
+// ---------------------------------------------------------
+//
+CClientsData* CClientsData::NewL(CHWRMGenericTimer& aMeasurementsTimer)
+ {
+ COMPONENT_TRACE1(_L( "HWRM Server - CClientsData::NewL(()" ) );
+
+ CClientsData* self = new( ELeave ) CClientsData(aMeasurementsTimer);
+
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop();
+
+ COMPONENT_TRACE2(_L( "HWRM Server - CClientsData::NewL( - return 0x%x" ), self );
+
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+// CClientsData::CClientsData
+// C++ constructor
+// -----------------------------------------------------------------------------
+//
+CClientsData::CClientsData(CHWRMGenericTimer& aMeasurementsTimer)
+ :iMeasurementsTimer(aMeasurementsTimer),
+ iClientsQue(_FOFF(TClientData,iSglQueLink)),
+ iClientsQueIter(iClientsQue)
+ {
+ COMPONENT_TRACE1(_L( "HWRM Server - CClientsData::CClientsData()" ) );
+
+ iMeasuring = EFalse;
+
+ COMPONENT_TRACE1(_L( "HWRM Server - CClientsData::CClientsData - return" ) );
+ }
+
+// -----------------------------------------------------------------------------
+// CClientsData::ConstructL
+// Symbian 2nd phase constructor can leave.
+// -----------------------------------------------------------------------------
+//
+void CClientsData::ConstructL()
+ {
+ COMPONENT_TRACE1(_L( "HWRM Server - CClientsData::ConstructL()" ) );
+
+ COMPONENT_TRACE1(_L( "HWRM Server - CClientsData::ConstructL - return" ) );
+ }
+
+// -----------------------------------------------------------------------------
+// CClientsData::GenericTimerFired
+// Called when the generic timer expires or reaches the MaxPeriod.
+// Completes any pending client-sever messages and resets the
+// data (Held by the service) of each client. The list is then emptied
+// -----------------------------------------------------------------------------
+//
+void CClientsData::MaxReportingPeriodReached(TInt aReason)
+ {
+ COMPONENT_TRACE1(_L( "HWRM Server - CClientsData::MaxReportingPeriodReached()" ) );
+
+ TClientData* clientData;
+
+ //inform everybody
+ iClientsQueIter.SetToFirst();
+ while((clientData = iClientsQueIter++) != NULL)
+ {
+ clientData->iPowerMeasurementsClientData.CompleteGetMeasurementsMessage(aReason);
+ clientData->iPowerMeasurementsClientData.Reset();
+ }
+
+ //reset the measurements data
+ CleanUpMeasurementsData();
+
+ COMPONENT_TRACE1(_L( "HWRM Server - CClientsData::MaxReportingPeriodReached - return" ) );
+ }
+
+// ---------------------------------------------------------
+// Destructor
+// ---------------------------------------------------------
+//
+CClientsData::~CClientsData()
+ {
+ COMPONENT_TRACE1(_L( "HWRM Server - CClientsData::~CClientsData()" ) );
+
+ CleanUpMeasurementsData();
+
+ COMPONENT_TRACE1(_L( "HWRM Server - CClientsData::~CClientsData - return" ) );
+ }
+
+// -----------------------------------------------------------------------------
+// CClientsData::EmptyClientsQue
+// Deletes all the items of the delts queue and empties it.
+// -----------------------------------------------------------------------------
+//
+void CClientsData::EmptyClientsQue()
+ {
+ COMPONENT_TRACE1(_L( "HWRM Server - CClientsData::EmptyClientsQue()" ) );
+
+ TClientData* clientData;
+
+ iClientsQueIter.SetToFirst();
+
+ while((clientData = iClientsQueIter++) != NULL)
+ {
+ iClientsQue.Remove(*clientData);
+ delete clientData;
+ }
+
+ COMPONENT_TRACE1(_L( "HWRM Server - CClientsData::EmptyClientsQue - return" ) );
+ }
+
+// -----------------------------------------------------------------------------
+// CClientsData::FindClient
+// Finds the clientthat correspond to the aPowerMeasurementsClientData.
+// -----------------------------------------------------------------------------
+//
+TClientData* CClientsData::FindClient(TPowerMeasurementsClientData* aPowerMeasurementsClientData)
+ {
+ COMPONENT_TRACE1(_L( "HWRM Server - CClientsData::FindClient()" ) );
+
+ TBool found(EFalse);
+ TClientData* clientData;
+
+ iClientsQueIter.SetToFirst();
+
+ while( found == EFalse && ((clientData = iClientsQueIter++) != NULL))
+ {
+ if (&(clientData->iPowerMeasurementsClientData) == aPowerMeasurementsClientData)
+ {
+ found = ETrue;
+ }
+ }
+
+ COMPONENT_TRACE1(_L( "HWRM Server - CClientsData::FindClient - return" ) );
+
+ return clientData;
+ }
+
+// -----------------------------------------------------------------------------
+// CClientsData::RecalculatePluginInterval
+// Adjusts the interval used by the plugin when a new client requests
+// measurement with a time interval that changes the GCD.
+// -----------------------------------------------------------------------------
+//
+void CClientsData::RecalculatePluginInterval(TUint &aIntervalMultiple)
+ {
+ COMPONENT_TRACE1(_L( "HWRM Server - CClientsData::RecalculatePluginInterval()" ) );
+
+ TClientData* clientData;
+
+ iClientsQueIter.SetToFirst();
+
+ clientData = iClientsQueIter++;
+ TUint newGCD = clientData->iPowerMeasurementsClientData.iRequestedIntervalMultiple;
+
+ while((clientData = iClientsQueIter++) != NULL)
+ {
+ newGCD = CalculateGCD(clientData->iPowerMeasurementsClientData.iRequestedIntervalMultiple,newGCD);
+ }
+ aIntervalMultiple = newGCD;
+
+ COMPONENT_TRACE1(_L( "HWRM Server - CClientsData::RecalculatePluginInterval - return" ) );
+ }
+
+// -----------------------------------------------------------------------------
+// CClientsData::GetPluginIntervalMultiple
+// Getter for the plugin's interval multiple.
+// -----------------------------------------------------------------------------
+//
+void CClientsData::GetPluginIntervalMultiple(TUint &aIntervalMultiple)
+ {
+ COMPONENT_TRACE1(_L( "HWRM Server - CClientsData::GetPluginIntervalMultiple()" ) );
+
+ aIntervalMultiple = iPluginIntervalMultiple;
+
+ COMPONENT_TRACE1(_L( "HWRM Server - CClientsData::GetPluginIntervalMultiple - return" ) );
+ }
+
+// -----------------------------------------------------------------------------
+// CClientsData::UpdatePluginIntervalMultiple
+// Setter for the plugin's time interval.
+// -----------------------------------------------------------------------------
+//
+void CClientsData::UpdatePluginIntervalMultiple(TUint aIntervalMultiple)
+ {
+ COMPONENT_TRACE1(_L( "HWRM Server - CClientsData::UpdatePluginIntervalMultiple()" ) );
+
+ iPluginIntervalMultiple = aIntervalMultiple;
+
+ COMPONENT_TRACE1(_L( "HWRM Server - CClientsData::UpdatePluginIntervalMultiple - return" ) );
+ }
+
+// -----------------------------------------------------------------------------
+// CClientsData::IsClientsQueEmpty
+// Cheks if the Clients Queue is empty
+// -----------------------------------------------------------------------------
+//
+TBool CClientsData::IsClientsQueEmpty()
+ {
+ COMPONENT_TRACE1(_L( "HWRM Server - CClientsData::IsClientsQueEmpty()" ) );
+ COMPONENT_TRACE1(_L( "HWRM Server - CClientsData::IsClientsQueEmpty - return" ) );
+
+ return iClientsQue.IsEmpty();
+ }
+
+// -----------------------------------------------------------------------------
+// CClientsData::CalculateGCD
+// Computes the Greatest Common Divisor of num1 and num2.
+// -----------------------------------------------------------------------------
+//
+TUint CClientsData::CalculateGCD(TUint num1, TUint num2)
+ {
+ COMPONENT_TRACE1(_L( "HWRM Server - CClientsData::CalculateGCD()" ) );
+
+ if (num2 == 0)
+ {
+ return num1;
+ }
+ else
+ {
+ return CalculateGCD(num2, num1 % num2);
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CClientsData::AddMeasurementsClientL
+// Creates and adds to the list a data structure containing all the
+// appropriate client data.
+// -----------------------------------------------------------------------------
+//
+void CClientsData::AddMeasurementsClientL(TPowerMeasurementsClientData& aPowerMeasurementsClientData)
+ {
+ COMPONENT_TRACE1(_L( "HWRM Server - CClientsData::AddMeasurementsClientL()" ) );
+
+ TClientData* clientData = new(ELeave) TClientData(aPowerMeasurementsClientData);
+
+ iClientsQue.AddFirst(*clientData);
+
+ COMPONENT_TRACE1(_L( "HWRM Server - CClientsData::AddMeasurementsClientL - return" ) );
+ }
+
+// -----------------------------------------------------------------------------
+// CClientsData::RemoveMeasurementsClientData
+// Deletes all the data relevant to the client whose PowerService holds
+// aPowerMeasurementsClientData.
+// -----------------------------------------------------------------------------
+//
+void CClientsData::RemoveMeasurementsClientData(TPowerMeasurementsClientData* aPowerMeasurementsClientData)
+ {
+ COMPONENT_TRACE1(_L( "HWRM Server - CClientsData::RemoveMeasurementsClientData()" ) );
+
+ TClientData* clientData;
+ clientData = FindClient(aPowerMeasurementsClientData);
+
+ if (clientData)
+ {
+ iClientsQue.Remove(*clientData);
+ delete clientData;
+
+ if (iClientsQue.IsEmpty())
+ {
+ SetMeasuringOff();
+ }
+ }
+
+ COMPONENT_TRACE1(_L( "HWRM Server - CClientsData::RemoveMeasurementsClientData - return" ) );
+ }
+
+// -----------------------------------------------------------------------------
+// CClientsData::RemoveMeasurementsClientL
+// Deletes all the data relevant to the client whose PowerService holds
+// aPowerMeasurementsClientData. Leaves in the case the client is not found.
+// -----------------------------------------------------------------------------
+//
+void CClientsData::RemoveMeasurementsClientL(TPowerMeasurementsClientData* aPowerMeasurementsClientData)
+ {
+ COMPONENT_TRACE1(_L( "HWRM Server - CClientsData::RemoveMeasurementsClientL()" ) );
+
+ TClientData* clientData;
+ clientData = FindClient(aPowerMeasurementsClientData);
+
+ if (clientData == NULL)
+ {
+ User::Leave(KErrNotFound);
+ }
+
+ iClientsQue.Remove(*clientData);
+ delete clientData;
+
+ if (iClientsQue.IsEmpty())
+ {
+ SetMeasuringOff();
+ }
+
+ COMPONENT_TRACE1(_L( "HWRM Server - CClientsData::RemoveMeasurementsClientL - return" ) );
+ }
+
+// -----------------------------------------------------------------------------
+// CClientsData::NeedPluginIntervalAdjustment
+// Checks if a adjustement is needed for the interval used by the plugin.
+// The Interval Multiple requested by the new client is passed
+// -----------------------------------------------------------------------------
+//
+
+TBool CClientsData::NeedPluginIntervalAdjustment(TUint aIntervalMultiple)
+ {
+ COMPONENT_TRACE1(_L( "HWRM Server - CClientsData::NeedPluginIntervalAdjustment()" ) );
+
+ TBool needAdjustment;
+
+ if (iClientsQue.IsEmpty())
+ {
+ needAdjustment = EFalse;
+ }
+ else
+ {
+ TUint currentPluginIntervalMultiple;
+ GetPluginIntervalMultiple(currentPluginIntervalMultiple);
+ TUint currentGCD = currentPluginIntervalMultiple;
+ TUint newInterval = aIntervalMultiple;
+
+ if( (newInterval % currentGCD) == 0)
+ {
+ needAdjustment = EFalse;
+ }
+ else
+ {
+ needAdjustment = ETrue;
+ }
+ }
+
+ COMPONENT_TRACE2(_L( "HWRM Server - CClientsData::NeedPluginIntervalAdjustment( - return 0x%x" ), needAdjustment );
+
+ return needAdjustment;
+ }
+
+// -----------------------------------------------------------------------------
+// CClientsData::CleanUpMeasurementsData
+// Deletes all the measurement related data. Used at destruction time.
+// -----------------------------------------------------------------------------
+//
+void CClientsData::CleanUpMeasurementsData()
+ {
+ COMPONENT_TRACE1(_L( "HWRM Server - CClientsData::CleanUpMeasurementsData()" ) );
+
+ EmptyClientsQue();
+
+ COMPONENT_TRACE1(_L( "HWRM Server - CClientsData::CleanUpMeasurementsData - return" ) );
+ }
+
+// -----------------------------------------------------------------------------
+// CClientsData::BatteryMeasurementIndicationL
+// Handles a measurement callback indication from the plugin.
+// -----------------------------------------------------------------------------
+//
+void CClientsData::BatteryMeasurementIndicationL(TDesC8& aValue)
+ {
+ COMPONENT_TRACE1(_L( "HWRM Server - CClientsData::BatteryMeasurementIndicationL()" ) );
+
+ TClientData* clientData;
+
+ iClientsQueIter.SetToFirst();
+
+ while((clientData = iClientsQueIter++) != NULL)
+ {
+ clientData->iPowerMeasurementsClientData.NewBatteryMeasurementL(aValue, iPluginIntervalMultiple);
+ }
+
+ COMPONENT_TRACE1(_L( "HWRM Server - CClientsData::BatteryMeasurementIndicationL - return" ) );
+ }
+
+
+// -----------------------------------------------------------------------------
+// TPowerMeasurementsClientData::IsMeasuringOn
+// Check if plugin measuring is on.
+// -----------------------------------------------------------------------------
+//
+TBool CClientsData::IsMeasuringOn()
+ {
+ COMPONENT_TRACE1(_L( "HWRM Server - CClientsData::IsMeasuringOn()" ) );
+
+ COMPONENT_TRACE2(_L( "HWRM Server - CClientsData::IsMeasuringOn( - return 0x%x" ), iMeasuring );
+
+ return iMeasuring;
+ }
+
+// -----------------------------------------------------------------------------
+// TPowerMeasurementsClientData::SetMeasuringOn
+// Set the plugin measuring flag on.
+// -----------------------------------------------------------------------------
+//
+void CClientsData::SetMeasuringOn()
+ {
+ COMPONENT_TRACE1(_L( "HWRM Server - CClientsData::SetMeasuringOn()" ) );
+
+ iMeasuring = ETrue;
+ iMeasurementsTimer.Set(0);
+
+ COMPONENT_TRACE1(_L( "HWRM Server - CClientsData::SetMeasuringOn - return" ) );
+ }
+
+// -----------------------------------------------------------------------------
+// TPowerMeasurementsClientData::SetMeasuringOff
+// Set the plugin measuring flag off.
+// -----------------------------------------------------------------------------
+//
+void CClientsData::SetMeasuringOff()
+ {
+ COMPONENT_TRACE1(_L( "HWRM Server - CClientsData::SetMeasuringOff()" ) );
+
+ iMeasuring = EFalse;
+ iMeasurementsTimer.Cancel();
+
+ TClientData* clientData;
+ iClientsQueIter.SetToFirst();
+ while((clientData = iClientsQueIter++) != NULL)
+ {
+ clientData->iPowerMeasurementsClientData.SetMeasuringOff();
+ }
+
+ COMPONENT_TRACE1(_L( "HWRM Server - CClientsData::SetMeasuringOff - return" ) );
+ }
+
+TClientData::TClientData(TPowerMeasurementsClientData& aPowerMeasurementsClientData)
+ :iPowerMeasurementsClientData(aPowerMeasurementsClientData)
+ {
+ COMPONENT_TRACE1(_L( "HWRM Server - TClientData::TClientData()" ) );
+ COMPONENT_TRACE1(_L( "HWRM Server - TClientData::TClientData - return" ) );
+ }
+
+TBatteryInfoData::TBatteryInfoData(const CHWRMPowerService& aPowerClientService, const RMessage2& aRequestedMessage)
+ :iPowerClientService(aPowerClientService),
+ iRequestedMessage(aRequestedMessage)
+ {
+ COMPONENT_TRACE1(_L( "HWRM Server - TBatteryInfoData::TBatteryInfoData()" ) );
+ COMPONENT_TRACE1(_L( "HWRM Server - TBatteryInfoData::TBatteryInfoData - return" ) );
+ }
+// ========================== OTHER EXPORTED FUNCTIONS =========================
+
+// End of File