__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
__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;
#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) {