summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2014-02-06 17:08:34 -0800
committerKeith Packard <keithp@keithp.com>2014-02-06 17:08:34 -0800
commit4a5b3837b460d1b6fcea99312728114c4734495a (patch)
tree23cc65f626336768e67f1b1d239318b5faaaadcc
parent9e0bda088c097ac6bcc677d7b6d00683e73a68fb (diff)
altos: report 0/0/0 for APRS position when GPS is not locked
We were reporting whatever the GPS device sent, even if it wasn't reporting a valid status. That's not terribly useful. Signed-off-by: Keith Packard <keithp@keithp.com>
-rw-r--r--src/drivers/ao_aprs.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/src/drivers/ao_aprs.c b/src/drivers/ao_aprs.c
index 56d98437..25a651ca 100644
--- a/src/drivers/ao_aprs.c
+++ b/src/drivers/ao_aprs.c
@@ -515,13 +515,19 @@ static int tncComment(uint8_t *buf)
*/
static int tncPositionPacket(void)
{
- int32_t latitude = ao_gps_data.latitude;
- int32_t longitude = ao_gps_data.longitude;
- int32_t altitude = ao_gps_data.altitude;
+ int32_t latitude = 0;
+ int32_t longitude = 0;
+ int32_t altitude = 0;
uint8_t *buf;
- if (altitude < 0)
- altitude = 0;
+ if (ao_gps_data.flags & AO_GPS_VALID) {
+ latitude = ao_gps_data.latitude;
+ longitude = ao_gps_data.longitude;
+ altitude = ao_gps_data.altitude;
+ if (altitude < 0)
+ altitude = 0;
+ }
+
altitude = (altitude * (int32_t) 10000 + (3048/2)) / (int32_t) 3048;
buf = tncBuffer;