altos: Don't report inhibited pyro channels as fired
[fw/altos] / src / kernel / ao_pyro.c
index 30d1518f051701146b8e96a95a74d7715a685ee5..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
@@ -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;
                        }