Exemplo n.º 1
0
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;
}
Exemplo n.º 2
0
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();
}
Exemplo n.º 3
0
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);
        }
    }
Exemplo n.º 5
0
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 ;
        }
    }
}