ao-tools: Parse TeleGPS state value from gps location packet
authorKeith Packard <keithp@keithp.com>
Sun, 8 Jun 2014 04:12:44 +0000 (21:12 -0700)
committerKeith Packard <keithp@keithp.com>
Sun, 8 Jun 2014 04:12:44 +0000 (21:12 -0700)
TeleGPS encodes state in a spare gps location packet byte, masking in
0x80 to signify that the state value is valid

Signed-off-by: Keith Packard <keithp@keithp.com>
ao-tools/ao-telem/ao-telem.c
ao-tools/lib/cc-telemetry.h

index da873838a7f79ad4b06e45be9815510234e8ea1f..75f94ec14aa0a8c37a764e9e3a9eccef4e7ca5c3 100644 (file)
@@ -145,6 +145,8 @@ main (int argc, char **argv)
                                                        telem.location.ground_speed / 100.0,
                                                        telem.location.climb_rate / 100.0,
                                                        telem.location.course * 2);
+                                       if ((telem.location.state & AO_GPS_STATE_VALID))
+                                               printf (" state %1d", telem.location.state & ~(AO_GPS_STATE_VALID));
                                        printf ("\n");
                                        break;
                                case AO_TELEMETRY_SATELLITE:
index d64c4b30d3d0395cc6ce593d675dfc1ed0fa20b3..35cca13b3283742efa5668329cb7465d5a216d94 100644 (file)
@@ -90,6 +90,8 @@ struct ao_telemetry_configuration {
 #define AO_GPS_MODE_MANUAL             'M'
 #define AO_GPS_MODE_SIMULATED          'S'
 
+#define AO_GPS_STATE_VALID             0x80
+
 struct ao_telemetry_location {
        uint16_t        serial;         /*  0 */
        uint16_t        tick;           /*  2 */
@@ -112,7 +114,7 @@ struct ao_telemetry_location {
        uint16_t        ground_speed;   /* 26 cm/s */
        int16_t         climb_rate;     /* 28 cm/s */
        uint8_t         course;         /* 30 degrees / 2 */
-       uint8_t         unused[1];      /* 31 */
+       uint8_t         state;          /* 31 */
        /* 32 */
 };