From d24a436220215b5ffdab87512af084f6e429f361 Mon Sep 17 00:00:00 2001 From: Rahix <rahix@rahix.de> Date: Wed, 7 Apr 2021 22:54:37 +0200 Subject: [PATCH] chore(epicardium): Move drivers into separate subdir --- epicardium/ble/ess.c | 1 + epicardium/ble/uart.c | 1 + epicardium/{modules => drivers}/MAX30003.h | 0 epicardium/{modules => drivers}/bhi.c | 1 + epicardium/{modules => drivers}/bme680.c | 1 + epicardium/{modules => drivers}/bsec.c | 2 +- epicardium/{modules => drivers}/buttons.c | 0 epicardium/{modules => drivers}/display.c | 0 epicardium/drivers/drivers.h | 99 +++++++++++++++++++ epicardium/{modules => drivers}/gpio.c | 0 epicardium/{modules => drivers}/leds.c | 2 +- .../{modules => drivers}/light_sensor.c | 0 epicardium/{modules => drivers}/max30001.c | 0 epicardium/{modules => drivers}/max86150.c | 1 - epicardium/drivers/meson.build | 21 ++++ epicardium/{modules => drivers}/pmic.c | 1 + epicardium/{modules => drivers}/rng.c | 4 +- epicardium/{modules => drivers}/rtc.c | 0 epicardium/{modules => drivers}/serial.c | 1 + epicardium/{modules => drivers}/sleep.c | 0 epicardium/{modules => drivers}/usb.c | 0 epicardium/{modules => drivers}/vibra.c | 0 epicardium/{modules => drivers}/watchdog.c | 0 epicardium/{modules => drivers}/ws2812.c | 3 +- epicardium/main.c | 1 + epicardium/meson.build | 2 + epicardium/modules/hardware.c | 1 + epicardium/modules/meson.build | 19 ---- epicardium/modules/modules.h | 88 ----------------- epicardium/os/panic.c | 1 + epicardium/usb/cdcacm.c | 1 + 31 files changed, 138 insertions(+), 113 deletions(-) rename epicardium/{modules => drivers}/MAX30003.h (100%) rename epicardium/{modules => drivers}/bhi.c (99%) rename epicardium/{modules => drivers}/bme680.c (99%) rename epicardium/{modules => drivers}/bsec.c (99%) rename epicardium/{modules => drivers}/buttons.c (100%) rename epicardium/{modules => drivers}/display.c (100%) create mode 100644 epicardium/drivers/drivers.h rename epicardium/{modules => drivers}/gpio.c (100%) rename epicardium/{modules => drivers}/leds.c (99%) rename epicardium/{modules => drivers}/light_sensor.c (100%) rename epicardium/{modules => drivers}/max30001.c (100%) rename epicardium/{modules => drivers}/max86150.c (99%) create mode 100644 epicardium/drivers/meson.build rename epicardium/{modules => drivers}/pmic.c (99%) rename epicardium/{modules => drivers}/rng.c (97%) rename epicardium/{modules => drivers}/rtc.c (100%) rename epicardium/{modules => drivers}/serial.c (99%) rename epicardium/{modules => drivers}/sleep.c (100%) rename epicardium/{modules => drivers}/usb.c (100%) rename epicardium/{modules => drivers}/vibra.c (100%) rename epicardium/{modules => drivers}/watchdog.c (100%) rename epicardium/{modules => drivers}/ws2812.c (97%) diff --git a/epicardium/ble/ess.c b/epicardium/ble/ess.c index c8cd6eff..549112f3 100644 --- a/epicardium/ble/ess.c +++ b/epicardium/ble/ess.c @@ -11,6 +11,7 @@ #include "os/log.h" #include "os/work_queue.h" #include "modules/modules.h" +#include "drivers/drivers.h" #include "ble/ble_api.h" diff --git a/epicardium/ble/uart.c b/epicardium/ble/uart.c index 55bf3ee8..ada454ba 100644 --- a/epicardium/ble/uart.c +++ b/epicardium/ble/uart.c @@ -2,6 +2,7 @@ #include "cccd.h" #include "modules/modules.h" +#include "drivers/drivers.h" #include "wsf_types.h" #include "util/bstream.h" diff --git a/epicardium/modules/MAX30003.h b/epicardium/drivers/MAX30003.h similarity index 100% rename from epicardium/modules/MAX30003.h rename to epicardium/drivers/MAX30003.h diff --git a/epicardium/modules/bhi.c b/epicardium/drivers/bhi.c similarity index 99% rename from epicardium/modules/bhi.c rename to epicardium/drivers/bhi.c index 4d919d41..dc967374 100644 --- a/epicardium/modules/bhi.c +++ b/epicardium/drivers/bhi.c @@ -14,6 +14,7 @@ #include "epicardium.h" #include "os/log.h" #include "modules/modules.h" +#include "drivers/drivers.h" #include "modules/stream.h" /* BHI160 Firmware Blob. Contents are defined in libcard10. */ diff --git a/epicardium/modules/bme680.c b/epicardium/drivers/bme680.c similarity index 99% rename from epicardium/modules/bme680.c rename to epicardium/drivers/bme680.c index 22dd0900..6d2922f2 100644 --- a/epicardium/modules/bme680.c +++ b/epicardium/drivers/bme680.c @@ -1,6 +1,7 @@ #include "epicardium.h" #include "modules/modules.h" #include "os/log.h" +#include "drivers/drivers.h" #include "card10.h" diff --git a/epicardium/modules/bsec.c b/epicardium/drivers/bsec.c similarity index 99% rename from epicardium/modules/bsec.c rename to epicardium/drivers/bsec.c index cf38febe..0e89cad2 100644 --- a/epicardium/modules/bsec.c +++ b/epicardium/drivers/bsec.c @@ -7,7 +7,7 @@ #include "ble/ess.h" #include "epicardium.h" -#include "modules.h" +#include "modules/modules.h" #include "os/config.h" #include "os/log.h" diff --git a/epicardium/modules/buttons.c b/epicardium/drivers/buttons.c similarity index 100% rename from epicardium/modules/buttons.c rename to epicardium/drivers/buttons.c diff --git a/epicardium/modules/display.c b/epicardium/drivers/display.c similarity index 100% rename from epicardium/modules/display.c rename to epicardium/drivers/display.c diff --git a/epicardium/drivers/drivers.h b/epicardium/drivers/drivers.h new file mode 100644 index 00000000..1f2f22fb --- /dev/null +++ b/epicardium/drivers/drivers.h @@ -0,0 +1,99 @@ +#ifndef DRIVERS_H +#define DRIVERS_H + +#include "FreeRTOS.h" +#include "gpio.h" +#include "os/mutex.h" +#include "epicardium.h" + +#include <stdint.h> +#include <stdbool.h> + +/* ---------- Serial ------------------------------------------------------- */ +#define SERIAL_READ_BUFFER_SIZE 128 +#define SERIAL_WRITE_STREAM_BUFFER_SIZE 512 +void serial_init(); +void vSerialTask(void *pvParameters); +void serial_enqueue_char(char chr); +void serial_flush(void); +extern TaskHandle_t serial_task_id; +/* Turn off the print queue and do prints synchroneous from now on. */ +void serial_return_to_synchronous(); + +// For the eSetBit xTaskNotify task semaphore trigger +enum serial_notify{ + SERIAL_WRITE_NOTIFY = 0x01, + SERIAL_READ_NOTIFY = 0x02, +}; + +/* ---------- PMIC --------------------------------------------------------- */ +void vPmicTask(void *pvParameters); + +/* ---------- Watchdog ----------------------------------------------------- */ +void watchdog_init(); +void watchdog_clearer_init(); + +/* Critical battery voltage */ +#define BATTERY_CRITICAL 3.40f + +enum pmic_amux_signal { + PMIC_AMUX_DISABLED = 0x0, + PMIC_AMUX_CHGIN_U = 0x1, + PMIC_AMUX_CHGIN_I = 0x2, + PMIC_AMUX_BATT_U = 0x3, + PMIC_AMUX_BATT_CHG_I = 0x4, + PMIC_AMUX_BATT_DIS_I = 0x5, + PMIC_AMUX_BATT_NULL_I = 0x6, + PMIC_AMUX_THM_U = 0x7, + PMIC_AMUX_TBIAS_U = 0x8, + PMIC_AMUX_AGND_U = 0x9, + PMIC_AMUX_SYS_U = 0xA, + _PMIC_AMUX_MAX, +}; + +/* + * Read a value from the PMIC's AMUX. The result is already converted into its + * proper unit. See the MAX77650 datasheet for details. + */ +int pmic_read_amux(enum pmic_amux_signal sig, float *result); + + +/* ---------- Display ------------------------------------------------------ */ +/* Forces an unlock of the display. Only to be used in Epicardium */ +void disp_forcelock(); + +/* ---------- BHI160 ------------------------------------------------------- */ +#define BHI160_FIFO_SIZE 128 +#define BHI160_MUTEX_WAIT_MS 50 +void vBhi160Task(void *pvParameters); + +/* ---------- BME680 ------------------------------------------------------- */ +void bme680_periodic(int period); + +/* ---------- MAX86150 ----------------------------------------------------- */ +#define MAX86150_MUTEX_WAIT_MS 50 +void vMAX86150Task(void *pvParameters); +void max86150_mutex_init(void); + + +/* ---------- MAX30001 ----------------------------------------------------- */ +void vMAX30001Task(void *pvParameters); +void max30001_mutex_init(void); + +/* ---------- GPIO --------------------------------------------------------- */ +extern gpio_cfg_t gpio_configs[]; + +/* ---------- BSEC / BME680 ------------------------------------------------ */ +int bsec_activate(void); +void vBSECTask(void *pvParameters); +bool bsec_active(void); +struct bme680_sensor_data; +int bsec_read_bme680(struct bme680_sensor_data *data); + +/* ---------- Sleep -------------------------------------------------------- */ +void sleep_deepsleep(void); + +/* ---------- RNG ---------------------------------------------------------- */ +void rng_init(void); + +#endif /* DRIVERS_H */ diff --git a/epicardium/modules/gpio.c b/epicardium/drivers/gpio.c similarity index 100% rename from epicardium/modules/gpio.c rename to epicardium/drivers/gpio.c diff --git a/epicardium/modules/leds.c b/epicardium/drivers/leds.c similarity index 99% rename from epicardium/modules/leds.c rename to epicardium/drivers/leds.c index 64cc8fea..22553a81 100644 --- a/epicardium/modules/leds.c +++ b/epicardium/drivers/leds.c @@ -4,7 +4,7 @@ #include "timers.h" #include "task.h" #include "epicardium.h" -#include "modules.h" +#include "modules/modules.h" #include <stdbool.h> diff --git a/epicardium/modules/light_sensor.c b/epicardium/drivers/light_sensor.c similarity index 100% rename from epicardium/modules/light_sensor.c rename to epicardium/drivers/light_sensor.c diff --git a/epicardium/modules/max30001.c b/epicardium/drivers/max30001.c similarity index 100% rename from epicardium/modules/max30001.c rename to epicardium/drivers/max30001.c diff --git a/epicardium/modules/max86150.c b/epicardium/drivers/max86150.c similarity index 99% rename from epicardium/modules/max86150.c rename to epicardium/drivers/max86150.c index 95c23e5f..5c608199 100644 --- a/epicardium/modules/max86150.c +++ b/epicardium/drivers/max86150.c @@ -3,7 +3,6 @@ #include <stdio.h> #include "max86150.h" #include "epicardium.h" -#include "modules.h" #include "os/log.h" #include "modules/stream.h" #include "gpio.h" diff --git a/epicardium/drivers/meson.build b/epicardium/drivers/meson.build new file mode 100644 index 00000000..25b394f4 --- /dev/null +++ b/epicardium/drivers/meson.build @@ -0,0 +1,21 @@ +driver_sources = files( + 'bhi.c', + 'bsec.c', + 'bme680.c', + 'buttons.c', + 'display.c', + 'gpio.c', + 'leds.c', + 'light_sensor.c', + 'max86150.c', + 'max30001.c', + 'pmic.c', + 'rtc.c', + 'serial.c', + 'sleep.c', + 'rng.c', + 'usb.c', + 'vibra.c', + 'watchdog.c', + 'ws2812.c' +) diff --git a/epicardium/modules/pmic.c b/epicardium/drivers/pmic.c similarity index 99% rename from epicardium/modules/pmic.c rename to epicardium/drivers/pmic.c index b80e6202..6bb033fd 100644 --- a/epicardium/modules/pmic.c +++ b/epicardium/drivers/pmic.c @@ -1,5 +1,6 @@ #include "epicardium.h" #include "modules/modules.h" +#include "drivers/drivers.h" #include "os/log.h" #include "os/config.h" diff --git a/epicardium/modules/rng.c b/epicardium/drivers/rng.c similarity index 97% rename from epicardium/modules/rng.c rename to epicardium/drivers/rng.c index 3be1d66b..f62cd7ea 100644 --- a/epicardium/modules/rng.c +++ b/epicardium/drivers/rng.c @@ -1,6 +1,6 @@ #include "epicardium.h" - -#include "modules.h" +#include "modules/modules.h" +#include "drivers/drivers.h" #include "MAX77650-Arduino-Library.h" #include "tiny-AES-c/aes.h" diff --git a/epicardium/modules/rtc.c b/epicardium/drivers/rtc.c similarity index 100% rename from epicardium/modules/rtc.c rename to epicardium/drivers/rtc.c diff --git a/epicardium/modules/serial.c b/epicardium/drivers/serial.c similarity index 99% rename from epicardium/modules/serial.c rename to epicardium/drivers/serial.c index ad877674..5cdfec13 100644 --- a/epicardium/modules/serial.c +++ b/epicardium/drivers/serial.c @@ -1,6 +1,7 @@ #include "epicardium.h" #include "os/log.h" #include "modules/modules.h" +#include "drivers/drivers.h" #include "max32665.h" #include "usb/cdcacm.h" diff --git a/epicardium/modules/sleep.c b/epicardium/drivers/sleep.c similarity index 100% rename from epicardium/modules/sleep.c rename to epicardium/drivers/sleep.c diff --git a/epicardium/modules/usb.c b/epicardium/drivers/usb.c similarity index 100% rename from epicardium/modules/usb.c rename to epicardium/drivers/usb.c diff --git a/epicardium/modules/vibra.c b/epicardium/drivers/vibra.c similarity index 100% rename from epicardium/modules/vibra.c rename to epicardium/drivers/vibra.c diff --git a/epicardium/modules/watchdog.c b/epicardium/drivers/watchdog.c similarity index 100% rename from epicardium/modules/watchdog.c rename to epicardium/drivers/watchdog.c diff --git a/epicardium/modules/ws2812.c b/epicardium/drivers/ws2812.c similarity index 97% rename from epicardium/modules/ws2812.c rename to epicardium/drivers/ws2812.c index 5fb48d53..9bcb8afd 100644 --- a/epicardium/modules/ws2812.c +++ b/epicardium/drivers/ws2812.c @@ -5,7 +5,8 @@ #include "epicardium.h" #include "max32665.h" #include "gpio.h" -#include "modules.h" +#include "modules/modules.h" +#include "drivers/drivers.h" #include <stdbool.h> diff --git a/epicardium/main.c b/epicardium/main.c index a9f32979..160ff642 100644 --- a/epicardium/main.c +++ b/epicardium/main.c @@ -2,6 +2,7 @@ #include "os/log.h" #include "os/work_queue.h" #include "modules/filesystem.h" +#include "drivers/drivers.h" #include "os/config.h" #include "card10-version.h" diff --git a/epicardium/meson.build b/epicardium/meson.build index 05a83935..6fd13916 100644 --- a/epicardium/meson.build +++ b/epicardium/meson.build @@ -66,6 +66,7 @@ freertos = static_library( ########################################################################## subdir('modules/') +subdir('drivers/') subdir('ble/') subdir('os/') @@ -101,6 +102,7 @@ elf = executable( 'fs/fs_util.c', module_sources, os_sources, + driver_sources, l0der_sources, ble_sources, version_hdr, diff --git a/epicardium/modules/hardware.c b/epicardium/modules/hardware.c index 42442638..14fa73d6 100644 --- a/epicardium/modules/hardware.c +++ b/epicardium/modules/hardware.c @@ -6,6 +6,7 @@ #include "os/log.h" #include "modules/modules.h" #include "modules/stream.h" +#include "drivers/drivers.h" #include "card10.h" #include "display.h" diff --git a/epicardium/modules/meson.build b/epicardium/modules/meson.build index 8b1110ce..2bf9ecd6 100644 --- a/epicardium/modules/meson.build +++ b/epicardium/modules/meson.build @@ -1,29 +1,10 @@ module_sources = files( - 'bhi.c', - 'bsec.c', - 'bme680.c', - 'buttons.c', 'dispatcher.c', - 'display.c', 'fileops.c', - 'gpio.c', 'hardware.c', 'hw-lock.c', 'interrupts.c', - 'leds.c', 'lifecycle.c', - 'light_sensor.c', - 'max86150.c', - 'max30001.c', 'personal_state.c', - 'pmic.c', - 'rtc.c', - 'serial.c', - 'sleep.c', 'stream.c', - 'rng.c', - 'usb.c', - 'vibra.c', - 'watchdog.c', - 'ws2812.c' ) diff --git a/epicardium/modules/modules.h b/epicardium/modules/modules.h index a873d372..98e69aa0 100644 --- a/epicardium/modules/modules.h +++ b/epicardium/modules/modules.h @@ -37,60 +37,11 @@ void interrupt_trigger_unsafe(api_int_id_t id) __attribute__((deprecated( ))); void vInterruptsTask(void *pvParameters); -/* ---------- Serial ------------------------------------------------------- */ -#define SERIAL_READ_BUFFER_SIZE 128 -#define SERIAL_WRITE_STREAM_BUFFER_SIZE 512 -void serial_init(); -void vSerialTask(void *pvParameters); -void serial_enqueue_char(char chr); -void serial_flush(void); -extern TaskHandle_t serial_task_id; -/* Turn off the print queue and do prints synchroneous from now on. */ -void serial_return_to_synchronous(); - -// For the eSetBit xTaskNotify task semaphore trigger -enum serial_notify{ - SERIAL_WRITE_NOTIFY = 0x01, - SERIAL_READ_NOTIFY = 0x02, -}; - /* ---------- LED Animation / Personal States ------------------------------ */ #define PERSONAL_STATE_LED 14 void vLedTask(void *pvParameters); int personal_state_enabled(); -/* ---------- PMIC --------------------------------------------------------- */ -void vPmicTask(void *pvParameters); - -/* ---------- Watchdog ----------------------------------------------------- */ -void watchdog_init(); -void watchdog_clearer_init(); - -/* Critical battery voltage */ -#define BATTERY_CRITICAL 3.40f - -enum pmic_amux_signal { - PMIC_AMUX_DISABLED = 0x0, - PMIC_AMUX_CHGIN_U = 0x1, - PMIC_AMUX_CHGIN_I = 0x2, - PMIC_AMUX_BATT_U = 0x3, - PMIC_AMUX_BATT_CHG_I = 0x4, - PMIC_AMUX_BATT_DIS_I = 0x5, - PMIC_AMUX_BATT_NULL_I = 0x6, - PMIC_AMUX_THM_U = 0x7, - PMIC_AMUX_TBIAS_U = 0x8, - PMIC_AMUX_AGND_U = 0x9, - PMIC_AMUX_SYS_U = 0xA, - _PMIC_AMUX_MAX, -}; - -/* - * Read a value from the PMIC's AMUX. The result is already converted into its - * proper unit. See the MAX77650 datasheet for details. - */ -int pmic_read_amux(enum pmic_amux_signal sig, float *result); - - /* ---------- BLE ---------------------------------------------------------- */ void vBleTask(void *pvParameters); bool ble_is_enabled(void); @@ -111,43 +62,4 @@ void hwlock_acquire(enum hwlock_periph p); int hwlock_acquire_nonblock(enum hwlock_periph p); void hwlock_release(enum hwlock_periph p); -/* ---------- Display ------------------------------------------------------ */ -/* Forces an unlock of the display. Only to be used in Epicardium */ -void disp_forcelock(); - -/* ---------- BHI160 ------------------------------------------------------- */ -#define BHI160_FIFO_SIZE 128 -#define BHI160_MUTEX_WAIT_MS 50 -void vBhi160Task(void *pvParameters); - -/* ---------- BME680 ------------------------------------------------------- */ -void bme680_periodic(int period); - -/* ---------- MAX86150 ----------------------------------------------------- */ -#define MAX86150_MUTEX_WAIT_MS 50 -void vMAX86150Task(void *pvParameters); -void max86150_mutex_init(void); - - -/* ---------- MAX30001 ----------------------------------------------------- */ -void vMAX30001Task(void *pvParameters); -void max30001_mutex_init(void); - -/* ---------- GPIO --------------------------------------------------------- */ -extern gpio_cfg_t gpio_configs[]; - -/* ---------- BSEC / BME680 ------------------------------------------------ */ -int bsec_activate(void); -void vBSECTask(void *pvParameters); -bool bsec_active(void); -struct bme680_sensor_data; -int bsec_read_bme680(struct bme680_sensor_data *data); - -/* ---------- Sleep -------------------------------------------------------- */ -void sleep_deepsleep(void); - - -/* ---------- RNG ---------------------------------------------------------- */ -void rng_init(void); - #endif /* MODULES_H */ diff --git a/epicardium/os/panic.c b/epicardium/os/panic.c index 64680989..fc8ab0c6 100644 --- a/epicardium/os/panic.c +++ b/epicardium/os/panic.c @@ -11,6 +11,7 @@ #include "os/log.h" #include "modules/modules.h" +#include "drivers/drivers.h" #include "card10.h" #include "card10-version.h" diff --git a/epicardium/usb/cdcacm.c b/epicardium/usb/cdcacm.c index 6bd17a13..db747198 100644 --- a/epicardium/usb/cdcacm.c +++ b/epicardium/usb/cdcacm.c @@ -18,6 +18,7 @@ #include "os/log.h" #include "modules/modules.h" +#include "drivers/drivers.h" #include "FreeRTOS.h" #include "task.h" -- GitLab