|
idfxx 1.0.0
Modern C++23 components for ESP-IDF
|
Modern C++23 components for ESP-IDF development.
Full API documentation is available at: https://cleishm.github.io/idfxx/
| Component | Description | Documentation |
|---|---|---|
| Core Infrastructure | ||
| idfxx_core | Core utilities: error handling, memory allocators, chrono, scheduling | API Docs |
| idfxx_hw_support | Hardware support: interrupt allocation and management | API Docs |
| idfxx_log | Type-safe logging with std::format | API Docs |
| System Services | ||
| idfxx_event | Type-safe event loop for asynchronous events | API Docs |
| idfxx_event_group | Type-safe FreeRTOS event group for inter-task synchronization | API Docs |
| idfxx_queue | Type-safe FreeRTOS queue for inter-task communication | API Docs |
| idfxx_task | FreeRTOS task management with join, cooperative stop, and fire-and-forget support | API Docs |
| idfxx_timer | High-resolution timer (esp_timer) | API Docs |
| Peripheral Drivers | ||
| idfxx_gpio | GPIO pin management with ISR support | API Docs |
| idfxx_i2c | I2C master bus and device driver | API Docs |
| idfxx_spi | SPI master bus driver | API Docs |
| idfxx_nvs | Non-Volatile Storage (NVS) wrapper | API Docs |
| Display Drivers | ||
| idfxx_lcd | LCD panel I/O interface for SPI-based displays | API Docs |
| idfxx_lcd_ili9341 | ILI9341 LCD controller driver (240x320) | API Docs |
| idfxx_lcd_touch | LCD touch controller interface | API Docs |
| idfxx_lcd_touch_stmpe610 | STMPE610 resistive touch controller driver | API Docs |
std::expected, concepts, and other C++23 featuresidf_component.ymlSeveral idfxx types provide std::formatter specializations (e.g. gpio, i2c::port, spi::host_device, core_id, flags<E>). These are controlled by the CONFIG_IDFXX_STD_FORMAT Kconfig option (under IDFXX menu), which is enabled by default.
Disabling this option prevents component headers from pulling in <format>, which can significantly reduce image size. Note that idfxx_log requires CONFIG_IDFXX_STD_FORMAT and will produce a build error if included without it.
Add components to your project's idf_component.yml:
Repository releases use calendar versioning (e.g., v2026.02.10). Individual components follow semantic versioning independently — a component's version is only bumped when that component changes. Use caret constraints (e.g., ^0.9.0) in your idf_component.yml to receive compatible updates.
If CONFIG_COMPILER_CXX_EXCEPTIONS is enabled:
Using try_* methods with std::expected for explicit error handling:
idfxx includes comprehensive tests using the Unity test framework. Tests are categorized into two types:
Software tests can run in the QEMU ESP32-S3 emulator without physical hardware:
QEMU tests automatically exclude hardware-dependent tests tagged with [hw].
All tests, including hardware-dependent tests, can run on physical ESP32-S3 hardware:
Hardware tests require:
Tests are organized by component in components/*/tests/ directories.
GitHub Actions automatically runs:
See .github/workflows/build.yml for CI configuration.
All components use the same clang-format configuration. Format code with:
Apache License 2.0 - see [LICENSE](LICENSE) for details.