altos: Start adding apogee lockout support
[fw/altos] / src / core / ao.h
index c9f17dc00b36e7f6f7413f07df7664d86788d60e..9a3b5829e87745449ae465ac03f9e1692865b2a0 100644 (file)
@@ -114,6 +114,7 @@ ao_start_scheduler(void);
 #define AO_PANIC_USB           10      /* Trying to send USB packet while busy */
 #define AO_PANIC_BT            11      /* Communications with bluetooth device failed */
 #define AO_PANIC_STACK         12      /* Stack overflow */
+#define AO_PANIC_SPI           13      /* SPI communication failure */
 
 /* Stop the operating system, beeping and blinking the reason */
 void
@@ -394,42 +395,6 @@ uint8_t
 ao_cmd_filter(void);
 #endif
 
-/*
- * ao_dma.c
- */
-
-/* Allocate a DMA channel. the 'done' parameter will be set when the
- * dma is finished and will be used to wakeup any waiters
- */
-
-uint8_t
-ao_dma_alloc(__xdata uint8_t * done);
-
-/* Setup a DMA channel */
-void
-ao_dma_set_transfer(uint8_t id,
-                   void __xdata *srcaddr,
-                   void __xdata *dstaddr,
-                   uint16_t count,
-                   uint8_t cfg0,
-                   uint8_t cfg1);
-
-/* Start a DMA channel */
-void
-ao_dma_start(uint8_t id);
-
-/* Manually trigger a DMA channel */
-void
-ao_dma_trigger(uint8_t id);
-
-/* Abort a running DMA transfer */
-void
-ao_dma_abort(uint8_t id);
-
-/* DMA interrupt routine */
-void
-ao_dma_isr(void) ao_arch_interrupt(8);
-
 /*
  * ao_mutex.c
  */
@@ -976,47 +941,6 @@ ao_serial0_init(void);
 #endif
 
 
-/*
- * ao_spi.c
- */
-
-extern __xdata uint8_t ao_spi_mutex;
-
-#define ao_spi_get_mask(reg,mask) do {\
-       ao_mutex_get(&ao_spi_mutex); \
-       (reg) &= ~(mask); \
-       } while (0)
-
-#define ao_spi_put_mask(reg,mask) do { \
-       (reg) |= (mask); \
-       ao_mutex_put(&ao_spi_mutex); \
-       } while (0)
-
-#define ao_spi_get_bit(bit) do {\
-       ao_mutex_get(&ao_spi_mutex); \
-       (bit) = 0; \
-       } while (0)
-
-#define ao_spi_put_bit(bit) do { \
-       (bit) = 1; \
-       ao_mutex_put(&ao_spi_mutex); \
-       } while (0)
-
-/*
- * The SPI mutex must be held to call either of these
- * functions -- this mutex covers the entire SPI operation,
- * from chip select low to chip select high
- */
-
-void
-ao_spi_send(void __xdata *block, uint16_t len) __reentrant;
-
-void
-ao_spi_recv(void __xdata *block, uint16_t len) __reentrant;
-
-void
-ao_spi_init(void);
-
 /*
  * ao_spi_slave.c
  */
@@ -1533,26 +1457,16 @@ ao_igniter_init(void);
  */
 
 #define AO_CONFIG_MAJOR        1
-#define AO_CONFIG_MINOR        10
-#define AO_AES_LEN 16
-
-#if HAS_RADIO_CHANNELS
-#define AO_CHANNEL_NAME_LEN    10
+#define AO_CONFIG_MINOR        11
 
-#define AO_NUM_CHANNELS                10
-
-struct ao_radio_channel {
-       char            name[AO_CHANNEL_NAME_LEN];
-       uint32_t        kHz;
-};
-#endif
+#define AO_AES_LEN 16
 
 struct ao_config {
        uint8_t         major;
        uint8_t         minor;
        uint16_t        main_deploy;
        int16_t         accel_plus_g;           /* changed for minor version 2 */
-       uint8_t         radio_channel;
+       uint8_t         _legacy_radio_channel;
        char            callsign[AO_MAX_CALLSIGN + 1];
        uint8_t         apogee_delay;           /* minor version 1 */
        int16_t         accel_minus_g;          /* minor version 2 */
@@ -1564,9 +1478,7 @@ struct ao_config {
        uint8_t         radio_enable;           /* minor version 8 */
        uint8_t         aes_key[AO_AES_LEN];    /* minor version 9 */
        uint32_t        frequency;              /* minor version 10 */
-#if HAS_RADIO_CHANNELS
-       struct ao_radio_channel radio_channels[AO_NUM_CHANNELS];        /* minor version 10 */
-#endif
+       uint16_t        apogee_lockout;         /* minor version 11 */
 };
 
 #define AO_IGNITE_MODE_DUAL            0
@@ -1586,6 +1498,9 @@ ao_config_get(void);
 void
 ao_config_put(void);
 
+void
+ao_config_set_radio(void);
+
 void
 ao_config_init(void);
 
@@ -1968,6 +1883,14 @@ ao_sqrt(uint32_t op);
  * ao_freq.c
  */
 
-int32_t ao_freq_to_set(int32_t freq, int32_t cal);
+int32_t ao_freq_to_set(int32_t freq, int32_t cal) __reentrant;
+
+#include <ao_arch_funcs.h>
+
+/*
+ * ao_ms5607.c
+ */
+
+void ao_ms5607_init(void);
 
 #endif /* _AO_H_ */