diff -r 000000000000 -r 2e3d3ce01487 commonappservices/alarmservertest/TestMultipleAlarmsSuite/src/AlarmActionPerformer.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/commonappservices/alarmservertest/TestMultipleAlarmsSuite/src/AlarmActionPerformer.cpp Tue Feb 02 10:12:00 2010 +0200 @@ -0,0 +1,128 @@ +// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "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: +// Contains implementation of CAlarmActionPerformer class +// +// + +/** + @file + @internalTechnology +*/ + +// User Include +#include "AlarmActionPerformer.h" + +// System Include +#include + +/** +Constructor. +Adds itself to the active scheduler +@internalTechnology +@test +*/ +CAlarmActionPerformer::CAlarmActionPerformer() : CActive(EPriorityStandard) + { + CActiveScheduler::Add(this); + } + +/** +From CActive. Performs the action and completes the test step thread +@internalTechnology +@test +*/ +void CAlarmActionPerformer::RunL() + { + TInt error = KErrNone; + switch(iAlarmAction) + { + case TestMultipleAlarms::ESnooze: + { + TRAP(error, iAlarmControl->Supervisor()->CmdTaskAwayFromAlarmL(iMinsToSnooze)); + break; + } + case TestMultipleAlarms::EClear: + { + iAlarmControl->Supervisor()->CmdAcknowledgeAlarm(); + break; + } + case TestMultipleAlarms::EStopActiveScheduler: + { + CActiveScheduler::Stop(); + break; + } + default: + error = KErrNotSupported; + break; + } + iTestStepThreadDuplicateHandle.RequestComplete(iExternalRequest, error); + iTestStepThreadDuplicateHandle.Close(); + } + +/** +From CActive. Completes the test step thread with KErrCancel +@internalTechnology +@test +*/ +void CAlarmActionPerformer::DoCancel() + { + if(iTestStepThreadDuplicateHandle.Handle() != KNullHandle) + { + iTestStepThreadDuplicateHandle.RequestComplete(iExternalRequest, KErrCancel); + iTestStepThreadDuplicateHandle.Close(); + } + } + +/** +Sets up the Alarm Action Performer to perform an action +@param aAlarmControl The alarm control object which we have to snooze/clear +@param aStatus Pointer to the request status which we will complete once we +are done +@param aTestStepThreadDuplicateHandle A duplicate handle to the test step thread +@param aAlarmAction The action to be performed, i.e, snooze/clear +@internalTechnology +@test +*/ +void CAlarmActionPerformer::SetCommonParams(CDummyAlarmControl* aAlarmControl, TRequestStatus* aStatus, RThread& aTestStepThreadDuplicateHandle, const TestMultipleAlarms::TAlarmAction& aAlarmAction) + { + iStatus = KRequestPending; + SetActive(); + iExternalRequest = aStatus; + iAlarmControl = aAlarmControl; + iTestStepThreadDuplicateHandle = aTestStepThreadDuplicateHandle; + iAlarmAction = aAlarmAction; + } + +/** +Sets the number of minutes to snooze the alarm +@param aMinsToSnooze The number of minutes to snooze the alarm +@internalTechnology +@test +*/ +void CAlarmActionPerformer::SetMinsToSnooze(const TInt& aMinsToSnooze) + { + iMinsToSnooze = aMinsToSnooze; + } + +/** +Returns a pointer to the request status object of this AO +@return A pointer to the request status object of this AO +@internalTechnology +@test +*/ +TRequestStatus* CAlarmActionPerformer::Status() + { + return &iStatus; + } +