Tactility/.claude/rules/architecture-device-model.md
Ken Van Hoeylandt d6b1d15e56
Various improvements (#614)
- Auto-select widgets in Launcher and apps with toolbars on devices without touch.
- Improved USB HID input reliability, cleanup
- Updated PSRAM settings to improve boot stability on supported devices.
- Prevented duplicate Wi-Fi event subscriptions during screen rebuilds.
- Updated docs
- Fixes in WifiManage and WifiConnect
- Reduced main task stack size
- Moved USB HID stack size to PSRAM when available
- app_manager_find_manifest() now returns a copy instead of a pointer
2026-08-13 20:30:47 +02:00

1.1 KiB

Architecture: Device/Driver/Module System (kernel layer, C API)

The kernel uses a Linux-inspired device model:

  • Module (struct Module): loadable unit that registers drivers, hardware and symbols. Lifecycle: module_constructmodule_addmodule_start. Each device board and platform is a module.
  • Driver (struct Driver): binds to devices via compatible strings (like devicetree). Has start_device/stop_device callbacks and an api pointer for type-specific operations.
  • Device (struct Device): represents hardware. Lifecycle: device_constructdevice_adddevice_start. Has a parent-child tree, driver binding, and locking.
  • DeviceType (struct DeviceType): enables discovering devices by category (e.g. DISPLAY_TYPE, TOUCH_TYPE, UART_CONTROLLER_TYPE).

Devices are defined via devicetree .dts files in each Devices/<id>/ folder. A custom devicetree compiler (Buildscripts/DevicetreeCompiler/compile.py) generates C code from these files. Each device folder also has a devicetree.yaml specifying dependencies and the .dts file.