ao-tools/ao-eeprom: Dump converted info for F packets
[fw/altos] / ao-tools / ao-eeprom / ao-eeprom.c
index 2f0762420432fece69f082c618a6a0a20b296bbf..e249af9e884d912571c388300adb3b15810dee79 100644 (file)
@@ -412,11 +412,14 @@ main (int argc, char **argv)
                                        log_mega = (struct ao_log_mega *) &eeprom->data[pos];
                                        switch (log_mega->type) {
                                        case AO_LOG_FLIGHT:
-                                               printf(" serial %5u flight %5u ground_accel %6d ground_pres %9u",
+                                               printf(" serial %5u flight %5u ground_accel %6d ground_pres %9u kPa  %7.1f  %7.1f m",
                                                       eeprom->serial_number,
                                                       log_mega->u.flight.flight,
                                                       log_mega->u.flight.ground_accel,
-                                                      log_mega->u.flight.ground_pres);
+                                                      log_mega->u.flight.ground_pres,
+                                                      log_mega->u.flight.ground_pres / 1000.0,
+                                                      ao_pressure_to_altitude(log_mega->u.flight.ground_pres));
+
                                                printf(" along %6d aross %6d through %6d",
                                                       log_mega->u.flight.ground_accel_along,
                                                       log_mega->u.flight.ground_accel_across,
@@ -513,10 +516,12 @@ main (int argc, char **argv)
                                        log_mini = (struct ao_log_mini *) &eeprom->data[pos];
                                        switch (log_mini->type) {
                                        case AO_LOG_FLIGHT:
-                                               printf(" serial %5u flight %5u ground_pres %9u",
+                                               printf(" serial %5u flight %5u ground_pres %9u kPa  %7.1f  %7.1f m",
                                                       eeprom->serial_number,
                                                       log_mini->u.flight.flight,
-                                                      log_mini->u.flight.ground_pres);
+                                                      log_mini->u.flight.ground_pres,
+                                                      log_mini->u.flight.ground_pres / 1000.0,
+                                                      ao_pressure_to_altitude(log_mini->u.flight.ground_pres));
                                                break;
                                        case AO_LOG_STATE:
                                                ao_state(log_mini->u.state.state,
@@ -542,11 +547,13 @@ main (int argc, char **argv)
                                        log_metrum = (struct ao_log_metrum *) &eeprom->data[pos];
                                        switch (log_metrum->type) {
                                        case AO_LOG_FLIGHT:
-                                               printf(" serial %5u flight %5u ground_accel %6d ground_pres %9u ground_temp %9u",
+                                               printf(" serial %5u flight %5u ground_accel %6d ground_pres %9u kPa  %7.1f  %7.1f m ground_temp %9u",
                                                       eeprom->serial_number,
                                                       log_metrum->u.flight.flight,
                                                       log_metrum->u.flight.ground_accel,
                                                       log_metrum->u.flight.ground_pres,
+                                                      log_metrum->u.flight.ground_pres / 1000.0,
+                                                      ao_pressure_to_altitude(log_metrum->u.flight.ground_pres),
                                                       log_metrum->u.flight.ground_temp);
                                                break;
                                        case AO_LOG_SENSOR:
@@ -636,7 +643,43 @@ main (int argc, char **argv)
                                        break;
                                case AO_LOG_FORMAT_TELEGPS:
                                        log_gps = (struct ao_log_gps *) &eeprom->data[pos];
-                                       (void) log_gps;
+                                       switch (log_gps->type) {
+                                       case AO_LOG_GPS_TIME:
+                                               printf(" lat %10.7f ° lon %10.7f ° alt %8d m",
+                                                      log_gps->u.gps.latitude / 10000000.0,
+                                                      log_gps->u.gps.longitude/ 10000000.0,
+                                                      (int32_t) (log_gps->u.gps.altitude_low |
+                                                                 (log_gps->u.gps.altitude_high << 16)));
+                                               printf(" time %02d:%02d:%02d %04d-%02d-%02d flags %02x",
+                                                      log_gps->u.gps.hour,
+                                                      log_gps->u.gps.minute,
+                                                      log_gps->u.gps.second,
+                                                      log_gps->u.gps.year + 2000,
+                                                      log_gps->u.gps.month,
+                                                      log_gps->u.gps.day,
+                                                      log_gps->u.gps.flags);
+                                               printf(" course %3d ground_speed %5u climb_rate %6d pdop %3d hdop %3d vdop %3d mode %3d",
+                                                      log_gps->u.gps.course,
+                                                      log_gps->u.gps.ground_speed,
+                                                      log_gps->u.gps.climb_rate,
+                                                      log_gps->u.gps.pdop,
+                                                      log_gps->u.gps.hdop,
+                                                      log_gps->u.gps.vdop,
+                                                      log_gps->u.gps.mode);
+                                               break;
+                                       case AO_LOG_GPS_SAT:
+                                               printf(" channels %2d",
+                                                      log_gps->u.gps_sat.channels);
+                                               for (i = 0; i < 12; i++) {
+                                                       printf(" svid %3d c_n %2d",
+                                                              log_gps->u.gps_sat.sats[i].svid,
+                                                              log_gps->u.gps_sat.sats[i].c_n);
+                                               }
+                                               break;
+                                       default:
+                                               printf (" unknown");
+                                               break;
+                                       }
                                        break;
                                case AO_LOG_FORMAT_DETHERM:
                                        break;