diff options
| author | Keith Packard <keithp@keithp.com> | 2014-07-10 17:07:48 -0700 | 
|---|---|---|
| committer | Keith Packard <keithp@keithp.com> | 2014-07-10 17:35:44 -0700 | 
| commit | 34d5be68ca23e8beb05db9a480faef63ecc911d0 (patch) | |
| tree | bcf27108a1680f6c081f583f25b831fc192ac256 /src/test | |
| parent | 0d044af0c5025a63026d05adcab68f265f179668 (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')
| -rw-r--r-- | src/test/ao_aprs_test.c | 7 | ||||
| -rw-r--r-- | src/test/ao_flight_test.c | 7 | ||||
| -rw-r--r-- | src/test/ao_gps_test.c | 5 | ||||
| -rw-r--r-- | src/test/ao_gps_test_skytraq.c | 4 | ||||
| -rw-r--r-- | src/test/ao_gps_test_ublox.c | 9 | 
5 files changed, 24 insertions, 8 deletions
| diff --git a/src/test/ao_aprs_test.c b/src/test/ao_aprs_test.c index 573b5cb2..ae505dea 100644 --- a/src/test/ao_aprs_test.c +++ b/src/test/ao_aprs_test.c @@ -21,6 +21,8 @@  #include <stdint.h>  #include <stdarg.h> +#define HAS_GPS	1 +  #include <ao_telemetry.h>  #define AO_GPS_NUM_SAT_MASK	(0xf << 0) @@ -100,14 +102,11 @@ audio_gap(int secs)  // This is where we go after reset.  int main(int argc, char **argv)  { -	int	e, x; -	int	a; -      audio_gap(1);      ao_gps_data.latitude = (45.0 + 28.25 / 60.0) * 10000000;      ao_gps_data.longitude = (-(122 + 44.2649 / 60.0)) * 10000000; -    ao_gps_data.altitude = 84; +    AO_TELEMETRY_LOCATION_SET_ALTITUDE(&ao_gps_data, 84);      ao_gps_data.flags = (AO_GPS_VALID|AO_GPS_RUNNING);      /* Transmit one packet */ diff --git a/src/test/ao_flight_test.c b/src/test/ao_flight_test.c index 1ab22e5b..314998c1 100644 --- a/src/test/ao_flight_test.c +++ b/src/test/ao_flight_test.c @@ -175,7 +175,7 @@ ao_gps_angle(void)  			ao_gps_static.latitude / 1e7,  			ao_gps_static.longitude / 1e7,  			&dist, &bearing); -	height = ao_gps_static.altitude - ao_gps_prev.altitude; +	height = AO_TELEMETRY_LOCATION_ALTITUDE(&ao_gps_static) - AO_TELEMETRY_LOCATION_ALTITUDE(&ao_gps_prev);  	angle = atan2(dist, height);  	return angle * 180/M_PI; @@ -756,7 +756,10 @@ ao_sleep(void *wchan)  					ao_gps_static.tick = tick;  					ao_gps_static.latitude = int32(bytes, 0);  					ao_gps_static.longitude = int32(bytes, 4); -					ao_gps_static.altitude = int32(bytes, 8); +					{ +						int32_t	altitude = int32(bytes, 8); +						AO_TELEMETRY_LOCATION_SET_ALTITUDE(&ao_gps_static, altitude); +					}  					ao_gps_static.flags = bytes[13];  					if (!ao_gps_count)  						ao_gps_first = ao_gps_static; diff --git a/src/test/ao_gps_test.c b/src/test/ao_gps_test.c index e799ab0f..543bbcc3 100644 --- a/src/test/ao_gps_test.c +++ b/src/test/ao_gps_test.c @@ -53,6 +53,9 @@ struct ao_gps_orig {  	uint16_t		v_error;	/* m */  }; +#define AO_TELEMETRY_LOCATION_ALTITUDE(l) 	((l)->altitude) +#define AO_TELEMETRY_LOCATION_SET_ALTITUDE(l,a) ((l)->altitude = (a)) +  #define SIRF_SAT_STATE_ACQUIRED			(1 << 0)  #define SIRF_SAT_STATE_CARRIER_PHASE_VALID	(1 << 1)  #define SIRF_SAT_BIT_SYNC_COMPLETE		(1 << 2) @@ -433,7 +436,7 @@ ao_dump_state(void *wchan)  	if (wchan != &ao_gps_new)  		return; -	 +  	if (ao_gps_new & AO_GPS_NEW_DATA) {  		ao_gps_print(&ao_gps_data);  		putchar('\n'); diff --git a/src/test/ao_gps_test_skytraq.c b/src/test/ao_gps_test_skytraq.c index 1b590d5e..5eb7118d 100644 --- a/src/test/ao_gps_test_skytraq.c +++ b/src/test/ao_gps_test_skytraq.c @@ -16,6 +16,7 @@   */  #define AO_GPS_TEST +#define HAS_GPS 1  #include "ao_host.h"  #include <termios.h>  #include <errno.h> @@ -53,6 +54,9 @@ struct ao_gps_orig {  	uint16_t		v_error;	/* m */  }; +#define AO_TELEMETRY_LOCATION_ALTITUDE(l) 	((l)->altitude) +#define AO_TELEMETRY_LOCATION_SET_ALTITUDE(l,a) ((l)->altitude = (a)) +  #define SIRF_SAT_STATE_ACQUIRED			(1 << 0)  #define SIRF_SAT_STATE_CARRIER_PHASE_VALID	(1 << 1)  #define SIRF_SAT_BIT_SYNC_COMPLETE		(1 << 2) 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) | 
