Per-message authentication for ESP-IDF v6.0.x with a pre-shared installation key. Wraps a message in a 28-byte envelope (sender, receiver, epoch, counter, 128-bit HMAC-SHA256 tag) and rejects forged, altered, misaddressed and replayed messages. Pure logic on bytes: works over UDP, UART, BLE or anything else. PSA Crypto only, no encryption, no tasks, no allocations after create.
Point-to-point UDP datagram transport for ESP-IDF v6.0.x. One socket, one peer, one stream: a 12-byte header with sequence number and session, strict validation of every received datagram, zero-copy send and receive, and a receive timeout that never ends early. No tasks, no callbacks, no buffering, no retransmission: it reports loss and restarts, you decide.
Thin, transparent I2S microphone component for ESP-IDF v6.0.x, built on the modern i2s_std driver. Blocking one-buffer-per-call read from your own task, an honest overflow counter, and clean stop() semantics. No callbacks, no internal task, no buffering beyond the driver's own.
Task-free I2S speaker (audio sink) component for ESP-IDF v6.0.x, built on the modern i2s_std driver. Application calls a blocking i2s_spk_send_buffer() to hand off pre-filled audio buffers; there is no internal FreeRTOS task and no TX-side application callback — the blocking call's return is the sole completion signal. Counts DMA underruns from the driver's own TX interrupt. Drives I2S DAC modules such as the PCM5102A (GY-PCM5102).
WiFi lifecycle manager for ESP-IDF. Handles scanning, credential-based reconnection, and BLE provisioning as a single owned component — including disconnect recovery, multi-AP priority, time-window deadlines, retry-in-place provisioning and NVS-persisted credentials with LRU ranking. Other components observe state through an event interface and never touch esp_wifi directly.
ESP-IDF component for controlling air conditioners over infrared using the ESP32 RMT peripheral. Provides a common IR transmission layer with protocol implementations for Gree, Haier, and Midea air conditioners.
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.
Timestamp service for ESP32 that works without a dedicated RTC module. Starts from build time on every boot, then corrects via SNTP sync or manual set — whichever suits the application. All corrections are explicit and observable via jump callbacks, safe for logging systems.
Streaming region-of-interest JPEG decoder for ESP32 based on tjpgd. Stream JPEG data in from any source, stream decoded pixel rows out to your callback — without loading the full image into RAM, without a seekable source, without a full-frame output buffer. Stream in from a file, a flash blob, an HTTP response body, a UART byte stream, a FreeRTOS queue, a TCP socket, or a DMA ring buffer. If you can hand bytes to a callback, you can decode a JPEG.