altos: Fix GPS test frameworks to handle shared ao_gps_new variable
[fw/altos] / src / test / ao_gps_test.c
index d75a12ecbfad77bf5a4f75d65a02a4200fd217f0..e799ab0fc8f0a70e612c72bcbbe6c8c724842a31 100644 (file)
@@ -26,6 +26,9 @@
 #define AO_GPS_NUM_SAT_MASK    (0xf << 0)
 #define AO_GPS_NUM_SAT_SHIFT   (0)
 
+#define AO_GPS_NEW_DATA                1
+#define AO_GPS_NEW_TRACKING    2
+
 #define AO_GPS_VALID           (1 << 4)
 #define AO_GPS_RUNNING         (1 << 5)
 #define AO_GPS_DATE_VALID      (1 << 6)
@@ -88,6 +91,7 @@ ao_mutex_put(uint8_t *mutex)
 static int
 ao_gps_fd;
 
+#if 0
 static void
 ao_dbg_char(char c)
 {
@@ -103,6 +107,7 @@ ao_dbg_char(char c)
        }
        write(1, line, strlen(line));
 }
+#endif
 
 #define QUEUE_LEN      4096
 
@@ -391,6 +396,7 @@ ao_serial1_putchar(char c)
 
 #define AO_SERIAL_SPEED_4800   0
 #define AO_SERIAL_SPEED_57600  1
+#define AO_SERIAL_SPEED_115200 2
 
 static void
 ao_serial1_set_speed(uint8_t speed)
@@ -407,6 +413,9 @@ ao_serial1_set_speed(uint8_t speed)
        case AO_SERIAL_SPEED_57600:
                cfsetspeed(&termios, B57600);
                break;
+       case AO_SERIAL_SPEED_115200:
+               cfsetspeed(&termios, B115200);
+               break;
        }
        tcsetattr(fd, TCSAFLUSH, &termios);
        tcflush(fd, TCIFLUSH);
@@ -420,13 +429,19 @@ ao_serial1_set_speed(uint8_t speed)
 void
 ao_dump_state(void *wchan)
 {
-       double  lat, lon;
        int     i;
-       if (wchan == &ao_gps_data)
+
+       if (wchan != &ao_gps_new)
+               return;
+       
+       if (ao_gps_new & AO_GPS_NEW_DATA) {
                ao_gps_print(&ao_gps_data);
-       else
+               putchar('\n');
+       }
+       if (ao_gps_new & AO_GPS_NEW_TRACKING) {
                ao_gps_tracking_print(&ao_gps_tracking_data);
-       putchar('\n');
+               putchar('\n');
+       }
        return;
        printf ("%02d:%02d:%02d",
                ao_gps_data.hour, ao_gps_data.minute,
@@ -510,4 +525,5 @@ main (int argc, char **argv)
        }
        ao_gps_setup();
        ao_gps();
+       return 0;
 }