devsound/devsoundrefplugin/tsrc/swcdwrap/TSU_MMF_SWCDWRAP_AsyncTimer.cpp
changeset 0 79dd3e2336a0
--- /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 <e32base.h>
+#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;
+	}
+
+
+
+
+
+
+ 
+