lbs/common/src/ctlbsclientrequestor.cpp
branchSymbian2
changeset 1 8758140453c0
child 6 c108117318cb
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lbs/common/src/ctlbsclientrequestor.cpp	Thu Jan 21 12:53:44 2010 +0000
@@ -0,0 +1,274 @@
+// Copyright (c) 2001-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+
+
+// INCLUDE FILES
+#include "ctlbsportedstepbase.h"
+#include "ctlbsclientrequestor.h"
+#include "mctlbsrequestobserver.h"
+
+// CONSTANTS
+
+// ================= MEMBER FUNCTIONS =======================
+
+// Two-phased constructor.
+CT_LbsClientRequestor* CT_LbsClientRequestor::NewL(
+	TUid                	aPsyUid,
+	MCT_LbsRequestObserver*	aObserver,
+	const TDesC&			aClientName,
+    CTestExecuteLogger&		aLogger
+    )
+	{
+    CT_LbsClientRequestor* self = new (ELeave) CT_LbsClientRequestor(aObserver, aPsyUid);
+    CleanupStack::PushL(self);
+    self->ConstructL(aClientName, aLogger);
+    CleanupStack::Pop();
+    return self;
+    }
+
+// Destructor
+CT_LbsClientRequestor::~CT_LbsClientRequestor()
+    {
+    iObserver = NULL;
+    Cancel();
+    iPosServer.Close();
+    }
+
+// C++ default constructor can NOT contain any code, that
+// might leave.
+//
+CT_LbsClientRequestor::CT_LbsClientRequestor(
+	MCT_LbsRequestObserver*   aObserver,
+	TUid				aPsyUid)
+    : CActive(EPriorityStandard), iObserver(aObserver), iCompletionCode(KNoEvent),
+	iPsyUid(aPsyUid), iContinueEventRequesting(FALSE)
+    {
+    }
+
+// EPOC default constructor can leave.
+void CT_LbsClientRequestor::ConstructL(
+	const TDesC& aClientName,
+    CTestExecuteLogger&		aLogger
+    )
+	{
+	iName = aClientName;
+    iLogger = aLogger;
+    User::LeaveIfError(iPosServer.Connect());
+    iModuleInfo = TPositionInfo();
+    CActiveScheduler::Add(this);
+    }
+
+// ---------------------------------------------------------
+// CRequester::CompletionTimeUTC
+// 
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+const TTime& CT_LbsClientRequestor::CompletionTimeUTC() const
+    {
+    return iCompletionTimeUTC;
+    }
+
+// ---------------------------------------------------------
+// CRequester::CompletionCode
+// 
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+TInt CT_LbsClientRequestor::CompletionCode() const
+    {
+    return iCompletionCode;
+    }
+
+// ---------------------------------------------------------
+// CT_LbsClientRequestor::ResetCompletionCode
+// 
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientRequestor::ResetCompletionCode()
+	{
+	iCompletionCode = KNoEvent;
+	}
+
+// ---------------------------------------------------------
+// CRequester::StartRequest
+// 
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientRequestor::StartRequestL(TBool aDefaultPsy)
+    {    
+    _LIT(KService, "SAAA");
+	if (aDefaultPsy == FALSE)
+		{
+		User::LeaveIfError(iPositioner.Open(iPosServer, iPsyUid));    
+		}
+	else 
+		{
+		User::LeaveIfError(iPositioner.Open(iPosServer));
+		}
+	
+	
+	iPositioner.SetRequestor(CRequestor::ERequestorService,
+                             CRequestor::EFormatApplication,
+                             KService);
+
+    iPositioner.NotifyPositionUpdate(iModuleInfo, iStatus);
+    SetActive();
+    }
+
+// ---------------------------------------------------------
+// CRequester::RunL
+// 
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientRequestor::RunL()
+    {
+    iCompletionCode = iStatus.Int();
+    RequestComplete();
+	if (iContinueEventRequesting)
+		{
+		iContinueEventRequesting = FALSE;
+		RequestModuleStatusEvent();
+		}
+    }
+
+// ---------------------------------------------------------
+// CT_LbsClientRequestor::DoCancel
+// 
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientRequestor::DoCancel()
+    {
+	iPosServer.CancelRequest(EPositionServerNotifyModuleStatusEvent/*EPositionServerGetModuleStatus*/);
+    }
+
+// ---------------------------------------------------------
+// CT_LbsClientRequestor::RequestComplete
+// 
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientRequestor::RequestComplete()
+    {
+	if (iObserver)
+        {
+        TRAPD(err, iObserver->RequestCompleteL());
+        if(KErrNone != err)
+        	{
+        	_LIT(KClientRequestor, "Error in LbsClientRequestor: %d");
+        	ERR_PRINTF2(KClientRequestor, err);
+        	}
+        }
+    }
+
+// ---------------------------------------------------------
+// CT_LbsClientRequestor::RequestModuleStatusEvent
+// 
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientRequestor::RequestModuleStatusEvent()
+	{
+	istatusEvent.SetRequestedEvents(TPositionModuleStatusEvent::EEventAll);
+	iPosServer.NotifyModuleStatusEvent(istatusEvent, iStatus, iPsyUid);
+	if (!IsActive())
+		{
+		SetActive();
+		}
+	}
+
+// ---------------------------------------------------------
+// CT_LbsClientRequestor::CancelModuleStatusEvent
+// 
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientRequestor::CancelModuleStatusEvent()
+	{
+	iPosServer.CancelRequest(EPositionServerGetModuleStatus);
+	}
+
+// ---------------------------------------------------------
+// CT_LbsClientRequestor::ReadModuleStatusEvent
+// 
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+TInt CT_LbsClientRequestor::ReadModuleStatusEvent()
+	{
+	TPositionModuleStatus modstatus = TPositionModuleStatus();
+	istatusEvent.GetModuleStatus(modstatus);
+	return modstatus.DeviceStatus();
+	}
+
+// ---------------------------------------------------------
+// CT_LbsClientRequestor::ReadModuleStatusClientApi
+// 
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+TInt CT_LbsClientRequestor::ReadModuleStatusClientApi(TPositionModuleId aModuleId)
+	{
+	//Module status from Client API
+	TPositionModuleStatus moduleStatus = TPositionModuleStatus();
+	iPosServer.GetModuleStatus(moduleStatus, aModuleId);
+	return moduleStatus.DeviceStatus();
+	}
+
+// ---------------------------------------------------------
+// CT_LbsClientRequestor::ReadModuleStatusModulesApi
+// 
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+TBool CT_LbsClientRequestor::ReadModuleStatusModulesApi(CPosModules* aDb, TPositionModuleId aModuleId)
+	{
+	//Module info from Modules API
+	TPositionModuleInfo moduleInfo;
+	CPosModuleIdList* prioList = aDb->ModuleIdListLC();
+	TInt modnr = prioList->Find(aModuleId);
+	aDb->GetModuleInfoL(prioList->At(modnr), moduleInfo);
+	CleanupStack::PopAndDestroy(prioList);
+	return moduleInfo.IsAvailable();
+	}
+
+// ---------------------------------------------------------
+// CT_LbsClientRequestor::ContinueRequesting
+// 
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientRequestor::ContinueRequesting()
+	{
+	iContinueEventRequesting = TRUE;;
+	}
+
+// ---------------------------------------------------------
+// CT_LbsClientRequestor::ClosePositioner
+// 
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientRequestor::ClosePositioner()
+	{
+	iPositioner.Close();
+	}
+
+//  End of File