# Copyright (c) 2019 Tobias Svehagen
# SPDX-License-Identifier: Apache-2.0

menuconfig WIFI_ESP
	bool "Espressif ESP8266 and ESP32 support"
	select MODEM
	select MODEM_CONTEXT
	select MODEM_CMD_HANDLER
	select MODEM_IFACE_UART
	select NET_L2_WIFI_MGMT
	select WIFI_OFFLOAD

if WIFI_ESP

config WIFI_ESP_NAME
	string "Driver name"
	default "esp-wifi-modem"

config WIFI_ESP_RX_STACK_SIZE
	int "Stack size for the Espressif esp wifi driver RX thread"
	default 1024
	help
	  This stack is used by the Espressif ESP RX thread.

config WIFI_ESP_RX_THREAD_PRIORITY
	int "Priority of RX thread"
	default 7
	help
	  Priority of thread used for processing RX data.

config WIFI_ESP_WORKQ_STACK_SIZE
	int "Stack size for the esp driver work queue"
	default 2048
	help
	  This stack is used by the work queue to pass off net_pkt data
	  to the rest of the network stack, letting the rx thread continue
	  processing data.

config WIFI_ESP_WORKQ_THREAD_PRIORITY
	int "Priority of work queue thread"
	default 7
	help
	  Priority of thread used for processing driver work queue items.

config WIFI_ESP_PASSIVE_MODE
	bool "Use passive mode"
	help
	  This lets the ESP handle the TCP window so that data can flow
	  at a rate that the driver can handle. Without this, data might get
	  lost if the driver cannot empty the device buffer quickly enough.

config WIFI_ESP_RESET_TIMEOUT
	int "Reset timeout"
	default 3000
	help
	  How long to wait for device to become ready after AT+RST has been
	  sent. This can vary with chipset (ESP8266/ESP32) and firmware
	  version. This is ignored if a reset pin is configured.

choice WIFI_ESP_AT_VERSION
	prompt "AT version"
	default WIFI_ESP_AT_VERSION_2_0
	help
	  Select which version of AT command set should be used.

config WIFI_ESP_AT_VERSION_1_7
	bool "AT version 1.7"
	help
	  Use AT command set version 1.7.

config WIFI_ESP_AT_VERSION_2_0
	bool "AT version 2.0"
	help
	  Use AT command set version 2.0.

endchoice

endif # WIFI_ESP
