void CLbsTrackingTimerBase::InitializePSYs(RArray<TPositionModuleInfo*> aModInfoArray, const TInt64 aDefaultMinInterval) { qDebug() << "CLbsTrackingTimerBase::InitializePSYs START " << iTrackType ; TInt insertCount = 0; iMinUpdateInterval = aDefaultMinInterval; for (int i = 0; i < aModInfoArray.Count(); i++) { //The PSYs are self managing, no need for this check //if(aModInfoArray[i]->IsAvailable()) // { TPositionQuality quality; aModInfoArray[i]->GetPositionQuality(quality); if (0 == i) iMinUpdateInterval = quality.TimeToNextFix(); else if (iMinUpdateInterval > quality.TimeToNextFix()) iMinUpdateInterval = quality.TimeToNextFix(); CTrackingPsy *trackingPsy = CTrackingPsy::NewL(aModInfoArray[i], iContainer, this); if (trackingPsy) { iTrackingPsys.Insert(trackingPsy, insertCount++); qDebug() << "CLbsTrackingTimerBase::InitializePSYs inserted " << trackingPsy->iPsyName ; } // } } qDebug() << "CLbsTrackingTimerBase::InitializePSYs END - insertcount = " << insertCount << " type" << iTrackType; }
void CSelfManagingPsy::IssueRequest(TTimeIntervalMicroSeconds aUpdInterval, TTimeIntervalMicroSeconds aTimeOut) { qDebug() << "CSelfManagingPsy::IssueRequest " << iPsyName ; if (IsActive()) Cancel(); TPositionQuality quality; iPsyModInfo->GetPositionQuality(quality); if (aUpdInterval < quality.TimeToNextFix()) aUpdInterval = quality.TimeToNextFix(); if (aTimeOut < quality.TimeToFirstFix()) aTimeOut = quality.TimeToFirstFix(); iUpdInterval = aUpdInterval; iTimeout = aTimeOut; if (!iPositioner) { qDebug() << "CSelfManagingPsy::IssueRequest " << iPsyName << " POSITIONER NOT AVBL"; return; } if (!iPsyAvailabilityStatus) { //PSY is not avbl so no point calling NotifyPositionUpdate //If the PSY becomes available, then NotifyPositionUpdate //will be called from NotifyPsyStatusChange qDebug() << "CSelfManagingPsy::IssueRequest " << iPsyName << " NOT AVBL"; return; } TPositionUpdateOptions updateOptions(iUpdInterval, iTimeout); iPositioner->SetUpdateOptions(updateOptions); iPositioner->NotifyPositionUpdate(iPosInfo, iStatus); SetActive(); }
void CLbsTrackTimerBase::PsyInstalled(TPositionModuleInfo* aModInfo) { TPositionQuality quality; aModInfo->GetPositionQuality(quality); if (0 == iTrackingPsys.Count()) iMinUpdateInterval = quality.TimeToNextFix(); else if (iMinUpdateInterval > quality.TimeToNextFix()) iMinUpdateInterval = quality.TimeToNextFix(); CTrackingPsy *trackingPsy = CTrackingPsy::NewL(aModInfo, iContainer, this); if (trackingPsy) { iTrackingPsys.Insert(trackingPsy, iTrackingPsys.Count()); iCurrentState->PsyInstalled(trackingPsy); } }
// --------------------------------------------------------- // CT_LbsClientPosTp76::CheckModuleInfoL // // (other items were commented in a header). // --------------------------------------------------------- // void CT_LbsClientPosTp76::CheckModuleInfoL(const TPositionModuleInfo& dbInfo, const TPositionModuleInfo& clientInfo) { _LIT(KNotSame, "Module Info from settings is not the same as when read by GetModuleInfoById"); if (dbInfo.IsAvailable() != clientInfo.IsAvailable() || dbInfo.ModuleId() != clientInfo.ModuleId() || dbInfo.DeviceLocation() != clientInfo.DeviceLocation() || dbInfo.Capabilities() != clientInfo.Capabilities() || dbInfo.TechnologyType() != clientInfo.TechnologyType() || dbInfo.Version().iBuild != clientInfo.Version().iBuild || dbInfo.Version().iMajor != clientInfo.Version().iMajor || dbInfo.Version().iMinor != clientInfo.Version().iMinor || dbInfo.Version().Name() != clientInfo.Version().Name() || dbInfo.ClassesSupported(EPositionInfoFamily) != clientInfo.ClassesSupported(EPositionInfoFamily)) { LogErrorAndLeaveL(KNotSame); } TPositionQuality dbQuality; TPositionQuality clientQuality; dbInfo.GetPositionQuality(dbQuality); clientInfo.GetPositionQuality(clientQuality); if (dbQuality.TimeToFirstFix() != clientQuality.TimeToFirstFix() || dbQuality.TimeToNextFix() != clientQuality.TimeToNextFix() || dbQuality.HorizontalAccuracy() != clientQuality.HorizontalAccuracy() || dbQuality.VerticalAccuracy() != clientQuality.VerticalAccuracy() || dbQuality.CostIndicator() != clientQuality.CostIndicator() || dbQuality.PowerConsumption() != clientQuality.PowerConsumption() ) { LogErrorAndLeaveL(KNotSame); } TBuf<30> name1; TBuf<30> name2; dbInfo.GetModuleName(name1); clientInfo.GetModuleName(name2); if (name1 != name2) { LogErrorAndLeaveL(KNotSame); } }
void CLbsTrackingTimerBase::PsyInstalled(TPositionModuleInfo* aModInfo) { TPositionQuality quality; aModInfo->GetPositionQuality(quality); if (0 == iTrackingPsys.Count()) iMinUpdateInterval = quality.TimeToNextFix(); else if (iMinUpdateInterval > quality.TimeToNextFix()) iMinUpdateInterval = quality.TimeToNextFix(); CTrackingPsy *trackingPsy = CTrackingPsy::NewL(aModInfo, iContainer, this); if (trackingPsy) { iTrackingPsys.Insert(trackingPsy, iTrackingPsys.Count()); if (iStartUpdatesActive) { qDebug() << "CLbsTrackingTimerBase::PsyInstalled inserted & request issued " << trackingPsy->iPsyName ; trackingPsy->IssueRequest(iUpdateInterval); } else { qDebug() << "CLbsTrackingTimerBase::PsyInstalled inserted " << trackingPsy->iPsyName ; } } }