diff options
Diffstat (limited to 'src/core/ao_ignite.c')
| -rw-r--r-- | src/core/ao_ignite.c | 10 | 
1 files changed, 6 insertions, 4 deletions
| diff --git a/src/core/ao_ignite.c b/src/core/ao_ignite.c index c7829fc3..74bd0c5a 100644 --- a/src/core/ao_ignite.c +++ b/src/core/ao_ignite.c @@ -21,10 +21,12 @@  __xdata struct ao_ignition ao_ignition[2];  void -ao_ignite(enum ao_igniter igniter) __critical +ao_ignite(enum ao_igniter igniter)  { +	ao_arch_block_interrupts();  	ao_ignition[igniter].request = 1;  	ao_wakeup(&ao_ignition); +	ao_arch_release_interrupts();  }  #ifndef AO_SENSE_DROGUE @@ -39,12 +41,12 @@ ao_igniter_status(enum ao_igniter igniter)  	__pdata int16_t value;  	__pdata uint8_t request, firing, fired; -	__critical { +	ao_arch_critical(  		ao_data_get(&packet);  		request = ao_ignition[igniter].request;  		fired = ao_ignition[igniter].fired;  		firing = ao_ignition[igniter].firing; -	} +		);  	if (firing || (request && !fired))  		return ao_igniter_active; @@ -79,7 +81,7 @@ ao_igniter_status(enum ao_igniter igniter)  #endif  void -ao_igniter_fire(enum ao_igniter igniter) __critical +ao_igniter_fire(enum ao_igniter igniter)  {  	ao_ignition[igniter].firing = 1;  	switch(ao_config.ignite_mode) { | 
