*
* 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
ao_pyro_state_less = 0x00004000,
ao_pyro_state_greater_or_equal = 0x00008000,
-};
+}
+#ifdef __GNUC__
+ __attribute__ ((packed))
+#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;
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;
+ uint32_t _unused1; /* was 'delay_done' */
+ uint8_t _unused2; /* 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;
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);