projects
/
fw
/
altos
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
d87e9c2
)
Control radio monitoring with the M command
author
Keith Packard
<keithp@keithp.com>
Wed, 22 Apr 2009 22:47:57 +0000
(15:47 -0700)
committer
Keith Packard
<keithp@keithp.com>
Wed, 22 Apr 2009 22:47:57 +0000
(15:47 -0700)
ao_monitor.c
patch
|
blob
|
history
diff --git
a/ao_monitor.c
b/ao_monitor.c
index f3c1fe7d43ae0a1436815404c483b7d5ceeac5b0..2cca31379deedf8cbbd32870592ccd259224b88d 100644
(file)
--- a/
ao_monitor.c
+++ b/
ao_monitor.c
@@
-29,6
+29,8
@@
const char const * const ao_state_names[] = {
"apogee", "drogue", "main", "landed", "invalid"
};
"apogee", "drogue", "main", "landed", "invalid"
};
+__xdata uint8_t ao_monitoring;
+
void
ao_monitor(void)
{
void
ao_monitor(void)
{
@@
-36,6
+38,8
@@
ao_monitor(void)
uint8_t state;
for (;;) {
uint8_t state;
for (;;) {
+ __critical while (!ao_monitoring)
+ ao_sleep(&ao_monitoring);
ao_radio_recv(&recv);
state = recv.telemetry.flight_state;
if (state > ao_flight_invalid)
ao_radio_recv(&recv);
state = recv.telemetry.flight_state;
if (state > ao_flight_invalid)
@@
-60,8
+64,23
@@
ao_monitor(void)
__xdata struct ao_task ao_monitor_task;
__xdata struct ao_task ao_monitor_task;
+static void
+ao_set_monitor(void)
+{
+ ao_cmd_hex();
+ ao_monitoring = ao_cmd_lex_i != 0;
+ ao_wakeup(&ao_monitoring);
+}
+
+__code struct ao_cmds ao_monitor_cmds[] = {
+ { 'M', ao_set_monitor, "M Enable/disable radio monitoring" },
+ { 0, ao_set_monitor, NULL },
+};
+
void
ao_monitor_init(void)
{
void
ao_monitor_init(void)
{
+ ao_monitoring = 0;
+ ao_cmd_register(&ao_monitor_cmds[0]);
ao_add_task(&ao_monitor_task, ao_monitor, "monitor");
}
ao_add_task(&ao_monitor_task, ao_monitor, "monitor");
}