X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=ao.h;h=13497095c450aff3f45e78777ab441c46628efe3;hp=2cad7621c5e5db33d072954149ed05b66b441924;hb=38a0b61b0a0b3c00f064c8d562950a17a6ddff4a;hpb=4a050704ad2c497e9f1b0988334228b0bbc4c170 diff --git a/ao.h b/ao.h index 2cad7621..13497095 100644 --- a/ao.h +++ b/ao.h @@ -29,7 +29,7 @@ /* Stack runs from above the allocated __data space to 0xfe, which avoids * writing to 0xff as that triggers the stack overflow indicator */ -#define AO_STACK_START 0x7e +#define AO_STACK_START 0x80 #define AO_STACK_END 0xfe #define AO_STACK_SIZE (AO_STACK_END - AO_STACK_START + 1) @@ -241,13 +241,17 @@ ao_led_off(uint8_t colors); void ao_led_set(uint8_t colors); +/* Toggle the specified LEDs */ +void +ao_led_toggle(uint8_t colors); + /* Turn on the specified LEDs for the indicated interval */ void ao_led_for(uint8_t colors, uint16_t ticks) __reentrant; /* Initialize the LEDs */ void -ao_led_init(void); +ao_led_init(uint8_t enable); /* * ao_usb.c @@ -269,6 +273,14 @@ ao_usb_flush(void); void ao_usb_isr(void) interrupt 6; +/* Enable the USB controller */ +void +ao_usb_enable(void); + +/* Disable the USB controller */ +void +ao_usb_disable(void); + /* Initialize the USB system */ void ao_usb_init(void); @@ -302,6 +314,9 @@ ao_cmd_white(void); void ao_cmd_hex(void); +void +ao_cmd_decimal(void); + struct ao_cmds { uint8_t cmd; void (*func)(void); @@ -581,10 +596,10 @@ int16_t ao_pres_to_altitude(int16_t pres) __reentrant; int16_t -ao_temp_to_dC(int16_t temp) __reentrant; +ao_altitude_to_pres(int16_t alt) __reentrant; int16_t -ao_accel_to_cm_per_s2(int16_t accel) __reentrant; +ao_temp_to_dC(int16_t temp) __reentrant; /* * ao_dbg.c @@ -686,17 +701,41 @@ ao_gps_print(__xdata struct ao_gps_data *gps_data); void ao_gps_init(void); +/* + * ao_gps_report.c + */ + +void +ao_gps_report(void); + +void +ao_gps_report_init(void); + /* * ao_telemetry.c */ +#define AO_MAX_CALLSIGN 8 + struct ao_telemetry { uint8_t addr; uint8_t flight_state; struct ao_adc adc; struct ao_gps_data gps; + char callsign[AO_MAX_CALLSIGN]; }; +/* Set delay between telemetry reports (0 to disable) */ + +#define AO_TELEMETRY_INTERVAL_FLIGHT AO_MS_TO_TICKS(50) +#define AO_TELEMETRY_INTERVAL_RECOVER AO_MS_TO_TICKS(1000) + +void +ao_telemetry_set_interval(uint16_t interval); + +void +ao_rdf_set(uint8_t rdf); + void ao_telemetry_init(void); @@ -709,13 +748,19 @@ ao_radio_send(__xdata struct ao_telemetry *telemetry) __reentrant; struct ao_radio_recv { struct ao_telemetry telemetry; - uint8_t rssi; + int8_t rssi; uint8_t status; }; void ao_radio_recv(__xdata struct ao_radio_recv *recv) __reentrant; +void +ao_radio_rdf(void); + +void +ao_radio_rdf_abort(void); + void ao_radio_init(void); @@ -729,7 +774,7 @@ void ao_monitor(void); void -ao_monitor_init(void); +ao_monitor_init(uint8_t led); /* * ao_stdio.c @@ -763,5 +808,28 @@ ao_igniter_status(enum ao_igniter igniter); void ao_igniter_init(void); -#endif /* _AO_H_ */ +/* + * ao_config.c + */ + +#define AO_CONFIG_MAJOR 1 +#define AO_CONFIG_MINOR 0 + +struct ao_config { + uint8_t major; + uint8_t minor; + uint16_t main_deploy; + int16_t accel_zero_g; + uint8_t radio_channel; + char callsign[AO_MAX_CALLSIGN + 1]; +}; + +extern __xdata struct ao_config ao_config; +void +ao_config_get(void); + +void +ao_config_init(void); + +#endif /* _AO_H_ */