diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/drivers/ao_lco.c | 2 | ||||
| -rw-r--r-- | src/drivers/ao_lco_cmd.c | 51 | ||||
| -rw-r--r-- | src/drivers/ao_lco_func.c | 8 | ||||
| -rw-r--r-- | src/drivers/ao_lco_func.h | 2 | ||||
| -rw-r--r-- | src/drivers/ao_lco_two.c | 2 | 
5 files changed, 54 insertions, 11 deletions
| diff --git a/src/drivers/ao_lco.c b/src/drivers/ao_lco.c index 00f10ecc..e1806ca3 100644 --- a/src/drivers/ao_lco.c +++ b/src/drivers/ao_lco.c @@ -661,7 +661,7 @@ ao_lco_monitor(void)  		       ao_lco_armed, ao_lco_firing);  		if (ao_lco_armed && ao_lco_firing) { -			ao_lco_ignite(); +			ao_lco_ignite(AO_PAD_FIRE);  		} else {  			ao_lco_update();  			if (ao_lco_armed) { diff --git a/src/drivers/ao_lco_cmd.c b/src/drivers/ao_lco_cmd.c index dcc0c6d0..8de21fb6 100644 --- a/src/drivers/ao_lco_cmd.c +++ b/src/drivers/ao_lco_cmd.c @@ -61,9 +61,9 @@ lco_arm(void)  }  static void -lco_ignite(void) +lco_ignite(uint8_t cmd)  { -	ao_lco_ignite(); +	ao_lco_ignite(cmd);  }  static void @@ -145,7 +145,40 @@ lco_fire_cmd(void) __reentrant  		secs = 100;  	for (i = 0; i < secs; i++) {  		printf("fire %d\n", i); flush(); -		lco_ignite(); +		lco_ignite(AO_PAD_FIRE); +		ao_delay(AO_MS_TO_TICKS(100)); +	} +} + +static void +lco_static_cmd(void) __reentrant +{ +	uint8_t		secs; +	uint8_t		i; +	int8_t		r; + +	lco_args(); +	ao_cmd_decimal(); +	secs = ao_cmd_lex_i; +	if (ao_cmd_status != ao_cmd_success) +		return; +	r = lco_query(); +	if (r != AO_RADIO_CMAC_OK) { +		printf("query failed %d\n", r); +		return; +	} + +	for (i = 0; i < 4; i++) { +		printf("arm %d\n", i); flush(); +		lco_arm(); +	} + +	secs = secs * 10 - 5; +	if (secs > 100) +		secs = 100; +	for (i = 0; i < secs; i++) { +		printf("fire %d\n", i); flush(); +		lco_ignite(AO_PAD_STATIC);  		ao_delay(AO_MS_TO_TICKS(100));  	}  } @@ -171,12 +204,22 @@ lco_ignite_cmd(void) __reentrant  	uint8_t i;  	lco_args();  	for (i = 0; i < 4; i++) -		lco_ignite(); +		lco_ignite(AO_PAD_FIRE); +} + + +static void +lco_endstatic_cmd(void) __reentrant +{ +	lco_ignite(AO_PAD_ENDSTATIC);  }  static __code struct ao_cmds ao_lco_cmds[] = {  	{ lco_report_cmd,	"l <box> <channel>\0Get remote status" },  	{ lco_fire_cmd,		"F <box> <channel> <secs>\0Fire remote igniters" }, +	{ lco_fire_cmd,		"F <box> <channel> <secs>\0Fire remote igniters" }, +	{ lco_static_cmd,	"S <box> <channel> <secs>\0Initiate static test" }, +	{ lco_endstatic_cmd,	"D\0End static test (and download someday)" },  	{ lco_arm_cmd,		"a <box> <channel>\0Arm remote igniter" },  	{ lco_ignite_cmd,	"i <box> <channel>\0Pulse remote igniter" },  	{ 0, NULL }, diff --git a/src/drivers/ao_lco_func.c b/src/drivers/ao_lco_func.c index 862cb1be..92b344ed 100644 --- a/src/drivers/ao_lco_func.c +++ b/src/drivers/ao_lco_func.c @@ -47,7 +47,7 @@ ao_lco_query(uint16_t box, struct ao_pad_query *query, uint16_t *tick_offset)  	ao_mutex_get(&ao_lco_mutex);  	command.tick = ao_time();  	command.box = box; -	command.cmd = AO_LAUNCH_QUERY; +	command.cmd = AO_PAD_QUERY;  	command.channels = 0;  	ao_radio_cmac_send(&command, sizeof (command));  	sent_time = ao_time(); @@ -64,19 +64,19 @@ ao_lco_arm(uint16_t box, uint8_t channels, uint16_t tick_offset)  	ao_mutex_get(&ao_lco_mutex);  	command.tick = ao_time() - tick_offset;  	command.box = box; -	command.cmd = AO_LAUNCH_ARM; +	command.cmd = AO_PAD_ARM;  	command.channels = channels;  	ao_radio_cmac_send(&command, sizeof (command));  	ao_mutex_put(&ao_lco_mutex);  }  void -ao_lco_ignite(void) +ao_lco_ignite(uint8_t cmd)  {  	ao_mutex_get(&ao_lco_mutex);  	command.tick = 0;  	command.box = 0; -	command.cmd = AO_LAUNCH_FIRE; +	command.cmd = cmd;  	command.channels = 0;  	ao_radio_cmac_send(&command, sizeof (command));  	ao_mutex_put(&ao_lco_mutex); diff --git a/src/drivers/ao_lco_func.h b/src/drivers/ao_lco_func.h index 6b06f928..9d4a27ba 100644 --- a/src/drivers/ao_lco_func.h +++ b/src/drivers/ao_lco_func.h @@ -28,6 +28,6 @@ void  ao_lco_arm(uint16_t box, uint8_t channels, uint16_t tick_offset);  void -ao_lco_ignite(void); +ao_lco_ignite(uint8_t cmd);  #endif /* _AO_LCO_FUNC_H_ */ diff --git a/src/drivers/ao_lco_two.c b/src/drivers/ao_lco_two.c index 1cb0546c..e2f86745 100644 --- a/src/drivers/ao_lco_two.c +++ b/src/drivers/ao_lco_two.c @@ -287,7 +287,7 @@ ao_lco_monitor(void)  		       ao_lco_armed, ao_lco_firing);  		if (ao_lco_armed && ao_lco_firing) { -			ao_lco_ignite(); +			ao_lco_ignite(AO_PAD_FIRE);  		} else {  			ao_lco_get_channels();  			if (ao_lco_armed) { | 
