menu "ESP-MQTT Configurations"

    config MQTT_PROTOCOL_311
        bool "Enable MQTT protocol 3.1.1"
        default y
        help
            If not, this library will use MQTT protocol 3.1

    config MQTT_TRANSPORT_SSL
        bool "Enable MQTT over SSL"
        default y
        help
            Enable MQTT transport over SSL with mbedtls

    config MQTT_TRANSPORT_WEBSOCKET
        bool "Enable MQTT over Websocket"
        default y
        help
            Enable MQTT transport over Websocket.

    config MQTT_TRANSPORT_WEBSOCKET_SECURE
        bool "Enable MQTT over Websocket Secure"
        default y
        depends on MQTT_TRANSPORT_WEBSOCKET
        depends on MQTT_TRANSPORT_SSL
        help
            Enable MQTT transport over Websocket Secure.

    config MQTT_USE_CUSTOM_CONFIG
        bool "MQTT Using custom configurations"
        default n
        help
            Custom MQTT configurations.

    config MQTT_TCP_DEFAULT_PORT
        int "Default MQTT over TCP port"
        default 1883
        depends on MQTT_USE_CUSTOM_CONFIG
        help
            Default MQTT over TCP port

    config MQTT_SSL_DEFAULT_PORT
        int "Default MQTT over SSL port"
        default 8883
        depends on MQTT_USE_CUSTOM_CONFIG
        depends on MQTT_TRANSPORT_SSL
        help
            Default MQTT over SSL port

    config MQTT_WS_DEFAULT_PORT
        int "Default MQTT over Websocket port"
        default 80
        depends on MQTT_USE_CUSTOM_CONFIG
        depends on MQTT_TRANSPORT_WEBSOCKET
        help
            Default MQTT over Websocket port

    config MQTT_WSS_DEFAULT_PORT
        int "Default MQTT over Websocket Secure port"
        default 443
        depends on MQTT_USE_CUSTOM_CONFIG
        depends on MQTT_TRANSPORT_WEBSOCKET
        depends on MQTT_TRANSPORT_WEBSOCKET_SECURE
        help
            Default MQTT over Websocket Secure port

    config MQTT_BUFFER_SIZE
        int "Default MQTT Buffer Size"
        default 1024
        depends on MQTT_USE_CUSTOM_CONFIG
        help
            This buffer size using for both transmit and receive

    config MQTT_TASK_STACK_SIZE
        int "MQTT task stack size"
        default 6144
        depends on MQTT_USE_CUSTOM_CONFIG
        help
            MQTT task stack size

    config MQTT_DISABLE_API_LOCKS
        bool "Disable API locks"
        default n
        depends on MQTT_USE_CUSTOM_CONFIG
        help
            Default config employs API locks to protect internal structures. It is possible to disable
            these locks if the user code doesn't access MQTT API from multiple concurrent tasks

    config MQTT_TASK_PRIORITY
        int "MQTT task priority"
        default 5
        depends on MQTT_USE_CUSTOM_CONFIG
        help
            MQTT task priority. Higher number denotes higher priority.

    config MQTT_TASK_CORE_SELECTION_ENABLED
        bool "Enable MQTT task core selection"
        default false
        help
            This will enable core selection

    choice MQTT_TASK_CORE_SELECTION
        depends on MQTT_TASK_CORE_SELECTION_ENABLED
        prompt "Core to use ?"
        config MQTT_USE_CORE_0
            bool "Core 0"
        config MQTT_USE_CORE_1
            bool "Core 1"
    endchoice

    config MQTT_CUSTOM_OUTBOX
        bool "Enable custom outbox implementation"
        default n
        help
            Set to true if a specific implementation of message outbox is needed (e.g. persistant outbox in NVM or
            similar).

endmenu
