diff options
author | Anthony Towns <aj@erisian.com.au> | 2010-11-25 08:47:36 +1000 |
---|---|---|
committer | Anthony Towns <aj@erisian.com.au> | 2010-11-25 08:47:36 +1000 |
commit | 7811e6dfa6caf10251da7df7c24b98cdc3787892 (patch) | |
tree | 43e9447faf4d5a7e73f71ae4f516f8e830f86758 /src | |
parent | 71b1949e50f4533bcf44537da65b19bc67863c8e (diff) | |
parent | 7a50837ea0d92db3f469f197ec8210aee22aa143 (diff) |
Merge branch 'buttonbox' of git://git.gag.com/fw/altos into buttonbox
Diffstat (limited to 'src')
-rw-r--r-- | src/ao_ignite.c | 1 | ||||
-rw-r--r-- | src/ao_radio.c | 14 |
2 files changed, 10 insertions, 5 deletions
diff --git a/src/ao_ignite.c b/src/ao_ignite.c index 58d340d9..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 (;;) { diff --git a/src/ao_radio.c b/src/ao_radio.c index 3fb4afd7..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 @@ -449,26 +452,29 @@ void ao_radio_test(void) { 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) { + 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) { + if ((mode & 1) && radio_on) { ao_radio_idle(); ao_radio_put(); + radio_on = 0; } } |