66 bool PNBGPSCNav2DataFactory ::
70 if (navIn->getNavID().navType != NavType::GPSCNAV2)
76 bool isQZSS = navIn->getsatSys().system == SatelliteSystem::QZSS;
79 switch (navIn->getNumBits())
82 rv = processEph(navIn, navOut) && processISC(navIn, navOut);
85 rv = processSF3(navIn, navOut) && processISC(navIn, navOut);
88 rv = processEph(navIn, navOut,
nnbSF1) &&
90 processISC(navIn, navOut);
101 catch (std::exception& exc)
104 cerr << exc.
what() << endl;
109 cerr <<
"Unknown exception" << endl;
115 bool PNBGPSCNav2DataFactory ::
119 unsigned prn = navIn->getsatSys().id;
123 NavDataPtr p1 = std::make_shared<GPSCNav2Health>();
124 p1->timeStamp = getSF2Time(navIn->getTransmitTime());
129 NavMessageType::Health);
134 navOut.push_back(p1);
136 if (!PNBNavDataFactory::processEph)
141 NavDataPtr p0 = std::make_shared<GPSCNav2Eph>();
144 eph->
timeStamp = getSF2Time(navIn->getTransmitTime());
148 NavMessageType::Ephemeris);
176 eph->
dOMEGAdot = navIn->asDoubleSemiCircles(
180 eph->
A = eph->
deltaA + GPSCNav2Eph::refAQZSS;
185 eph->
A = eph->
deltaA + GPSCNav2Eph::refAGPS;
188 eph->
Ahalf = ::sqrt(eph->
A);
200 eph->
health = eph->
healthL1C ? SVHealth::Unhealthy : SVHealth::Healthy;
215 eph->
tgd = InterSigCorr::getGPSISC(navIn, offset+
esbTGD);
223 navOut.push_back(p0);
228 bool PNBGPSCNav2DataFactory ::
232 unsigned long pageNum = navIn->asUnsignedLong(offset+
asbPage,
anbPage,
237 return processUTCIono(navIn, navOut, offset);
240 return processGGTOEOP(navIn, navOut, offset);
243 return processAlmOrb(navIn, navOut, offset);
252 bool PNBGPSCNav2DataFactory ::
256 unsigned long sprn = navIn->asUnsignedLong(offset+
asbPRNa,
anbPRNa,
258 SatID xmitSat(navIn->getsatSys());
260 SatID subjSat(sprn, subjSys);
267 NavDataPtr p1L1 = std::make_shared<GPSCNav2Health>();
268 NavDataPtr p1L2 = std::make_shared<GPSCNav2Health>();
269 NavDataPtr p1L5 = std::make_shared<GPSCNav2Health>();
272 p1L5->timeStamp = getSF3Time(navIn->getTransmitTime());
280 NavMessageType::Health);
285 NavID(NavType::GPSCNAVL2)),
286 NavMessageType::Health);
289 ObsID(ObservationType::NavMsg, CarrierBand::L5,
291 NavID(NavType::GPSCNAVL5)),
292 NavMessageType::Health);
303 navOut.push_back(p1L1);
305 navOut.push_back(p1L2);
307 navOut.push_back(p1L5);
309 if (!PNBNavDataFactory::processAlm)
314 NavDataPtr p0 = std::make_shared<GPSCNav2Alm>();
317 alm->
timeStamp = getSF3Time(navIn->getTransmitTime());
321 NavMessageType::Almanac);
352 SVHealth::Unhealthy);
359 alm->
i0 = GPSCNav2Alm::refi0QZSS + alm->
deltai;
363 alm->
i0 = GPSCNav2Alm::refi0GPS + alm->
deltai;
367 navOut.push_back(p0);
372 bool PNBGPSCNav2DataFactory ::
376 if (PNBNavDataFactory::processIono)
378 NavDataPtr p1 = std::make_shared<GPSCNav2Iono>();
381 p1->
timeStamp = getSF3Time(navIn->getTransmitTime());
384 navIn->getobsID(), navIn->getNavID()),
385 NavMessageType::Iono);
404 navOut.push_back(p1);
406 if (!PNBNavDataFactory::processTim)
411 NavDataPtr p0 = std::make_shared<GPSCNav2TimeOffset>();
412 p0->timeStamp = getSF3Time(navIn->getTransmitTime());
415 navIn->getobsID(), navIn->getNavID()),
416 NavMessageType::TimeOffset);
419 to->
tgt = TimeSystem::UTC;
437 navOut.push_back(p0);
442 bool PNBGPSCNav2DataFactory ::
446 if (!PNBNavDataFactory::processTim)
451 NavDataPtr p0 = std::make_shared<GPSCNav2TimeOffset>();
452 p0->timeStamp = getSF3Time(navIn->getTransmitTime());
455 navIn->getobsID(), navIn->getNavID()),
456 NavMessageType::TimeOffset);
466 to->
tgt = TimeSystem::GAL;
469 to->
tgt = TimeSystem::GLO;
475 to->
tgt = TimeSystem::QZS;
493 navOut.push_back(p0);
498 bool PNBGPSCNav2DataFactory ::
501 if (!PNBNavDataFactory::processISC)
504 navIn->getobsID(), navIn->getNavID());
508 switch (navIn->getNumBits())
511 if (isc->haveSF2 && !isc->haveSF3)
515 navOut.push_back(std::make_shared<GPSCNav2ISC>(*isc));
517 isc->timeStamp = isc->xmit2 = getSF2Time(navIn->getTransmitTime());
519 isc->isc = InterSigCorr::getGPSISC(navIn,
esbTGD);
520 isc->iscL1CP = InterSigCorr::getGPSISC(navIn,
esbISCL1CP);
521 isc->iscL1CD = InterSigCorr::getGPSISC(navIn,
esbISCL1CD);
526 navOut.push_back(std::make_shared<GPSCNav2ISC>(*isc));
537 isc->timeStamp = isc->xmit3 = getSF3Time(navIn->getTransmitTime());
539 isc->iscL1CA = InterSigCorr::getGPSISC(navIn,
csbISCL1CA);
540 isc->iscL2C = InterSigCorr::getGPSISC(navIn,
csbISCL2C);
541 isc->iscL5I5 = InterSigCorr::getGPSISC(navIn,
csbISCL5I5);
542 isc->iscL5Q5 = InterSigCorr::getGPSISC(navIn,
csbISCL5Q5);
547 navOut.push_back(std::make_shared<GPSCNav2ISC>(*isc));
551 if (isc->haveSF2 && !isc->haveSF3)
555 navOut.push_back(std::make_shared<GPSCNav2ISC>(*isc));
557 isc->timeStamp = getSF3Time(navIn->getTransmitTime());
558 isc->xmit2 = getSF2Time(navIn->getTransmitTime());
559 isc->xmit3 = isc->timeStamp;
561 isc->isc = InterSigCorr::getGPSISC(navIn,
nnbSF1+
esbTGD);
570 navOut.push_back(std::make_shared<GPSCNav2ISC>(*isc));
576 isc->timeStamp = getSF3Time(navIn->getTransmitTime());
578 isc->iscL1CA = InterSigCorr::getGPSISC(navIn, offs+
csbISCL1CA);
579 isc->iscL2C = InterSigCorr::getGPSISC(navIn, offs+
csbISCL2C);
580 isc->iscL5I5 = InterSigCorr::getGPSISC(navIn, offs+
csbISCL5I5);
581 isc->iscL5Q5 = InterSigCorr::getGPSISC(navIn, offs+
csbISCL5Q5);
582 navOut.push_back(std::make_shared<GPSCNav2ISC>(*isc));
595 if (iscAcc.find(nsid) == iscAcc.end())
597 iscAcc[nsid] = std::make_shared<GPSCNav2ISC>();