PWM-driven matrix keypad driver for ESP-IDF using row pulse-width encoding and MCPWM capture for simultaneous multi-key detection. Supports multiple keys per column with hardware-assisted decoding.
Non-blocking async REPL console for ESP-IDF. Interleaves ESP_LOG messages with the serial prompt without screen corruption. Based on the ESP-IDF console component with an async linenoise state machine.
Simple BLE WiFi Provisioning Component for ESP32. Enables secure WiFi credential provisioning via Bluetooth Low Energy with ECDH key exchange and AES-GCM encryption. Supports BLE-only mode for WiFi-less ESP32 variants.
Progressive (SOF2) JPEG decoder for memory-constrained systems. Decodes at 1/1, 1/2, 1/4 or 1/8 in a single forward pass with no seeking, storing only the low-frequency corner of each block that a reduced-scale IDCT will read. Storage still scales with the SOURCE image and not with the output, but with a much smaller constant than a general-purpose decoder: on a 12 MP 4:2:0 progressive file the peak is 23.0 / 8.9 / 3.6 MB at 1/2 / 1/4 / 1/8, against libjpeg-turbo's ~36 MB coefficient array at every scale. Size the budget from the frame header, not from the output you want; PSRAM is the assumption at megapixel sizes. Portable C99; I/O, row output and allocation are caller callbacks, so the large buffers can be pointed at external RAM while the hot working state stays internal.