X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2Fkernel%2Fao.h;h=806b4946fecb57bf891826750b3b79f7a6884c53;hb=3d276e01ba96e8174e590b101cc9ef002e6cb67b;hp=cdcdadc34d8bc1f71f62f603b60d2ddf2404cca2;hpb=684741765117611b7d666efbdfafd87c6199752c;p=fw%2Faltos diff --git a/src/kernel/ao.h b/src/kernel/ao.h index cdcdadc3..806b4946 100644 --- a/src/kernel/ao.h +++ b/src/kernel/ao.h @@ -42,6 +42,11 @@ extern char ao_getchar(void); 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 #else @@ -75,21 +80,31 @@ 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_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 -ao_panic(uint8_t reason); +ao_panic(uint8_t reason) __attribute__((noreturn)); /* - * ao_timer.c + * ao_romconfig.c */ -#ifndef AO_TICK_TYPE -#define AO_TICK_TYPE uint16_t -#define AO_TICK_SIGNED int16_t +#define AO_ROMCONFIG_VERSION 2 + +extern AO_ROMCONFIG_SYMBOL uint16_t ao_romconfig_version; +extern AO_ROMCONFIG_SYMBOL uint16_t ao_romconfig_check; +extern AO_ROMCONFIG_SYMBOL uint16_t ao_serial_number; +#if HAS_RADIO +extern AO_ROMCONFIG_SYMBOL uint32_t ao_radio_cal; #endif +/* + * ao_timer.c + */ + extern volatile AO_TICK_TYPE ao_tick_count; /* Our timer runs at 100Hz */ @@ -97,24 +112,24 @@ 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_SEC_TO_TICKS(s) ((s) * AO_HERTZ) +#define AO_SEC_TO_TICKS(s) ((AO_TICK_TYPE) (s) * AO_HERTZ) /* 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 -ao_delay(uint16_t ticks); +ao_delay(AO_TICK_TYPE ticks); /* Set the ADC interval */ void ao_timer_set_adc_interval(uint8_t interval); -/* Timer interrupt */ -void -ao_timer_isr(void) ao_arch_interrupt(9); - /* Initialize the timer */ void ao_timer_init(void); @@ -165,7 +180,7 @@ void ao_put_string(const char *s); void -ao_cmd_readline(void); +ao_cmd_readline(const char *prompt); char ao_cmd_lex(void); @@ -234,7 +249,7 @@ ao_cmd_filter(void); #include #endif -#if LEDS_AVAILABLE +#if LEDS_AVAILABLE || HAS_LED #include #endif @@ -374,7 +389,7 @@ ao_spi_slave(void); #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 uint8_t ao_gps_mutex; extern struct ao_telemetry_location ao_gps_data; extern struct ao_telemetry_satellite ao_gps_tracking_data; @@ -581,9 +596,6 @@ extern int8_t ao_radio_rssi; #define HAS_RADIO_RATE HAS_RADIO #endif -void -ao_radio_general_isr(void) ao_arch_interrupt(16); - #if HAS_RADIO_XMIT void ao_radio_send(const void *d, uint8_t size); @@ -591,7 +603,7 @@ ao_radio_send(const void *d, uint8_t size); #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); @@ -712,8 +724,8 @@ struct ao_stdio { }; 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); @@ -723,7 +735,7 @@ extern uint8_t ao_stdin_ready; uint8_t ao_echo(void); -int8_t +uint8_t ao_add_stdio(int (*pollchar)(void), void (*putchar)(char) , void (*flush)(void)); @@ -737,9 +749,6 @@ enum ao_igniter { 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 */ @@ -926,12 +935,6 @@ ao_log_single(void); #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 */ @@ -944,9 +947,6 @@ ao_terraui_init(void); */ #ifdef BATTERY_PIN -void -ao_battery_isr(void) ao_arch_interrupt(1); - uint16_t ao_battery_get(void);