summaryrefslogtreecommitdiff
path: root/src/test/ao_gps_test_ublox.c
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2014-07-10 17:07:48 -0700
committerKeith Packard <keithp@keithp.com>2014-07-10 17:35:44 -0700
commit34d5be68ca23e8beb05db9a480faef63ecc911d0 (patch)
treebcf27108a1680f6c081f583f25b831fc192ac256 /src/test/ao_gps_test_ublox.c
parent0d044af0c5025a63026d05adcab68f265f179668 (diff)
altos: Extend GPS altitudes to at least 24 bits everywhere
Telemetry gets a special 'mode' flag indicating that 24-bit data is present; log files get new data and log readers are expected to detect that via the firmware version number. Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'src/test/ao_gps_test_ublox.c')
-rw-r--r--src/test/ao_gps_test_ublox.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/test/ao_gps_test_ublox.c b/src/test/ao_gps_test_ublox.c
index 4eb4b837..5ea205d6 100644
--- a/src/test/ao_gps_test_ublox.c
+++ b/src/test/ao_gps_test_ublox.c
@@ -16,6 +16,7 @@
*/
#define AO_GPS_TEST
+#define HAS_GPS 1
#include "ao_host.h"
#include <termios.h>
#include <errno.h>
@@ -44,7 +45,7 @@ struct ao_telemetry_location {
uint8_t flags;
int32_t latitude; /* degrees * 10⁷ */
int32_t longitude; /* degrees * 10⁷ */
- int16_t altitude; /* m */
+ int16_t altitude_low; /* m */
uint16_t ground_speed; /* cm/s */
uint8_t course; /* degrees / 2 */
uint8_t pdop; /* * 5 */
@@ -53,8 +54,14 @@ struct ao_telemetry_location {
int16_t climb_rate; /* cm/s */
uint16_t h_error; /* m */
uint16_t v_error; /* m */
+ int16_t altitude_high; /* m */
};
+typedef int32_t gps_alt_t;
+#define AO_TELEMETRY_LOCATION_ALTITUDE(l) (((gps_alt_t) (l)->altitude_high << 16) | ((l)->altitude_low))
+#define AO_TELEMETRY_LOCATION_SET_ALTITUDE(l,a) (((l)->altitude_high = (a) >> 16), \
+ ((l)->altitude_low = (a)))
+
#define UBLOX_SAT_STATE_ACQUIRED (1 << 0)
#define UBLOX_SAT_STATE_CARRIER_PHASE_VALID (1 << 1)
#define UBLOX_SAT_BIT_SYNC_COMPLETE (1 << 2)