diff -r 000000000000 -r 79dd3e2336a0 devsound/devsoundrefplugin/tsrc/swcdwrap/TSU_MMF_SWCDWRAP_AsyncTimer.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/devsound/devsoundrefplugin/tsrc/swcdwrap/TSU_MMF_SWCDWRAP_AsyncTimer.cpp Fri Oct 08 19:40:43 2010 +0100 @@ -0,0 +1,170 @@ +// Copyright (c) 2003-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: +// + +// EPOC includes +#include +#include "TSU_MMF_SWCDWRAP_AsyncTimer.h" + +CMMF_TSU_SWCDWRAP_MakeAsyncHwDeviceCall* CMMF_TSU_SWCDWRAP_MakeAsyncHwDeviceCall::NewL() + { + CMMF_TSU_SWCDWRAP_MakeAsyncHwDeviceCall* self = new(ELeave)CMMF_TSU_SWCDWRAP_MakeAsyncHwDeviceCall(); + CleanupStack::PushL(self); + self->ConstructL(); + CleanupStack::Pop(); + return self; + } + +void CMMF_TSU_SWCDWRAP_MakeAsyncHwDeviceCall::ConstructL() + { + CTimer::ConstructL(); + CActiveScheduler::Add(this); + iStopActiveSchedulerOnCall = ETrue; + } + +CMMF_TSU_SWCDWRAP_MakeAsyncHwDeviceCall::CMMF_TSU_SWCDWRAP_MakeAsyncHwDeviceCall() : CTimer(EPriorityHigh) + { + } + +void CMMF_TSU_SWCDWRAP_MakeAsyncHwDeviceCall::CallPauseAfter(CMMFHwDevice& aHwDevice, TTimeIntervalMicroSeconds32 aTimeInterval) + { + iCallActionCancelled = EFalse; + iHwDevice = &aHwDevice; + iCallPause = ETrue; + iPauseError = KErrNone; + After(aTimeInterval); + } + +void CMMF_TSU_SWCDWRAP_MakeAsyncHwDeviceCall::CallStopAfter(CMMFHwDevice& aHwDevice, TTimeIntervalMicroSeconds32 aTimeInterval) + { + iCallActionCancelled = EFalse; + iHwDevice = &aHwDevice; + iCallStop = ETrue; + iStopError = KErrNone; + After(aTimeInterval); + } + +void CMMF_TSU_SWCDWRAP_MakeAsyncHwDeviceCall::CallStopPauseAfter(CMMFHwDevice& aHwDevice, TTimeIntervalMicroSeconds32 aTimeInterval) + { + iCallActionCancelled = EFalse; + iHwDevice = &aHwDevice; + iCallStopPause = ETrue; + iPauseError = KErrNone; + iStopError = KErrNone; + After(aTimeInterval); + } + +void CMMF_TSU_SWCDWRAP_MakeAsyncHwDeviceCall::CallStopAndDeleteCodecAfter(CMMFHwDevice& aHwDevice, TTimeIntervalMicroSeconds32 aTimeInterval) + { + iCallActionCancelled = EFalse; + iHwDevice = &aHwDevice; + iCallStopAndDeleteCodec = ETrue; + iStopError = KErrNone; + After(aTimeInterval); + } + + +void CMMF_TSU_SWCDWRAP_MakeAsyncHwDeviceCall::RunL() + { + if (!iCallActionCancelled) + { + if (iCallStopPause) + { + iStopError = iHwDevice->Stop(); + if (iStopError != KErrNone) + { + User::Leave(iStopError); + } + + iPauseError = iHwDevice->Pause(); + if (iPauseError != KErrNone) + { + User::Leave(iPauseError); + } + + iCallStopPause = EFalse; + } + else if (iCallPause) + { + iPauseError = iHwDevice->Pause(); + if (iPauseError != KErrNone) + { + User::Leave(iPauseError); + } + + iCallPause = EFalse; + } + else if (iCallStop) + { + iStopError = iHwDevice->Stop(); + if (iStopError != KErrNone) + { + User::Leave(iStopError); + } + iCallStop = EFalse; + } + else if ( iCallStopAndDeleteCodec) + { + iStopAndDeleteCodecError = iHwDevice->StopAndDeleteCodec(); + if (iStopAndDeleteCodecError != KErrNone) + { + User::Leave(iStopAndDeleteCodecError); + } + iCallStopAndDeleteCodec = EFalse; + } + } + + if (iStopActiveSchedulerOnCall) + { + CActiveScheduler::Stop(); + } + } + + +TInt CMMF_TSU_SWCDWRAP_MakeAsyncHwDeviceCall::PauseError() + { + return iPauseError; + } + + +TInt CMMF_TSU_SWCDWRAP_MakeAsyncHwDeviceCall::StopError() + { + return iStopError; + } + + +TInt CMMF_TSU_SWCDWRAP_MakeAsyncHwDeviceCall::StopAndDeleteCodecError() + { + return iStopAndDeleteCodecError; + } + + +void CMMF_TSU_SWCDWRAP_MakeAsyncHwDeviceCall::CancelCallAction() + { + iCallActionCancelled = ETrue; + } + + +void CMMF_TSU_SWCDWRAP_MakeAsyncHwDeviceCall::StopActiveSchedulerOnCall(TBool aStopActiveSchedulerOnCall) + { + iStopActiveSchedulerOnCall = aStopActiveSchedulerOnCall; + } + + + + + + + +