From 80b23f3044a654d61212891a61fadb8a3a4e5572 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Sat, 21 Nov 2009 18:57:45 -0800 Subject: [PATCH] Decode HDOP data from skytraq GPS The hdop data was getting dropped on the floor, but is rather useful when deciding if the GPS position is crazy or not. This reports HDOP * 5 (giving a useful range of .2-50). Signed-off-by: Keith Packard --- src/ao_gps_skytraq.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/ao_gps_skytraq.c b/src/ao_gps_skytraq.c index bf192f28..ef581349 100644 --- a/src/ao_gps_skytraq.c +++ b/src/ao_gps_skytraq.c @@ -271,7 +271,15 @@ ao_gps(void) __reentrant ao_gps_next.flags |= i; ao_gps_lexchar(); - ao_gps_skip_field(); /* Horizontal dilution */ + ao_gps_next.hdop = ao_gps_decimal(0xff); + if (ao_gps_next.hdop <= 50) { + ao_gps_next.hdop = (uint8_t) 5 * ao_gps_next.hdop; + if (ao_gps_char == '.') + ao_gps_next.hdop = (ao_gps_next.hdop + + ((uint8_t) ao_gps_decimal(1) >> 1)); + } else + ao_gps_next.hdop = 255; + ao_gps_skip_field(); ao_gps_next.altitude = ao_gps_decimal(0xff); ao_gps_skip_field(); /* skip any fractional portion */ -- 2.30.2