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/kernel/ao_tracker.c | |
| 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/kernel/ao_tracker.c')
| -rw-r--r-- | src/kernel/ao_tracker.c | 13 | 
1 files changed, 7 insertions, 6 deletions
| diff --git a/src/kernel/ao_tracker.c b/src/kernel/ao_tracker.c index 9febc7f0..d9434048 100644 --- a/src/kernel/ao_tracker.c +++ b/src/kernel/ao_tracker.c @@ -36,9 +36,9 @@ ao_usb_connected(void)  #endif  struct gps_position { -	int32_t	latitude; -	int32_t	longitude; -	int16_t	altitude; +	int32_t		latitude; +	int32_t		longitude; +	gps_alt_t	altitude;  };  #define GPS_RING	16 @@ -122,12 +122,13 @@ ao_tracker(void)  			{  				uint8_t	ring;  				uint8_t	moving = 0; +				gps_alt_t altitude = AO_TELEMETRY_LOCATION_ALTITUDE(&gps_data);  				for (ring = ao_gps_ring_next(gps_head); ring != gps_head; ring = ao_gps_ring_next(ring)) {  					ground_distance = ao_distance(gps_data.latitude, gps_data.longitude,  								      gps_position[ring].latitude,  								      gps_position[ring].longitude); -					height = gps_position[ring].altitude - gps_data.altitude; +					height = gps_position[ring].altitude - altitude;  					if (height < 0)  						height = -height; @@ -153,7 +154,7 @@ ao_tracker(void)  					ao_log_gps_data(gps_tick, &gps_data);  					gps_position[gps_head].latitude = gps_data.latitude;  					gps_position[gps_head].longitude = gps_data.longitude; -					gps_position[gps_head].altitude = gps_data.altitude; +					gps_position[gps_head].altitude = altitude;  					gps_head = ao_gps_ring_next(gps_head);  					ao_mutex_put(&tracker_mutex);  				} @@ -203,7 +204,7 @@ ao_tracker_set_telem(void)  	printf ("log_started: %d\n", log_started);  	printf ("latitude: %ld\n", (long) gps_data.latitude);  	printf ("longitude: %ld\n", (long) gps_data.longitude); -	printf ("altitude: %d\n", gps_data.altitude); +	printf ("altitude: %ld\n", AO_TELEMETRY_LOCATION_ALTITUDE(&gps_data));  	printf ("log_running: %d\n", ao_log_running);  	printf ("log_start_pos: %ld\n", (long) ao_log_start_pos);  	printf ("log_cur_pos: %ld\n", (long) ao_log_current_pos); | 
