projects
/
fw
/
altos
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
altos: Add 'microwater' product
[fw/altos]
/
src
/
drivers
/
ao_aprs.c
diff --git
a/src/drivers/ao_aprs.c
b/src/drivers/ao_aprs.c
index c327c89702e8fc8a34c772a4752830a0c39a8d9f..0a6c72ce9e2a1af03fd81f131982bf660e6e78fb 100644
(file)
--- a/
src/drivers/ao_aprs.c
+++ b/
src/drivers/ao_aprs.c
@@
-500,6
+500,14
@@
static int ao_num_sats(void)
return n;
}
return n;
}
+static char ao_gps_locked(void)
+{
+ if (ao_gps_data.flags & AO_GPS_VALID)
+ return 'L';
+ else
+ return 'U';
+}
+
static int tncComment(uint8_t *buf)
{
#if HAS_ADC
static int tncComment(uint8_t *buf)
{
#if HAS_ADC
@@
-512,7
+520,8
@@
static int tncComment(uint8_t *buf)
int16_t main = ao_ignite_decivolt(AO_SENSE_MAIN(&packet));
return sprintf((char *) buf,
int16_t main = ao_ignite_decivolt(AO_SENSE_MAIN(&packet));
return sprintf((char *) buf,
- "S: %d B:%d.%d A:%d.%d M:%d.%d",
+ "%c%d B%d.%d A%d.%d M%d.%d",
+ ao_gps_locked(),
ao_num_sats(),
battery/10,
battery % 10,
ao_num_sats(),
battery/10,
battery % 10,
@@
-522,7
+531,9
@@
static int tncComment(uint8_t *buf)
main%10);
#else
return sprintf((char *) buf,
main%10);
#else
return sprintf((char *) buf,
- "S: %d", ao_num_sats());
+ "%c%d",
+ ao_gps_locked(),
+ ao_num_sats());
#endif
}
#endif
}
@@
-531,9
+542,10
@@
static int tncComment(uint8_t *buf)
*/
static int tncPositionPacket(void)
{
*/
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) {
uint8_t *buf;
if (ao_gps_data.flags & AO_GPS_VALID) {
@@
-544,30
+556,29
@@
static int tncPositionPacket(void)
altitude = 0;
}
altitude = 0;
}
- altitude = (altitude * (int32_t) 10000 + (3048/2)) / (int32_t) 3048;
-
buf = tncBuffer;
*buf++ = '!';
/* Symbol table ID */
*buf++ = '/';
buf = tncBuffer;
*buf++ = '!';
/* Symbol table ID */
*buf++ = '/';
- lat
itude
= ((uint64_t) 380926 * (900000000 - latitude)) / 10000000;
- lon
gitude
= ((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) */
#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, lat
itude
, 4);
+ tncCompressInt(buf, lat, 4);
buf += 4;
buf += 4;
- tncCompressInt(buf, lon
gitude
, 4);
+ tncCompressInt(buf, lon, 4);
buf += 4;
/* Symbol code */
*buf++ = '\'';
buf += 4;
/* Symbol code */
*buf++ = '\'';
- tncCompressInt(buf, alt
itude
, 2);
+ tncCompressInt(buf, alt, 2);
buf += 2;
*buf++ = 33 + ((1 << 5) | (2 << 3));
buf += 2;
*buf++ = 33 + ((1 << 5) | (2 << 3));