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