#include <string.h>
#include <stddef.h>
#include "cc1111.h"
+#include "ao_pins.h"
#define TRUE 1
#define FALSE 0
__xdata void *wchan; /* current wait channel (NULL if running) */
uint16_t alarm; /* abort ao_sleep time */
uint8_t stack_count; /* amount of saved stack */
- uint8_t task_id; /* index in the task array */
+ uint8_t task_id; /* unique id */
__code char *name; /* task name */
uint8_t stack[AO_STACK_SIZE]; /* saved stack */
};
ao_clock_init(void);
/*
- * ao_adc.c
- */
-
-#define AO_ADC_RING 32
-#define ao_adc_ring_next(n) (((n) + 1) & (AO_ADC_RING - 1))
-#define ao_adc_ring_prev(n) (((n) - 1) & (AO_ADC_RING - 1))
-
-/*
- * One set of samples read from the A/D converter
+ * One set of samples read from the A/D converter or telemetry
*/
struct ao_adc {
uint16_t tick; /* tick when the sample was read */
int16_t sense_m; /* main continuity sense */
};
+#ifndef HAS_ADC
+#error Please define HAS_ADC
+#endif
+
+#if HAS_ADC
+/*
+ * ao_adc.c
+ */
+
+#define AO_ADC_RING 32
+#define ao_adc_ring_next(n) (((n) + 1) & (AO_ADC_RING - 1))
+#define ao_adc_ring_prev(n) (((n) - 1) & (AO_ADC_RING - 1))
+
+
/*
* A/D data is stored in a ring, with the next sample to be written
* at ao_adc_head
ao_adc_get(__xdata struct ao_adc *packet);
/* The A/D interrupt handler */
-#if !AO_NO_ADC_ISR
+
void
ao_adc_isr(void) interrupt 1;
-#endif
/* Initialize the A/D converter */
void
ao_adc_init(void);
+#endif /* HAS_ADC */
+
/*
* ao_beep.c
*/
*/
#define AO_LED_NONE 0
-#define AO_LED_GREEN 1
-#define AO_LED_RED 2
/* Turn on the specified LEDs */
void
extern __pdata int16_t ao_ground_accel;
extern __pdata int16_t ao_min_pres;
extern __pdata uint16_t ao_launch_time;
+extern __xdata uint8_t ao_flight_force_idle;
/* Flight thread */
void
* ao_serial.c
*/
-#if !AO_NO_SERIAL_ISR
+#ifndef HAS_SERIAL_1
+#error Please define HAS_SERIAL_1
+#endif
+
+#if HAS_SERIAL_1
void
ao_serial_rx1_isr(void) interrupt 3;
void
ao_serial_tx1_isr(void) interrupt 14;
-#endif
char
ao_serial_getchar(void) __critical;
void
ao_serial_init(void);
+#endif
/*
* ao_gps.c
#define AO_GPS_RUNNING (1 << 5)
#define AO_GPS_DATE_VALID (1 << 6)
+extern __xdata uint16_t ao_gps_tick;
+
struct ao_gps_data {
uint8_t year;
uint8_t month;