menu "OpenThread"

    config OPENTHREAD_ENABLED
        bool "OpenThread"
        default n
        help
            Select this option to enable OpenThread and show the submenu with OpenThread configuration choices.

    config OPENTHREAD_LOG_LEVEL_DYNAMIC
        bool "Enable dynamic log level control"
        depends on OPENTHREAD_ENABLED
        default y
        help
            Select this option to enable dynamic log level control for OpenThread

    choice OPENTHREAD_LOG_LEVEL
        prompt "OpenThread log verbosity"
        depends on OPENTHREAD_ENABLED && !OPENTHREAD_LOG_LEVEL_DYNAMIC
        default OPENTHREAD_LOG_LEVEL_INFO
        help
            Select OpenThread log level.

        config OPENTHREAD_LOG_LEVEL_NONE
            bool "No logs"
        config OPENTHREAD_LOG_LEVEL_CRIT
            bool "Error logs"
        config OPENTHREAD_LOG_LEVEL_WARN
            bool "Warning logs"
        config OPENTHREAD_LOG_LEVEL_NOTE
            bool "Notice logs"
        config OPENTHREAD_LOG_LEVEL_INFO
            bool "Info logs"
        config OPENTHREAD_LOG_LEVEL_DEBG
            bool "Debug logs"
    endchoice #OPENTHREAD_LOG_LEVEL

    config OPENTHREAD_LOG_LEVEL
        int
        depends on OPENTHREAD_ENABLED && !OPENTHREAD_LOG_LEVEL_DYNAMIC
        default 0 if OPENTHREAD_LOG_LEVEL_NONE
        default 1 if OPENTHREAD_LOG_LEVEL_CRIT
        default 2 if OPENTHREAD_LOG_LEVEL_WARN
        default 3 if OPENTHREAD_LOG_LEVEL_NOTE
        default 4 if OPENTHREAD_LOG_LEVEL_INFO
        default 5 if OPENTHREAD_LOG_LEVEL_DEBG

    choice OPENTHREAD_RADIO_TYPE
        prompt "Config the Thread radio type"
        depends on OPENTHREAD_ENABLED
        default OPENTHREAD_RADIO_NATIVE if IDF_TARGET_ESP32H2
        default OPENTHREAD_RADIO_SPINEL_UART
        help
            Configure how OpenThread connects to the 15.4 radio

        config OPENTHREAD_RADIO_NATIVE
            bool "Native 15.4 radio"
            help
                Select this to use the native 15.4 radio.

        config OPENTHREAD_RADIO_SPINEL_UART
            bool "Connect via UART"
            help
                Select this to connect to a Radio Co-Processor via UART.
    endchoice

    choice OPENTHREAD_DEVICE_TYPE
        prompt "Config the Thread device type"
        depends on OPENTHREAD_ENABLED
        default OPENTHREAD_FTD
        help
            OpenThread can be configured to different device types (FTD, MTD, Radio)

        config OPENTHREAD_FTD
            bool "Full Thread Device"
            help
                Select this to enable Full Thread Device which can act as router and leader in a Thread network.

        config OPENTHREAD_MTD
            bool "Minimal Thread Device"
            help
                Select this to enable Minimal Thread Device which can only act as end device in a Thread network.
                This will reduce the code size of the OpenThread stack.

        config OPENTHREAD_RADIO
            bool "Radio Only Device"
            help
                Select this to enable Radio Only Device which can only forward 15.4 packets to the host.
                The OpenThread stack will be run on the host and OpenThread will have minimal footprint on the
                radio only device.
    endchoice

    config OPENTHREAD_CLI
        bool "Enable Openthread Command-Line Interface"
        depends on OPENTHREAD_ENABLED
        default y
        help
            Select this option to enable Command-Line Interface in OpenThread.

    config OPENTHREAD_DIAG
        bool "Enable diag"
        depends on OPENTHREAD_ENABLED
        default y
        help
            Select this option to enable Diag in OpenThread. This will enable diag mode and a series of diag commands
            in the OpenThread command line. These commands allow users to manipulate low-level features of the storage
            and 15.4 radio.

    config OPENTHREAD_COMMISSIONER
        bool "Enable Commissioner"
        depends on OPENTHREAD_ENABLED
        default n
        help
            Select this option to enable commissioner in OpenThread. This will enable the device to act as a
            commissioner in the Thread network. A commissioner checks the pre-shared key from a joining device with
            the Thread commissioning protocol and shares the network parameter with the joining device upon success.

    config OPENTHREAD_JOINER
        bool "Enable Joiner"
        depends on OPENTHREAD_ENABLED
        default n
        help
            Select this option to enable Joiner in OpenThread. This allows a device to join the Thread network with a
            pre-shared key using the Thread commissioning protocol.

    config OPENTHREAD_SRP_CLIENT
        bool "Enable SRP Client"
        depends on OPENTHREAD_ENABLED
        default n
        help
            Select this option to enable SRP Client in OpenThread. This allows a device to register SRP services to SRP
            Server.

    config OPENTHREAD_BORDER_ROUTER
        bool "Enable Border Router"
        depends on OPENTHREAD_ENABLED
        default n
        help
            Select this option to enable border router features in OpenThread.

    config OPENTHREAD_NUM_MESSAGE_BUFFERS
        int "The number of openthread message buffers"
        depends on OPENTHREAD_ENABLED
        default 65
        range 50 100

    config OPENTHREAD_DNS64_CLIENT
        bool "Use dns64 client"
        depends on OPENTHREAD_ENABLED
        default n
        help
            Select this option to acquire NAT64 address from dns servers.

endmenu
