diff -r 000000000000 -r f63038272f30 bluetoothengine/btmac/src/BTMonoCmdHandler/btmcbattery.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bluetoothengine/btmac/src/BTMonoCmdHandler/btmcbattery.cpp Mon Jan 18 20:28:57 2010 +0200 @@ -0,0 +1,148 @@ +/* +* Copyright (c) 2005 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: General Active Object offering asynchronous service +* +*/ + +#include "atcodec.h" +#include "btmcbattery.h" +#include "btmcphonestatus.h" +#include "debug.h" +#include + +const TInt8 KMaxPhoneStrength = 7; +const TInt8 KMaxHFPStrength = 5; + +// ----------------------------------------------------------------------------- +// CBtmcBattery::NewL +// ----------------------------------------------------------------------------- +CBtmcBattery* CBtmcBattery::NewL(CBtmcPhoneStatus& aParent) + { + CBtmcBattery* self = CBtmcBattery::NewLC(aParent); + CleanupStack::Pop(self); + return self; + } + +// ----------------------------------------------------------------------------- +// CBtmcBattery::NewLC +// ----------------------------------------------------------------------------- +CBtmcBattery* CBtmcBattery::NewLC(CBtmcPhoneStatus& aParent) + { + CBtmcBattery* self = new (ELeave) CBtmcBattery(aParent); + CleanupStack::PushL(self); + self->ConstructL(); + return self; + } + +// ----------------------------------------------------------------------------- +// CBtmcBattery::~CBtmcBattery +// ----------------------------------------------------------------------------- +CBtmcBattery::~CBtmcBattery() + { + TRACE_FUNC_ENTRY + Cancel(); + iProperty.Close(); + TRACE_FUNC_EXIT + } + +// ------------------------------------------------------------------------------- +// CBtmcBattery::GoActive +// ------------------------------------------------------------------------------- +void CBtmcBattery::GoActive() + { + TRACE_ASSERT(!IsActive(), KErrGeneral); + iProperty.Subscribe(iStatus); + SetActive(); + TRACE_FUNC + } + + +// ------------------------------------------------------------------------------- +// CBtmcBattery::RunL +// ------------------------------------------------------------------------------- +void CBtmcBattery::RunL() + { + TRACE_FUNC_ENTRY + if (iStatus == KErrNone) + { + TInt temp = 0; + TInt err = iProperty.Get(temp); + if (!err) + { + ConvertToHFPScale(temp); + iCharge = temp; + TRACE_INFO((_L("iStatus %d, battery strength %d"), iStatus.Int(), temp)) + iParent.HandleBatteryChangeL(temp); + } + GoActive(); + } + else + { + TRACE_ERROR((_L("ERROR %d"), iStatus.Int())) + } + TRACE_FUNC_EXIT + } + +// ------------------------------------------------------------------------------- +// CBtmcBattery::DoCancel +// ------------------------------------------------------------------------------- +void CBtmcBattery::DoCancel() + { + iProperty.Cancel(); + TRACE_FUNC + } + + +// ------------------------------------------------------------------------------- +// CBtmcBattery::RunError +// ------------------------------------------------------------------------------- +TInt CBtmcBattery::RunError(TInt /*aErr*/) + { + iProperty.Close(); + TRACE_FUNC + return KErrNone; + } + +// ----------------------------------------------------------------------------- +// CBtmcBattery::CBtmcBattery +// ----------------------------------------------------------------------------- +CBtmcBattery::CBtmcBattery(CBtmcPhoneStatus& aParent) + : CActive(EPriorityNormal), iParent(aParent) + { + CActiveScheduler::Add(this); + } + +void CBtmcBattery::ConstructL() + { + TRACE_FUNC_ENTRY + LEAVE_IF_ERROR(iProperty.Attach(KPSUidHWRMPowerState, KHWRMBatteryLevel)); + LEAVE_IF_ERROR(iProperty.Get(iCharge)); + ConvertToHFPScale(iCharge); + TRACE_FUNC_EXIT + } + +void CBtmcBattery::ConvertToHFPScale(TInt &aStrength) + { + TReal result; + Math::Round( result, TReal(TReal(KMaxHFPStrength)/TReal(KMaxPhoneStrength) *TReal(aStrength)),0); + aStrength = TInt8(result); + } + +TInt CBtmcBattery::GetBatteryCharge() + { + return iCharge; + } + + +// End of File