menu "Serial flasher config"

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

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

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

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

config FLASHMODE_QIO
	bool "QIO"
config FLASHMODE_QOUT
	bool "QOUT"
config FLASHMODE_DIO
	bool "DIO"
config 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 FLASHMODE_QIO
	default "dio" if FLASHMODE_QOUT
	default "dio" if FLASHMODE_DIO
	default "dout" if FLASHMODE_DOUT

choice ESPTOOLPY_FLASHFREQ
	prompt "Flash SPI speed"
	default ESPTOOLPY_FLASHFREQ_40M
	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, 'make flash' targets will automatically detect
        the flash size and update the bootloader image when flashing.

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 MONITOR_BAUD
    prompt "'make monitor' baud rate"
    default MONITOR_BAUD_115200B
    help
        Baud rate to use when running 'make monitor' to view serial output
        from a running chip.

        Can override by setting the MONITORBAUD environment variable.

config MONITOR_BAUD_9600B
    bool "9600 bps"
config MONITOR_BAUD_57600B
    bool "57600 bps"
config MONITOR_BAUD_115200B
    bool "115200 bps"
config MONITOR_BAUD_230400B
    bool "230400 bps"
config MONITOR_BAUD_921600B
    bool "921600 bps"
config MONITOR_BAUD_2MB
    bool "2 Mbps"
config MONITOR_BAUD_OTHER
    bool "Custom baud rate"

endchoice

config MONITOR_BAUD_OTHER_VAL
    int "Custom baud rate value" if MONITOR_BAUD_OTHER
    default 115200

config MONITOR_BAUD
    int
    default 9600 if MONITOR_BAUD_9600B
    default 57600 if MONITOR_BAUD_57600B
    default 115200 if MONITOR_BAUD_115200B
    default 230400 if MONITOR_BAUD_230400B
    default 921600 if MONITOR_BAUD_921600B
    default 2000000 if MONITOR_BAUD_2MB
    default MONITOR_BAUD_OTHER_VAL if MONITOR_BAUD_OTHER

endmenu
