altoslib: Missed a couple of easy mini voltage API changes
[fw/altos] / src / core / ao_gps_report_mega.c
index e2adbfbc90b38563ccfbf0f5dab57b911b077b69..5e3c71bfa309e1ecb6f3fecb954dde596ff12283 100644 (file)
@@ -24,14 +24,13 @@ ao_gps_report_mega(void)
        static __xdata struct ao_log_mega               gps_log;
        static __xdata struct ao_telemetry_location     gps_data;
        static __xdata struct ao_telemetry_satellite    gps_tracking_data;
-       uint8_t date_reported = 0;
        uint8_t new;
        uint8_t c, n, i;
 
        for (;;) {
-               ao_mutex_get(&ao_gps_mutex);
                while (!(new = ao_gps_new))
                        ao_sleep(&ao_gps_new);
+               ao_mutex_get(&ao_gps_mutex);
                if (new & AO_GPS_NEW_DATA)
                        ao_xmemcpy(&gps_data, &ao_gps_data, sizeof (ao_gps_data));
                if (new & AO_GPS_NEW_TRACKING)
@@ -53,6 +52,13 @@ ao_gps_report_mega(void)
                        gps_log.u.gps.year = gps_data.year;
                        gps_log.u.gps.month = gps_data.month;
                        gps_log.u.gps.day = gps_data.day;
+                       gps_log.u.gps.course = gps_data.course;
+                       gps_log.u.gps.ground_speed = gps_data.ground_speed;
+                       gps_log.u.gps.climb_rate = gps_data.climb_rate;
+                       gps_log.u.gps.pdop = gps_data.pdop;
+                       gps_log.u.gps.hdop = gps_data.hdop;
+                       gps_log.u.gps.vdop = gps_data.vdop;
+                       gps_log.u.gps.mode = gps_data.mode;
                        ao_log_mega(&gps_log);
                }
                if ((new & AO_GPS_NEW_TRACKING) && (n = gps_tracking_data.channels) != 0) {
@@ -64,6 +70,8 @@ ao_gps_report_mega(void)
                                {
                                        gps_log.u.gps_sat.sats[i].c_n = gps_tracking_data.sats[c].c_n_1;
                                        i++;
+                                       if (i >= 12)
+                                               break;
                                }
                        gps_log.u.gps_sat.channels = i;
                        ao_log_mega(&gps_log);