altos: Scale DOP values by 10 in GPS drivers
authorKeith Packard <keithp@keithp.com>
Fri, 11 Jul 2014 00:13:09 +0000 (17:13 -0700)
committerKeith Packard <keithp@keithp.com>
Fri, 11 Jul 2014 00:35:44 +0000 (17:35 -0700)
sky traq was scaling by 5, ublox was scaling by 100.

Signed-off-by: Keith Packard <keithp@keithp.com>
src/drivers/ao_gps_skytraq.c
src/drivers/ao_gps_ublox.c

index 81178051b0e0416a5a758973fe9ab691ee7753fa..066df6fff628a39b0680b69e8cf1d34a27b1fe84 100644 (file)
@@ -278,10 +278,10 @@ ao_nmea_gga(void)
 
        ao_gps_lexchar();
        i = ao_gps_decimal(0xff);
 
        ao_gps_lexchar();
        i = ao_gps_decimal(0xff);
-       if (i <= 50) {
-               i = (uint8_t) 5 * i;
+       if (i <= 25) {
+               i = (uint8_t) 10 * i;
                if (ao_gps_char == '.')
                if (ao_gps_char == '.')
-                       i = (i + ((uint8_t) ao_gps_decimal(1) >> 1));
+                       i = (i + ((uint8_t) ao_gps_decimal(1)));
        } else
                i = 255;
        ao_gps_next.hdop = i;
        } else
                i = 255;
        ao_gps_next.hdop = i;
index 487659984bb2a7ca0d57a4044c9661892a88d039..74c29e0a0e74e20af16436e66ffd2de3ab4d12b5 100644 (file)
@@ -740,11 +740,11 @@ ao_gps(void) __reentrant
                                ao_gps_data.minute = nav_timeutc.min;
                                ao_gps_data.second = nav_timeutc.sec;
 
                                ao_gps_data.minute = nav_timeutc.min;
                                ao_gps_data.second = nav_timeutc.sec;
 
-                               ao_gps_data.pdop = nav_dop.pdop;
-                               ao_gps_data.hdop = nav_dop.hdop;
-                               ao_gps_data.vdop = nav_dop.vdop;
-
-                               /* mode is not set */
+                               /* we report dop scaled by 10, but ublox provides dop scaled by 100
+                                */
+                               ao_gps_data.pdop = nav_dop.pdop / 10;
+                               ao_gps_data.hdop = nav_dop.hdop / 10;
+                               ao_gps_data.vdop = nav_dop.vdop / 10;
 
                                ao_gps_data.ground_speed = nav_velned.g_speed;
                                ao_gps_data.climb_rate = -nav_velned.vel_d;
 
                                ao_gps_data.ground_speed = nav_velned.g_speed;
                                ao_gps_data.climb_rate = -nav_velned.vel_d;