sapi_sysinfo/tsrc/testing/tsysmanualtest/src/tsysbatterynot.cpp
changeset 0 14df0fbfcc4e
--- /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();
+}
+
+