From 7629bb695efebfc475a1fe96805d0035ad2b3c27 Mon Sep 17 00:00:00 2001
From: Serge Bazanski <q3k@q3k.org>
Date: Sat, 29 Jul 2023 15:20:43 +0200
Subject: [PATCH] st3m: move some main-specific stuff to main

We attempt to share st3m with the recovery firmware, and thus must
eliminate two components that can't live in the recovery firmware:

1. The startup function, which contains references to all matters of
   subfunctionality we don't want (audio, micropython, etc)
2. The FS code, which contains references to the tarball extraction
   logic (which we don't want to embed into recovery mode either).
---
 components/micropython/CMakeLists.txt         |  2 ++
 .../micropython/include/mpconfigboard.h       |  4 +--
 components/st3m/CMakeLists.txt                | 27 ++-----------------
 main/CMakeLists.txt                           | 24 +++++++++++++++++
 components/st3m/st3m_fs.c => main/fs.c        |  3 ++-
 components/st3m/st3m_fs.h => main/fs.h        |  0
 .../st3m => main}/host-tools/pack-sys.py      |  0
 .../st3m/st3m_board_startup.c => main/main.c  |  5 ++--
 8 files changed, 35 insertions(+), 30 deletions(-)
 rename components/st3m/st3m_fs.c => main/fs.c (98%)
 rename components/st3m/st3m_fs.h => main/fs.h (100%)
 rename {components/st3m => main}/host-tools/pack-sys.py (100%)
 rename components/st3m/st3m_board_startup.c => main/main.c (97%)

diff --git a/components/micropython/CMakeLists.txt b/components/micropython/CMakeLists.txt
index eccea015c4..6efb5c7b96 100644
--- a/components/micropython/CMakeLists.txt
+++ b/components/micropython/CMakeLists.txt
@@ -181,3 +181,5 @@ target_compile_definitions(${COMPONENT_TARGET} PUBLIC
 )
 
 include("${MICROPY_DIR}/py/mkrules.cmake")
+
+target_link_libraries(${COMPONENT_LIB} INTERFACE "-u flow3r_startup")
\ No newline at end of file
diff --git a/components/micropython/include/mpconfigboard.h b/components/micropython/include/mpconfigboard.h
index d8e51ab152..f3a24752ce 100644
--- a/components/micropython/include/mpconfigboard.h
+++ b/components/micropython/include/mpconfigboard.h
@@ -11,5 +11,5 @@
 #define MICROPY_ESP_IDF_4 1
 #define MICROPY_VFS_POSIX 1
 
-void st3m_board_startup(void);
-#define MICROPY_BOARD_STARTUP st3m_board_startup
+void flow3r_startup(void);
+#define MICROPY_BOARD_STARTUP flow3r_startup
diff --git a/components/st3m/CMakeLists.txt b/components/st3m/CMakeLists.txt
index b98d6a7fc6..2aac4cd768 100644
--- a/components/st3m/CMakeLists.txt
+++ b/components/st3m/CMakeLists.txt
@@ -1,12 +1,8 @@
-set(SYS_C_PATH "${CMAKE_CURRENT_BINARY_DIR}/include/st3m_sys_data.c")
-
 idf_component_register(
     SRCS
         st3m_audio.c
-        st3m_board_startup.c
         st3m_gfx.c
         st3m_counter.c
-        st3m_fs.c
         st3m_scope.c
         st3m_leds.c
         st3m_colors.c
@@ -20,36 +16,17 @@ idf_component_register(
         st3m_captouch.c
         st3m_ringbuffer.c
         st3m_tar.c
-        "${SYS_C_PATH}"
     INCLUDE_DIRS
         .
     REQUIRES
         flow3r_bsp
-        bl00mbox
         ctx
         fatfs
         tinyusb
         esp_ringbuf
+        esp_timer
         usb
 )
 
 idf_component_get_property(tusb_lib tinyusb COMPONENT_LIB)
-target_include_directories(${tusb_lib} PRIVATE .)
-
-# Generate st3m_sys_data.c from python_payload.
-idf_build_get_property(python PYTHON)
-file(GLOB_RECURSE payload_files "${PROJECT_DIR}/python_payload/*.py")
-add_custom_command(
-    OUTPUT
-        "${SYS_C_PATH}"
-    COMMAND
-        "${python}" "${CMAKE_CURRENT_SOURCE_DIR}/host-tools/pack-sys.py" "${PROJECT_DIR}/python_payload" "${SYS_C_PATH}"
-    DEPENDS
-        "${CMAKE_CURRENT_SOURCE_DIR}/host-tools/pack-sys.py" 
-        "${payload_files}"
-        
-)
-add_custom_target(generate_st3m_sys_c ALL DEPENDS "${SYS_C_PATH}")
-
-idf_component_get_property(st3m_lib st3m COMPONENT_LIB)
-add_dependencies("${st3m_lib}" generate_st3m_sys_c)
+target_include_directories(${tusb_lib} PRIVATE .)
\ No newline at end of file
diff --git a/main/CMakeLists.txt b/main/CMakeLists.txt
index 02f1ef7b00..baa142fde9 100644
--- a/main/CMakeLists.txt
+++ b/main/CMakeLists.txt
@@ -1,4 +1,28 @@
+set(SYS_C_PATH "${CMAKE_CURRENT_BINARY_DIR}/include/sys_data.c")
+
 idf_component_register(
+    SRCS
+        main.c
+        fs.c
+        "${SYS_C_PATH}"
 )
 idf_component_get_property(freertos_lib freertos COMPONENT_LIB)
 target_compile_options(${freertos_lib} PRIVATE -Wno-format)
+
+# Generate sys_data.c from python_payload.
+idf_build_get_property(python PYTHON)
+file(GLOB_RECURSE payload_files "${PROJECT_DIR}/python_payload/*.py")
+add_custom_command(
+    OUTPUT
+        "${SYS_C_PATH}"
+    COMMAND
+        "${python}" "${CMAKE_CURRENT_SOURCE_DIR}/host-tools/pack-sys.py" "${PROJECT_DIR}/python_payload" "${SYS_C_PATH}"
+    DEPENDS
+        "${CMAKE_CURRENT_SOURCE_DIR}/host-tools/pack-sys.py" 
+        "${payload_files}"
+        
+)
+add_custom_target(generate_sys_c ALL DEPENDS "${SYS_C_PATH}")
+
+idf_component_get_property(main_lib main COMPONENT_LIB)
+add_dependencies("${main_lib}" generate_sys_c)
\ No newline at end of file
diff --git a/components/st3m/st3m_fs.c b/main/fs.c
similarity index 98%
rename from components/st3m/st3m_fs.c
rename to main/fs.c
index 1378e7c77f..1fcab2a06e 100644
--- a/components/st3m/st3m_fs.c
+++ b/main/fs.c
@@ -1,4 +1,5 @@
-#include "st3m_fs.h"
+#include "fs.h"
+
 #include "st3m_mode.h"
 #include "st3m_sys_data.h"
 #include "st3m_tar.h"
diff --git a/components/st3m/st3m_fs.h b/main/fs.h
similarity index 100%
rename from components/st3m/st3m_fs.h
rename to main/fs.h
diff --git a/components/st3m/host-tools/pack-sys.py b/main/host-tools/pack-sys.py
similarity index 100%
rename from components/st3m/host-tools/pack-sys.py
rename to main/host-tools/pack-sys.py
diff --git a/components/st3m/st3m_board_startup.c b/main/main.c
similarity index 97%
rename from components/st3m/st3m_board_startup.c
rename to main/main.c
index 659c771955..1edd80096c 100644
--- a/components/st3m/st3m_board_startup.c
+++ b/main/main.c
@@ -3,7 +3,6 @@
 #include "st3m_audio.h"
 #include "st3m_captouch.h"
 #include "st3m_console.h"
-#include "st3m_fs.h"
 #include "st3m_gfx.h"
 #include "st3m_io.h"
 #include "st3m_leds.h"
@@ -11,12 +10,14 @@
 #include "st3m_scope.h"
 #include "st3m_usb.h"
 
+#include "fs.h"
+
 #include "esp_log.h"
 #include "freertos/FreeRTOS.h"
 #include "freertos/task.h"
 
 // Called by micropython via MICROPY_BOARD_STARTUP.
-void st3m_board_startup(void) {
+void flow3r_startup(void) {
     // Initialize display first as that gives us a nice splash screen.
     st3m_gfx_init();
     // Submit splash a couple of times to make sure we've fully flushed out the
-- 
GitLab