Merge branch 'master' of github.com:berthubert/galmon
commit
f5d29a3087
|
@ -228,7 +228,8 @@ struct BeidouMessage : GPSLikeEphemeris
|
||||||
|
|
||||||
// 2^-30 2^-50
|
// 2^-30 2^-50
|
||||||
int a0gps, a1gps, a0gal, a1gal, a0glo, a1glo, a0utc, a1utc;
|
int a0gps, a1gps, a0gal, a1gal, a0glo, a1glo, a0utc, a1utc;
|
||||||
int8_t deltaTLS;
|
int8_t deltaTLS, deltaTLSF;
|
||||||
|
uint8_t wnLSF, dn;
|
||||||
|
|
||||||
// in Beidou the offset is a0utc + SOW * a1utc
|
// in Beidou the offset is a0utc + SOW * a1utc
|
||||||
std::pair<double, double> getUTCOffset(int tow) const
|
std::pair<double, double> getUTCOffset(int tow) const
|
||||||
|
@ -268,6 +269,9 @@ struct BeidouMessage : GPSLikeEphemeris
|
||||||
a0utc = bbits(91, 32);
|
a0utc = bbits(91, 32);
|
||||||
a1utc = bbits(131, 24);
|
a1utc = bbits(131, 24);
|
||||||
deltaTLS = bbits(31+12+1+7, 8);
|
deltaTLS = bbits(31+12+1+7, 8);
|
||||||
|
deltaTLSF = bbits(61+6, 8);
|
||||||
|
wnLSF = bbits(61+6+8, 8);
|
||||||
|
dn = bbits(151+12, 8);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
alma.sqrtA = bbitu(51, 24);
|
alma.sqrtA = bbitu(51, 24);
|
||||||
|
|
|
@ -14,7 +14,7 @@ try
|
||||||
string date;
|
string date;
|
||||||
int galwn{-1};
|
int galwn{-1};
|
||||||
bool doProgOutput{false};
|
bool doProgOutput{false};
|
||||||
bool doGPSWN{false}, doGALWN{false}, doVERSION{false}, doUTC{false};
|
bool doGPSWN{false}, doGALWN{false}, doBEIDOUWN{false}, doVERSION{false}, doUTC{false};
|
||||||
app.add_flag("--version", doVERSION, "show program version and copyright");
|
app.add_flag("--version", doVERSION, "show program version and copyright");
|
||||||
app.add_option("--date,-d", date, "yyyy-mm-dd hh:mm[:ss] hh:mm yyyymmdd hhmm");
|
app.add_option("--date,-d", date, "yyyy-mm-dd hh:mm[:ss] hh:mm yyyymmdd hhmm");
|
||||||
app.add_option("--date-gal-wn", galwn, "Give data for this Galileo week number");
|
app.add_option("--date-gal-wn", galwn, "Give data for this Galileo week number");
|
||||||
|
@ -62,11 +62,18 @@ try
|
||||||
getGalDateFromUTC(now, wn, tow);
|
getGalDateFromUTC(now, wn, tow);
|
||||||
cout<<wn<<endl;
|
cout<<wn<<endl;
|
||||||
}
|
}
|
||||||
|
else if(doBEIDOUWN) {
|
||||||
|
getBeiDouDateFromUTC(now, wn, tow);
|
||||||
|
cout<<wn<<endl;
|
||||||
|
}
|
||||||
else {
|
else {
|
||||||
getGPSDateFromUTC(now, wn, tow);
|
getGPSDateFromUTC(now, wn, tow);
|
||||||
cout<<"GPS Week Number (non-wrapped): "<< wn << ", tow " << tow << endl;
|
cout<<"GPS Week Number (non-wrapped): "<< wn << ", tow " << tow << endl;
|
||||||
getGalDateFromUTC(now, wn, tow);
|
getGalDateFromUTC(now, wn, tow);
|
||||||
cout<<"Galileo Week Number: "<< wn << ", tow " << tow << endl;
|
cout<<"Galileo Week Number: "<< wn << ", tow " << tow << endl;
|
||||||
|
getBeiDouDateFromUTC(now, wn, tow);
|
||||||
|
cout<<"BeiDou Week Number: "<< wn << ", sow " << tow << endl;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch(exception& e) {
|
catch(exception& e) {
|
||||||
|
|
|
@ -885,8 +885,6 @@ try
|
||||||
cout<<" best-tle-match "<<match.name <<" dist "<<match.distance /1000<<" km";
|
cout<<" best-tle-match "<<match.name <<" dist "<<match.distance /1000<<" km";
|
||||||
cout<<" norad " <<match.norad <<" int-desig " << match.internat;
|
cout<<" norad " <<match.norad <<" int-desig " << match.internat;
|
||||||
cout<<" 2nd-match "<<second.name << " dist "<<second.distance/1000<<" km";
|
cout<<" 2nd-match "<<second.name << " dist "<<second.distance/1000<<" km";
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
else if((fraid == 4 && 1<= pageno && pageno <= 24) ||
|
else if((fraid == 4 && 1<= pageno && pageno <= 24) ||
|
||||||
(fraid == 5 && 1<= pageno && pageno <= 6) ||
|
(fraid == 5 && 1<= pageno && pageno <= 6) ||
|
||||||
|
@ -917,7 +915,7 @@ try
|
||||||
cout<<" WNa "<<getbitu(&cond[0], beidouBitconv(190), 8)<<" t0a "<<getbitu(&cond[0], beidouBitconv(198), 8);
|
cout<<" WNa "<<getbitu(&cond[0], beidouBitconv(190), 8)<<" t0a "<<getbitu(&cond[0], beidouBitconv(198), 8);
|
||||||
}
|
}
|
||||||
else if(bm.fraid == 5 && pageno==10) {
|
else if(bm.fraid == 5 && pageno==10) {
|
||||||
cout <<" dTLS "<< (int)bm.deltaTLS;
|
cout <<" dTLS "<< (int)bm.deltaTLS << " dTLSF " << (int) bm.deltaTLSF <<" wnLSF " << (unsigned int)bm.wnLSF <<" dn "<<(unsigned int) bm.dn<<endl;
|
||||||
}
|
}
|
||||||
else if(bm.fraid == 5 && pageno==24) {
|
else if(bm.fraid == 5 && pageno==24) {
|
||||||
int AmID= getbitu(&cond[0], beidouBitconv(216), 2);
|
int AmID= getbitu(&cond[0], beidouBitconv(216), 2);
|
||||||
|
|
17
navmon.cc
17
navmon.cc
|
@ -292,22 +292,33 @@ std::string makeSatPartialName(const SatID& satid)
|
||||||
return fmt::sprintf("%c%02d", getGNSSChar(satid.gnss), satid.sv);
|
return fmt::sprintf("%c%02d", getGNSSChar(satid.gnss), satid.sv);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int g_dtLS{18}, g_dtLSBeidou{4};
|
||||||
|
|
||||||
void getGPSDateFromUTC(time_t t, int& wn, int& tow)
|
void getGPSDateFromUTC(time_t t, int& wn, int& tow)
|
||||||
{
|
{
|
||||||
t -= 315964800;
|
t -= 315964800;
|
||||||
t += 18;
|
t += 18; // XXXXXX LEAP SECOND
|
||||||
wn = t/(7*86400);
|
wn = t/(7*86400);
|
||||||
tow = t%(7*86400);
|
tow = t%(7*86400);
|
||||||
}
|
}
|
||||||
void getGalDateFromUTC(time_t t, int& wn, int& tow)
|
void getGalDateFromUTC(time_t t, int& wn, int& tow)
|
||||||
{
|
{
|
||||||
t -= 935280000;
|
t -= 935280000;
|
||||||
t += 18;
|
t += 18; // XXXXXXX LEAP SECOND
|
||||||
wn = t/(7*86400);
|
wn = t/(7*86400);
|
||||||
tow = t%(7*86400);
|
tow = t%(7*86400);
|
||||||
}
|
}
|
||||||
|
|
||||||
int g_dtLS{18}, g_dtLSBeidou{4};
|
void getBeiDouDateFromUTC(time_t t, int&wn, int& sow)
|
||||||
|
{
|
||||||
|
// Week number count started from zero at 00:00:00 on Jan. 1, 2006 of BDT
|
||||||
|
t -= 1136070000;
|
||||||
|
t+= g_dtLSBeidou;
|
||||||
|
wn = t/(7*86400);
|
||||||
|
sow = t%(7*86400);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
uint64_t utcFromGST(int wn, int tow)
|
uint64_t utcFromGST(int wn, int tow)
|
||||||
{
|
{
|
||||||
return (935280000 + wn * 7*86400 + tow - g_dtLS);
|
return (935280000 + wn * 7*86400 + tow - g_dtLS);
|
||||||
|
|
|
@ -80,7 +80,7 @@ double utcFromGPS(int wn, double tow);
|
||||||
|
|
||||||
void getGPSDateFromUTC(time_t t, int& wn, int& tow);
|
void getGPSDateFromUTC(time_t t, int& wn, int& tow);
|
||||||
void getGalDateFromUTC(time_t t, int& wn, int& tow);
|
void getGalDateFromUTC(time_t t, int& wn, int& tow);
|
||||||
|
void getBeiDouDateFromUTC(time_t t, int&wn, int& sow);
|
||||||
|
|
||||||
std::string makeHexDump(const std::string& str);
|
std::string makeHexDump(const std::string& str);
|
||||||
std::string makeHexDump(const std::basic_string<uint8_t>& str);
|
std::string makeHexDump(const std::basic_string<uint8_t>& str);
|
||||||
|
|
Loading…
Reference in New Issue