--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sapi_sysinfo/tsrc/testing/tsysmanualtest/src/tsysbatterynot.cpp Mon Mar 30 12:51:10 2009 +0300
@@ -0,0 +1,253 @@
+/*
+* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "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: Tests battery notifications
+*
+*/
+
+
+
+#include "tsysmanualtest.h"
+#include "sysinfoservice.h"
+#include "entitykeys.h"
+#include "tsysbatterynot.h"
+
+using namespace SysInfo;
+
+_LIT(KBatteryLevel,"BatteryLevel");
+
+CBatteryNot* CBatteryNot::NewL(CStifLogger* aLog)
+ {
+ CBatteryNot* self = new(ELeave) CBatteryNot(aLog);
+ self->ConstructL();
+ return self;
+ }
+
+CBatteryNot::~CBatteryNot()
+ {
+ Cancel();
+
+ if(iWaitScheduler->IsStarted())
+ iWaitScheduler->AsyncStop();
+
+ delete iSysInfoService;
+ delete iWaitScheduler;
+ delete iTimer;
+ }
+
+void CBatteryNot::ConstructL()
+ {
+ iSysInfoService = CSysInfoService::NewL();
+ iWaitScheduler = new(ELeave) CActiveSchedulerWait();
+ iTimer = CWatchTimer::NewL(EPriorityNormal,this);
+ iCallBackCounter = 0 ;
+ iCount = 3 ;
+ CActiveScheduler::Add(this);
+ }
+
+CBatteryNot::CBatteryNot(CStifLogger* aLog)
+ :CActive(EPriorityStandard),
+ iLog(aLog)
+ {
+ }
+
+void CBatteryNot::DoCancel()
+ {
+ }
+
+void CBatteryNot::RunL()
+ {
+ TestFuncL();
+// iWaitScheduler->AsyncStop();
+ }
+
+void CBatteryNot::Start()
+ {
+ SetActive();
+ TRequestStatus* temp = &iStatus;
+ User::RequestComplete(temp, KErrNone);
+ iWaitScheduler->Start();
+ }
+
+TInt CBatteryNot::Result()
+ {
+ if(iError || iChargingResult || iLevelResult || iStrengthResult)
+ return KErrGeneral ;
+ else
+ return KErrNone ;
+ }
+
+void CBatteryNot::TestFuncL()
+ {
+ const TTimeIntervalMicroSeconds32 threeMin(180000000);
+ CStatus* batStrength = CStatus::NewL(50) ;
+ iSysInfoService->GetInfoL(KBattery,KBatteryStrength,1,this,batStrength);
+ iSysInfoService->GetNotificationL(KBattery,KBatteryLevel,2,this);
+ iSysInfoService->GetNotificationL(KBattery,KChargingStatus,3,this);
+ iTimer->After(threeMin);
+ delete batStrength ;
+ }
+
+void CBatteryNot::HandleResponseL(const TDesC& aEntity,const TDesC& aKey,
+ CSysData* aOutput, TInt32 aTransID,TSysRequest::TRequestType aType, TInt aError)
+ {
+ if(iCount == iCallBackCounter)
+ {
+ delete iTimer;
+ iTimer = NULL;
+ iSysInfoService->Cancel(1) ;
+ iSysInfoService->Cancel(2) ;
+ iSysInfoService->Cancel(3) ;
+ iWaitScheduler->AsyncStop();
+ }
+
+ else
+ {
+ iCallBackCounter++ ;
+ iLog->Log(_L("Entity: %s, Key: %s "),aEntity.Ptr(),aKey.Ptr());
+
+ if(!aEntity.Compare(KBattery) )
+ {
+ if(!aKey.Compare(KBatteryStrength))
+ {
+ iLog->Log(_L("Battery Strength read.."));
+ if(!aError)
+ {
+ TInt32 tid = aTransID;
+ if(tid != 1)
+ {
+ iStrengthResult = KErrGeneral;
+ iLog->Log(_L("Incorrect TID Retured.. %d"),tid);
+ }
+
+ TInt BatteryStrength = ((CStatus*)aOutput)->Status();
+
+ iLog->Log(_L("Battery Strength: %d "),BatteryStrength);
+
+ if( BatteryStrength > 0 && BatteryStrength <= 100 )
+ {
+ iStrengthResult = KErrNone;
+ iLog->Log(_L("Battery strength is with in expected range"));
+ }
+ else
+ {
+ iStrengthResult = KErrGeneral;
+ iLog->Log(_L("Battery strength is out of range"));
+ }
+ delete aOutput;
+ }
+ else
+ {
+ iLog->Log(_L("ERROR SET"));
+ iStrengthResult = KErrGeneral;
+ }
+
+ }
+
+ else if(!aKey.Compare(KBatteryLevel))
+ {
+ iLog->Log(_L("Battery Level read.."));
+
+ if(!aError)
+ {
+ TInt32 tid = aTransID;
+ if(tid != 2)
+ {
+ iLevelResult = KErrGeneral;
+ iLog->Log(_L("Incorrect TID Retured.. %d"),tid);
+ }
+
+ TInt batteryLevel = ((CStatus*)aOutput)->Status();
+
+ iLog->Log(_L("Battery Level: %d "),batteryLevel);
+
+ if( batteryLevel >= 0 && batteryLevel <= 7 )
+ {
+ iLevelResult = KErrNone;
+ iLog->Log(_L("Battery Level is with in expected range"));
+ }
+ else
+ {
+ iLevelResult = KErrGeneral;
+ iLog->Log(_L("Battery Level is out of range"));
+ }
+ delete aOutput;
+ }
+ else
+ {
+ iLog->Log(_L("ERROR SET"));
+ iLevelResult = KErrGeneral;
+ }
+
+
+ }
+
+ else if(!aKey.Compare(KChargingStatus))
+ {
+ iLog->Log(_L("Battery Charging Status read.."));
+
+ if(!aError)
+ {
+ TInt32 tid = aTransID;
+ if(tid != 3)
+ {
+ iChargingResult = KErrGeneral;
+ iLog->Log(_L("Incorrect TID Retured.. %d"),tid);
+ }
+
+ TInt chargingStatus = ((CStatus*)aOutput)->Status();
+
+ iLog->Log(_L("ChargingStatus: %d "),chargingStatus);
+
+ if( chargingStatus == 1 )
+ {
+ iChargingResult = KErrNone;
+ iLog->Log(_L("Charging status is as expected"));
+ }
+ else
+ {
+ iChargingResult = KErrGeneral;
+ iLog->Log(_L("Charging status is wrong"));
+ }
+ delete aOutput;
+ }
+ else
+ {
+ iLog->Log(_L("ERROR SET"));
+ iChargingResult = KErrGeneral;
+ }
+
+ }
+
+ }
+
+ else
+ {
+ iLog->Log(_L("Incorrect Entity,Key.."));
+ iError = KErrGeneral ;
+ }
+ }
+
+ }
+
+void CBatteryNot::HandleTimeOut()
+{
+ iLog->Log(_L("CBatteryNot TimeOut reached..."));
+ iSysInfoService->Cancel(1) ;
+ iSysInfoService->Cancel(2) ;
+ iSysInfoService->Cancel(3) ;
+ iError = KErrGeneral;
+ iWaitScheduler->AsyncStop();
+}
+
+