summaryrefslogtreecommitdiff
path: root/src/ao_monitor.c
diff options
context:
space:
mode:
authorBdale Garbee <bdale@gag.com>2010-07-20 22:07:22 -0600
committerBdale Garbee <bdale@gag.com>2010-07-20 22:07:22 -0600
commite747954b6a9e71705f619684df8a118a909b1039 (patch)
tree515fb2f188d0eef5436ce8a75c30afa165dbd9f4 /src/ao_monitor.c
parentbd40a5b431847c071f5c486d754eca5627e5e3b9 (diff)
parent695879dbccfc5ec6b79698653c58814158f91686 (diff)
Merge branch 'master' of ssh://git.gag.com/scm/git/fw/altos
Diffstat (limited to 'src/ao_monitor.c')
-rw-r--r--src/ao_monitor.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/ao_monitor.c b/src/ao_monitor.c
index f2f3fc2e..f019d3b4 100644
--- a/src/ao_monitor.c
+++ b/src/ao_monitor.c
@@ -26,6 +26,7 @@ ao_monitor(void)
__xdata struct ao_radio_recv recv;
__xdata char callsign[AO_MAX_CALLSIGN+1];
uint8_t state;
+ int16_t rssi;
for (;;) {
__critical while (!ao_monitoring)
@@ -33,6 +34,9 @@ ao_monitor(void)
if (!ao_radio_recv(&recv))
continue;
state = recv.telemetry.flight_state;
+
+ /* Typical RSSI offset for 38.4kBaud at 433 MHz is 74 */
+ rssi = (int16_t) (recv.rssi >> 1) - 74;
memcpy(callsign, recv.telemetry.callsign, AO_MAX_CALLSIGN);
if (state > ao_flight_invalid)
state = ao_flight_invalid;
@@ -42,7 +46,7 @@ ao_monitor(void)
callsign,
recv.telemetry.addr,
recv.telemetry.flight,
- (int) recv.rssi - 74, recv.status,
+ rssi, recv.status,
ao_state_names[state]);
printf("%5u a: %5d p: %5d t: %5d v: %5d d: %5d m: %5d "
"fa: %5d ga: %d fv: %7ld fp: %5d gp: %5d a+: %5d a-: %5d ",
@@ -64,9 +68,9 @@ ao_monitor(void)
putchar(' ');
ao_gps_tracking_print(&recv.telemetry.gps_tracking);
putchar('\n');
- ao_rssi_set((int) recv.rssi - 74);
+ ao_rssi_set(rssi);
} else {
- printf("CRC INVALID RSSI %3d\n", (int) recv.rssi - 74);
+ printf("CRC INVALID RSSI %3d\n", rssi);
}
ao_usb_flush();
ao_led_toggle(ao_monitor_led);