# HG changeset patch # User Josef 'Jeff' Sipek # Date 1579705826 18000 # Node ID 8e85919405df474298039b58b459c6ade732695d # Parent fbf26ed4884d04fdbca6be8e6f743a3bce8c8cce gnss-galileo: add a valid bit to each ephemeris This is easier than trying to guess whether the ephemeris contains any meaningful values. Signed-off-by: Josef 'Jeff' Sipek diff -r fbf26ed4884d -r 8e85919405df gnss-galileo-eph.c --- a/gnss-galileo-eph.c Mon Jan 20 10:16:31 2020 -0500 +++ b/gnss-galileo-eph.c Wed Jan 22 10:10:26 2020 -0500 @@ -29,14 +29,15 @@ void galileo_print_eph(const struct galileo_ephemeris *eph) { - printf("E%02u: iod %u " + printf("E%02u: %svalid iod %u " "m0 %e delta_n %e e %e sqrt_a %e omega0 %e i0 %e " "omega %e omegadot %e idot %e cuc %e cus %e " "crc %e crs %e cic %e cis %e t0 %u (%u raw)\n", - eph->sv, eph->iod, eph->m0, eph->delta_n, eph->e, - eph->sqrt_a, eph->omega0, eph->i0, eph->omega, eph->omegadot, - eph->idot, eph->cuc, eph->cus, eph->crc, eph->crs, eph->cic, - eph->cis, eph->t0.gst, eph->t0.raw); + eph->sv, eph->valid ? "" : "NOT ", eph->iod, eph->m0, + eph->delta_n, eph->e, eph->sqrt_a, eph->omega0, eph->i0, + eph->omega, eph->omegadot, eph->idot, eph->cuc, eph->cus, + eph->crc, eph->crs, eph->cic, eph->cis, eph->t0.gst, + eph->t0.raw); } void galileo_eph_ecef(const struct galileo_ephemeris *eph, @@ -44,6 +45,8 @@ { int approx_iter; + ASSERT(eph->valid); + /* Based on Galileo ICD 5.1.1 */ const double mu = 3.986004418e14; /* m3/s2 */ const double omegaE = 7.2921151467e-5; /* rad/s */ diff -r fbf26ed4884d -r 8e85919405df gnss-galileo-state.c --- a/gnss-galileo-state.c Mon Jan 20 10:16:31 2020 -0500 +++ b/gnss-galileo-state.c Wed Jan 22 10:10:26 2020 -0500 @@ -138,6 +138,7 @@ state->sv[sv].eph = state->wip[sv].nav.eph; state->sv[sv].eph.sv = sv; state->sv[sv].eph.iod = state->wip[sv].nav.iod[0]; + state->sv[sv].eph.valid = true; state->sv[sv].eph.t0.gst = tow2gst(ephwn, state->sv[sv].eph.t0.raw); state->sv[sv].valid_eph = true; diff -r fbf26ed4884d -r 8e85919405df gnss-galileo.h --- a/gnss-galileo.h Mon Jan 20 10:16:31 2020 -0500 +++ b/gnss-galileo.h Wed Jan 22 10:10:26 2020 -0500 @@ -170,6 +170,7 @@ struct galileo_ephemeris { unsigned int sv; uint16_t iod; + bool valid:1; /* All in radians, except as noted */ double m0;