altos: Add checksum to TELEM output lines
[fw/altos] / src / ao.h
index dad1f3dfba3b3a1ec748dd8ff51d574c104fbc8b..f57537033caf029d89eec35dfb281569ae4de5aa 100644 (file)
--- a/src/ao.h
+++ b/src/ao.h
@@ -1036,12 +1036,13 @@ void
 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;
@@ -1079,10 +1080,15 @@ struct ao_telemetry_tiny {
 /*
  * 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 {
@@ -1104,7 +1110,7 @@ void
 ao_rdf_set(uint8_t rdf);
 
 void
-ao_telemetry_init(void);
+ao_telemetry_orig_init(void);
 
 void
 ao_telemetry_tiny_init(void);
@@ -1160,7 +1166,7 @@ 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
@@ -1194,7 +1200,7 @@ extern __xdata uint8_t ao_stdin_ready;
 uint8_t
 ao_echo(void);
 
-void
+int8_t
 ao_add_stdio(char (*pollchar)(void),
             void (*putchar)(char) __reentrant,
             void (*flush)(void)) __reentrant;
@@ -1367,9 +1373,17 @@ ao_packet_slave_init(uint8_t enable);
 
 /* ao_btm.c */
 
-/* Shared by USB, so the USB code calls this function */
+/* 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);
+ao_btm_isr(void)
+#if BT_LINK_ON_P1
+       __interrupt 15
+#endif
+       ;
+
 
 void
 ao_btm_init(void);