65 haveSubframe[0] = haveSubframe[1] = haveSubframe[2] =
false;
67 tlm_message[0] = tlm_message[1] = tlm_message[2] = 0;
71 PRNID = tracker = ASalert[0] = ASalert[1] = ASalert[2] = weeknum =
72 codeflags = health = L2Pdata = 0;
74 HOWtime[0] = HOWtime[1] = HOWtime[2] = 0;
94 for (
int j = 0; j<3; j++)
96 for (
int i = 0; i<10; i++) subframeStore[j][i] = 0L;
108 return ((tlm_message[0] == right.tlm_message[0]) &&
109 (tlm_message[1] == right.tlm_message[1]) &&
110 (tlm_message[2] == right.tlm_message[2]) &&
111 (satSys == right.satSys) &&
112 (PRNID == right.PRNID) &&
113 (tracker == right.tracker) &&
114 (HOWtime[0] == right.HOWtime[0]) &&
115 (HOWtime[1] == right.HOWtime[1]) &&
116 (HOWtime[2] == right.HOWtime[2]) &&
117 (ASalert[0] == right.ASalert[0]) &&
118 (ASalert[1] == right.ASalert[1]) &&
119 (ASalert[2] == right.ASalert[2]) &&
120 (weeknum == right.weeknum) &&
121 (codeflags == right.codeflags) &&
122 (health == right.health) &&
123 (L2Pdata == right.L2Pdata) &&
124 (IODC == right.IODC) &&
125 (IODE == right.IODE) &&
126 (AODO == right.AODO) &&
127 (fitint == right.fitint) &&
128 (Tgd == right.Tgd) &&
129 (bcClock == right.bcClock) &&
130 (orbit == right.orbit));
147 const int gpsWeek,
const short PRN,
151 uint32_t SFword2 = (uint32_t) subframe[1];
152 SFword2 &= 0x00000700;
154 short sfID =
static_cast<short>( SFword2 );
156 if (sfID<1 || sfID>3)
164 int sfNdx = sfID - 1;
165 for (
int i=0;i<10;++i) subframeStore[sfNdx][i] = subframe[i];
166 haveSubframe[sfNdx] =
true;
172 if (haveSubframe[0] &&
176 result = unifiedConvert( gpsWeek, PRN, track );
186 uint32_t paddedSF[10];
190 for (
int i=0;i<10;++i)
192 paddedSF[i] = subframe[i];
194 paddedSF[i] &= 0x3FFFFFC0;
198 return( addSubframe( paddedSF, gpsWeek, PRNArg, trackArg ));
202 const uint32_t
sf1[8],
const uint32_t
sf2[8],
const uint32_t
sf3[8],
203 const long sf1TransmitSOW,
const int gpsWeek,
204 const short PRN,
const short track)
210 const uint32_t sf1Lead[2] = { 0x00000000, 0x00000900 };
211 const uint32_t sf2Lead[2] = { 0x00000000, 0x00000A00 };
212 const uint32_t sf3Lead[2] = { 0x00000000, 0x00000B00 };
225 subframeStore[0][0] = sf1Lead[0];
226 subframeStore[0][1] = sf1Lead[1];
228 for (i=0; i<8; ++i) subframeStore[0][i+2] =
sf1[i];
229 haveSubframe[0] =
true;
232 subframeStore[1][0] = sf2Lead[0];
233 subframeStore[1][1] = sf2Lead[1];
234 for (i=0; i<8; ++i) subframeStore[1][i+2] =
sf2[i];
235 haveSubframe[1] =
true;
238 subframeStore[2][0] = sf3Lead[0];
239 subframeStore[2][1] = sf3Lead[1];
240 for (i=0; i<8; ++i) subframeStore[2][i+2] =
sf3[i];
241 haveSubframe[2] =
true;
244 bool result = unifiedConvert( gpsWeek, PRN, track );
260 if (!subframeConvert(subframeStore[0], gpsWeek, ficked))
262 tlm_message[0] = (subframeStore[0][0] >> 8) & 0x3fff;
263 HOWtime[0] =
static_cast<long>( ficked[2] );
264 ASalert[0] =
static_cast<short>( ficked[3] );
265 weeknum =
static_cast<short>( ficked[5] );
266 codeflags =
static_cast<short>( ficked[6] );
267 short accFlag =
static_cast<short>( ficked[7] );
268 health =
static_cast<short>( ficked[8] );
269 IODC =
static_cast<short>( ldexp( ficked[9], -11 ) );
270 L2Pdata =
static_cast<short>( ficked[10] );
272 double Toc = ficked[12];
273 double af2 = ficked[13];
274 double af1 = ficked[14];
275 double af0 = ficked[15];
278 if (!subframeConvert(subframeStore[1], gpsWeek, ficked))
281 tlm_message[1] = (subframeStore[1][0] >> 8) & 0x3fff;
282 HOWtime[1] =
static_cast<long>( ficked[2] );
283 ASalert[1] =
static_cast<short>( ficked[3] );
284 IODE =
static_cast<short>( ldexp( ficked[5], -11 ) );
285 double Crs = ficked[6];
286 double dn = ficked[7];
287 double M0 = ficked[8];
288 double Cuc = ficked[9];
289 double ecc = ficked[10];
290 double Cus = ficked[11];
291 double Ahalf = ficked[12];
292 double Toe = ficked[13];
293 fitint =
static_cast<short>( ficked[14] );
294 AODO =
static_cast<long>( ficked[15] );
297 if (!subframeConvert(subframeStore[2], gpsWeek, ficked))
300 tlm_message[2] = (subframeStore[2][0] >> 8) & 0x3fff;
301 HOWtime[2] =
static_cast<long>( ficked[2] );
302 ASalert[2] =
static_cast<short>( ficked[3] );
303 double Cic = ficked[5];
304 double OMEGA0 = ficked[6];
305 double Cis = ficked[7];
306 double i0 = ficked[8];
307 double Crc = ficked[9];
308 double w = ficked[10];
309 double OMEGAdot = ficked[11];
310 double idot = ficked[13];
321 bool healthy =
false;
326 double A = Ahalf * Ahalf;
328 double timeDiff = Toe - HOWtime[1];
329 short toeWeek = weeknum, tocWeek = weeknum;
334 timeDiff = Toc - HOWtime[1];
347 long beginFitSOW = Toe - (fitHours/2)*3600;
348 long endFitSOW = Toe + (fitHours/2)*3600;
349 short beginFitWk = toeWeek;
350 short endFitWk = toeWeek;
366 orbit.loadData(satSys, obsID, PRN, beginFit, endFit, ToeCT,
367 accFlag, healthy, Cuc, Cus, Crc, Crs, Cic, Cis, M0,
368 dn, dnDot, ecc, A, Ahalf, Adot, OMEGA0, i0, w, OMEGAdot,
371 bcClock.loadData( satSys, obsID, PRNID, TocCT,
372 accFlag, healthy, af0, af1, af2);
382 return ((PRNID >= 1) && (PRNID <= 37) &&
383 (HOWtime[0] >= 0) && (HOWtime[0] <= 604784) &&
384 (HOWtime[1] >= 0) && (HOWtime[1] <= 604784) &&
385 (HOWtime[2] >= 0) && (HOWtime[2] <= 604784) &&
386 (getToc() >= 0) && (getToc() <= 604784) &&
387 (getToe() >= 0) && (getToe() <= 604784) &&
388 (getEcc() >= 0) && (getEcc() <= 0.03));
398 if ((subframe < 1) || (subframe > 3))
401 " is not a valid ephemeris subframe.");
405 return haveSubframe[subframe-1];
410 if (haveSubframe[0] && haveSubframe[1] && haveSubframe[2])
412 return ((IODC & 0xff) == (IODE & 0xff));
422 " meters is invalid.");
425 orbit.setAccuracy(acc);
430 return getFitInterval(getIODC(), getFitInt());
440 if (iodc < 0 || iodc > 1023)
447 (iodc & 0xFF) < 240) || (iodc & 0xFF) > 255 ))
454 if( ((iodc & 0xFF) < 240 || (iodc & 0xFF) > 255))
459 else if(iodc >=240 && iodc <=247)
464 else if((iodc >= 248 && iodc <= 255) || iodc == 496)
470 else if((iodc >= 497 && iodc <=503) || (iodc >= 1021 && iodc <= 1023))
475 else if(iodc >= 504 && iodc <=510)
480 else if(iodc == 511 || (iodc >= 752 && iodc <= 756))
493 else if(iodc >= 757 && iodc <= 763)
498 else if((iodc >= 764 && iodc <=767) || (iodc >=1008 && iodc <=1010))
503 else if(iodc >= 1011 && iodc <=1020)
529 Xvt xv = orbit.svXvt(t);
534 sv.
clkbias = bcClock.svClockBias(t);
535 sv.
relcorr = orbit.svRelativity(t);
537 sv.
clkdrift = bcClock.svClockDrift(t);
544 return orbit.svRelativity(t);
549 return bcClock.svClockBias(t);
554 return bcClock.svClockDrift(t);
559 if (!haveSubframe[subframe-1])
565 return tlm_message[subframe-1];
573 toReturn =
GPSWeekSecond(getFullWeek(),
static_cast<double>(getTot()),
576 catch (InvalidRequest& ire)
582 InvalidRequest ire(exc);
590 return bcClock.getEpochTime();
595 return orbit.getOrbitEpoch();
602 InvalidRequest exc(
"getOrbit(): Required Orbit data not stored.");
610 if(!bcClock.hasData())
612 InvalidRequest exc(
"getClock(): Required Clock Correction data not"
623 InvalidRequest exc(
"getPRNID(): Required subframe 1 not stored.");
633 InvalidRequest exc(
"getTracker(): Required subframe 1 not stored.");
641 if (!haveSubframe[subframe-1])
643 InvalidRequest exc(
"getHOWTime(): Subframe "
651 return static_cast<double>(HOWtime[subframe-1]);
656 if (!haveSubframe[subframe-1])
658 InvalidRequest exc(
"getASAlert(): Subframe "
662 return ASalert[subframe-1];
667 if (!haveSubframe[0])
669 InvalidRequest exc(
"getFullWeek(): Required subframe 1 not stored.");
677 if (!haveSubframe[0])
679 InvalidRequest exc(
"getCodeFlags(): Required subframe 1 not stored.");
687 if (!haveSubframe[0])
689 InvalidRequest exc(
"getAccuracy(): Required subframe 1 not stored.");
692 return orbit.getAccuracy();
697 if (!haveSubframe[0])
699 InvalidRequest exc(
"getAccFlag(): Required subframe 1 not stored.");
702 return orbit.getURAoe();
707 if (!haveSubframe[0])
709 InvalidRequest exc(
"getHealth(): Required subframe 1 not stored.");
717 if (!haveSubframe[0])
719 InvalidRequest exc(
"getL2Pdata(): Required subframe 1 not stored.");
727 if (!haveSubframe[0])
729 InvalidRequest exc(
"getIODC(): Required subframe 1 not stored.");
732 return static_cast<short>(IODC);
737 if (!haveSubframe[1])
739 InvalidRequest exc(
"getIODE(): Required subframe 2 not stored.");
742 return static_cast<short>(IODE);
747 if (!haveSubframe[1])
749 InvalidRequest exc(
"getAODO(): Required subframe 2 not stored.");
757 if (!haveSubframe[0])
759 InvalidRequest exc(
"getToc(): Required subframe 1 not stored.");
762 return bcClock.getToc();
767 if (!haveSubframe[0])
769 InvalidRequest exc(
"getAf0(): Required subframe 1 not stored.");
772 return bcClock.getAf0();
777 if (!haveSubframe[0])
779 InvalidRequest exc(
"getAf1(): Required subframe 1 not stored.");
782 return bcClock.getAf1();
787 if (!haveSubframe[0])
789 InvalidRequest exc(
"getAf1(): Required subframe 1 not stored.");
792 return bcClock.getAf2();
797 if (!haveSubframe[0])
799 InvalidRequest exc(
"getTgd(): Required subframe 1 not stored.");
807 if (!haveSubframe[1])
809 InvalidRequest exc(
"getCus(): Required subframe 2 not stored.");
812 return orbit.getCus();
817 if (!haveSubframe[1])
819 InvalidRequest exc(
"getCrs(): Required subframe 2 not stored.");
822 return orbit.getCrs();
827 if (!haveSubframe[2])
829 InvalidRequest exc(
"getCis(): Required subframe 3 not stored.");
832 return orbit.getCis();
837 if (!haveSubframe[2])
839 InvalidRequest exc(
"getCrc(): Required subframe 3 not stored.");
842 return orbit.getCrc();
847 if (!haveSubframe[1])
849 InvalidRequest exc(
"getCuc(): Required subframe 2 not stored.");
852 return orbit.getCuc();
857 if (!haveSubframe[2])
859 InvalidRequest exc(
"getCic(): Required subframe 3 not stored.");
862 return orbit.getCic();
867 if (!haveSubframe[1])
869 InvalidRequest exc(
"getToe(): Required subframe 2 not stored.");
872 return orbit.getToe();
877 if (!haveSubframe[1])
879 InvalidRequest exc(
"getM0(): Required subframe 2 not stored.");
882 return orbit.getM0();
887 if (!haveSubframe[1])
889 InvalidRequest exc(
"getDn(): Required subframe 2 not stored.");
892 return orbit.getDn();
897 if (!haveSubframe[1])
899 InvalidRequest exc(
"getEcc(): Required subframe 2 not stored.");
902 return orbit.getEcc();
907 if (!haveSubframe[1])
909 InvalidRequest exc(
"getAhalf(): Required subframe 2 not stored.");
912 return orbit.getAhalf();
917 if (!haveSubframe[1])
919 InvalidRequest exc(
"getA(): Required subframe 2 not stored.");
927 if (!haveSubframe[2])
929 InvalidRequest exc(
"getOmega0(): Required subframe 3 not stored.");
932 return orbit.getOmega0();
937 if (!haveSubframe[2])
939 InvalidRequest exc(
"getI0(): Required subframe 3 not stored.");
942 return orbit.getI0();
947 if (!haveSubframe[2])
949 InvalidRequest exc(
"getW(): Required subframe 3 not stored.");
957 if (!haveSubframe[2])
959 InvalidRequest exc(
"getOmegaDot(): Required subframe 3 not stored.");
962 return orbit.getOmegaDot();
967 if (!haveSubframe[2])
969 InvalidRequest exc(
"getIDot(): Required subframe 3 not stored.");
972 return orbit.getIDot();
977 if (!haveSubframe[1])
979 InvalidRequest exc(
"getFitInt(): Required subframe 2 not stored.");
989 InvalidRequest exc(
"getTot(): Required subframe 1 not stored.");
994 InvalidRequest exc(
"getTot(): Required subframe 2 not stored.");
999 InvalidRequest exc(
"getTot(): Required subframe 3 not stored.");
1005 long foo =
static_cast<long>( getHOWTime(1) < getHOWTime(2) )
1006 ? getHOWTime(1) : getHOWTime(2);
1007 foo = ( foo < getHOWTime(3) ) ? foo : getHOWTime(3) ;
1010 static_cast<long>(
std::min( getHOWTime(1),
1011 std::min(getHOWTime(2), getHOWTime(3))));
1020 const std::string satSysArg,
const unsigned short tlm[3],
1021 const long how[3],
const short asalert[3],
1022 const short Tracker,
const short prn,
1023 const short fullweek,
const short cflags,
const short acc,
1024 const short svhealth,
const short iodc,
const short l2pdata,
1025 const long aodo,
const double tgd,
const double toc,
1026 const double Af2,
const double Af1,
const double Af0,
1027 const short iode,
const double crs,
const double Dn,
1028 const double m0,
const double cuc,
const double Ecc,
1029 const double cus,
const double ahalf,
const double toe,
1030 const short fitInt,
const double cic,
const double Omega0,
1031 const double cis,
const double I0,
const double crc,
1032 const double W,
const double OmegaDot,
const double IDot )
1036 for (
int i=0; i<3; i++)
1038 tlm_message[i] = tlm[i];
1039 HOWtime[i] = how[i];
1040 ASalert[i] = asalert[i];
1044 short accFlag = acc;
1066 double A = ahalf*ahalf;
1070 long beginFitSOW = toe - (fitHours/2)*3600;
1071 long endFitSOW = toe + (fitHours/2)*3600;
1072 short beginFitWk = weeknum;
1073 short endFitWk = weeknum;
1074 if (beginFitSOW < 0)
1089 orbit.loadData(satSys, obsID, PRNID, beginFit, endFit, toeCT,
1090 accFlag, (health == 0), cuc, cus, crc, crs, cic, cis,
1091 m0, Dn, dndot, Ecc, A, ahalf, Adot, Omega0, I0, W,
1094 bcClock.loadData( satSys, obsID, PRNID, tocCT,
1095 accFlag, (health == 0), Af0, Af1, Af2);
1096 haveSubframe[0] =
true;
1097 haveSubframe[1] =
true;
1098 haveSubframe[2] =
true;
1102 InvalidRequest ire(exc);
1109 short fullweek,
short cflags,
short acc,
1110 short svhealth,
short iodc,
1111 short l2pdata,
double tgd,
double toc,
1112 double Af2,
double Af1,
double Af0,
1113 short Tracker,
short prn )
1115 tlm_message[0] = tlm;
1116 HOWtime[0] =
static_cast<long>( how );
1117 ASalert[0] = asalert;
1127 bool healthy =
false;
1128 if (health == 0) healthy =
true;
1130 double timeDiff = toc - HOWtime[0];
1131 short tocWeek = fullweek;
1148 bcClock.loadData( satSys, obsID, PRNID, tocCT,
1149 accFlagTmp, healthy, Af0, Af1, Af2);
1150 haveSubframe[0] =
true;
1154 haveSubframe[0] =
false;
1155 InvalidRequest ire(exc);
1162 short iode,
double crs,
double Dn,
1163 double m0,
double cuc,
double Ecc,
1164 double cus,
double ahalf,
double toe,
1167 tlm_message[1] = tlm;
1168 HOWtime[1] =
static_cast<long>( how );
1169 ASalert[1] = asalert;
1173 if (!haveSubframe[0])
1175 InvalidRequest exc(
"Need to load subframe 1 before subframe 2");
1178 bool healthy =
false;
1182 double timeDiff = toe - HOWtime[1];
1183 short toeWeek = weeknum;
1194 short accFlag = accFlagTmp;
1199 double Omega0 = 0.0;
1202 double OmegaDot = 0.0;
1205 double A = ahalf*ahalf;
1211 long beginFitSOW = toe - (fitHours/2)*3600.0;
1212 long endFitSOW = toe + (fitHours/2)*3600.0;
1213 short beginFitWk = weeknum;
1214 short endFitWk = weeknum;
1215 if (beginFitSOW < 0)
1232 orbit.loadData(satSys, obsID, PRNID, beginFit, endFit, toeCT,
1233 accFlag, healthy, cuc, cus, crc, crs, cic, cis, m0, Dn,
1234 dndot, Ecc, A, ahalf, Adot, Omega0, I0, W, OmegaDot,
1236 haveSubframe[1] =
true;
1240 haveSubframe[1] =
false;
1241 InvalidRequest ire(exc);
1248 double cic,
double Omega0,
double cis,
1249 double I0,
double crc,
double W,
1250 double OmegaDot,
double IDot )
1252 tlm_message[2] = tlm;
1253 HOWtime[2] =
static_cast<long>( how );
1254 ASalert[2] = asalert;
1256 if (!haveSubframe[1])
1258 InvalidRequest exc(
"Need to load subframe 2 before subframe 3");
1261 bool healthy =
false;
1265 double timeDiff = orbit.getToe() - HOWtime[2];
1266 short toeWeek = weeknum;
1293 accFlag = orbit.getURAoe();
1294 toe = orbit.getToe();
1295 cuc = orbit.getCuc();
1296 cus = orbit.getCus();
1297 dndot = orbit.getDnDot();
1299 Adot = orbit.getAdot();
1300 crs = orbit.getCrs();
1303 Ecc = orbit.getEcc();
1304 ahalf = orbit.getAhalf();
1305 beginFit = orbit.getBeginningOfFitInterval();
1306 endFit = orbit.getEndOfFitInterval();
1312 haveSubframe[1] =
false;
1313 haveSubframe[2] =
false;
1320 orbit.loadData(satSys, obsID, PRNID, beginFit, endFit, toeCT,
1321 accFlag, healthy, cuc, cus, crc, crs, cic, cis, m0, Dn,
1322 dndot, Ecc, A, ahalf, Adot, Omega0, I0, W, OmegaDot,
1325 haveSubframe[2] =
true;
1329 haveSubframe[2] =
false;
1344 os << setw(4) << dummyTime.
week <<
"(";
1345 os << setw(4) << (dummyTime.
week & 0x03FF) <<
") ";
1346 os << setw(6) << setfill(
' ') << dummyTime.
sow <<
" ";
1350 case 0: os <<
"Sun-0";
break;
1351 case 1: os <<
"Mon-1";
break;
1352 case 2: os <<
"Tue-2";
break;
1353 case 3: os <<
"Wed-3";
break;
1354 case 4: os <<
"Thu-4";
break;
1355 case 5: os <<
"Fri-5";
break;
1356 case 6: os <<
"Sat-6";
break;
1359 os <<
" " << (
static_cast<YDSTime>(t)).printf(
"%3j %5.0s ")
1360 << (
static_cast<CivilTime>(t)).printf(
"%02m/%02d/%04Y %02H:%02M:%02S");
1369 SOW =
static_cast<long>( HOW );
1371 SOD = SOW -
static_cast<long>( DOW *
SEC_PER_DAY );
1372 hour =
static_cast<short>( SOD/3600 );
1374 SOH =
static_cast<short>( SOD - (
hour*3600) );
1377 sec = SOH -
min * 60;
1380 case 0: os <<
"Sun-0";
break;
1381 case 1: os <<
"Mon-1";
break;
1382 case 2: os <<
"Tue-2";
break;
1383 case 3: os <<
"Wed-3";
break;
1384 case 4: os <<
"Thu-4";
break;
1385 case 5: os <<
"Fri-5";
break;
1386 case 6: os <<
"Sat-6";
break;
1390 os <<
":" << setfill(
'0')
1392 <<
":" << setw(2) <<
min
1393 <<
":" << setw(2) << sec
1403 if (!haveSubframe[0] || !haveSubframe[1] || !haveSubframe[2])
1405 InvalidRequest exc(
"Need to load subframes 1,2 and 3");
1409 ios::fmtflags oldFlags = s.flags();
1411 s.setf(ios::fixed, ios::floatfield);
1412 s.setf(ios::right, ios::adjustfield);
1413 s.setf(ios::uppercase);
1417 s << setw(2) << PRNID <<
" ! ";
1419 string tform =
"%3j %02H:%02M:%02S";
1421 s <<
printTime(getTransmitTime(), tform) <<
" ! ";
1422 s <<
printTime(bcClock.getEpochTime(), tform) <<
" ! ";
1423 s <<
printTime(orbit.getEndOfFitInterval(), tform) <<
" ! ";
1425 s << setw(4) << setprecision(1) << getAccuracy() <<
" ! ";
1426 s <<
"0x" << setfill(
'0') << hex << setw(3) << IODC <<
" ! ";
1427 s <<
"0x" << setfill(
'0') << setw(2) << health;
1428 s << setfill(
' ') << dec;
1429 s <<
" " << setw(2) << health <<
" ! ";
1444 if (!haveSubframe[0] || !haveSubframe[1] || !haveSubframe[2])
1446 InvalidRequest exc(
"Need to load subframes 1,2 and 3");
1450 ios::fmtflags oldFlags = s.flags();
1452 s.setf(ios::fixed, ios::floatfield);
1453 s.setf(ios::right, ios::adjustfield);
1454 s.setf(ios::uppercase);
1458 s <<
"****************************************************************"
1459 <<
"************" << endl
1460 <<
"Broadcast Ephemeris (Engineering Units)";
1463 s <<
" -FIC" << endl;
1467 s <<
" -RINEX" << endl;
1470 s <<
"PRN : " << setw(2) << PRNID << endl;
1474 s <<
" Week(10bt) SOW DOW UTD SOD"
1475 <<
" MM/DD/YYYY HH:MM:SS\n";
1476 s <<
"Clock Epoch: ";
1498 s <<
"Transmit Time:";
1501 s <<
"Fit interval flag : " << fitint << endl;
1505 <<
" SUBFRAME OVERHEAD"
1508 <<
" SOW DOW:HH:MM:SS IOD ALERT A-S\n";
1509 for (
int i=0;i<3;i++)
1511 s <<
"SF" << setw(1) << (i+1)
1512 <<
" HOW: " << setw(7) << HOWtime[i]
1521 s <<
"0x" << setfill(
'0') << hex;
1524 s << setw(3) << IODC;
1526 s << setw(2) << IODE;
1528 s << dec <<
" " << setfill(
' ');
1530 if (ASalert[i] & 0x0002)
1535 if (ASalert[i] & 0x0001)
1546 << setfill(
'0') << hex;
1547 s << setw(3) << IODC << endl;
1549 << setfill(
'0') << hex;
1550 s << setw(2) << IODE << endl;
1552 s.setf(ios::scientific, ios::floatfield);
1560 <<
"Bias T0: " << setw(16) << bcClock.getAf0() <<
" sec" << endl
1561 <<
"Drift: " << setw(16) << bcClock.getAf1() <<
" sec/sec" << endl
1562 <<
"Drift rate: " << setw(16) << bcClock.getAf2() <<
" sec/(sec**2)" << endl
1563 <<
"Group delay: " << setw(16) << Tgd <<
" sec" << endl;
1566 <<
" ORBIT PARAMETERS"
1569 <<
"Semi-major axis: " << setw(16) << orbit.getAhalf() <<
" m**.5" << endl
1570 <<
"Motion correction: " << setw(16) << orbit.getDn() <<
" rad/sec"
1572 <<
"Eccentricity: " << setw(16) << orbit.getEcc() << endl
1573 <<
"Arg of perigee: " << setw(16) << orbit.getW() <<
" rad" << endl
1574 <<
"Mean anomaly at epoch: " << setw(16) << orbit.getM0() <<
" rad" << endl
1575 <<
"Right ascension: " << setw(16) << orbit.getOmega0() <<
" rad "
1576 << setw(16) << orbit.getOmegaDot() <<
" rad/sec" << endl
1577 <<
"Inclination: " << setw(16) << orbit.getI0() <<
" rad "
1578 << setw(16) << orbit.getIDot() <<
" rad/sec" << endl;
1581 <<
" HARMONIC CORRECTIONS"
1584 <<
"Radial Sine: " << setw(16) << orbit.getCrs() <<
" m Cosine: "
1585 << setw(16) << orbit.getCrc() <<
" m" << endl
1586 <<
"Inclination Sine: " << setw(16) << orbit.getCis() <<
" rad Cosine: "
1587 << setw(16) << orbit.getCic() <<
" rad" << endl
1588 <<
"In-track Sine: " << setw(16) << orbit.getCus() <<
" rad Cosine: "
1589 << setw(16) << orbit.getCuc() <<
" rad" << endl;
1595 <<
"Health bits: 0x" << setfill(
'0') << setw(2) << hex << health << dec
1596 <<
" URA index: " << setfill(
' ') << setw(4) << orbit.getURAoe() << endl
1623 s <<
" L2 P Nav data: ";