ESP-IDF Extra Components

repository·master·Indexed 42 days ago

https://github.com/espressif/idf-extra-components

A collection of additional components for ESP-IDF, including wrappers for third-party libraries like Brotli, Catch2, and TinyCBOR, as well as Espressif-developed components such as the Brushed DC Motor Control (bdc_motor) and Cache Compensated Timer.

Tokens
84.6K
Snippets
224
Records
407
Agent score
54%

What's inside ESP-IDF Extra Components

  1. Overview of ESP Encrypted Image Abstraction Layer

    master

    The esp_encrypted_img component provides an API to decrypt data formatted as an "ESP Encrypted Image". This format is designed for integrating pre-encrypted firmware into Over-the-Air (OTA) updates or for securing custom data payloads.

    The component supports two primary cryptographic schemes:

    1. RSA-3072: Uses an RSA-3072 public key to encrypt an AES-GCM key.
    2. ECIES-P256: Uses Elliptic Curve Integrated Encryption Scheme (P-256 curve) to derive a shared secret via ECDH, which is then used to derive an AES-GCM key via HKDF.
  2. Overview of the SPI NAND Flash Driver

    master
    The spi_nand_flash component provides a driver for SPI NAND Flash chips on ESP32-based microcontrollers. It supports high-density non-volatile storage using the SPI protocol. The driver features a layered architecture that separates wear-leveling (BDL) from physical flash management, allowing for modularity and backward compatibility with legacy sector-based APIs.
  3. Overview of the esp_cli component

    master

    The esp_cli component provides a Runtime Evaluation Loop (REPL) mechanism for ESP-IDF-based applications. It enables the creation of interactive command-line interfaces (CLI) that support user-defined commands, command history management, and customizable callbacks for execution.

    It relies on two other components:

    • esp_linenoise: Handles line editing and input.
    • esp_cli_commands: Handles command parsing and execution.

    Key features include modular REPL management (start/stop control), thread-safe operation via FreeRTOS semaphores, and optional command history persistence to a filesystem.

  4. Overview of esp_linenoise

    master

    esp_linenoise is a multi-instance line editing library adapted from the original linenoise for the Espressif IDF ecosystem. Unlike standard line editors, it supports multiple independent instances, allowing an application to manage multiple input contexts simultaneously, such as different UART consoles, shells, or network sessions.

    Key features include:

    • Independent instances: Each instance has its own configuration.
    • Per-instance configuration: Customize history, prompts, and line-editing behavior for each instance.
    • Callbacks: Support for custom completion and hint callbacks.
    • IDF Integration: Uses IDF-style memory and error handling.
  5. Overview of the QEMU RGB Panel component

    master

    The esp_lcd_qemu_rgb component provides an interface for the virtual RGB panel available in Espressif's QEMU fork (version 8.1.3-20231206 and later).

    This virtual panel is designed for displaying graphical interfaces in a simulated environment. Unlike real hardware, this virtual panel includes a dedicated frame buffer that is independent of the internal RAM, allowing user programs to populate pixels directly into it.

  6. Overview of the Network Provisioning component

    master

    The network_provisioning component provides APIs to control a network provisioning service. This service allows an external device to receive and configure network credentials on an ESP32 device via secure Protocol Communication (Protocomm) sessions.

    Supported provisioning methods include:

    • Wi-Fi: Provision credentials using either SoftAP or Bluetooth LE.
    • Thread: Provision credentials using Bluetooth LE.
  7. Overview of the Touch Element Library

    master

    The Touch Element Library is a high-level abstraction layer built on top of the ESP32 touch sensor driver. It is designed to provide a user-friendly interface for building capacitive touch applications without needing to manage low-level hardware details.

    Supported Hardware:

    • ESP32-S2
    • ESP32-S3

    Supported Elements:

    • Waterproof: Supports waterproof sensor logic.
    • Button: Single-channel touch buttons.
    • Slider: Multi-channel touch sliders (requires at least 3 channels).
    • Matrix Button: Multi-channel matrix configuration (requires at least 4 channels) to support up to 49 buttons using fewer channels.

    WARNING: This library is based on the legacy touch driver. If you do not require the high-level abstractions of the Touch Element Library, use the new Capacitive Touch Sensor driver instead.

  8. Overview of the Touch Element Library

    master

    The Touch Element Library is a collection of common UI elements designed for touch-based applications. It provides high-level abstractions for touch interactions, allowing you to implement interfaces quickly using elements like button, slider, and matrix.

    Key features include:

    • Supported Elements: button, slider, and matrix.
    • Event Support: Handles touch events such as Press, Release, and Long Press.
    • Notification Mechanisms: You can handle events by either registering an event callback or by subscribing to events within a task.
  9. Overview of the IQmath Library

    master
    The IQmath Library is a collection of highly optimized, high-precision mathematical functions designed for C programmers to port floating-point algorithms into fixed-point code on ESP chips. It is intended for computationally intensive real-time applications where execution speed, high accuracy, and ultra-low energy consumption are critical. Using IQmath can achieve significantly faster execution speeds and lower energy consumption compared to equivalent floating-point math.