diff -r 000000000000 -r a41df078684a kerneltest/e32test/power/async.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/kerneltest/e32test/power/async.h Mon Oct 19 15:55:17 2009 +0100 @@ -0,0 +1,59 @@ +// Copyright (c) 1998-2009 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: +// e32test\power\async.h +// +// + +class RAsyncSwitchOff : public RThread + { +public: + TInt Start(TTimeIntervalMicroSeconds32 aTime); + TInt Wait(); + static TInt Thread(TAny* aPtr); +public: + TTimeIntervalMicroSeconds32 iTime; + TRequestStatus iStatus; + }; + +_LIT(KAsyncSwitchOffThreadName, "AsyncSwitchOffThread"); + +TInt RAsyncSwitchOff::Thread(TAny* aPtr) + { + RAsyncSwitchOff& a=*(RAsyncSwitchOff*)aPtr; + User::After(a.iTime); + UserHal::SwitchOff(); + return KErrNone; + } + +TInt RAsyncSwitchOff::Start(TTimeIntervalMicroSeconds32 aTime) + { + iTime=aTime; + TInt r=Create(KAsyncSwitchOffThreadName, Thread, 0x1000, NULL, this); + if (r!=KErrNone) + return r; + SetPriority(EPriorityMuchMore); + Logon(iStatus); + Resume(); + return KErrNone; + } + +TInt RAsyncSwitchOff::Wait() + { + User::WaitForRequest(iStatus); + TExitType exitType=ExitType(); + CLOSE_AND_WAIT(*this); + if (exitType!=EExitKill) + User::Panic(_L("AsyncSwitchOff"), iStatus.Int()); + return iStatus.Int(); + }