menuconfig AWS_IOT_SDK
    bool "Amazon Web Services IoT Platform"
    help
        Select this option to enable support for the AWS IoT platform,
        via the esp-idf component for the AWS IoT Device C SDK.

config AWS_IOT_MQTT_HOST
    string "AWS IoT Endpoint Hostname"
    depends on AWS_IOT_SDK
    default ""
    help
        Default endpoint host name to connect to AWS IoT MQTT/S gateway

        This is the custom endpoint hostname and is specific to an AWS
        IoT account. You can find it by logging into your AWS IoT
        Console and clicking the Settings button. The endpoint hostname
        is shown under the "Custom Endpoint" heading on this page.

        If you need per-device hostnames for different regions or
        accounts, you can override the default hostname in your app.

config AWS_IOT_MQTT_PORT
    int "AWS IoT MQTT Port"
    depends on AWS_IOT_SDK
    default 8883
    range 0 65535
    help
        Default port number to connect to AWS IoT MQTT/S gateway

        If you need per-device port numbers for different regions, you can
        override the default port number in your app.


config AWS_IOT_MQTT_TX_BUF_LEN
    int "MQTT TX Buffer Length"
    depends on AWS_IOT_SDK
    default 512
    range 32 65536
    help
        Maximum MQTT transmit buffer size. This is the maximum MQTT
        message length (including protocol overhead) which can be sent.

        Sending longer messages will fail.

config AWS_IOT_MQTT_RX_BUF_LEN
    int "MQTT RX Buffer Length"
    depends on AWS_IOT_SDK
    default 512
    range 32 65536
    help
        Maximum MQTT receive buffer size. This is the maximum MQTT
        message length (including protocol overhead) which can be
        received.

        Longer messages are dropped.



config AWS_IOT_MQTT_NUM_SUBSCRIBE_HANDLERS
    int "Maximum MQTT Topic Filters"
    depends on AWS_IOT_SDK
    default 5
    range 1 100
    help
        Maximum number of concurrent MQTT topic filters.


config AWS_IOT_MQTT_MIN_RECONNECT_WAIT_INTERVAL
    int "Auto reconnect initial interval (ms)"
    depends on AWS_IOT_SDK
    default 1000
    range 10 3600000
    help
        Initial delay before making first reconnect attempt, if the AWS IoT connection fails.
        Client will perform exponential backoff, starting from this value.

config AWS_IOT_MQTT_MAX_RECONNECT_WAIT_INTERVAL
    int "Auto reconnect maximum interval (ms)"
    depends on AWS_IOT_SDK
    default 128000
    range 10 3600000
    help
        Maximum delay between reconnection attempts. If the exponentially increased delay
        interval reaches this value, the client will stop automatically attempting to reconnect.

menu "Thing Shadow"
    depends on AWS_IOT_SDK

    config AWS_IOT_OVERRIDE_THING_SHADOW_RX_BUFFER
        bool "Override Shadow RX buffer size"
        depends on AWS_IOT_SDK
        default n
        help
            Allows setting a different Thing Shadow RX buffer
            size. This is the maximum size of a Thing Shadow
            message in bytes, plus one.

            If not overridden, the default value is the MQTT RX Buffer length plus one. If overriden, do not set
            higher than the default value.

    config AWS_IOT_SHADOW_MAX_SIZE_OF_RX_BUFFER
        int "Maximum RX Buffer (bytes)"
        depends on AWS_IOT_OVERRIDE_THING_SHADOW_RX_BUFFER
        default 513
        range 32 65536
        help
            Allows setting a different Thing Shadow RX buffer size.
            This is the maximum size of a Thing Shadow message in bytes,
            plus one.


    config AWS_IOT_SHADOW_MAX_SIZE_OF_UNIQUE_CLIENT_ID_BYTES
        int "Maximum unique client ID size (bytes)"
        depends on AWS_IOT_SDK
        default 80
        range 4 1000
        help
            Maximum size of the Unique Client Id.

    config AWS_IOT_SHADOW_MAX_SIMULTANEOUS_ACKS
        int "Maximum simultaneous responses"
        depends on AWS_IOT_SDK
        default 10
        range 1 100
        help
            At any given time we will wait for this many responses. This will correlate to the rate at which the
            shadow actions are requested

    config AWS_IOT_SHADOW_MAX_SIMULTANEOUS_THINGNAMES
        int "Maximum simultaneous Thing Name operations"
        depends on AWS_IOT_SDK
        default 10
        range 1 100
        help
            We could perform shadow action on any thing Name and this is maximum Thing Names we can act on at any
            given time

    config AWS_IOT_SHADOW_MAX_JSON_TOKEN_EXPECTED
        int "Maximum expected JSON tokens"
        depends on AWS_IOT_SDK
        default 120
        help
            These are the max tokens that is expected to be in the Shadow JSON document. Includes the metadata which
            is published

    config AWS_IOT_SHADOW_MAX_SHADOW_TOPIC_LENGTH_WITHOUT_THINGNAME
        int "Maximum topic length (not including Thing Name)"
        depends on AWS_IOT_SDK
        default 60
        range 10 1000
        help
            All shadow actions have to be published or subscribed to a topic which is of the format
            $aws/things/{thingName}/shadow/update/accepted. This refers to the size of the topic without the Thing
            Name

    config AWS_IOT_SHADOW_MAX_SIZE_OF_THING_NAME
        int "Maximum Thing Name length"
        depends on AWS_IOT_SDK
        default 20
        range 4 1000
        help
            Maximum length of a Thing Name.

endmenu  # Thing Shadow
