SIC is a single-include hardware abstraction layer for ESP32-class boards.
Consume via #include <sic/sic.h>.
Option A — Run the example (Cardputer):
cd SIC/examples/Cardputer-Demo
pio run -e cardputer-io-stable -t upload
pio device monitor -b 115200Option B — Use SIC in your existing PlatformIO project:
; platformio.ini
lib_deps =
; if using as submodule, add a local path:
; ../SIC
build_flags =
-DSIC_TARGET_CARDPUTER=1
-DI2C_SDA_PIN=41 -DI2C_SCL_PIN=42
-DMIC_DATA=46 -DMIC_CLK=43
-DIR_TX_PIN=44// src/main.cpp
#include <Arduino.h>
#include <sic/sic.h>
void setup(){
Serial.begin(115200);
int rc = sic_begin(nullptr, nullptr);
Serial.printf("[OK] sic_begin rc=%d\n", rc);
}
void loop(){}Option C — Unit tests (native, minimal):
cd SIC/tests/native
make
./out/test_sic_nativeinclude/— public headers (#include <sic/sic.h>)src/— boards, drivers, HALexamples/— ready-to-build demos (PlatformIO)docs/— feature matrix, porting guide, pins, API, troubleshootingtemplates/— driver authoring template (copy‑paste to start new drivers)tests/— native tests (very small sanity checks).github/workflows/— CI build for examples
See docs/FEATURE_MATRIX.md for what’s implemented vs. stubbed.
See docs/DESIGN_INVARIANTS.md for guarantees and non-goals.
Read CONTRIBUTING.md and open a PR! Also see docs/COOKBOOK_BOARD_BRINGUP.md.