diff --git a/html/doalles.js b/html/doalles.js index 59a8360..b70159a 100644 --- a/html/doalles.js +++ b/html/doalles.js @@ -14,7 +14,7 @@ function maketable(str, arr) enter(). append("tr"); - var columns = ["sv", "best-tle", "norad", "iod", "aodc/e", "eph-age-m", "latest-disco", "time-disco", "sisa", "delta_hz_corr", "health", "tle-dist", "alma-dist", "delta-utc", "delta-gps", "sources", "db", "elev", "last-seen-s"]; + var columns = ["sv", "best-tle", "iod", "aodc/e", "eph-age-m", "latest-disco", "time-disco", "sisa", "health", "tle-dist", "alma-dist", "delta-utc", "delta-gps", "sources", "db", "delta_hz_corr","prres", "elev", "last-seen-s"]; // append the header row thead.append("tr") @@ -64,6 +64,17 @@ function maketable(str, arr) ret.value=""; } else if(column == "eph-age-m") { + if(row["gnssid"]==0 && Math.abs(row[column]) > 120 && row["last-seen-s"] < 120) + ret.color="orange"; + if(row["gnissid"]==2 && Math.abs(row[column]) > 60 && row["last-seen-s"] < 120) + ret.color="orange"; + + if(Math.abs(row[column]) >120 && row["last-seen-s"] < 120) + ret.color="#ff4444"; + if(Math.abs(row[column]) > 4*60 && row["last-seen-s"] < 120) + ret.color="#ff2222"; + + if(row[column] != null) { var b = moment.duration(-row[column], 'm'); ret.value = b.humanize(true); @@ -73,7 +84,7 @@ function maketable(str, arr) } else if(row[column] != null && (column == "delta_hz_corr" || column =="delta_hz")) { - ret.value = row[column].toFixed(0); + ret.value = row[column]; } else if((column == "tle-dist")) { if(row["best-tle-dist"] != null) @@ -100,6 +111,9 @@ function maketable(str, arr) var b = moment.duration(row[column], 's'); ret.value = b.humanize(); } + else if(column == "best-tle") { + ret.value = ""+row[column]+""; + } else if(column == "gpshealth" && row[column] != null) { if(row[column]==0) ret.value = "ok"; @@ -109,11 +123,11 @@ function maketable(str, arr) } } else if(column == "latest-disco" && row[column] != null) - ret.value = ((100*row[column]).toFixed(2))+" cm"; + ret.value = ((100*row[column]).toFixed(1))+" cm"; else if(column == "time-disco" && row[column] != null) - ret.value = row[column].toFixed(2)+" ns"; + ret.value = row[column].toFixed(1)+" ns"; else if(column == "health") { - ret.value = row[column]; + ret.value = ""+row[column]+""; if(row["healthissue"] == 1) { ret.color="orange"; } @@ -124,10 +138,6 @@ function maketable(str, arr) else { ret.value= row[column]; } - if(column == "eph-age-m" && row[column] > 60 && row["last-seen-s"] < 120) - ret.color="orange"; - if(column == "eph-age-m" && row[column] > 4*60 && row["last-seen-s"] < 120) - ret.color="#ff2222"; if(column == "sisa" && parseInt(row[column]) > 312) ret.color="#ffaaaa"; @@ -182,6 +192,22 @@ function update() o.elev = o.elev + o.perrecv[k].elev.toFixed(0)+" "; else o.elev = o.elev + "? "; + + if(o.delta_hz_corr == null) + o.delta_hz_corr =""; + if(o.perrecv[k].delta_hz_corr != null) + o.delta_hz_corr = o.delta_hz_corr + o.perrecv[k].delta_hz_corr.toFixed(0)+" "; + else + o.delta_hz_corr = o.delta_hz_corr + "_ "; + + if(o.prres == null) + o.prres =""; + if(o.perrecv[k].prres != null) + o.prres = o.prres + o.perrecv[k].prres.toFixed(1)+" "; + else + o.prres = o.prres + "_ "; + + } }); diff --git a/navdump.cc b/navdump.cc index 8a38840..244888f 100644 --- a/navdump.cc +++ b/navdump.cc @@ -139,6 +139,12 @@ try oldgm4s[nmm.gi().gnsssv()] = gm; } + if(wtype == 1) { + cout << " iodnav " << gm.iodnav <<" t0e "<< gm.t0e*60 <<" " << ephAge(gm.t0e*60, gm.tow); + } + if(wtype == 2 || wtype == 3) { + cout << " iodnav " << gm.iodnav; + } if(wtype == 1 || wtype == 2 || wtype == 3) { iodstream << nmm.localutcseconds()<<" " << nmm.gi().gnssid() <<" "<< nmm.gi().gnsssv() << " " << gm.iodnav << " " << gm.t0e*60 <<" " << ephAge(gm.t0e*60, gm.tow); if(wtype == 3) diff --git a/navparse.cc b/navparse.cc index 5755eec..c02559c 100644 --- a/navparse.cc +++ b/navparse.cc @@ -235,6 +235,7 @@ struct SVPerRecv int el{-1}, azi{-1}, db{-1}; time_t deltaHzTime{-1}; double deltaHz{-1}; + double prres{-1}; time_t t; // last seen }; @@ -284,7 +285,7 @@ struct SVStat map perrecv; - double latestDisco{-1}, timeDisco{-1000}; + double latestDisco{-1}, latestDiscoAge{-1}, timeDisco{-1000}; map iods; void addGalileoWord(std::basic_string_view page); @@ -613,23 +614,28 @@ std::string humanTime(int gnssid, int wn, int tow) std::optional getHzCorrection(time_t now, int src, unsigned int gnssid, unsigned int sigid, const svstats_t svstats) { + std::optional allHzCorr; double alltot=0; int allcount=0; - + // cout<<"getHzCorrection called for src "<second.deltaHzTime < 60) { + if(auto iter = s.second.perrecv.find(src); iter != s.second.perrecv.end() && now - iter->second.deltaHzTime < 60) { + // cout<<" Found entry for SV "<first<<", deltaHz: "<second.deltaHz<< " age " << now - iter->second.deltaHzTime<<" db "<second.db<second.deltaHz; allcount++; } } - if(allcount > 3) + if(allcount > 3) { allHzCorr = alltot/allcount; - + // cout<<"Returning "<<*allHzCorr<= 0 && s.second.oldBeidouMessage.sqrtA != 0) { + getCoordinates(latestTow(s.first.gnss, svstats), s.second.oldBeidouMessage, &sat); + } if(sat.x) { Point our = g_srcpos[pr.first].pos; @@ -1165,7 +1174,7 @@ try det["db"] = pr.second.db; det["last-seen-s"] = time(0) - pr.second.t; - + det["prres"] = pr.second.prres; if(time(0) - pr.second.deltaHzTime < 60) { det["delta_hz"] = pr.second.deltaHz; @@ -1184,6 +1193,7 @@ try if(s.second.latestDisco >=0) { item["latest-disco"]= s.second.latestDisco; + item["latest-disco-age"]= s.second.latestDiscoAge; } if(s.second.timeDisco > -100 && s.second.timeDisco < 100) { item["time-disco"]= s.second.timeDisco; @@ -1246,6 +1256,7 @@ try g_svstats[id].perrecv[nmm.sourceid()].db = nmm.rd().db(); g_svstats[id].perrecv[nmm.sourceid()].el = nmm.rd().el(); g_svstats[id].perrecv[nmm.sourceid()].azi = nmm.rd().azi(); + g_svstats[id].perrecv[nmm.sourceid()].prres = nmm.rd().prres(); Point sat{0,0,0}; //cout<<"Got recdata for "<