Version 1.9.6.2
[fw/altos] / src / kernel / ao_pyro.c
index 173cf8a3254f4b523d1633b2aa295fca08792a43..80e1980ebf28b8204b10be3d2f5090017f2db43b 100644 (file)
@@ -69,6 +69,7 @@ ao_pyro_print_status(void)
 #endif
 
 uint16_t       ao_pyro_fired;
+uint16_t       ao_pyro_inhibited;
 
 #ifndef PYRO_DBG
 #define PYRO_DBG       0
@@ -205,9 +206,9 @@ ao_pyro_ready(struct ao_pyro *pyro)
                default:
                        continue;
                }
-               return FALSE;
+               return false;
        }
-       return TRUE;
+       return true;
 }
 
 #ifndef AO_FLIGHT_TEST
@@ -216,28 +217,28 @@ ao_pyro_pin_set(uint8_t p, uint8_t v)
 {
        switch (p) {
 #if AO_PYRO_NUM > 0
-       case 0: ao_gpio_set(AO_PYRO_PORT_0, AO_PYRO_PIN_0, AO_PYRO_0, v); break;
+       case 0: ao_gpio_set(AO_PYRO_PORT_0, AO_PYRO_PIN_0, v); break;
 #endif
 #if AO_PYRO_NUM > 1
-       case 1: ao_gpio_set(AO_PYRO_PORT_1, AO_PYRO_PIN_1, AO_PYRO_1, v); break;
+       case 1: ao_gpio_set(AO_PYRO_PORT_1, AO_PYRO_PIN_1, v); break;
 #endif
 #if AO_PYRO_NUM > 2
-       case 2: ao_gpio_set(AO_PYRO_PORT_2, AO_PYRO_PIN_2, AO_PYRO_2, v); break;
+       case 2: ao_gpio_set(AO_PYRO_PORT_2, AO_PYRO_PIN_2, v); break;
 #endif
 #if AO_PYRO_NUM > 3
-       case 3: ao_gpio_set(AO_PYRO_PORT_3, AO_PYRO_PIN_3, AO_PYRO_3, v); break;
+       case 3: ao_gpio_set(AO_PYRO_PORT_3, AO_PYRO_PIN_3, v); break;
 #endif
 #if AO_PYRO_NUM > 4
-       case 4: ao_gpio_set(AO_PYRO_PORT_4, AO_PYRO_PIN_4, AO_PYRO_4, v); break;
+       case 4: ao_gpio_set(AO_PYRO_PORT_4, AO_PYRO_PIN_4, v); break;
 #endif
 #if AO_PYRO_NUM > 5
-       case 5: ao_gpio_set(AO_PYRO_PORT_5, AO_PYRO_PIN_5, AO_PYRO_5, v); break;
+       case 5: ao_gpio_set(AO_PYRO_PORT_5, AO_PYRO_PIN_5, v); break;
 #endif
 #if AO_PYRO_NUM > 6
-       case 6: ao_gpio_set(AO_PYRO_PORT_6, AO_PYRO_PIN_6, AO_PYRO_6, v); break;
+       case 6: ao_gpio_set(AO_PYRO_PORT_6, AO_PYRO_PIN_6, v); break;
 #endif
 #if AO_PYRO_NUM > 7
-       case 7: ao_gpio_set(AO_PYRO_PORT_7, AO_PYRO_PIN_7, AO_PYRO_7, v); break;
+       case 7: ao_gpio_set(AO_PYRO_PORT_7, AO_PYRO_PIN_7, v); break;
 #endif
        default: break;
        }
@@ -274,9 +275,9 @@ ao_pyro_check(void)
        for (p = 0; p < AO_PYRO_NUM; p++) {
                pyro = &ao_config.pyro[p];
 
-               /* Ignore igniters which have already fired
+               /* Ignore igniters which have already fired or inhibited
                 */
-               if (ao_pyro_fired & (1 << p))
+               if ((ao_pyro_fired|ao_pyro_inhibited) & (1 << p))
                        continue;
 
                /* Ignore disabled igniters
@@ -308,10 +309,10 @@ ao_pyro_check(void)
 
                        /* Check to make sure the required conditions
                         * remain valid. If not, inhibit the channel
-                        * by setting the fired bit
+                        * by setting the inhibited bit
                         */
                        if (!ao_pyro_ready(pyro)) {
-                               ao_pyro_fired |= (1 << p);
+                               ao_pyro_inhibited |= (1 << p);
                                continue;
                        }
 
@@ -555,28 +556,28 @@ void
 ao_pyro_init(void)
 {
 #if AO_PYRO_NUM > 0
-       ao_enable_output(AO_PYRO_PORT_0, AO_PYRO_PIN_0, AO_PYRO_0, 0);
+       ao_enable_output(AO_PYRO_PORT_0, AO_PYRO_PIN_0, 0);
 #endif
 #if AO_PYRO_NUM > 1
-       ao_enable_output(AO_PYRO_PORT_1, AO_PYRO_PIN_1, AO_PYRO_1, 0);
+       ao_enable_output(AO_PYRO_PORT_1, AO_PYRO_PIN_1, 0);
 #endif
 #if AO_PYRO_NUM > 2
-       ao_enable_output(AO_PYRO_PORT_2, AO_PYRO_PIN_2, AO_PYRO_2, 0);
+       ao_enable_output(AO_PYRO_PORT_2, AO_PYRO_PIN_2, 0);
 #endif
 #if AO_PYRO_NUM > 3
-       ao_enable_output(AO_PYRO_PORT_3, AO_PYRO_PIN_3, AO_PYRO_3, 0);
+       ao_enable_output(AO_PYRO_PORT_3, AO_PYRO_PIN_3, 0);
 #endif
 #if AO_PYRO_NUM > 4
-       ao_enable_output(AO_PYRO_PORT_4, AO_PYRO_PIN_4, AO_PYRO_4, 0);
+       ao_enable_output(AO_PYRO_PORT_4, AO_PYRO_PIN_4, 0);
 #endif
 #if AO_PYRO_NUM > 5
-       ao_enable_output(AO_PYRO_PORT_5, AO_PYRO_PIN_5, AO_PYRO_5, 0);
+       ao_enable_output(AO_PYRO_PORT_5, AO_PYRO_PIN_5, 0);
 #endif
 #if AO_PYRO_NUM > 6
-       ao_enable_output(AO_PYRO_PORT_6, AO_PYRO_PIN_6, AO_PYRO_6, 0);
+       ao_enable_output(AO_PYRO_PORT_6, AO_PYRO_PIN_6, 0);
 #endif
 #if AO_PYRO_NUM > 7
-       ao_enable_output(AO_PYRO_PORT_7, AO_PYRO_PIN_7, AO_PYRO_7, 0);
+       ao_enable_output(AO_PYRO_PORT_7, AO_PYRO_PIN_7, 0);
 #endif
        ao_add_task(&ao_pyro_task, ao_pyro, "pyro");
 }