diff options
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 },  }; | 
