Tactility/TactilityKernel
Ken Van Hoeylandt 7ea8c346b0
Various improvements (#673)
Graphics & rendering

- Implement `binfont-module` to generate bitmap fonts on the device itself
- Remove lodepng support from LVGL library and create `Modules/lodepng-module` to make the feature re-usable in non-LVGL apps too. Add binding functions for LVGL support.
- Implement large icons for boot screen (Tactility and USB logos)
- Remove unused asset files in `Data/`

Boot

- Split up `Tactility.cpp` and its `run()` function into various `Init*.cpp` files.
- Re-implement `Boot.cpp` app as non-LVGL app
- Boot app now has a `BootSequence.cpp` for the init code.
- LVGL is now started when the Boot app finishes
- Move more init logic into Boot app

BLE

- Don't allocate scan result buffers unless BLE is on
- Allocate scan results in external memory if possible

UX & UI

- USB Settings app: remove border from the button container
2026-10-04 18:09:21 +02:00
..
2026-10-04 18:09:21 +02:00

TactilityKernel

TactilityKernel is the core component of the Tactility project, providing a hardware abstraction layer (HAL) and essential kernel services for embedded systems.

Features

  • Device and Driver Model: A flexible system for managing hardware devices and their corresponding drivers.
  • Peripheral Support: Standard interfaces for common peripherals:
    • GPIO (General Purpose Input/Output)
    • I2C (Inter-Integrated Circuit)
    • I2S (Inter-IC Sound)
    • SPI (Serial Peripheral Interface)
    • UART (Universal Asynchronous Receiver-Transmitter)
  • Concurrency Primitives: Built-in support for multi-threaded environments, including:
    • Threads and Dispatchers
    • Mutexes and Recursive Mutexes
    • Event Groups
    • Timers
  • Module System: Support for loadable modules that can export symbols and provide runtime-extensible functionality.
  • Device Tree Integration: Utilizes a devicetree-like system for hardware configuration and initialization.
  • Cross-Platform: Designed to run on both embedded platforms (such as ESP32) and desktop environments (Linux) for simulation and testing.