projects
/
fw
/
altos
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
altos: The kalman code requires a constant sample rate
[fw/altos]
/
src
/
ao_monitor.c
diff --git
a/src/ao_monitor.c
b/src/ao_monitor.c
index f2f3fc2e39650b98482dd44eff84f11881db3bbe..9c4be6fbd2be6a8cdde664d8f39d00adcc2a1b4c 100644
(file)
--- a/
src/ao_monitor.c
+++ b/
src/ao_monitor.c
@@
-23,26
+23,30
@@
__pdata uint8_t ao_monitor_led;
void
ao_monitor(void)
{
void
ao_monitor(void)
{
- __xdata struct ao_
radio
_recv recv;
+ __xdata struct ao_
telemetry
_recv recv;
__xdata char callsign[AO_MAX_CALLSIGN+1];
uint8_t state;
__xdata char callsign[AO_MAX_CALLSIGN+1];
uint8_t state;
+ int16_t rssi;
for (;;) {
__critical while (!ao_monitoring)
ao_sleep(&ao_monitoring);
for (;;) {
__critical while (!ao_monitoring)
ao_sleep(&ao_monitoring);
- if (!ao_radio_recv(&recv))
+ if (!ao_radio_recv(&recv
, sizeof (recv)
))
continue;
state = recv.telemetry.flight_state;
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;
if (recv.status & PKT_APPEND_STATUS_1_CRC_OK) {
memcpy(callsign, recv.telemetry.callsign, AO_MAX_CALLSIGN);
if (state > ao_flight_invalid)
state = ao_flight_invalid;
if (recv.status & PKT_APPEND_STATUS_1_CRC_OK) {
- printf("VERSION %d CALL %s SERIAL %
3
d FLIGHT %5u RSSI %4d STATUS %02x STATE %7s ",
+ printf("VERSION %d CALL %s SERIAL %d FLIGHT %5u RSSI %4d STATUS %02x STATE %7s ",
AO_TELEMETRY_VERSION,
callsign,
AO_TELEMETRY_VERSION,
callsign,
- recv.telemetry.
addr
,
+ recv.telemetry.
serial
,
recv.telemetry.flight,
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 ",
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');
putchar(' ');
ao_gps_tracking_print(&recv.telemetry.gps_tracking);
putchar('\n');
- ao_rssi_set(
(int) recv.rssi - 74
);
+ ao_rssi_set(
rssi
);
} else {
} 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);
}
ao_usb_flush();
ao_led_toggle(ao_monitor_led);
@@
-81,7
+85,7
@@
ao_set_monitor(uint8_t monitoring)
ao_monitoring = monitoring;
ao_wakeup(&ao_monitoring);
if (!ao_monitoring)
ao_monitoring = monitoring;
ao_wakeup(&ao_monitoring);
if (!ao_monitoring)
- ao_radio_abort();
+ ao_radio_
recv_
abort();
}
static void
}
static void
@@
-92,8
+96,8
@@
set_monitor(void)
}
__code struct ao_cmds ao_monitor_cmds[] = {
}
__code struct ao_cmds ao_monitor_cmds[] = {
- {
'm', set_monitor, "m <0 off, 1 on>
Enable/disable radio monitoring" },
- { 0,
set_monitor,
NULL },
+ {
set_monitor, "m <0 off, 1 on>\0
Enable/disable radio monitoring" },
+ { 0, NULL },
};
void
};
void