# Copyright (c) 2020 ATL Electronics
# SPDX-License-Identifier: Apache-2.0

if SHIELD_INVENTEK_ESWIFI || \
	SHIELD_INVENTEK_ESWIFI_ARDUINO_SPI || \
	SHIELD_INVENTEK_ESWIFI_ARDUINO_UART

if NETWORKING

config WIFI_ESWIFI
	default y
	depends on WIFI

orsource "boards/*.defconfig"

choice WIFI_ESWIFI_BUS
	default WIFI_ESWIFI_BUS_SPI if SHIELD_INVENTEK_ESWIFI_ARDUINO_SPI
	default WIFI_ESWIFI_BUS_UART if SHIELD_INVENTEK_ESWIFI_ARDUINO_UART
	depends on WIFI_ESWIFI
endchoice

endif	# NETWORKING

endif	# SHIELD_INVENTEK_ESWIFI || \
	# SHIELD_INVENTEK_ESWIFI_ARDUINO_SPI || \
	# SHIELD_INVENTEK_ESWIFI_ARDUINO_UART
