summaryrefslogtreecommitdiff
path: root/src/drivers/ao_aprs.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/drivers/ao_aprs.c')
-rw-r--r--src/drivers/ao_aprs.c22
1 files changed, 11 insertions, 11 deletions
diff --git a/src/drivers/ao_aprs.c b/src/drivers/ao_aprs.c
index c327c897..d472af4e 100644
--- a/src/drivers/ao_aprs.c
+++ b/src/drivers/ao_aprs.c
@@ -531,9 +531,10 @@ static int tncComment(uint8_t *buf)
*/
static int tncPositionPacket(void)
{
- int32_t latitude = 0;
- int32_t longitude = 0;
- int32_t altitude = 0;
+ static int32_t latitude;
+ static int32_t longitude;
+ static int32_t altitude;
+ int32_t lat, lon, alt;
uint8_t *buf;
if (ao_gps_data.flags & AO_GPS_VALID) {
@@ -544,30 +545,29 @@ static int tncPositionPacket(void)
altitude = 0;
}
- altitude = (altitude * (int32_t) 10000 + (3048/2)) / (int32_t) 3048;
-
buf = tncBuffer;
*buf++ = '!';
/* Symbol table ID */
*buf++ = '/';
- latitude = ((uint64_t) 380926 * (900000000 - latitude)) / 10000000;
- longitude = ((uint64_t) 190463 * (1800000000 + longitude)) / 10000000;
+ lat = ((uint64_t) 380926 * (900000000 - latitude)) / 10000000;
+ lon = ((uint64_t) 190463 * (1800000000 + longitude)) / 10000000;
#define ALTITUDE_LOG_BASE 0.001998002662673f /* log(1.002) */
- altitude = logf((float) altitude) * (1/ALTITUDE_LOG_BASE);
+ alt = (altitude * (int32_t) 10000 + (3048/2)) / (int32_t) 3048;
+ alt = logf((float) altitude) * (1/ALTITUDE_LOG_BASE);
- tncCompressInt(buf, latitude, 4);
+ tncCompressInt(buf, lat, 4);
buf += 4;
- tncCompressInt(buf, longitude, 4);
+ tncCompressInt(buf, lon, 4);
buf += 4;
/* Symbol code */
*buf++ = '\'';
- tncCompressInt(buf, altitude, 2);
+ tncCompressInt(buf, alt, 2);
buf += 2;
*buf++ = 33 + ((1 << 5) | (2 << 3));