diff options
| author | Keith Packard <keithp@keithp.com> | 2011-08-13 18:28:38 -0700 | 
|---|---|---|
| committer | Keith Packard <keithp@keithp.com> | 2011-08-13 18:44:26 -0700 | 
| commit | c2f2f519dbc8ce233ab36222088c1be6b1362f01 (patch) | |
| tree | 6c331c067dd742e707bfc9e56edf83c4b1acf83d | |
| parent | 7bcf25606cd5892d58295649f3d475d284494ee8 (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>
| -rw-r--r-- | src/ao_gps_skytraq.c | 14 | 
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);  | 
