lbstest/lbstestproduct/lbshybridmolr/src/ctlbstestactivemanager.cpp
changeset 0 9cfd9a3ee49c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lbstest/lbstestproduct/lbshybridmolr/src/ctlbstestactivemanager.cpp	Tue Feb 02 01:50:39 2010 +0200
@@ -0,0 +1,128 @@
+// Copyright (c) 2007-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:
+//
+
+#include "ctlbstestactivemanager.h"
+
+CT_LbsTestActiveManager* CT_LbsTestActiveManager::NewL(TInt aObjectId, MTestFlowObserver& aObserver, TPriority aPriority, CTestStep& aStep)
+	{
+	CT_LbsTestActiveManager* self = new(ELeave) CT_LbsTestActiveManager(aObjectId, aObserver, aPriority, aStep);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+CT_LbsTestActiveManager::~CT_LbsTestActiveManager()
+	{
+	Cancel();
+	}
+
+CT_LbsTestActiveManager::CT_LbsTestActiveManager(TInt aObjectId, MTestFlowObserver& aObserver, TPriority aPriority, CTestStep& aStep)
+	: CTimer(aPriority), iState(EStateNone), iObjectId(aObjectId), 
+		iWaiting(EFalse), iIsDeactivated(EFalse), iObserver(aObserver), iStep(aStep)
+	{
+	CActiveScheduler::Add(this);
+	}
+
+void CT_LbsTestActiveManager::StartL(TTimeIntervalMicroSeconds32 aDelay)
+	{
+	if(iWaiting || iIsDeactivated)
+		{
+		return;
+		}
+
+	iState = EStateWaitingToStart;
+	After(aDelay);
+
+	iWaiting = ETrue;
+	}
+
+void CT_LbsTestActiveManager::WaitForPosition(TTimeIntervalMicroSeconds32 aDelay)
+	{
+	if(iWaiting || iIsDeactivated)
+		{
+		return;
+		}
+
+	iState = EStateWaitingForPosition;
+	After(aDelay);
+	iWaiting = ETrue;
+	}
+
+void CT_LbsTestActiveManager::Deactivate()
+	{
+	iIsDeactivated = ETrue;
+	}
+
+TBool CT_LbsTestActiveManager::IsDeactivated()
+	{
+	return iIsDeactivated;
+	}
+
+// MPosServerObserver
+void CT_LbsTestActiveManager::OnGetLastKnownPosition(TInt32 aErr, const TPositionInfoBase& aPosInfo)
+	{
+	iWaiting = EFalse;
+	Cancel();
+	TRAPD(err, iObserver.OnGetLastKnownPositionL(iObjectId, aErr, aPosInfo));
+	if(err != KErrNone)
+		{
+		RunError(err);
+		}
+	}
+
+
+void CT_LbsTestActiveManager::OnNotifyPositionUpdate(TInt32 aErr, const TPositionInfoBase& aPosInfo)
+	{
+	iWaiting = EFalse;
+	Cancel();
+	TRAPD(err, iObserver.OnNotifyPositionUpdateL(iObjectId, aErr, aPosInfo));
+	if(err != KErrNone)
+		{
+		RunError(err);
+		}
+	}
+
+void CT_LbsTestActiveManager::RunL()
+	{
+	iWaiting = EFalse;
+	switch(iState)
+		{
+		case EStateWaitingToStart:
+			{
+			iState = EStateNone;
+			iObserver.OnReadyL(iObjectId);
+			break;
+			}
+		case EStateWaitingForPosition:
+			{
+			iState = EStateNone;
+			iObserver.OnTimedOutL(iObjectId);
+			break;
+			}
+		default:
+			{
+			User::Leave(KErrCorrupt);
+			}
+		}
+	}
+
+TInt CT_LbsTestActiveManager::RunError(TInt aError)
+	{
+	iStep.SetTestStepError(aError);
+	iStep.SetTestStepResult(EFail);
+	iObserver.StopTest();
+	return KErrNone;
+	}