menu "Serial flasher config"

    config ESPTOOLPY_PORT
        string "Default serial port"
        depends on !IDF_CMAKE
        default "/dev/ttyUSB0"
        help
            The serial port that's connected to the ESP chip. This can be overridden by setting the ESPPORT
            environment variable.

            This value is ignored when using the CMake-based build system or idf.py.

    choice ESPTOOLPY_BAUD
        prompt "Default baud rate"
        depends on !IDF_CMAKE
        default ESPTOOLPY_BAUD_115200B
        help
            Default baud rate to use while communicating with the ESP chip. Can be overridden by
            setting the ESPBAUD variable.

            This value is ignored when using the CMake-based build system or idf.py.

        config ESPTOOLPY_BAUD_115200B
            bool "115200 baud"
        config ESPTOOLPY_BAUD_230400B
            bool "230400 baud"
        config ESPTOOLPY_BAUD_921600B
            bool "921600 baud"
        config ESPTOOLPY_BAUD_2MB
            bool "2Mbaud"
        config ESPTOOLPY_BAUD_OTHER
            bool "Other baud rate"
    endchoice

    config ESPTOOLPY_BAUD_OTHER_VAL
        int "Other baud rate value" if ESPTOOLPY_BAUD_OTHER
        default 115200

    config ESPTOOLPY_BAUD
        int
        depends on !IDF_CMAKE
        default 115200 if ESPTOOLPY_BAUD_115200B
        default 230400 if ESPTOOLPY_BAUD_230400B
        default 921600 if ESPTOOLPY_BAUD_921600B
        default 2000000 if ESPTOOLPY_BAUD_2MB
        default ESPTOOLPY_BAUD_OTHER_VAL if ESPTOOLPY_BAUD_OTHER

    config ESPTOOLPY_COMPRESSED
        bool "Use compressed upload"
        depends on !IDF_CMAKE
        default "y"
        help
            The flasher tool can send data compressed using zlib, letting the ROM on the ESP chip
            decompress it on the fly before flashing it. For most payloads, this should result in a
            speed increase.

    config ESPTOOLPY_NO_STUB
        bool "Disable download stub"
        default "n"
        help
            The flasher tool sends a precompiled download stub first by default. That stub allows things
            like compressed downloads and more. Usually you should not need to disable that feature

    choice ESPTOOLPY_FLASHMODE
        prompt "Flash SPI mode"
        default ESPTOOLPY_FLASHMODE_DIO
        help
            Mode the flash chip is flashed in, as well as the default mode for the
            binary to run in.

        config ESPTOOLPY_FLASHMODE_QIO
            bool "QIO"
        config ESPTOOLPY_FLASHMODE_QOUT
            bool "QOUT"
        config ESPTOOLPY_FLASHMODE_DIO
            bool "DIO"
        config ESPTOOLPY_FLASHMODE_DOUT
            bool "DOUT"
    endchoice

    # Note: we use esptool.py to flash bootloader in
    # dio mode for QIO/QOUT, bootloader then upgrades
    # itself to quad mode during initialisation
    config ESPTOOLPY_FLASHMODE
        string
        default "dio" if ESPTOOLPY_FLASHMODE_QIO
        default "dio" if ESPTOOLPY_FLASHMODE_QOUT
        default "dio" if ESPTOOLPY_FLASHMODE_DIO
        default "dout" if ESPTOOLPY_FLASHMODE_DOUT

    choice ESPTOOLPY_FLASHFREQ
        prompt "Flash SPI speed"
        default ESPTOOLPY_FLASHFREQ_40M if IDF_TARGET_ESP32
        default ESPTOOLPY_FLASHFREQ_80M
        help
            The SPI flash frequency to be used.

        config ESPTOOLPY_FLASHFREQ_80M
            bool "80 MHz"
        config ESPTOOLPY_FLASHFREQ_40M
            bool "40 MHz"
        config ESPTOOLPY_FLASHFREQ_26M
            bool "26 MHz"
        config ESPTOOLPY_FLASHFREQ_20M
            bool "20 MHz"
    endchoice

    config ESPTOOLPY_FLASHFREQ
        string
        default "80m" if ESPTOOLPY_FLASHFREQ_80M
        default "40m" if ESPTOOLPY_FLASHFREQ_40M
        default "26m" if ESPTOOLPY_FLASHFREQ_26M
        default "20m" if ESPTOOLPY_FLASHFREQ_20M


    choice ESPTOOLPY_FLASHSIZE
        prompt "Flash size"
        default ESPTOOLPY_FLASHSIZE_2MB
        help
            SPI flash size, in megabytes

        config ESPTOOLPY_FLASHSIZE_1MB
            bool "1 MB"
        config ESPTOOLPY_FLASHSIZE_2MB
            bool "2 MB"
        config ESPTOOLPY_FLASHSIZE_4MB
            bool "4 MB"
        config ESPTOOLPY_FLASHSIZE_8MB
            bool "8 MB"
        config ESPTOOLPY_FLASHSIZE_16MB
            bool "16 MB"
    endchoice

    config ESPTOOLPY_FLASHSIZE
        string
        default "1MB" if ESPTOOLPY_FLASHSIZE_1MB
        default "2MB" if ESPTOOLPY_FLASHSIZE_2MB
        default "4MB" if ESPTOOLPY_FLASHSIZE_4MB
        default "8MB" if ESPTOOLPY_FLASHSIZE_8MB
        default "16MB" if ESPTOOLPY_FLASHSIZE_16MB

    config ESPTOOLPY_FLASHSIZE_DETECT
        bool "Detect flash size when flashing bootloader"
        default y
        help
            If this option is set, flashing the project will automatically detect
            the flash size of the target chip and update the bootloader image
            before it is flashed.

    choice ESPTOOLPY_BEFORE
        prompt "Before flashing"
        default ESPTOOLPY_BEFORE_RESET
        help
            Configure whether esptool.py should reset the ESP32 before flashing.

            Automatic resetting depends on the RTS & DTR signals being
            wired from the serial port to the ESP32. Most USB development
            boards do this internally.

        config ESPTOOLPY_BEFORE_RESET
            bool "Reset to bootloader"
        config ESPTOOLPY_BEFORE_NORESET
            bool "No reset"
    endchoice

    config ESPTOOLPY_BEFORE
        string
        default "default_reset" if ESPTOOLPY_BEFORE_RESET
        default "no_reset" if ESPTOOLPY_BEFORE_NORESET

    choice ESPTOOLPY_AFTER
        prompt "After flashing"
        default ESPTOOLPY_AFTER_RESET
        help
            Configure whether esptool.py should reset the ESP32 after flashing.

            Automatic resetting depends on the RTS & DTR signals being
            wired from the serial port to the ESP32. Most USB development
            boards do this internally.

        config ESPTOOLPY_AFTER_RESET
            bool "Reset after flashing"
        config ESPTOOLPY_AFTER_NORESET
            bool "Stay in bootloader"
    endchoice

    config ESPTOOLPY_AFTER
        string
        default "hard_reset" if ESPTOOLPY_AFTER_RESET
        default "no_reset" if ESPTOOLPY_AFTER_NORESET

    choice ESPTOOLPY_MONITOR_BAUD
        prompt "'idf.py monitor' baud rate"
        default ESPTOOLPY_MONITOR_BAUD_115200B
        help
            Baud rate to use when running 'idf.py monitor' or 'make monitor'
            to view serial output from a running chip.

            If "Same as UART Console baud rate" is chosen then the value will
            follow the "UART Console baud rate" config item.

            Can override by setting the MONITORBAUD environment variable.

        config ESPTOOLPY_MONITOR_BAUD_CONSOLE
            bool "Same as UART console baud rate"
        config ESPTOOLPY_MONITOR_BAUD_9600B
            bool "9600 bps"
        config ESPTOOLPY_MONITOR_BAUD_57600B
            bool "57600 bps"
        config ESPTOOLPY_MONITOR_BAUD_115200B
            bool "115200 bps"
        config ESPTOOLPY_MONITOR_BAUD_230400B
            bool "230400 bps"
        config ESPTOOLPY_MONITOR_BAUD_921600B
            bool "921600 bps"
        config ESPTOOLPY_MONITOR_BAUD_2MB
            bool "2 Mbps"
        config ESPTOOLPY_MONITOR_BAUD_OTHER
            bool "Custom baud rate"

    endchoice

    config ESPTOOLPY_MONITOR_BAUD_OTHER_VAL
        int "Custom baud rate value" if ESPTOOLPY_MONITOR_BAUD_OTHER
        default 115200

    config ESPTOOLPY_MONITOR_BAUD
        int
        default ESP_CONSOLE_UART_BAUDRATE if ESPTOOLPY_MONITOR_BAUD_CONSOLE
        default 9600 if ESPTOOLPY_MONITOR_BAUD_9600B
        default 57600 if ESPTOOLPY_MONITOR_BAUD_57600B
        default 115200 if ESPTOOLPY_MONITOR_BAUD_115200B
        default 230400 if ESPTOOLPY_MONITOR_BAUD_230400B
        default 921600 if ESPTOOLPY_MONITOR_BAUD_921600B
        default 2000000 if ESPTOOLPY_MONITOR_BAUD_2MB
        default ESPTOOLPY_MONITOR_BAUD_OTHER_VAL if ESPTOOLPY_MONITOR_BAUD_OTHER

endmenu