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 "<