kerneltest/e32test/power/d_lddpowerseqtest.cpp
changeset 280 2bfb1feef9de
parent 0 a41df078684a
--- a/kerneltest/e32test/power/d_lddpowerseqtest.cpp	Mon Oct 04 12:03:52 2010 +0100
+++ b/kerneltest/e32test/power/d_lddpowerseqtest.cpp	Mon Oct 04 12:15:59 2010 +0100
@@ -60,6 +60,9 @@
 	DTest2PowerHandler();
 	void PowerUp();
 	void PowerDown(TPowerState);
+	void ActDead();
+private:
+	TBool iActDead;
 	};
 
 class DTestFactory : public DLogicalDevice
@@ -86,6 +89,8 @@
 	virtual TInt Request(TInt aReqNo, TAny* a1, TAny* a2);
 	DTest1PowerHandler power1;
 	DTest2PowerHandler power2;
+private:
+	TUint iPslShutdownTimeoutMsBackup;
 	};
 
 
@@ -149,6 +154,7 @@
 	power2.Remove();
 	//try to remove a handler twice - should not cause any problems
 	power2.Remove();
+	((DTestPowerManager*)(Kern::PowerModel()))->iPslShutdownTimeoutMs = iPslShutdownTimeoutMsBackup;
 	}
 
 TInt DTest1::Request(TInt aReqNo, TAny* a1, TAny* a2)
@@ -192,10 +198,18 @@
 		// 'Control' functions...
 		switch(aReqNo)
 			{
+				
 			// DoControl
 			case RLddTest1::ESET_SLEEPTIME:
 				sleepTime = (TUint)a1;
 				break;
+			case RLddTest1::EPOWER_ACTDEAD_POWER2:
+				power2.ActDead();
+				break;	
+			case RLddTest1::EPOWER_ESETPOWERDOWNTIMEOUT:
+				iPslShutdownTimeoutMsBackup = ((DTestPowerManager*)(Kern::PowerModel()))->iPslShutdownTimeoutMs;
+				((DTestPowerManager*)(Kern::PowerModel()))->iPslShutdownTimeoutMs = (TUint)a1;
+				break;				
 			}
 		}
 
@@ -209,7 +223,7 @@
 //
 	}
 
-DTest2PowerHandler::DTest2PowerHandler():DPowerHandler(KLitPower2)
+DTest2PowerHandler::DTest2PowerHandler():DPowerHandler(KLitPower2), iActDead(EFalse)
 	{
 //
 // Power handler2 constructor
@@ -276,5 +290,14 @@
 
 	Kern::RequestComplete(aStatus_down2, KErrNone);
 
-	PowerDownDone();
+	if(!iActDead)
+		{
+		PowerDownDone();
+		}
 	}
+
+void DTest2PowerHandler::ActDead()
+	{
+	iActDead = ETrue;
+	}
+