From: Keith Packard Date: Sun, 14 Aug 2011 01:28:38 +0000 (-0700) Subject: altos: re-write a bit of GPS parsing code to reduce size X-Git-Tag: 0.9.6.0~21 X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=commitdiff_plain;h=c2f2f519dbc8ce233ab36222088c1be6b1362f01 altos: re-write a bit of GPS parsing code to reduce size Use a local variable while computing hdop. Place the next incoming character in data instead of pdata. Saved a surprising amount of memory. Signed-off-by: Keith Packard --- diff --git a/src/ao_gps_skytraq.c b/src/ao_gps_skytraq.c index e7d1d2ef..7ac26946 100644 --- a/src/ao_gps_skytraq.c +++ b/src/ao_gps_skytraq.c @@ -24,7 +24,7 @@ static __code char ao_gps_header[] = "GP"; __xdata uint8_t ao_gps_mutex; -static __pdata char ao_gps_char; +static __data char ao_gps_char; static __pdata uint8_t ao_gps_cksum; static __pdata uint8_t ao_gps_error; @@ -238,14 +238,14 @@ ao_nmea_gga() ao_gps_next.flags |= i; ao_gps_lexchar(); - 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; + i = ao_gps_decimal(0xff); + if (i <= 50) { + i = (uint8_t) 5 * i; if (ao_gps_char == '.') - ao_gps_next.hdop = (ao_gps_next.hdop + - ((uint8_t) ao_gps_decimal(1) >> 1)); + i = (i + ((uint8_t) ao_gps_decimal(1) >> 1)); } else - ao_gps_next.hdop = 255; + i = 255; + ao_gps_next.hdop = i; ao_gps_skip_field(); ao_gps_next.altitude = ao_gps_decimal(0xff);