Add date to GPS data, captured from GPRMC packet.
[fw/altos] / ao-tools / ao-view / aoview_state.c
index f75066dde24d64b5100f2d7d00481e660d9a4d82..21cea99add4451dfb462ac3ea48f23c3568b9a00 100644 (file)
@@ -99,12 +99,13 @@ aoview_time(void)
  * Fill out the derived data fields
  */
 static void
-aoview_state_derive(struct aodata *data, struct aostate *state)
+aoview_state_derive(struct cc_telem *data, struct aostate *state)
 {
        int     i;
        double  new_height;
        double  height_change;
        double  time_change;
+       double  accel_counts_per_mss;
        int     tick_count;
 
        state->report_time = aoview_time();
@@ -123,8 +124,9 @@ aoview_state_derive(struct aodata *data, struct aostate *state)
        state->height = new_height;
        if (time_change)
                state->baro_speed = (state->baro_speed * 3 + (height_change / time_change)) / 4.0;
-       state->acceleration = (data->ground_accel - data->flight_accel) / 27.0;
-       state->speed = data->flight_vel / 2700.0;
+       accel_counts_per_mss = ((data->accel_minus_g - data->accel_plus_g) / 2.0) / 9.80665;
+       state->acceleration = (data->ground_accel - data->flight_accel) / accel_counts_per_mss;
+       state->speed = data->flight_vel / (accel_counts_per_mss * 100.0);
        state->temperature = ((data->temp / 32767.0 * 3.3) - 0.5) / 0.01;
        state->drogue_sense = data->drogue / 32767.0 * 15.0;
        state->main_sense = data->main / 32767.0 * 15.0;
@@ -272,7 +274,7 @@ aoview_state_reset(void)
 }
 
 void
-aoview_state_notify(struct aodata *data)
+aoview_state_notify(struct cc_telem *data)
 {
        struct aostate *state = &aostate;
        aoview_state_derive(data, state);
@@ -286,6 +288,7 @@ aoview_state_notify(struct aodata *data)
        aoview_table_add_row(0, "Rocket state", "%s", state->data.state);
        aoview_table_add_row(0, "Callsign", "%s", state->data.callsign);
        aoview_table_add_row(0, "Rocket serial", "%d", state->data.serial);
+       aoview_table_add_row(0, "Rocket flight", "%d", state->data.flight);
 
        aoview_table_add_row(0, "RSSI", "%6ddBm", state->data.rssi);
        aoview_table_add_row(0, "Height", "%6dm", state->height);
@@ -312,6 +315,10 @@ aoview_state_notify(struct aodata *data)
                aoview_state_add_deg(1, "Longitude", state->gps.lon, 'E', 'W');
                aoview_table_add_row(1, "GPS altitude", "%d", state->gps.alt);
                aoview_table_add_row(1, "GPS height", "%d", state->gps_height);
+               aoview_table_add_row(1, "GPS date", "%04d-%02d-%02d",
+                                    state->gps.gps_time.year,
+                                    state->gps.gps_time.month,
+                                    state->gps.gps_time.day);
                aoview_table_add_row(1, "GPS time", "%02d:%02d:%02d",
                                     state->gps.gps_time.hour,
                                     state->gps.gps_time.minute,