void CPositionRequest::StartPositionDataRequestPhase() { LBS_RDEBUG_VAR_INT("CPositionRequest::StartPositionDataRequestPhase() iRequestPhase", iRequestPhase); __ASSERT_DEBUG(iPositioner, DebugPanic(EPosServerPanicPositionerNotInitialized)); iReqStartTime.UniversalTime(); TPositionInfo& info = PositionInfo(iPositionBuffer); // Set datum type to WGS84 TPosition position; info.GetPosition(position); position.SetDatum(KPositionDatumWgs84); info.SetPosition(position); TPositionInfoBase& infoBase = reinterpret_cast<TPositionInfoBase&>(info); // issue request to psy DEBUG_TRACE("calling CPositioner::NotifyPositionUpdate()", __LINE__) iStatus = KRequestPending; iPositioner->NotifyPositionUpdate(infoBase, iStatus); iRequestPhase = EPosReqPositionRequest; SetActive(); }
void CPositionRequest::SaveAsLastKnownPosition() { TPosition pos; TPositionInfo& positionInfo = PositionInfo(iPositionBuffer); positionInfo.GetPosition(pos); // Don't set last known position if the position request is in the past. //TODO check if this is required if (iReqStartTime <= pos.Time()) { iLocMonitorReqHandler.SetPositionInfo(positionInfo); } }
TInt CPositionRequest::PackPositionData() { TPositionInfo& info = PositionInfo(iPositionBuffer); // Verify that ModuleId, set by PSY, is correct if using specific PSY. // If a proxy PSY is used, the proxy is responsible for verifying UID. if (!iHasProxyPositioner && info.ModuleId() != iPositionerParams.iImplementationUid) { return KErrGeneral; } // Check that datum type still is WGS84 TPosition position; info.GetPosition(position); if (position.Datum() != KPositionDatumWgs84) { return KErrNotSupported; } TPtr8 ptrToBuffer = iPositionBuffer->Des(); return Global::Write(iMessage, KParamPositionInfo, ptrToBuffer); }
vector<PositionInfo> AsciiComponentClass::last(void) const { return vector<PositionInfo>(1, PositionInfo(position)); }