diff -r e8c1ea2c6496 -r 8758140453c0 lbs/common/src/ctlbsposclient.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lbs/common/src/ctlbsposclient.cpp Thu Jan 21 12:53:44 2010 +0000 @@ -0,0 +1,209 @@ +// Copyright (c) 2000-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: +// + + + +// INCLUDES +#include "ctlbsposclient.h" +#include "ctlbsposclientholder.h" +#include +#include + +// CONSTANTS + +// ================= MEMBER FUNCTIONS ======================= + +// C++ default constructor can NOT contain any code, that +// might leave. +// +CT_LbsPosClient::CT_LbsPosClient(CT_LbsPosClientHolder* aParent) +: CActive(EPriorityHigh), iParent(aParent) + { + CActiveScheduler::Add(this); + } + +// Destructor +CT_LbsPosClient::~CT_LbsPosClient() + { + Cancel(); + iPositioner.Close(); + if (!iSameClient) + iPosServer.Close(); + } + +// --------------------------------------------------------- +// CPosClient::ConstructL +// +// (other items were commented in a header). +// --------------------------------------------------------- +// +void CT_LbsPosClient::ConstructL(TUid aPsy) + { + //connect to EPos + User::LeaveIfError(iPosServer.Connect()); + iSameClient = EFalse; + //Open subsession + User::LeaveIfError(iPositioner.Open(iPosServer, aPsy)); + iModuleInfo = TPositionInfo(); + } + +// --------------------------------------------------------- +// CPosClient::ConstructL +// +// (other items were commented in a header). +// --------------------------------------------------------- +// +void CT_LbsPosClient::ConstructL(TUid aPsy, RPositionServer& aPositionServer) + { + //connect to EPos + //User::LeaveIfError(iPosServer.Connect()); + iPosServer = aPositionServer; + iSameClient = ETrue; + //Open subsession + User::LeaveIfError(iPositioner.Open(iPosServer, aPsy)); + iModuleInfo = TPositionInfo(); + } +// --------------------------------------------------------- +// CPosClient::NewL +// +// (other items were commented in a header). +// --------------------------------------------------------- +// +CT_LbsPosClient* CT_LbsPosClient::NewL(CT_LbsPosClientHolder* aParent, TUid aPsy) + { + CT_LbsPosClient* self = new (ELeave) CT_LbsPosClient(aParent); + CleanupStack::PushL(self); + self->ConstructL(aPsy); + CleanupStack::Pop(self); // self + return self; + } + +// --------------------------------------------------------- +// CPosClient::NewL +// +// (other items were commented in a header). +// --------------------------------------------------------- +// +CT_LbsPosClient* CT_LbsPosClient::NewL(CT_LbsPosClientHolder* aParent, TUid aPsy, RPositionServer& aPositionServer) + { + CT_LbsPosClient* self = new (ELeave) CT_LbsPosClient(aParent); + CleanupStack::PushL(self); + self->ConstructL(aPsy, aPositionServer); + CleanupStack::Pop(self); // self + return self; + } + + +// --------------------------------------------------------- +// CPosClient::MakeRequest +// +// (other items were commented in a header). +// --------------------------------------------------------- +// +void CT_LbsPosClient::MakeRequest() + { + _LIT(KContact, "11111"); + _LIT(KService, "SAAA"); + + //TPositionInfo moduleInfo = TPositionInfo(); + + CRequestor* contactId = + CRequestor::New(CRequestor::ERequestorContact, + CRequestor::EFormatTelephone, KContact); + + CRequestor* servId = + CRequestor::New(CRequestor::ERequestorService, + CRequestor::EFormatApplication, KService); + + RRequestorStack stack = RRequestorStack(); + stack.Append(contactId); + stack.Append(servId); + + CleanupStack::PushL(contactId); + CleanupStack::PushL(servId); + + TInt err = iPositioner.SetRequestor(stack); + // what to do with err ??? + + if (err) + { + // Do something here? + } + stack.Close(); + + CleanupStack::PopAndDestroy(servId); + CleanupStack::PopAndDestroy(contactId); + + iStartTime.UniversalTime(); + + iPositioner.NotifyPositionUpdate(iModuleInfo, iStatus); + SetActive(); + } + +// --------------------------------------------------------- +// CPosClient::RunL +// +// (other items were commented in a header). +// --------------------------------------------------------- +// +void CT_LbsPosClient::RunL() + { + if (iStatus == KErrNone) + { + TTime now; + now.UniversalTime(); + iRequestTime = now.MicroSecondsFrom(iStartTime); + + iParent->HandleRequestDone(); + } + else + { + _LIT(KErr, "iStatus != KErrNone"); + RDebug::Print(KErr); + iParent->HandleRequestDone(); + } + } + +// --------------------------------------------------------- +// CPosClient::DoCancel +// +// (other items were commented in a header). +// --------------------------------------------------------- +// +void CT_LbsPosClient::DoCancel() + { + iPositioner.CancelRequest(EPositionerNotifyPositionUpdate); // Specified in LbsIpc.h + TTime now; + now.UniversalTime(); + iRequestTime = now.MicroSecondsFrom(iStartTime); + } + +// --------------------------------------------------------- +// CPosClient::GetResult +// +// (other items were commented in a header). +// --------------------------------------------------------- +// +void CT_LbsPosClient::GetResult( + TInt& aStatus, + TPositionInfo& aModuleInfo, + TTimeIntervalMicroSeconds& aRequestTime) + { + aStatus = iStatus.Int(); + aModuleInfo = iModuleInfo; + aRequestTime = iRequestTime; + } + +// End of File