kernel: Widen pyro time values to 32 bits
[fw/altos] / src / kernel / ao_pyro.h
index 34c990789cb9067130c479d61a741e4018bf8de4..4a8c3aabb1857c8adb4d7727f00bc4a5f0d4f407 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
@@ -51,7 +52,7 @@ enum ao_pyro_flag {
 #endif
        ;
 
-struct ao_pyro {
+struct ao_pyro_1_24 {
        enum ao_pyro_flag       flags;
        int16_t                 accel_less, accel_greater;
        int16_t                 speed_less, speed_greater;
@@ -62,9 +63,26 @@ 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' */
 };
 
+struct ao_pyro {
+       enum ao_pyro_flag       flags;
+       int16_t                 accel_less, accel_greater;
+       int16_t                 speed_less, speed_greater;
+       int16_t                 height_less, height_greater;
+       int16_t                 orient_less, orient_greater;
+       int32_t                 time_less, time_greater;
+       int32_t                 delay;
+       uint8_t                 state_less, state_greater_or_equal;
+       int16_t                 motor;
+       int32_t                 delay_done;
+       uint8_t                 _unused;        /* was 'fired' */
+};
+
+#define AO_PYRO_8_BIT_VALUE    (ao_pyro_state_less|ao_pyro_state_greater_or_equal)
+#define AO_PYRO_32_BIT_VALUE   (ao_pyro_time_less|ao_pyro_time_greater|ao_pyro_delay)
+
 extern uint8_t ao_pyro_wakeup;
 
 extern uint16_t        ao_pyro_fired;
@@ -78,9 +96,15 @@ ao_pyro_show(void);
 void
 ao_pyro_init(void);
 
+void
+ao_pyro_update_version(void);
+
 void
 ao_pyro_manual(uint8_t p);
 
+enum ao_igniter_status
+ao_pyro_status(uint8_t p);
+
 void
 ao_pyro_print_status(void);