Missing ao_mutex_put in gps_dump
[fw/altos] / src / ao_gps_skytraq.c
index bf192f28e4f0f0e4d8a0eef3e0fcaa688b328ba5..0dd45c0c7f9a57659f88cf488393b4582545e1f7 100644 (file)
@@ -271,7 +271,15 @@ ao_gps(void) __reentrant
                        ao_gps_next.flags |= i;
 
                        ao_gps_lexchar();
-                       ao_gps_skip_field();    /* Horizontal dilution */
+                       ao_gps_next.hdop = ao_gps_decimal(0xff);
+                       if (ao_gps_next.hdop <= 50) {
+                               ao_gps_next.hdop = (uint8_t) 5 * ao_gps_next.hdop;
+                               if (ao_gps_char == '.')
+                                       ao_gps_next.hdop = (ao_gps_next.hdop +
+                                                           ((uint8_t) ao_gps_decimal(1) >> 1));
+                       } else
+                               ao_gps_next.hdop = 255;
+                       ao_gps_skip_field();
 
                        ao_gps_next.altitude = ao_gps_decimal(0xff);
                        ao_gps_skip_field();    /* skip any fractional portion */
@@ -406,16 +414,16 @@ static void
 gps_dump(void) __reentrant
 {
        ao_mutex_get(&ao_gps_mutex);
-       ao_gps_print(&ao_gps_data);
-       putchar('\n');
-       ao_gps_tracking_print(&ao_gps_tracking_data);
-       putchar('\n');
+       printf ("Date: %02d/%02d/%02d\n", ao_gps_data.year, ao_gps_data.month, ao_gps_data.day);
+       printf ("Time: %02d:%02d:%02d\n", ao_gps_data.hour, ao_gps_data.minute, ao_gps_data.second);
+       printf ("Lat/Lon: %ld %ld\n", ao_gps_data.latitude, ao_gps_data.longitude);
+       printf ("Alt: %d\n", ao_gps_data.altitude);
        ao_mutex_put(&ao_gps_mutex);
 }
 
 __code struct ao_cmds ao_gps_cmds[] = {
-       { 'g', gps_dump,        "g                                  Display current GPS values" },
-       { 0, gps_dump, NULL },
+       { 'g', gps_dump,        "g                                  Display current GPS values" },
+       { 0,   gps_dump, NULL },
 };
 
 void