altos: Make sure pa to altitude conversion is done with 32 bits
[fw/altos] / src / core / ao_ignite.c
index 561b551372f5a5b26c04cb6a8d981f36fd6afa07..74bd0c5aea021a55a4e7f16d45300f9fcb97bebe 100644 (file)
 __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,9 +81,8 @@ 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_mutex_get(&ao_radio_mutex);
        ao_ignition[igniter].firing = 1;
        switch(ao_config.ignite_mode) {
        case AO_IGNITE_MODE_DUAL:
@@ -126,7 +127,6 @@ ao_igniter_fire(enum ao_igniter igniter) __critical
                break;
        }
        ao_ignition[igniter].firing = 0;
-       ao_mutex_put(&ao_radio_mutex);
 }
 
 void
@@ -197,8 +197,8 @@ __xdata struct ao_task ao_igniter_task;
 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