Add RDF beacon and callsign to telemetry
[fw/altos] / ao.h
diff --git a/ao.h b/ao.h
index 2cad7621c5e5db33d072954149ed05b66b441924..338a40b0a42211b6f84067b09bb276b9515beeb7 100644 (file)
--- 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);
@@ -690,13 +702,27 @@ ao_gps_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 +735,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 +761,7 @@ void
 ao_monitor(void);
 
 void
-ao_monitor_init(void);
+ao_monitor_init(uint8_t led);
 
 /*
  * ao_stdio.c