Ken Van Hoeylandt ff4287e2ce
Filesystem improvements and more (#148)
- Rename `assets` and `config` partitions to `system` and `data`
- Change partition type from `spiffs` to `fat`, so we can have sub-directories
- Fix crash when doing WiFi scan: Increased system event task size to 3kB. 
- Free up IRAM on ESP32 (it was required for the Core2, but I also freed up the same amount for Yellow Board)
- Introduced `Paths` objects that can be retrieved by `AppContext` and `ServiceContext`. Apps and services now have their own relative paths. Assets were re-arranged into the correct paths.
- Rename simulator window title to "Tactility"
- Refactored statusbar widget so it persists icon paths properly (it kept a const char* reference, but didn't copy it, so it crashed when the related std::string was destroyed)
- Created `Partitions.h` to expose some useful variables
- Moved USB config in various `sdkconfig`  (it was part of the "default" section, but it shouldn't be)
- Updated domain name
2025-01-05 20:44:33 +01:00

3.7 KiB

Bugs

  • WiFi bug: when pressing disconnect while between WIFI_EVENT_STA_START and IP_EVENT_STA_GOT_IP, then auto-connect becomes active again.
  • ESP32 (CYD) memory issues (or any device without PSRAM):
    • Boot app doesn't show logo
    • WiFi is on and navigating back to Desktop makes desktop icons disappear
    • WiFi might fail quietly when trying to enable it: this shows no feedback (force it by increasing LVGL buffers to 100kB) Possible mitigations:
    • When no PSRAM is available, use simplified desktop buttons
    • Add statusbar icon for memory pressure.
    • Show error in WiFi screen (e.g. AlertDialog when SPI is not enabled and available memory is below a certain amount)
  • Clean up static_cast when casting to base class.
  • M5Stack CoreS3 SD card mounts, but cannot be read. There is currently a notice about it here.
  • SD card statusbar icon shows error when there's a read timeout on the SD card status. Don't show the error icon in this scenario.

TODOs

  • Call tt::lvgl::isSyncSet after HAL init and show error (and crash?) when it is not set.
  • Create different partitions files for different ESP flash size targets (N4, N8, N16, N32)
  • Attach ELF data to wrapper app (as app data) (check that app state is "running"!) so you can run more than 1 external apps at a time. We'll need to keep track of all manifest instances, so that the wrapper can look up the relevant manifest for the relevant callbacks.
  • T-Deck: Clear screen before turning on blacklight
  • Audio player app
  • Audio recording app
  • T-Deck: Use knob for UI selection
  • Logging to disk/etc.
  • Crash monitoring: Keep track of which system phase the app crashed in (e.g. which app in which state)
  • AppContext's onResult should pass the app id (or launch request id!) that was started, so we can differentiate between multiple types of apps being launched
  • Loader: Use main dispatcher instead of Thread
  • Create more unit tests for tactility-core and tactility (PC-only for now)
  • Show a warning screen if firmware encryption or secure boot are off when saving WiFi credentials.
  • Show a warning screen when a user plugs in the SD card on a device that only supports mounting at boot.
  • Localisation of texts (load in boot app from sd?)
  • Explore LVGL9's FreeRTOS functionality
  • Replace M5Unified and M5GFX with custom drivers (so we can fix the Core2 SD card mounting bug, and so we regain some firmware space)
  • External app loading: Check version of Tactility and check ESP target hardware, to check for compatibility.
  • Scanning SD card for external apps and auto-register them (in a temporary register?)
  • tt::app::start() and similar functions as proxies for Loader app start/stop/etc.
  • Support hot-plugging SD card

Nice-to-haves

  • T-Deck Plus: Create separate board config?
  • Support for displays with different DPI. Consider the layer-based system like on Android.
  • Make firmwares available via web serial website
  • If present, use LED to show boot/wifi status
  • T-Deck Power: capacity estimation uses linear voltage curve, but it should use some sort of battery discharge curve.
  • Statusbar widget to show how much memory is in use?
  • Wrapper for Slider that shows "+" and "-" buttons, and also the value in a label.
  • Display app: Add toggle to display performance measurement overlay (consider showing FPS in statusbar!)
  • Files app: copy/paste actions

App Ideas

  • USB implementation to make device act as mass storage device.
  • System logger
  • BlueTooth keyboard app
  • Chip 8 emulator
  • BadUSB (in December 2024, TinyUSB has a bug where uninstalling and re-installing the driver fails)
  • Discord bot
  • IR transceiver app
  • GPS app
  • Investigate CSI https://stevenmhernandez.github.io/ESP32-CSI-Tool/
  • Compile unix tools to ELF apps?