__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_mutex_get(&ao_radio_mutex);
ao_ignition[igniter].firing = 1;
switch(ao_config.ignite_mode) {
case AO_IGNITE_MODE_DUAL:
break;
}
ao_ignition[igniter].firing = 0;
- ao_mutex_put(&ao_radio_mutex);
}
void
void
ao_ignite_set_pins(void)
{
- ao_enable_output(AO_IGNITER_DROGUE_PORT, AO_IGNITER_DROGUE_PIN, 0);
- ao_enable_output(AO_IGNITER_MAIN_PORT, AO_IGNITER_MAIN_PIN, 0);
+ ao_enable_output(AO_IGNITER_DROGUE_PORT, AO_IGNITER_DROGUE_PIN, AO_IGNITER_DROGUE, 0);
+ ao_enable_output(AO_IGNITER_MAIN_PORT, AO_IGNITER_MAIN_PIN, AO_IGNITER_MAIN, 0);
}
void