From f96df290388fc4bf5d61a07e125636f9561f8172 Mon Sep 17 00:00:00 2001 From: bert hubert Date: Wed, 29 Jul 2020 11:38:32 +0200 Subject: [PATCH] septool! --- Makefile | 8 +++++-- influxdb.md | 28 ++++++++++++++++++++++ navdump.cc | 22 ++++++++++++------ navparse.cc | 65 ++++++++++++++++++++++++++++++++++++++-------------- rinreport.cc | 2 -- 5 files changed, 97 insertions(+), 28 deletions(-) diff --git a/Makefile b/Makefile index b606090..d04c41d 100644 --- a/Makefile +++ b/Makefile @@ -25,7 +25,7 @@ endif CHEAT_ARG := $(shell ./update-git-hash-if-necessary) PROGRAMS = navparse ubxtool navnexus navcat navrecv navdump testrunner navdisplay tlecatch reporter sp3feed \ - galmonmon rinreport rinjoin rtcmtool gndate + galmonmon rinreport rinjoin rtcmtool gndate septool all: navmon.pb.cc $(PROGRAMS) @@ -94,7 +94,7 @@ galmonmon: galmonmon.o ext/fmt-6.1.2/src/format.o $(SIMPLESOCKETS) minicurl.o ub $(CXX) -std=gnu++17 $^ -o $@ -pthread -L/usr/local/lib -lprotobuf -lcurl -navdump: navdump.o ext/fmt-6.1.2/src/format.o bits.o navmon.pb.o gps.o ephemeris.o beidou.o glonass.o navmon.o $(patsubst %.cc,%.o,$(wildcard ext/sgp4/libsgp4/*.cc)) tle.o sp3.o osen.o trkmeas.o githash.o rinex.o sbas.o rtcm.o ${EXTRADEP} +navdump: navdump.o ext/fmt-6.1.2/src/format.o bits.o navmon.pb.o gps.o ephemeris.o beidou.o glonass.o navmon.o $(patsubst %.cc,%.o,$(wildcard ext/sgp4/libsgp4/*.cc)) tle.o sp3.o osen.o trkmeas.o githash.o rinex.o sbas.o rtcm.o galileo.o ${EXTRADEP} $(CXX) -std=gnu++17 $^ -o $@ -L/usr/local/lib -pthread -lprotobuf -lz navdisplay: navdisplay.o ext/fmt-6.1.2/src/format.o bits.o navmon.pb.o gps.o ephemeris.o beidou.o glonass.o ephemeris.o navmon.o osen.o githash.o @@ -128,6 +128,10 @@ rtcmtool: rtcmtool.o navmon.pb.o githash.o ext/fmt-6.1.2/src/format.o bits.o nm ubxtool: navmon.pb.o ubxtool.o ubx.o bits.o ext/fmt-6.1.2/src/format.o galileo.o gps.o beidou.o navmon.o ephemeris.o $(SIMPLESOCKETS) osen.o githash.o nmmsender.o zstdwrap.o $(CXX) -std=gnu++17 $^ -o $@ -L/usr/local/lib -lprotobuf -pthread -lzstd +septool: navmon.pb.o septool.o bits.o ext/fmt-6.1.2/src/format.o galileo.o gps.o beidou.o navmon.o ephemeris.o $(SIMPLESOCKETS) osen.o githash.o nmmsender.o zstdwrap.o + $(CXX) -std=gnu++17 $^ -o $@ -L/usr/local/lib -lprotobuf -pthread -lzstd + + testrunner: navmon.pb.o testrunner.o ubx.o bits.o ext/fmt-6.1.2/src/format.o galileo.o gps.o beidou.o ephemeris.o sp3.o osen.o navmon.o rinex.o githash.o $(CXX) -std=gnu++17 $^ -o $@ -L/usr/local/lib -lprotobuf -lz diff --git a/influxdb.md b/influxdb.md index 4c725ae..752f422 100644 --- a/influxdb.md +++ b/influxdb.md @@ -131,9 +131,37 @@ Observer and SV measurements: * ele: calculated elevation for SV from this receiver * prres: pseudorange residual according to receiver * qi: 0-7, quality indicator according to receiver + * used: did the receiver use this SV? * ubx\_jamming * noise\_per\_ms: the Ublox noisePerMS field * agccnt: the Ublox automatic gain correction "count" * jamind: The Ublox jamming indicator * flag: The Ublox jamming flag field +Fed by separate tool: + +SP3 design, tagged by GNSSID, SV: + * sp3\_data: + * x + * y + * z + * clk + * provider + +ephemeris, tagged by GNSSID, SV, SIGID: + * active-ephemeris + * all the raw parameters + +GDOP/PDOP stats? + * covdop + * lat + * lon + * cov5 + * cov10 + * cov20 + * hdop5 + * hdop10 + * hdop20 + +etc + diff --git a/navdump.cc b/navdump.cc index f5c1153..0e9b2f2 100644 --- a/navdump.cc +++ b/navdump.cc @@ -700,19 +700,27 @@ try } } else if(rm.type == 1045 || rm.type == 1046) { - + static ofstream af0inavstr("af0inav.csv"), af0fnavstr("af0fnav.csv"), bgdstr("bgdstr.csv"); SatID sid; sid.gnss = 2; sid.sv = rm.d_sv; sid.sigid = (rm.type == 1045) ? 5 : 1; cout<< makeSatIDName(sid)<<" "; - if(rm.type == 1045) - cout<<"F/NAV "; - else - cout <<"I/NAV "; - - cout <<" iode " << rm.d_gm.iodnav << " sisa " << (unsigned int) rm.d_gm.sisa << " af0 "<((const uint8_t*)nmm.dm().payload().c_str(), nmm.dm().payload().size())); for(const auto& tss : ret) { @@ -2382,8 +2392,22 @@ try auto oldOffset = getGPSAtomicOffset(gm.tow, oldgm); auto newOffset = getGPSAtomicOffset(gm.tow, gm); svstat.timeDisco = oldOffset.first - newOffset.first; - if(fabs(svstat.timeDisco) < 10000) - idb.addValue(id, "clock_jump_ns", {{"value", svstat.timeDisco}}, satUTCTime(id)); + if(fabs(svstat.timeDisco) < 10000) { + idb.addValue(id, "clock_jump_ns", { + {"jump", svstat.timeDisco}, + {"duration", ephAge(gm.t0c * 16, oldgm.t0c * 16)}, + {"old-af0", oldgm.af0}, + {"old-af1", oldgm.af1}, + {"old-af2", oldgm.af2}, + {"old-t0c", oldgm.t0c * 16}, + {"new-af0", gm.af0}, + {"new-af1", gm.af1}, + {"new-af2", gm.af2}, + {"new-t0c", gm.t0c * 16} + + }, satUTCTime(id)); + + } } } else if(frame==2) { @@ -2435,7 +2459,8 @@ try if(rm.type == 1057 || rm.type == 1240) { for(const auto& ed : rm.d_ephs) { auto iter = g_svstats.find(ed.id); - if(iter != g_svstats.end() && iter->second.completeIOD() && iter->second.liveIOD().getIOD() == ed.iod) + // XXX NAVCAST ONLY + if(iter != g_svstats.end() && iter->second.completeIOD() && iter->second.liveIOD().getIOD() == ed.iod && nmm.sourceid()==300) iter->second.rtcmEphDelta = ed; idb.addValue(ed.id, "rtcm-eph-correction", { @@ -2461,7 +2486,7 @@ try for(const auto& cd : rm.d_clocks) { auto iter = g_svstats.find(cd.id); - if(iter != g_svstats.end()) + if(iter != g_svstats.end() && nmm.sourceid()==300) /// XXX wrong iter->second.rtcmClockDelta = cd; idb.addValue(cd.id, "rtcm-clock-correction", { @@ -2481,7 +2506,7 @@ try else if(rm.type == 1060 || rm.type == 1243) { for(const auto& ed : rm.d_ephs) { auto iter = g_svstats.find(ed.id); - if(iter != g_svstats.end() && iter->second.completeIOD() && iter->second.liveIOD().getIOD() == ed.iod) + if(iter != g_svstats.end() && iter->second.completeIOD() && iter->second.liveIOD().getIOD() == ed.iod && nmm.sourceid()==300) iter->second.rtcmEphDelta = ed; idb.addValue(ed.id, "rtcm-eph-correction", { @@ -2549,7 +2574,7 @@ try for(const auto& cd : rm.d_clocks) { auto iter = g_svstats.find(cd.id); - if(iter != g_svstats.end()) + if(iter != g_svstats.end() && nmm.sourceid()==300) iter->second.rtcmClockDelta = cd; idb.addValue(cd.id, "rtcm-clock-correction", { @@ -2588,7 +2613,9 @@ try } else if(nmm.type()== NavMonMessage::BeidouInavTypeD1) { - // continue; // XXX speedup + // if(doGalileoReportSpeedup) + // continue; // speedup + try { SatID id{nmm.bid1().gnssid(), nmm.bid1().gnsssv(), nmm.bid1().sigid()}; @@ -2687,7 +2714,9 @@ try */ } else if(nmm.type()== NavMonMessage::GlonassInavType) { - // continue; // XXX speedup + // if(doGalileoReportSpeedup) + // continue; // speedup + SatID id{nmm.gloi().gnssid(), nmm.gloi().gnsssv(), nmm.gloi().sigid()}; auto& svstat = g_svstats[id]; svstat.gnss = id.gnss; @@ -2754,7 +2783,9 @@ try // cout<<"GLONASS R"<* ho) int main(int argc, char** argv) { - - ifstream filefile(argv[1]); string fname; deque files;