summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2011-08-13 18:28:38 -0700
committerKeith Packard <keithp@keithp.com>2011-08-13 18:44:26 -0700
commitc2f2f519dbc8ce233ab36222088c1be6b1362f01 (patch)
tree6c331c067dd742e707bfc9e56edf83c4b1acf83d /src
parent7bcf25606cd5892d58295649f3d475d284494ee8 (diff)
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 <keithp@keithp.com>
Diffstat (limited to 'src')
-rw-r--r--src/ao_gps_skytraq.c14
1 files changed, 7 insertions, 7 deletions
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);