Support for building and running external apps (#112)

This commit is contained in:
Ken Van Hoeylandt
2024-12-08 16:46:19 +01:00
committed by GitHub
parent 42e843b463
commit 415442e410
74 changed files with 2901 additions and 126 deletions
+18
View File
@@ -0,0 +1,18 @@
# External Apps
## Building
Steps to build:
- Build the main project with `idf.py build` in the root folder of the project
- Open a terminal at `ExternalApps/${AppName}`
- The first time, run `./build.sh` (during consecutive runs, you can run `idf.py build`)
- Find the executable `build/${AppName}.app.elf` and copy it to an SD card.
## Developing apps
Currently, only C is supported. The `TactilityC` project converts Tactility's C++ code into C.
Methods need to be manually exposed to the ELF apps, by editing `TactilityC/Source/TactilityC.cpp`
You can put apps in `Data/config` or `Data/assets` during development, because putting it on an SD card takes more effort.
+3
View File
@@ -1,4 +1,5 @@
# TODOs
- Loader: Use Timer instead of Thread, and move API to `tt::app::`
- Gpio: Use Timer instead of Thread
- I2cScannerThread: Use Timer instead of Thread
- Bug: I2C Scanner is on M5Stack devices is broken
@@ -21,12 +22,14 @@
- Commit fix to esp_lvgl_port to have `esp_lvgl_port_disp.c` user driver_data instead of user_data
- Wifi bug: when pressing disconnect while between `WIFI_EVENT_STA_START` and `IP_EVENT_STA_GOT_IP`, then auto-connect becomes activate again.
- T-Deck Plus: Create separate board config
- External app loading: Check version of Tactility and check ESP target hardware, to check for compatibility.
# Core Ideas
- Support for displays with different DPI. Consider the layer-based system like on Android.
- If present, use LED to show boot status
- 2 wire speaker support
- tt::app::start() and similar functions as proxies for Loader app start/stop/etc.
- USB implementation to make device act as mass storage device.
# App Ideas
- System logger