diff options
author | Keith Packard <keithp@keithp.com> | 2010-11-24 21:00:52 -0800 |
---|---|---|
committer | Keith Packard <keithp@keithp.com> | 2010-11-24 21:00:52 -0800 |
commit | 51c7741040d95c5deece939dae5e4136cc04afc4 (patch) | |
tree | 96631ee5aa9fd0c8c45f019ff154cc4fc8ca85d0 /src | |
parent | d1dbe3b69e6f95ef8ecd4cf959863b922ab47c66 (diff) | |
parent | 4e47c44d335276cf0dc5ed3a0756e50c98c1b9b9 (diff) |
Merge branch 'buttonbox'
Conflicts:
doc/telemetrum-doc.xsl
Pull the buttbox version of the docs in as it had been updated.
Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/ao_ignite.c | 5 | ||||
-rw-r--r-- | src/ao_radio.c | 43 |
2 files changed, 32 insertions, 16 deletions
diff --git a/src/ao_ignite.c b/src/ao_ignite.c index 4093b6a7..f2b15dd2 100644 --- a/src/ao_ignite.c +++ b/src/ao_ignite.c @@ -101,7 +101,6 @@ void ao_igniter(void) { __xdata enum ao_ignter igniter; - __xdata enum ao_igniter_status status; ao_config_get(); for (;;) { @@ -113,9 +112,7 @@ ao_igniter(void) ao_igniter_fire(igniter); ao_delay(AO_IGNITER_CHARGE_TIME); - status = ao_igniter_status(igniter); - if (status == ao_igniter_open) - ao_ignition[igniter].fired = 1; + ao_ignition[igniter].fired = 1; } } } diff --git a/src/ao_radio.c b/src/ao_radio.c index f4a9d3b2..67d5f6ba 100644 --- a/src/ao_radio.c +++ b/src/ao_radio.c @@ -432,8 +432,11 @@ ao_radio_rdf(int ms) void ao_radio_abort(void) { - ao_dma_abort(ao_radio_dma); - ao_radio_idle(); + /* Only abort if a task is waiting to receive data */ + if (RFST == RFST_SRX) { + ao_dma_abort(ao_radio_dma); + ao_radio_idle(); + } } void @@ -448,19 +451,35 @@ ao_radio_rdf_abort(void) void ao_radio_test(void) { - ao_set_monitor(0); - ao_packet_slave_stop(); - ao_radio_get(); - printf ("Hit a character to stop..."); flush(); - RFST = RFST_STX; - getchar(); - ao_radio_idle(); - ao_radio_put(); - putchar('\n'); + uint8_t mode = 2; + static __xdata radio_on; + ao_cmd_white(); + if (ao_cmd_lex_c != '\n') { + ao_cmd_decimal(); + mode = (uint8_t) ao_cmd_lex_u32; + } + mode++; + if ((mode & 2) && !radio_on) { + ao_set_monitor(0); + ao_packet_slave_stop(); + ao_radio_get(); + RFST = RFST_STX; + radio_on = 1; + } + if (mode == 3) { + printf ("Hit a character to stop..."); flush(); + getchar(); + putchar('\n'); + } + if ((mode & 1) && radio_on) { + ao_radio_idle(); + ao_radio_put(); + radio_on = 0; + } } __code struct ao_cmds ao_radio_cmds[] = { - { 'C', ao_radio_test, "C Radio carrier test" }, + { 'C', ao_radio_test, "C <1 start, 0 stop, none both> Radio carrier test" }, { 0, ao_radio_test, NULL }, }; |