altos: first cut at ADS124S0X driver interrupt handling
[fw/altos] / src / kernel / ao_pyro.h
index 0c5642d6ea91f2ff12e76c6b1321ff69882b3a4c..3ab5af3bf8972d2f2e1ae2f79e482cc96b272e8e 100644 (file)
@@ -3,7 +3,8 @@
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; version 2 of the License.
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
  *
  * This program is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -45,7 +46,11 @@ enum ao_pyro_flag {
 
        ao_pyro_state_less              = 0x00004000,
        ao_pyro_state_greater_or_equal  = 0x00008000,
-};
+}
+#ifdef __GNUC__
+       __attribute__ ((packed))
+#endif
+       ;
 
 struct ao_pyro {
        enum ao_pyro_flag       flags;
@@ -58,9 +63,11 @@ struct ao_pyro {
        uint8_t                 state_less, state_greater_or_equal;
        int16_t                 motor;
        uint16_t                delay_done;
-       uint8_t                 fired;
+       uint8_t                 _unused;        /* was 'fired' */
 };
 
+#define AO_PYRO_8_BIT_VALUE    (ao_pyro_state_less|ao_pyro_state_greater_or_equal)
+
 extern uint8_t ao_pyro_wakeup;
 
 extern uint16_t        ao_pyro_fired;
@@ -77,6 +84,9 @@ ao_pyro_init(void);
 void
 ao_pyro_manual(uint8_t p);
 
+enum ao_igniter_status
+ao_pyro_status(uint8_t p);
+
 void
 ao_pyro_print_status(void);