#endif
__xdata uint8_t ao_gps_mutex;
-__xdata struct ao_gps_data ao_gps_data;
-__xdata struct ao_gps_tracking_data ao_gps_tracking_data;
+__pdata uint16_t ao_gps_tick;
+__xdata struct ao_telemetry_location ao_gps_data;
+__xdata struct ao_telemetry_satellite ao_gps_tracking_data;
static const char ao_gps_set_nmea[] = "\r\n$PSRF100,0,57600,8,1,0*37\r\n";
switch (i) {
case 41:
ao_mutex_get(&ao_gps_mutex);
+ ao_gps_tick = ao_time();
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.course = ao_sirf_data.course / 200;
ao_gps_data.hdop = ao_sirf_data.hdop;
ao_gps_data.climb_rate = ao_sirf_data.climb_rate;
+ ao_gps_data.flags |= AO_GPS_COURSE_VALID;
+#if 0
if (ao_sirf_data.h_error > 6553500)
ao_gps_data.h_error = 65535;
else
ao_gps_data.v_error = 65535;
else
ao_gps_data.v_error = ao_sirf_data.v_error / 100;
+#endif
ao_mutex_put(&ao_gps_mutex);
ao_wakeup(&ao_gps_data);
break;