X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=ao_flight_test.c;h=2cd7c81e67ed948cb726a3b7fcf3a71fb24d1e97;hp=78469c798d6a61b63afe46201e4c8fc7ff72e1e5;hb=f94ab879ff6f97708827c74facd11003a2d8b590;hpb=6fb26340b150e831a8a9e25e3b68074c29e48dbe diff --git a/ao_flight_test.c b/ao_flight_test.c index 78469c79..2cd7c81e 100644 --- a/ao_flight_test.c +++ b/ao_flight_test.c @@ -39,6 +39,8 @@ struct ao_adc { #define __pdata #define __data #define __xdata +#define __code +#define __reentrant enum ao_flight_state { ao_flight_startup = 0, @@ -60,6 +62,7 @@ uint8_t ao_adc_head; #define ao_led_off(l) #define ao_timer_set_adc_interval(i) #define ao_wakeup(wchan) ao_dump_state() +#define ao_cmd_register(c) enum ao_igniter { ao_igniter_drogue = 0, @@ -96,6 +99,31 @@ ao_dump_state(void); void ao_sleep(void *wchan); +const char const * const ao_state_names[] = { + "startup", "idle", "pad", "boost", "coast", + "apogee", "drogue", "main", "landed", "invalid" +}; + +struct ao_cmds { + uint8_t cmd; + void (*func)(void); + const char *help; +}; + + +static int16_t altitude_table[2048] = { +#include "altitude.h" +}; + +int16_t +ao_pres_to_altitude(int16_t pres) __reentrant +{ + pres = pres >> 4; + if (pres < 0) pres = 0; + if (pres > 2047) pres = 2047; + return altitude_table[pres]; +} + #include "ao_flight.c" void @@ -166,16 +194,6 @@ ao_sleep(void *wchan) } } - -const char const * const ao_state_names[] = { - "startup", "idle", "pad", "boost", "coast", - "apogee", "drogue", "main", "landed", "invalid" -}; - -static int16_t altitude[2048] = { -#include "altitude.h" -}; - #define COUNTS_PER_G 264.8 void @@ -187,7 +205,7 @@ ao_dump_state(void) ao_state_names[ao_flight_state], (ao_flight_accel - ao_ground_accel) / COUNTS_PER_G * GRAVITY, (double) ao_flight_vel / 100 / COUNTS_PER_G * GRAVITY, - altitude[ao_flight_pres >> 4]); + altitude_table[ao_flight_pres >> 4]); if (ao_flight_state == ao_flight_landed) exit(0); }