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
        depends on WS_TRANSPORT
        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_MSG_ID_INCREMENTAL
        bool "Use Incremental Message Id"
        default n
        help
            Set this to true for the message id (2.3.1 Packet Identifier) to be generated
            as an incremental number rather then a random value (used by default)

    config MQTT_SKIP_PUBLISH_IF_DISCONNECTED
        bool "Skip publish if disconnected"
        default n
        help
            Set this to true to avoid publishing (enqueueing messages) if the client is disconnected.
            The MQTT client tries to publish all messages by default, even in the disconnected state
            (where the qos1 and qos2 packets are stored in the internal outbox to be published later)
            The MQTT_SKIP_PUBLISH_IF_DISCONNECTED option allows applications to override this behaviour
            and not enqueue publish packets in the disconnected state.

    config MQTT_REPORT_DELETED_MESSAGES
        bool "Report deleted messages"
        default n
        help
            Set this to true to post events for all messages which were deleted from the outbox
            before being correctly sent and confirmed.

    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).

    config MQTT_OUTBOX_EXPIRED_TIMEOUT_MS
        int "Outbox message expired timeout[ms]"
        default 30000
        depends on MQTT_USE_CUSTOM_CONFIG
        help
            Messages which stays in the outbox longer than this value before being published will be discarded.

endmenu