Thank you for your interest in contributing!
- Fork the repository and clone it locally
- Install ESP-IDF v5.1+:
source ~/esp/esp-idf/export.sh - Install Python deps:
pip install Pillow numpy - Generate assets:
python3 tools/gen_assets.py - Build:
idf.py set-target esp32s3 && idf.py build
- C++17, ESP-IDF idioms throughout
- Singleton pattern for all drivers and services (
getInstance()) - All PSRAM allocations via
heap_caps_malloc(size, MALLOC_CAP_SPIRAM) - All LVGL calls from non-UI tasks must hold
UIEngine::getInstance().lock() - Log tags match class name:
static const char* TAG = "ClassName"; - No
newin interrupt context; no blocking calls in LVGL callbacks
| Branch | Purpose |
|---|---|
main |
Stable releases |
develop |
Integration branch |
feature/* |
New features |
fix/* |
Bug fixes |
- Create
main/apps/myapp/myapp.handmyapp.cpp - Inherit from
IonApp, implementonCreate/onDestroy/onKey - Register in
AppManager::init()with icon, colour, factory lambda - Add
.cpptomain/CMakeLists.txtSRCS - Add icon in
tools/gen_assets.pyif needed
- Create
main/drivers/mydevice/mydevice_driver.h/.cpp - Implement singleton with
init()/ task if needed - Call
init()fromIonKernel::phaseHardware() - Add to
main/CMakeLists.txt
-
python3 tools/gen_assets.pyrun (regenerates assets) -
idf.py buildpasses with zero warnings - All 6 built-in apps launch and close cleanly
- No PSRAM/heap leak after 10 minutes of use
-
CHANGELOG.mdupdated under[Unreleased]
Please include:
- IonOS version / commit hash
- ESP-IDF version (
idf.py --version) - Serial monitor log showing the error
- Steps to reproduce