altos: eliminate ao_wake_task
[fw/altos] / src / ao.h
index 5f2b83394daf96eb78abd5f89bff2fb92ec35388..9682e42fb33c9cde8d69122f632acd0f969ecb81 100644 (file)
--- a/src/ao.h
+++ b/src/ao.h
@@ -69,17 +69,13 @@ 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);
-
 /* set an alarm to go off in 'delay' ticks */
 void
 ao_alarm(uint16_t delay);
 
 /* Yield the processor to another task */
 void
-ao_yield(void) _naked;
+ao_yield(void) __naked;
 
 /* Add a task to the run queue */
 void
@@ -139,7 +135,7 @@ ao_timer_set_adc_interval(uint8_t interval) __critical;
 
 /* Timer interrupt */
 void
-ao_timer_isr(void) interrupt 9;
+ao_timer_isr(void) __interrupt 9;
 
 /* Initialize the timer */
 void
@@ -198,7 +194,7 @@ ao_adc_get(__xdata struct ao_adc *packet);
 /* The A/D interrupt handler */
 
 void
-ao_adc_isr(void) interrupt 1;
+ao_adc_isr(void) __interrupt 1;
 
 /* Initialize the A/D converter */
 void
@@ -289,6 +285,18 @@ ao_led_for(uint8_t colors, uint16_t ticks) __reentrant;
 void
 ao_led_init(uint8_t enable);
 
+/*
+ * ao_romconfig.c
+ */
+
+#define AO_ROMCONFIG_VERSION   2
+
+extern __code __at (0x00a0) uint16_t ao_romconfig_version;
+extern __code __at (0x00a2) uint16_t ao_romconfig_check;
+extern __code __at (0x00a4) uint16_t ao_serial_number;
+extern __code __at (0x00a6) uint32_t ao_radio_cal;
+extern __code __at (0x00aa) uint8_t ao_usb_descriptors [];
+
 /*
  * ao_usb.c
  */
@@ -313,7 +321,7 @@ ao_usb_flush(void);
 
 /* USB interrupt handler */
 void
-ao_usb_isr(void) interrupt 6;
+ao_usb_isr(void) __interrupt 6;
 
 /* Enable the USB controller */
 void
@@ -379,14 +387,10 @@ ao_cmd_init(void);
  * ao_dma.c
  */
 
-/* Allocate a DMA channel. the 'done' parameter will be set
- * when the dma is finished or aborted and will be used to
- * wakeup any waiters
+/* Allocate a DMA channel. the 'done' parameter will be set when the
+ * dma is finished and will be used to wakeup any waiters
  */
 
-#define AO_DMA_DONE    1
-#define AO_DMA_ABORTED 2
-
 uint8_t
 ao_dma_alloc(__xdata uint8_t * done);
 
@@ -413,7 +417,7 @@ ao_dma_abort(uint8_t id);
 
 /* DMA interrupt routine */
 void
-ao_dma_isr(void) interrupt 8;
+ao_dma_isr(void) __interrupt 8;
 
 /*
  * ao_mutex.c
@@ -552,6 +556,7 @@ struct ao_log_record {
                        uint8_t         year;
                        uint8_t         month;
                        uint8_t         day;
+                       uint8_t         extra;
                } gps_date;
                struct {
                        uint16_t        d0;
@@ -561,7 +566,7 @@ struct ao_log_record {
 };
 
 /* Write a record to the eeprom log */
-void
+uint8_t
 ao_log_data(__xdata struct ao_log_record *log) __reentrant;
 
 /* Flush the log */
@@ -709,10 +714,10 @@ ao_dbg_init(void);
 
 #if HAS_SERIAL_1
 void
-ao_serial_rx1_isr(void) interrupt 3;
+ao_serial_rx1_isr(void) __interrupt 3;
 
 void
-ao_serial_tx1_isr(void) interrupt 14;
+ao_serial_tx1_isr(void) __interrupt 14;
 
 char
 ao_serial_getchar(void) __critical;
@@ -768,9 +773,11 @@ struct ao_gps_sat_data {
        uint8_t         c_n_1;
 };
 
+#define AO_MAX_GPS_TRACKING    12
+
 struct ao_gps_tracking_data {
        uint8_t                 channels;
-       struct ao_gps_sat_data  sats[12];
+       struct ao_gps_sat_data  sats[AO_MAX_GPS_TRACKING];
 };
 
 extern __xdata uint8_t ao_gps_mutex;
@@ -823,6 +830,15 @@ struct ao_telemetry {
        struct ao_gps_tracking_data     gps_tracking;
 };
 
+/*
+ * ao_radio_recv tacks on rssi and status bytes
+ */
+struct ao_telemetry_recv {
+       struct ao_telemetry     telemetry;
+       int8_t                  rssi;
+       uint8_t                 status;
+};
+
 /* Set delay between telemetry reports (0 to disable) */
 
 #define AO_TELEMETRY_INTERVAL_PAD      AO_MS_TO_TICKS(1000)
@@ -848,7 +864,7 @@ extern __xdata uint8_t ao_radio_done;
 extern __xdata uint8_t ao_radio_mutex;
 
 void
-ao_radio_general_isr(void) interrupt 16;
+ao_radio_general_isr(void) __interrupt 16;
 
 void
 ao_radio_get(void);
@@ -865,22 +881,16 @@ void
 ao_radio_set_rdf(void);
 
 void
-ao_radio_send(__xdata struct ao_telemetry *telemetry) __reentrant;
-
-struct ao_radio_recv {
-       struct ao_telemetry     telemetry;
-       int8_t                  rssi;
-       uint8_t                 status;
-};
+ao_radio_send(__xdata void *data, uint8_t size) __reentrant;
 
 uint8_t
-ao_radio_recv(__xdata struct ao_radio_recv *recv) __reentrant;
+ao_radio_recv(__xdata void *data, uint8_t size) __reentrant;
 
 void
-ao_radio_rdf(int ms);
+ao_radio_recv_abort(void);
 
 void
-ao_radio_abort(void);
+ao_radio_rdf(int ms);
 
 void
 ao_radio_rdf_abort(void);
@@ -997,8 +1007,7 @@ ao_rssi_init(uint8_t rssi_led);
  * each instance of a product
  */
 
-extern const uint8_t ao_usb_descriptors [];
-extern const uint16_t ao_serial_number;
+extern __code __at(0x00aa) uint8_t ao_usb_descriptors [];
 extern const char ao_version[];
 extern const char ao_manufacturer[];
 extern const char ao_product[];