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_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_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_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
