X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2Fkernel%2Fao_pyro.h;h=f17abed377907fa0fa4eb5a5c34c7f30c5c1bc21;hb=c49bd3cb0c31a51fae79ddc92237cc309be9a242;hp=0c5642d6ea91f2ff12e76c6b1321ff69882b3a4c;hpb=24167015705ae831692b95735968b04a876f935e;p=fw%2Faltos diff --git a/src/kernel/ao_pyro.h b/src/kernel/ao_pyro.h index 0c5642d6..f17abed3 100644 --- a/src/kernel/ao_pyro.h +++ b/src/kernel/ao_pyro.h @@ -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,9 +46,13 @@ enum ao_pyro_flag { 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; @@ -58,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; + 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; @@ -74,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);