#define HAS_TASK 1
#endif
+#ifndef AO_GPIO_TYPE
+#define AO_GPIO_TYPE void *
+#endif
+
+typedef AO_GPIO_TYPE ao_gpio_t;
typedef AO_PORT_TYPE ao_port_t;
#ifndef AO_TICK_TYPE
/* Stop the operating system, beeping and blinking the reason */
void
-ao_panic(uint8_t reason);
+ao_panic(uint8_t reason) __attribute__((noreturn));
/*
* ao_romconfig.c
#define AO_HERTZ 100
#endif
#define AO_MS_TO_TICKS(ms) ((ms) / (1000 / AO_HERTZ))
-#define AO_SEC_TO_TICKS(s) ((s) * AO_HERTZ)
+#define AO_SEC_TO_TICKS(s) ((AO_TICK_TYPE) (s) * AO_HERTZ)
+#define AO_NS_TO_TICKS(ns) ((ns) / (1000000000L / AO_HERTZ))
/* Returns the current time in ticks */
AO_TICK_TYPE
void
ao_delay(AO_TICK_TYPE ticks);
-void
-ao_delay_until(AO_TICK_TYPE target);
-
/* Set the ADC interval */
void
ao_timer_set_adc_interval(uint8_t interval);
#define AO_GPS_NEW_TRACKING 2
extern uint8_t ao_gps_new;
-extern uint16_t ao_gps_tick;
+extern AO_TICK_TYPE ao_gps_tick;
+extern AO_TICK_TYPE ao_gps_utc_tick;
extern uint8_t ao_gps_mutex;
extern struct ao_telemetry_location ao_gps_data;
extern struct ao_telemetry_satellite ao_gps_tracking_data;
* for reporting RSSI. So, now we use these values everywhere
*/
#define AO_RSSI_FROM_RADIO(radio) ((int16_t) ((int8_t) (radio) >> 1) - 74)
-#define AO_RADIO_FROM_RSSI(rssi) (((int8_t) (rssi) + 74) << 1)
+#define AO_RADIO_FROM_RSSI(rssi) ((uint8_t) (((rssi) + 74) << 1))
/*
* ao_radio_recv tacks on rssi and status bytes
#if HAS_RADIO_RECV
uint8_t
-ao_radio_recv(void *d, uint8_t size, uint8_t timeout);
+ao_radio_recv(void *d, uint8_t size, AO_TICK_TYPE timeout);
void
ao_radio_recv_abort(void);
};
extern struct ao_stdio ao_stdios[];
-extern int8_t ao_cur_stdio;
-extern int8_t ao_num_stdios;
+extern uint8_t ao_cur_stdio;
+extern uint8_t ao_num_stdios;
void
flush(void);
uint8_t
ao_echo(void);
-int8_t
+uint8_t
ao_add_stdio(int (*pollchar)(void),
void (*putchar)(char) ,
void (*flush)(void));
char fifo[AO_FIFO_SIZE];
};
-#define ao_fifo_insert(f,c) do { \
- (f).fifo[(f).insert] = (c); \
- (f).insert = ((f).insert + 1) & (AO_FIFO_SIZE-1); \
-} while(0)
+#define ao_fifo_insert(f,c) do { \
+ (f).fifo[(f).insert] = (char) (c); \
+ (f).insert = ((f).insert + 1) & (AO_FIFO_SIZE-1); \
+ } while(0)
-#define ao_fifo_remove(f,c) do {\
- c = (f).fifo[(f).remove]; \
- (f).remove = ((f).remove + 1) & (AO_FIFO_SIZE-1); \
-} while(0)
+#define ao_fifo_remove(f,c) do { \
+ c = (f).fifo[(f).remove]; \
+ (f).remove = ((f).remove + 1) & (AO_FIFO_SIZE-1); \
+ } while(0)
#define ao_fifo_full(f) ((((f).insert + 1) & (AO_FIFO_SIZE-1)) == (f).remove)
#define ao_fifo_mostly(f) ((((f).insert - (f).remove) & (AO_FIFO_SIZE-1)) >= (AO_FIFO_SIZE * 3 / 4))
* ao_freq.c
*/
-int32_t ao_freq_to_set(int32_t freq, int32_t cal);
+uint32_t ao_freq_to_set(uint32_t freq, uint32_t cal);
/*
* ao_ms5607.c