Add ao_wake_task and ao_exit
[fw/altos] / src / ao.h
index 27ec010f68cd6ac42bb42822ee7496d59ee5a878..132711091de385a36a0abe562cb570fbf883a5b6 100644 (file)
--- a/src/ao.h
+++ b/src/ao.h
@@ -63,6 +63,10 @@ ao_sleep(__xdata void *wchan);
 void
 ao_wakeup(__xdata void *wchan);
 
+/* Wake up a specific task */
+void
+ao_wake_task(__xdata struct ao_task *task);
+
 /* Yield the processor to another task */
 void
 ao_yield(void) _naked;
@@ -71,6 +75,10 @@ ao_yield(void) _naked;
 void
 ao_add_task(__xdata struct ao_task * task, void (*start)(void), __code char *name) __reentrant;
 
+/* Terminate the current task */
+void
+ao_exit(void);
+
 /* Dump task info to console */
 void
 ao_task_info(void);
@@ -503,7 +511,6 @@ struct ao_log_record {
                        uint16_t        svid;
                        uint8_t         state;
                        uint8_t         c_n;
-                       uint8_t         unused;
                } gps_sat;
                struct {
                        uint16_t        d0;
@@ -669,7 +676,8 @@ void
 ao_serial_putchar(char c) __critical;
 
 #define AO_SERIAL_SPEED_4800   0
-#define AO_SERIAL_SPEED_57600  1
+#define AO_SERIAL_SPEED_9600   1
+#define AO_SERIAL_SPEED_57600  2
 
 void
 ao_serial_set_speed(uint8_t speed);
@@ -778,6 +786,9 @@ struct ao_telemetry {
 void
 ao_telemetry_set_interval(uint16_t interval);
 
+void
+ao_rdf_set(uint8_t rdf);
+
 void
 ao_telemetry_init(void);
 
@@ -797,6 +808,12 @@ struct ao_radio_recv {
 void
 ao_radio_recv(__xdata struct ao_radio_recv *recv) __reentrant;
 
+void
+ao_radio_rdf(int ms);
+
+void
+ao_radio_rdf_abort(void);
+
 void
 ao_radio_init(void);
 
@@ -852,7 +869,7 @@ ao_igniter_init(void);
  */
 
 #define AO_CONFIG_MAJOR        1
-#define AO_CONFIG_MINOR        0
+#define AO_CONFIG_MINOR        1
 
 struct ao_config {
        uint8_t         major;
@@ -861,6 +878,7 @@ struct ao_config {
        int16_t         accel_zero_g;
        uint8_t         radio_channel;
        char            callsign[AO_MAX_CALLSIGN + 1];
+       uint8_t         apogee_delay;
 };
 
 extern __xdata struct ao_config ao_config;