From 753cc1a1a464fcf15a3a4c6f2acf285a0b2028be Mon Sep 17 00:00:00 2001
From: Rahix <rahix@rahix.de>
Date: Fri, 9 Apr 2021 22:42:17 +0200
Subject: [PATCH] chore(epicardium): Move all core1 code into a separate subdir

---
 epicardium/ble/epic_ble_api.c                 |  1 +
 epicardium/drivers/bhi.c                      |  1 +
 epicardium/drivers/max30001.c                 |  1 +
 epicardium/drivers/max86150.c                 |  1 +
 epicardium/drivers/pmic.c                     |  1 +
 epicardium/drivers/rtc.c                      |  1 +
 epicardium/drivers/serial.c                   |  1 +
 epicardium/fs/filesystem_fat.c                |  1 +
 epicardium/main.c                             |  2 ++
 epicardium/meson.build                        |  2 ++
 epicardium/modules/hardware.c                 |  2 ++
 epicardium/modules/meson.build                |  3 ---
 epicardium/modules/modules.h                  | 19 -------------------
 epicardium/support.c                          |  2 +-
 .../{modules => user_core}/dispatcher.c       |  0
 .../{modules => user_core}/interrupts.c       |  0
 epicardium/user_core/interrupts.h             | 12 ++++++++++++
 epicardium/{modules => user_core}/lifecycle.c |  1 +
 epicardium/user_core/meson.build              |  5 +++++
 epicardium/user_core/user_core.h              | 14 ++++++++++++++
 20 files changed, 47 insertions(+), 23 deletions(-)
 rename epicardium/{modules => user_core}/dispatcher.c (100%)
 rename epicardium/{modules => user_core}/interrupts.c (100%)
 create mode 100644 epicardium/user_core/interrupts.h
 rename epicardium/{modules => user_core}/lifecycle.c (99%)
 create mode 100644 epicardium/user_core/meson.build
 create mode 100644 epicardium/user_core/user_core.h

diff --git a/epicardium/ble/epic_ble_api.c b/epicardium/ble/epic_ble_api.c
index b83eafe3c..92bb398b5 100644
--- a/epicardium/ble/epic_ble_api.c
+++ b/epicardium/ble/epic_ble_api.c
@@ -3,6 +3,7 @@
 #include "epicardium.h"
 #include "os/core.h"
 #include "modules/modules.h"
+#include "user_core/interrupts.h"
 
 #include "wsf_buf.h"
 #include "app_api.h"
diff --git a/epicardium/drivers/bhi.c b/epicardium/drivers/bhi.c
index 1c9e30f21..2107f3f8b 100644
--- a/epicardium/drivers/bhi.c
+++ b/epicardium/drivers/bhi.c
@@ -16,6 +16,7 @@
 #include "modules/modules.h"
 #include "drivers/drivers.h"
 #include "modules/stream.h"
+#include "user_core/interrupts.h"
 
 /* BHI160 Firmware Blob.  Contents are defined in libcard10. */
 extern uint8_t bhy1_fw[];
diff --git a/epicardium/drivers/max30001.c b/epicardium/drivers/max30001.c
index dfb7f920d..e7d1f964a 100644
--- a/epicardium/drivers/max30001.c
+++ b/epicardium/drivers/max30001.c
@@ -16,6 +16,7 @@
 #include "modules/modules.h"
 #include "modules/stream.h"
 #include "os/mutex.h"
+#include "user_core/interrupts.h"
 
 /* Interrupt Pin */
 static const gpio_cfg_t max30001_interrupt_pin = {
diff --git a/epicardium/drivers/max86150.c b/epicardium/drivers/max86150.c
index 258b4d7f8..7f1cdddaa 100644
--- a/epicardium/drivers/max86150.c
+++ b/epicardium/drivers/max86150.c
@@ -7,6 +7,7 @@
 #include "modules/stream.h"
 #include "gpio.h"
 #include "pmic.h"
+#include "user_core/interrupts.h"
 
 #include "FreeRTOS.h"
 #include "task.h"
diff --git a/epicardium/drivers/pmic.c b/epicardium/drivers/pmic.c
index dabd12e2d..aeb6dc6ab 100644
--- a/epicardium/drivers/pmic.c
+++ b/epicardium/drivers/pmic.c
@@ -3,6 +3,7 @@
 #include "drivers/drivers.h"
 #include "os/core.h"
 #include "os/config.h"
+#include "user_core/user_core.h"
 
 #include "card10.h"
 #include "pmic.h"
diff --git a/epicardium/drivers/rtc.c b/epicardium/drivers/rtc.c
index fdd3e4788..00b677f44 100644
--- a/epicardium/drivers/rtc.c
+++ b/epicardium/drivers/rtc.c
@@ -1,6 +1,7 @@
 #include "epicardium.h"
 #include "os/core.h"
 #include "modules/modules.h"
+#include "user_core/interrupts.h"
 
 #include "FreeRTOS.h"
 #include "task.h"
diff --git a/epicardium/drivers/serial.c b/epicardium/drivers/serial.c
index 4be8c143b..0b39e4931 100644
--- a/epicardium/drivers/serial.c
+++ b/epicardium/drivers/serial.c
@@ -2,6 +2,7 @@
 #include "os/core.h"
 #include "modules/modules.h"
 #include "drivers/drivers.h"
+#include "user_core/interrupts.h"
 
 #include "max32665.h"
 #include "usb/cdcacm.h"
diff --git a/epicardium/fs/filesystem_fat.c b/epicardium/fs/filesystem_fat.c
index c3fc84ee6..6fe9dfc62 100644
--- a/epicardium/fs/filesystem_fat.c
+++ b/epicardium/fs/filesystem_fat.c
@@ -20,6 +20,7 @@
 
 #include "fs/internal.h"
 #include "modules/filesystem.h"
+#include "user_core/user_core.h"
 #include "epicardium.h"
 #include "card10.h"
 #include "os/core.h"
diff --git a/epicardium/main.c b/epicardium/main.c
index 0bf4db773..48c78e928 100644
--- a/epicardium/main.c
+++ b/epicardium/main.c
@@ -3,8 +3,10 @@
 #include "os/work_queue.h"
 #include "modules/filesystem.h"
 #include "drivers/drivers.h"
+#include "user_core/user_core.h"
 #include "os/config.h"
 #include "card10-version.h"
+#include "user_core/interrupts.h"
 
 #include "gfx.h"
 #include "display.h"
diff --git a/epicardium/meson.build b/epicardium/meson.build
index 6fd139165..27319b814 100644
--- a/epicardium/meson.build
+++ b/epicardium/meson.build
@@ -67,6 +67,7 @@ freertos = static_library(
 
 subdir('modules/')
 subdir('drivers/')
+subdir('user_core/')
 subdir('ble/')
 subdir('os/')
 
@@ -102,6 +103,7 @@ elf = executable(
   'fs/fs_util.c',
   module_sources,
   os_sources,
+  user_core_sources,
   driver_sources,
   l0der_sources,
   ble_sources,
diff --git a/epicardium/modules/hardware.c b/epicardium/modules/hardware.c
index ed735154b..106204505 100644
--- a/epicardium/modules/hardware.c
+++ b/epicardium/modules/hardware.c
@@ -7,6 +7,8 @@
 #include "modules/modules.h"
 #include "modules/stream.h"
 #include "drivers/drivers.h"
+#include "user_core/interrupts.h"
+#include "user_core/user_core.h"
 
 #include "card10.h"
 #include "display.h"
diff --git a/epicardium/modules/meson.build b/epicardium/modules/meson.build
index 2bf9ecd66..4de291039 100644
--- a/epicardium/modules/meson.build
+++ b/epicardium/modules/meson.build
@@ -1,10 +1,7 @@
 module_sources = files(
-  'dispatcher.c',
   'fileops.c',
   'hardware.c',
   'hw-lock.c',
-  'interrupts.c',
-  'lifecycle.c',
   'personal_state.c',
   'stream.c',
 )
diff --git a/epicardium/modules/modules.h b/epicardium/modules/modules.h
index 880c241f2..408cc395f 100644
--- a/epicardium/modules/modules.h
+++ b/epicardium/modules/modules.h
@@ -9,30 +9,11 @@
 #include <stdint.h>
 #include <stdbool.h>
 
-/* ---------- Dispatcher --------------------------------------------------- */
-void vApiDispatcher(void *pvParameters);
-void dispatcher_mutex_init(void);
-extern struct mutex api_mutex;
-extern TaskHandle_t dispatcher_task_id;
-
 /* ---------- Hardware Init & Reset ---------------------------------------- */
 int hardware_early_init(void);
 int hardware_init(void);
 int hardware_reset(void);
 
-/* ---------- Lifecycle ---------------------------------------------------- */
-void vLifecycleTask(void *pvParameters);
-void return_to_menu(void);
-
-/* ---------- Interrupts --------------------------------------------------- */
-void interrupt_init(void);
-void interrupt_trigger(api_int_id_t id);
-void interrupt_trigger_sync(api_int_id_t id);
-void interrupt_trigger_unsafe(api_int_id_t id) __attribute__((deprecated(
-	"interrupt_trigger_unsafe() is racy and only exists for legacy code."
-)));
-void vInterruptsTask(void *pvParameters);
-
 /* ---------- LED Animation / Personal States ------------------------------ */
 #define PERSONAL_STATE_LED 14
 void vLedTask(void *pvParameters);
diff --git a/epicardium/support.c b/epicardium/support.c
index 728ecd514..cbb90f8ba 100644
--- a/epicardium/support.c
+++ b/epicardium/support.c
@@ -6,7 +6,7 @@
 #include "task.h"
 
 #include "api/dispatcher.h"
-#include "modules/modules.h"
+#include "user_core/user_core.h"
 #include "os/core.h"
 
 #include "card10.h"
diff --git a/epicardium/modules/dispatcher.c b/epicardium/user_core/dispatcher.c
similarity index 100%
rename from epicardium/modules/dispatcher.c
rename to epicardium/user_core/dispatcher.c
diff --git a/epicardium/modules/interrupts.c b/epicardium/user_core/interrupts.c
similarity index 100%
rename from epicardium/modules/interrupts.c
rename to epicardium/user_core/interrupts.c
diff --git a/epicardium/user_core/interrupts.h b/epicardium/user_core/interrupts.h
new file mode 100644
index 000000000..5abcc2c87
--- /dev/null
+++ b/epicardium/user_core/interrupts.h
@@ -0,0 +1,12 @@
+#pragma once
+
+#include "epicardium.h"
+
+/* ---------- Interrupts --------------------------------------------------- */
+void interrupt_init(void);
+void interrupt_trigger(api_int_id_t id);
+void interrupt_trigger_sync(api_int_id_t id);
+void interrupt_trigger_unsafe(api_int_id_t id) __attribute__((deprecated(
+	"interrupt_trigger_unsafe() is racy and only exists for legacy code."
+)));
+void vInterruptsTask(void *pvParameters);
diff --git a/epicardium/modules/lifecycle.c b/epicardium/user_core/lifecycle.c
similarity index 99%
rename from epicardium/modules/lifecycle.c
rename to epicardium/user_core/lifecycle.c
index 2c64b825f..efe1f532a 100644
--- a/epicardium/modules/lifecycle.c
+++ b/epicardium/user_core/lifecycle.c
@@ -3,6 +3,7 @@
 #include "modules/modules.h"
 #include "os/config.h"
 #include "os/mutex.h"
+#include "user_core/user_core.h"
 #include "api/dispatcher.h"
 #include "l0der/l0der.h"
 
diff --git a/epicardium/user_core/meson.build b/epicardium/user_core/meson.build
new file mode 100644
index 000000000..daf7395fb
--- /dev/null
+++ b/epicardium/user_core/meson.build
@@ -0,0 +1,5 @@
+user_core_sources = files(
+  'dispatcher.c',
+  'interrupts.c',
+  'lifecycle.c',
+)
diff --git a/epicardium/user_core/user_core.h b/epicardium/user_core/user_core.h
new file mode 100644
index 000000000..5b090e6f9
--- /dev/null
+++ b/epicardium/user_core/user_core.h
@@ -0,0 +1,14 @@
+#pragma once
+
+#include "FreeRTOS.h"
+#include "os/mutex.h"
+
+/* ---------- Dispatcher --------------------------------------------------- */
+void vApiDispatcher(void *pvParameters);
+void dispatcher_mutex_init(void);
+extern struct mutex api_mutex;
+extern TaskHandle_t dispatcher_task_id;
+
+/* ---------- Lifecycle ---------------------------------------------------- */
+void vLifecycleTask(void *pvParameters);
+void return_to_menu(void);
-- 
GitLab