projects
/
fw
/
altos
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
altos/telelco: Add per-box RSSI display screen
[fw/altos]
/
src
/
kernel
/
ao.h
diff --git
a/src/kernel/ao.h
b/src/kernel/ao.h
index c00de1fe064644e3189bfd8b024865477676f26e..b3f780f5c7609797c15c895e90b0fa965dcf1a44 100644
(file)
--- a/
src/kernel/ao.h
+++ b/
src/kernel/ao.h
@@
-40,8
+40,18
@@
extern char ao_getchar(void);
#define HAS_TASK 1
#endif
#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;
typedef AO_PORT_TYPE ao_port_t;
+#ifndef AO_TICK_TYPE
+#define AO_TICK_TYPE uint32_t
+#define AO_TICK_SIGNED int32_t
+#endif
+
#if HAS_TASK
#include <ao_task.h>
#else
#if HAS_TASK
#include <ao_task.h>
#else
@@
-75,12
+85,13
@@
typedef AO_PORT_TYPE ao_port_t;
#define AO_PANIC_SELF_TEST_HMC5883 0x40 | 2 /* Self test failure */
#define AO_PANIC_SELF_TEST_MPU6000 0x40 | 3 /* Self test failure */
#define AO_PANIC_SELF_TEST_MPU9250 0x40 | 3 /* Self test failure */
#define AO_PANIC_SELF_TEST_HMC5883 0x40 | 2 /* Self test failure */
#define AO_PANIC_SELF_TEST_MPU6000 0x40 | 3 /* Self test failure */
#define AO_PANIC_SELF_TEST_MPU9250 0x40 | 3 /* Self test failure */
+#define AO_PANIC_SELF_TEST_BMX160 0x40 | 3 /* Self test failure */
#define AO_PANIC_SELF_TEST_MS5607 0x40 | 4 /* Self test failure */
#define AO_PANIC_SELF_TEST_ADS124S0X 0x40 | 5 /* Self test failure */
/* Stop the operating system, beeping and blinking the reason */
void
#define AO_PANIC_SELF_TEST_MS5607 0x40 | 4 /* Self test failure */
#define AO_PANIC_SELF_TEST_ADS124S0X 0x40 | 5 /* Self test failure */
/* 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
/*
* ao_romconfig.c
@@
-99,11
+110,6
@@
extern AO_ROMCONFIG_SYMBOL uint32_t ao_radio_cal;
* ao_timer.c
*/
* ao_timer.c
*/
-#ifndef AO_TICK_TYPE
-#define AO_TICK_TYPE uint32_t
-#define AO_TICK_SIGNED int32_t
-#endif
-
extern volatile AO_TICK_TYPE ao_tick_count;
/* Our timer runs at 100Hz */
extern volatile AO_TICK_TYPE ao_tick_count;
/* Our timer runs at 100Hz */
@@
-111,15
+117,20
@@
extern volatile AO_TICK_TYPE ao_tick_count;
#define AO_HERTZ 100
#endif
#define AO_MS_TO_TICKS(ms) ((ms) / (1000 / AO_HERTZ))
#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
ao_time(void);
/* Returns the current time in ticks */
AO_TICK_TYPE
ao_time(void);
+/* Returns the current time in ns */
+uint64_t
+ao_time_ns(void);
+
/* Suspend the current task until ticks time has passed */
void
/* Suspend the current task until ticks time has passed */
void
-ao_delay(
uint16_t
ticks);
+ao_delay(
AO_TICK_TYPE
ticks);
/* Set the ADC interval */
void
/* Set the ADC interval */
void
@@
-384,7
+395,8
@@
ao_spi_slave(void);
#define AO_GPS_NEW_TRACKING 2
extern uint8_t ao_gps_new;
#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;
extern uint8_t ao_gps_mutex;
extern struct ao_telemetry_location ao_gps_data;
extern struct ao_telemetry_satellite ao_gps_tracking_data;
@@
-526,7
+538,7
@@
struct ao_telemetry_tiny_recv {
* for reporting RSSI. So, now we use these values everywhere
*/
#define AO_RSSI_FROM_RADIO(radio) ((int16_t) ((int8_t) (radio) >> 1) - 74)
* 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
/*
* ao_radio_recv tacks on rssi and status bytes
@@
-598,7
+610,7
@@
ao_radio_send(const void *d, uint8_t size);
#if HAS_RADIO_RECV
uint8_t
#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);
void
ao_radio_recv_abort(void);
@@
-719,8
+731,8
@@
struct ao_stdio {
};
extern struct ao_stdio ao_stdios[];
};
extern struct ao_stdio ao_stdios[];
-extern int8_t ao_cur_stdio;
-extern int8_t ao_num_stdios;
+extern
u
int8_t ao_cur_stdio;
+extern
u
int8_t ao_num_stdios;
void
flush(void);
void
flush(void);
@@
-730,7
+742,7
@@
extern uint8_t ao_stdin_ready;
uint8_t
ao_echo(void);
uint8_t
ao_echo(void);
-int8_t
+
u
int8_t
ao_add_stdio(int (*pollchar)(void),
void (*putchar)(char) ,
void (*flush)(void));
ao_add_stdio(int (*pollchar)(void),
void (*putchar)(char) ,
void (*flush)(void));
@@
-744,9
+756,6
@@
enum ao_igniter {
ao_igniter_main = 1
};
ao_igniter_main = 1
};
-void
-ao_ignite(enum ao_igniter igniter);
-
enum ao_igniter_status {
ao_igniter_unknown, /* unknown status (ambiguous voltage) */
ao_igniter_ready, /* continuity detected */
enum ao_igniter_status {
ao_igniter_unknown, /* unknown status (ambiguous voltage) */
ao_igniter_ready, /* continuity detected */
@@
-826,15
+835,15
@@
struct ao_fifo {
char fifo[AO_FIFO_SIZE];
};
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))
#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))
@@
-933,12
+942,6
@@
ao_log_single(void);
#define AO_TELEPYRO_NUM_ADC 9
#define AO_TELEPYRO_NUM_ADC 9
-#ifndef ao_xmemcpy
-#define ao_xmemcpy(d,s,c) memcpy(d,s,c)
-#define ao_xmemset(d,v,c) memset(d,v,c)
-#define ao_xmemcmp(d,s,c) memcmp(d,s,c)
-#endif
-
/*
* ao_terraui.c
*/
/*
* ao_terraui.c
*/
@@
-969,7
+972,7
@@
ao_sqrt(uint32_t op);
* ao_freq.c
*/
* ao_freq.c
*/
-
int32_t ao_freq_to_set(int32_t freq,
int32_t cal);
+
uint32_t ao_freq_to_set(uint32_t freq, u
int32_t cal);
/*
* ao_ms5607.c
/*
* ao_ms5607.c