#define AO_PANIC_REBOOT 8 /* Reboot failed */
#define AO_PANIC_FLASH 9 /* Invalid flash part (or wrong blocksize) */
#define AO_PANIC_USB 10 /* Trying to send USB packet while busy */
+#define AO_PANIC_BT 11 /* Communications with bluetooth device failed */
/* Stop the operating system, beeping and blinking the reason */
void
void
ao_cmd_init(void);
+#if HAS_CMD_FILTER
+/*
+ * Provided by an external module to filter raw command lines
+ */
+uint8_t
+ao_cmd_filter(void);
+#endif
+
/*
* ao_dma.c
*/
void
ao_serial_putchar(char c) __critical;
+void
+ao_serial_drain(void) __critical;
+
#define AO_SERIAL_SPEED_4800 0
#define AO_SERIAL_SPEED_9600 1
#define AO_SERIAL_SPEED_19200 2
ao_gps_report_init(void);
/*
- * ao_telemetry.c
+ * ao_telemetry_orig.c
*/
#define AO_MAX_CALLSIGN 8
+#define AO_MAX_TELEMETRY 128
-struct ao_telemetry {
+struct ao_telemetry_orig {
uint16_t serial;
uint16_t flight;
uint8_t flight_state;
/*
* ao_radio_recv tacks on rssi and status bytes
*/
-struct ao_telemetry_recv {
- struct ao_telemetry telemetry;
- int8_t rssi;
- uint8_t status;
+
+struct ao_telemetry_raw_recv {
+ uint8_t packet[AO_MAX_TELEMETRY + 2];
+};
+
+struct ao_telemetry_orig_recv {
+ struct ao_telemetry_orig telemetry_orig;
+ int8_t rssi;
+ uint8_t status;
};
struct ao_telemetry_tiny_recv {
ao_rdf_set(uint8_t rdf);
void
-ao_telemetry_init(void);
+ao_telemetry_orig_init(void);
void
ao_telemetry_tiny_init(void);
ao_monitor(void);
#define AO_MONITORING_OFF 0
-#define AO_MONITORING_FULL 1
+#define AO_MONITORING_ORIG 1
#define AO_MONITORING_TINY 2
void
char (*pollchar)(void);
void (*putchar)(char c) __reentrant;
void (*flush)(void);
+ uint8_t echo;
};
+extern __xdata struct ao_stdio ao_stdios[];
extern __data int8_t ao_cur_stdio;
extern __data int8_t ao_num_stdios;
extern __xdata uint8_t ao_stdin_ready;
-void
+uint8_t
+ao_echo(void);
+
+int8_t
ao_add_stdio(char (*pollchar)(void),
void (*putchar)(char) __reentrant,
void (*flush)(void)) __reentrant;
/* ao_btm.c */
+/* If bt_link is on P2, this interrupt is shared by USB, so the USB
+ * code calls this function. Otherwise, it's a regular ISR.
+ */
+
+void
+ao_btm_isr(void)
+#if BT_LINK_ON_P1
+ __interrupt 15
+#endif
+ ;
+
+
void
ao_btm_init(void);