diff --git a/README.md b/README.md index 4f4e683..baf839a 100644 --- a/README.md +++ b/README.md @@ -10,9 +10,11 @@ Tooling: frames & metadata * navtrans: transmits GNSS NAV frames emitted by ubxtool to a collector. Performs some best effort buffering & will reconnect if needed. + UPDATE -> will be part of ubxtool * navrecv: receives GNSS NAV frames and stores them on disk, split out per - sender - * navstore: tails the file stored by navrecv, puts them in LMDB + sender. UPDATE -> part of navnexus + * navstore: tails the file stored by navrecv, puts them in LMDB. + UPDATE -> part of navnexus * navstream: produces a stream of NAV updates from all sources, with a few seconds delay so all data is in. Does this with queries to LMDB * navweb: consumes these ordered nav updates for a nice website @@ -32,6 +34,14 @@ The magic value is there to help us resync from partially written data. The whole goal is that we can continue to rebuild the database by rerunning 'navstore' and 'navinflux'. +Big TODO +-------- + + * Oddity of ephemeris age in doppler graph (possibly wider) + * Navnexus permanence + * Semantics definition for output of Navnexus + * Idempotency and retransmit by ubxtool + ubxtool ------- * Will also spool raw serial data to disk (in a filename that includes the diff --git a/navmon.proto b/navmon.proto index 61168cc..6a08737 100644 --- a/navmon.proto +++ b/navmon.proto @@ -34,15 +34,17 @@ message NavMonMessage { message RFData { required double rcvTow = 1; - required uint32 gnssID =2; - required uint32 gnssSV =3; - required double doppler =4; - required double carrierphase = 5; - required double pseudorange = 6; - required double locktimeMS = 7; - required double doStd = 8; - required double cpStd = 9; - required double prStd = 10; + required uint32 rcvWn = 2; + required uint32 gnssID =3; + required uint32 gnssSV =4; + required double doppler =5; + required double carrierphase = 6; + required double pseudorange = 7; + required double locktimeMS = 8; + required double doStd = 9; + required double cpStd = 10; + required double prStd = 11 + ; } message ObserverPosition { diff --git a/navnexus.cc b/navnexus.cc index 575f4bd..2cc9a4d 100644 --- a/navnexus.cc +++ b/navnexus.cc @@ -52,16 +52,19 @@ void recvSession(int s, ComboAddress client) if(nmm.type() == NavMonMessage::GalileoInavType) { std::lock_guard lg(g_dedupmut); if(g_dedup.count({nmm.gi().gnssid(), nmm.gi().gnsssv(), nmm.gi().gnsswn(), nmm.gi().gnsstow()})) { - cerr<<"Dedupped message from "<< nmm.sourceid()<<" "<< fmt::format("{0} {1} {2} {3}", nmm.gi().gnssid(), nmm.gi().gnsssv(), nmm.gi().gnsswn(), nmm.gi().gnsstow()) << endl; + // cerr<<"Dedupped message from "<< nmm.sourceid()<<" "<< fmt::format("{0} {1} {2} {3}", nmm.gi().gnssid(), nmm.gi().gnsssv(), nmm.gi().gnsswn(), nmm.gi().gnsstow()) << endl; continue; } - cerr<<"New message from "<< nmm.sourceid()<<" "<< fmt::format("{0} {1} {2} {3}", nmm.gi().gnssid(), nmm.gi().gnsssv(), nmm.gi().gnsswn(), nmm.gi().gnsstow()) << endl; + // cerr<<"New message from "<< nmm.sourceid()<<" "<< fmt::format("{0} {1} {2} {3}", nmm.gi().gnssid(), nmm.gi().gnsssv(), nmm.gi().gnsswn(), nmm.gi().gnsstow()) << endl; g_dedup.insert({nmm.gi().gnssid(), nmm.gi().gnsssv(), nmm.gi().gnsswn(), nmm.gi().gnsstow()}); } else ; // cerr<<"Not an inav message "<< (int) nmm.type()<set_gnssid(gnssid); nmm.mutable_rfd()->set_gnsssv(sv); nmm.mutable_rfd()->set_rcvtow(rcvTow); + nmm.mutable_rfd()->set_rcvwn(rcvWn); nmm.mutable_rfd()->set_doppler(doppler); nmm.mutable_rfd()->set_carrierphase(cpMes); nmm.mutable_rfd()->set_pseudorange(prMes);