This tracks whether the GPS receiver has ever sent a valid report to the
flight computer, allowing the user to tell whether the GPS receiver is
working at all.
Signed-off-by: Keith Packard <keithp@keithp.com>
#define AO_GPS_NUM_SAT_SHIFT (0)
#define AO_GPS_VALID (1 << 4)
+#define AO_GPS_RUNNING (1 << 5)
struct ao_gps_data {
uint8_t hour;
ao_gps_data.hour = ao_sirf_data.utc_hour;
ao_gps_data.minute = ao_sirf_data.utc_minute;
ao_gps_data.second = ao_sirf_data.utc_second / 1000;
- ao_gps_data.flags = (ao_sirf_data.num_sv << AO_GPS_NUM_SAT_SHIFT) & AO_GPS_NUM_SAT_MASK;
+ ao_gps_data.flags = ((ao_sirf_data.num_sv << AO_GPS_NUM_SAT_SHIFT) & AO_GPS_NUM_SAT_MASK) | AO_GPS_RUNNING;
if ((ao_sirf_data.nav_type & NAV_TYPE_GPS_FIX_TYPE_MASK) >= NAV_TYPE_4_SV_KF)
ao_gps_data.flags |= AO_GPS_VALID;
ao_gps_data.latitude = ao_sirf_data.lat;
climb_sign,
climb / 100,
climb % 100);
- printf(" %d.%d(hdop) %5d(herr) %5d(verr)\n",
- gps_data->hdop,
+ printf(" %d.%d(hdop) %5u(herr) %5u(verr)\n",
+ gps_data->hdop / 5,
+ (gps_data->hdop * 2) % 10,
gps_data->h_error,
gps_data->v_error);
- } else {
+ } else if (gps_data->flags & AO_GPS_RUNNING) {
printf(" unlocked\n");
+ } else {
+ printf (" not-connected\n");
}
}
#define AO_GPS_NUM_SAT_SHIFT (0)
#define AO_GPS_VALID (1 << 4)
+#define AO_GPS_RUNNING (1 << 5)
struct ao_gps_data {
uint8_t hour;