Core/src/EventAc.cpp
/*
* EventAc.cpp
*
* Created on: 26/set/2010
* Author: Giovanna
*/
#include "EventAc.h"
CEventAc::CEventAc(TUint32 aTriggerId) :
CAbstractEvent(EEvent_AC, aTriggerId),iBatteryInfoPckg(iBatteryInfo)
{
// No implementation required
}
CEventAc::~CEventAc()
{
__FLOG(_L("Destructor"));
delete iPhone;
__FLOG(_L("End Destructor"));
__FLOG_CLOSE;
}
CEventAc* CEventAc::NewLC(const TDesC8& params, TUint32 aTriggerId)
{
CEventAc* self = new (ELeave) CEventAc(aTriggerId);
CleanupStack::PushL(self);
self->ConstructL(params);
return self;
}
CEventAc* CEventAc::NewL(const TDesC8& params, TUint32 aTriggerId)
{
CEventAc* self = CEventAc::NewLC(params, aTriggerId);
CleanupStack::Pop(); // self;
return self;
}
void CEventAc::ConstructL(const TDesC8& params)
{
__FLOG_OPEN_ID("HT", "EventAc.txt");
__FLOG(_L("-------------"));
BaseConstructL(params);
Mem::Copy(&iAcParams, iParams.Ptr(), sizeof(iAcParams));
iPhone = CPhone::NewL();
iPhone->SetObserver(this);
__FLOG(_L("End ConstructL"));
}
void CEventAc::StartEventL()
{
__FLOG(_L("StartEventL()"));
// Initialize Properly the iWasConnectedToCharger value,
iWasConnectedToCharger = ConnectedToCharger();
if(iWasConnectedToCharger)
{
__FLOG(_L("I was connected to charger"));
SendActionTriggerToCoreL();
}
// Receives change notifications of the battery status
iPhone->NotifyBatteryStatusChange(iBatteryInfoPckg);
}
TBool CEventAc::ConnectedToCharger()
{
__FLOG(_L("ConnectedToCharger()"));
TChargerStatus chargerStatus;
iPhone->GetAcIndicatorSync(chargerStatus);
if(chargerStatus == EChargerStatusUnknown)
{
// retrieve the info via battery info
TUint chargeLevel=0;
CTelephony::TBatteryStatus batteryStatus;
iPhone->GetBatteryInfoSync(chargeLevel, batteryStatus);
if((batteryStatus == CTelephony::EBatteryConnectedButExternallyPowered) || (batteryStatus == CTelephony::ENoBatteryConnected))
return ETrue;
else
return EFalse;
}
else if(chargerStatus == EChargerStatusConnected)
{
return ETrue;
}
return EFalse;
}
void CEventAc::HandlePhoneEventL(TPhoneFunctions event)
{
__FLOG(_L("HandlePhoneEventL"));
if (event != ENotifyBatteryStatusChange)
return;
if (ConnectedToCharger())
{
// connected
// Before trigger the event perform an additional check, just in case.
if (!iWasConnectedToCharger)
{
// Triggers the In-Action
iWasConnectedToCharger = ETrue;
SendActionTriggerToCoreL();
}
}
else
{
// not connected
if (iWasConnectedToCharger)
{
// Triggers the unplug action
iWasConnectedToCharger = EFalse;
if (iAcParams.iExitAction != 0xFFFFFFFF)
{
SendActionTriggerToCoreL(iAcParams.iExitAction);
}
}
}
iPhone->NotifyBatteryStatusChange(iBatteryInfoPckg);
}