menu "NodeMCU modules"

    config NODEMCU_CMODULE_ADC
        bool "ADC module"
        default "n"
        help
            Includes the adc module. This module provides access to the
            adc1 hardware.

    config NODEMCU_CMODULE_BIT
        bool "Bit module"
        default "n"
        help
            Includes the bit module. This module provide bit manipulation
            functions on Lua numbers.

    config NODEMCU_CMODULE_BTHCI
        bool "BlueTooth HCI interface module"
        default "n"
        select BT_ENABLED
        help
            Includes the simple BlueTooth HCI module.

    config NODEMCU_CMODULE_CAN
        depends on CONFIG_IDF_TARGET_ESP32
        bool "CAN module"
        default "n"
        help
            Includes the can module.

    config NODEMCU_CMODULE_CRYPTO
        bool "Crypto module"
        default "n"
        help
            Includes the crypto module.

    config NODEMCU_CMODULE_DAC
        depends on IDF_TARGET_ESP32 || IDF_TARGET_ESP32S2
        bool "DAC module"
        default "n"
        help
            Includes the dac module.

    config NODEMCU_CMODULE_DHT
        bool "DHT11/21/22/AM2301/AM2302 module"
        default "n"
        help
            Includes the dht module.

    config NODEMCU_CMODULE_ENCODER
        bool "Encoder module"
        default "n"
        help
            Includes the encoder module. This provides hex and base64 encoding
            and decoding functionality.

    config NODEMCU_CMODULE_EROMFS
        bool "Eromfs module (embedded read-only mountable file sets)"
        select VFS_SUPPORT_IO
        default "n"
        help
            Includes the eromfs module, giving access to the embedded mountable
            file sets (volumes) configured here. Useful for bundling file sets
            within the main firmware image, such as website contents.

    config NODEMCU_CMODULE_EROMFS_VOLUMES
        depends on NODEMCU_CMODULE_EROMFS
        string "File sets to embed"
        default "volume_name=/path/to/volume_root;myvol2=../relpath"
        help
            List one or more volume definitions in the form of
            VolumeName=/path/to/files where the VolumeName is the identifier
            by which the eromfs module will refer to the volume. The path
            may be given as either a relative or absolute path. If relative,
            it is relative to the top-level nodemcu-firmware directory.
            All files and directories within the specified volume root will
            be included. Symlinks are not supported and will result in
            failure if encountered. Multiple volumes may be declared by
            separating the entries with a semicolon.

            Note that eromfs does not support directories per se, but will
            store the directory path as part of the filename just as SPIFFS
            does.

    config NODEMCU_CMODULE_ESPNOW
        bool "ESP-NOW module"
        default "n"
        help
            Includes the espnow module.

    config NODEMCU_CMODULE_ETH
        depends on IDF_TARGET_ESP32
        select ETH_USE_ESP32_EMAC
        bool "Ethernet module"
        default "n"
        help
            Includes the ethernet module.

    config NODEMCU_CMODULE_FILE
        bool "File module"
        default "y"
        select VFS_SUPPORT_IO
        select VFS_SUPPORT_DIR
        help
            Includes the file module (recommended).

    config NODEMCU_CMODULE_GPIO
        bool "GPIO module"
        default "y"
        help
            Includes the GPIO module (recommended).

    config NODEMCU_CMODULE_HEAPTRACE
        bool "Heap trace debug module"
        default "n"
        depends on HEAP_TRACING_STANDALONE
        help
            Includes the heap tracing module. This provides an interface to
            the IDF's heap tracing API, allowing interactive tracing
            sessions via the Lua command line.

    config NODEMCU_CMODULE_HTTP
        bool "HTTP module"
        default "y"
        help
            Includes the HTTP module (recommended).

    config NODEMCU_CMODULE_HTTPD
        bool "Httpd (web server) module"
        default "n"
        help
            Includes the HTTPD module. This module uses the regular IDF
            http server component internally.

    config NODEMCU_CMODULE_HTTPD_MAX_RESPONSE_HEADERS
        int "Max response header fields" if NODEMCU_CMODULE_HTTPD
        default 5
        help
            Determines how much space to allocate for header fields in the
            HTTP response. This value does not include header fields the
            http server itself generates internally, but only headers
            explicitly returned in a dynamic route handler. Typically only
            Content-Type is needed, so for most applications the default
            value here will suffice.

    config NODEMCU_CMODULE_HTTPD_RECV_BODY_CHUNK_SIZE
        int "Receive body chunk size" if NODEMCU_CMODULE_HTTPD
        default 1024
        help
            When receiving a body payload, receive at most this many
            bytes at a time. Higher values means reduced overhead at
            the cost of higher memory load.

    config NODEMCU_CMODULE_I2C
        bool "I2C module"
        default "y"
        help
            Includes the I2C module (recommended).

    config NODEMCU_CMODULE_I2S
        depends on IDF_TARGET_ESP32
        bool "I2S module"
        default "n"
        help
            Includes the I2S module.

    config NODEMCU_CMODULE_LEDC
        bool "LEDC module"
        default "n"
        help
            Includes the LEDC module.

    config NODEMCU_CMODULE_MQTT
        bool "MQTT module"
        default "n"
        help
            Includes the MQTT module.

    config NODEMCU_CMODULE_NET
        bool "Net module"
        default "y"
        select VFS_SUPPORT_IO
        help
            Includes the net module (recommended).

    config NODEMCU_CMODULE_NODE
        bool "Node module"
        default "y"
        help
            Includes the node module (recommended).

    config NODEMCU_CMODULE_OW
        bool "1-Wire module"
        default "y"
        help
            Includes the 1-Wire (ow) module (recommended).

    config NODEMCU_CMODULE_OTAUPGRADE
        bool "Over-The-Air upgrade module"
        default "n"
        help
            Includes the over-the-air firmware upgrade module. Use of this
            requires a partition table with at least two OTA partitions, plus
            the OTA data partition. See the IDF documentation for details.

    config NODEMCU_CMODULE_PIPE
        bool "Pipe module"
        default "y"
        help
            Includes the pipe module (required by our Lua VM).

    config NODEMCU_CMODULE_PULSECNT
        depends on IDF_TARGET_ESP32
        bool "Pulse counter module"
        default "n"
        help
            Includes the pulse counter module to use ESP32's built-in pulse
            counting hardware.

    config NODEMCU_CMODULE_QRCODEGEN
        bool "QR Code Generator module"
        default "n"
        help
            Includes the QR Code Generator from
            https://www.nayuki.io/page/qr-code-generator-library

    config NODEMCU_CMODULE_RMT
        bool "Remote Control pulse generator/receiver"
        default "n"
        help
            Includes the rmt module to use the ESP32's built-in 
            remote control hardware.

    config NODEMCU_CMODULE_RTCMEM
        bool "Access to a limited amount of battery backed memory (rtcmem)"
        default "n"
        help
            Includes the rtcmem module to allow access to 
            the battery backed memory.

    config NODEMCU_CMODULE_SDMMC
        depends on IDF_TARGET_ESP32
        bool "SD-MMC module"
        default "n"
        help
            Includes the sdmmc module.

    config NODEMCU_CMODULE_SIGMA_DELTA
        bool "Sigma-Delta module"
        default "n"
        help
            Includes the sigma_delta module. This module provides access to
            the sigma-delta hardware.

    config NODEMCU_CMODULE_SJSON
        bool "SJSON module"
        default "n"
        help
            Includes the sjson module.

    config NODEMCU_CMODULE_SODIUM
        bool "Sodium module"
        default "n"
        help
            Includes the libsodium crypto module.

    config NODEMCU_CMODULE_SPI
        bool "SPI module"
        default "n"
        help
            Includes the spi module.

    config NODEMCU_CMODULE_STRUCT
        bool "Struct module"
        default "n"
        help
            Includes the struct module. This module provides [un]packing of
            raw byte strings into Lua values and vice versa.

    config NODEMCU_CMODULE_TMR
        bool "Timer module"
        default "y"
        help
            Includes the timer module (recommended).

    config NODEMCU_CMODULE_TOUCH
        depends on IDF_TARGET_ESP32
        bool "Touch module"
        default "n"
        help
            Includes the touch module to use ESP32's built-in touch sensor
            hardware.

    config NODEMCU_CMODULE_U8G2
        bool "U8G2 module"
        default "n"
        help
            Includes the u8g2 module.

    rsource "../u8g2/Kconfig.u8g2"

    config NODEMCU_CMODULE_UCG
        bool "UCG module"
        default "n"
        select NODEMCU_CMODULE_SPI
        help
            Includes the ucg module.

    rsource "../ucg/Kconfig.ucg"

    config NODEMCU_CMODULE_WIFI
        bool "WiFi module"
        default "y"
        help
            Includes the WiFi module (recommended).

    config NODEMCU_CMODULE_WS2812
        bool "WS2812 module"
        default "n"
        help
            Includes the ws2812 module.

    config NODEMCU_CMODULE_TIME
        bool "Time module"
        default "n"
        help
            Includes the time module.

    config NODEMCU_CMODULE_UART
        bool "UART module"
        default y
        help
            Includes the UART module (required by our Lua VM).

endmenu
