menu "Example Connection Configuration"
    choice EXAMPLE_CONNECT_INTERFACE
        prompt "Connect using"
        default EXAMPLE_CONNECT_WIFI
        help
            Protocol examples can use Wi-Fi or Ethernet to connect to the network.
            Choose which interface to use.

        config EXAMPLE_CONNECT_WIFI
            bool "Wi-Fi"

        config EXAMPLE_CONNECT_ETHERNET
            bool "Ethernet"

    endchoice

    if EXAMPLE_CONNECT_WIFI
        config EXAMPLE_WIFI_SSID
            string "WiFi SSID"
            default "myssid"
            help
                SSID (network name) for the example to connect to.

        config EXAMPLE_WIFI_PASSWORD
            string "WiFi Password"
            default "mypassword"
            help
                WiFi password (WPA or WPA2) for the example to use.
                Can be left blank if the network has no security set.
    endif

    if EXAMPLE_CONNECT_ETHERNET
        choice EXAMPLE_USE_ETHERNET
            prompt "Ethernet Type"
            default EXAMPLE_USE_INTERNAL_ETHERNET if IDF_TARGET_ESP32
            default EXAMPLE_USE_DM9051 if !IDF_TARGET_ESP32
            help
                Select which kind of Ethernet will be used in the example.

            config EXAMPLE_USE_INTERNAL_ETHERNET
                depends on IDF_TARGET_ESP32
                select ETH_USE_ESP32_EMAC
                bool "Internal EMAC"
                help
                    Select internal Ethernet MAC controller.

            config EXAMPLE_USE_DM9051
                bool "DM9051 Module"
                select ETH_USE_SPI_ETHERNET
                select ETH_SPI_ETHERNET_DM9051
                help
                    Select external SPI-Ethernet module.

            config EXAMPLE_USE_OPENETH
                bool "OpenCores Ethernet MAC (EXPERIMENTAL)"
                select ETH_USE_OPENETH
                help
                    When this option is enabled, the example is built with support for
                    OpenCores Ethernet MAC, which allows testing the example in QEMU.
                    Note that this option is used for internal testing purposes, and
                    not officially supported. Examples built with this option enabled
                    will not run on a real ESP32 chip.

        endchoice

        if EXAMPLE_USE_INTERNAL_ETHERNET
            choice EXAMPLE_ETH_PHY_MODEL
                prompt "Ethernet PHY Device"
                default EXAMPLE_ETH_PHY_IP101
                help
                    Select the Ethernet PHY device to use in the example.

                config EXAMPLE_ETH_PHY_IP101
                    bool "IP101"
                    help
                        IP101 is a single port 10/100 MII/RMII/TP/Fiber Fast Ethernet Transceiver.
                        Goto http://www.icplus.com.tw/pp-IP101G.html for more information about it.

                config EXAMPLE_ETH_PHY_RTL8201
                    bool "RTL8201/SR8201"
                    help
                        RTL8201F/SR8201F is a single port 10/100Mb Ethernet Transceiver with auto MDIX.
                        Goto http://www.corechip-sz.com/productsview.asp?id=22 for more information about it.

                config EXAMPLE_ETH_PHY_LAN8720
                    bool "LAN8720"
                    help
                        LAN8720A is a small footprint RMII 10/100 Ethernet Transceiver with HP Auto-MDIX Support.
                        Goto https://www.microchip.com/LAN8720A for more information about it.

                config EXAMPLE_ETH_PHY_DP83848
                    bool "DP83848"
                    help
                        DP83848 is a single port 10/100Mb/s Ethernet Physical Layer Transceiver.
                        Goto http://www.ti.com/product/DP83848J for more information about it.
            endchoice

            config EXAMPLE_ETH_MDC_GPIO
                int "SMI MDC GPIO number"
                default 23
                help
                    Set the GPIO number used by SMI MDC.

            config EXAMPLE_ETH_MDIO_GPIO
                int "SMI MDIO GPIO number"
                default 18
                help
                    Set the GPIO number used by SMI MDIO.
        endif

        if EXAMPLE_USE_DM9051
            config EXAMPLE_DM9051_SPI_HOST
                int "SPI Host Number"
                range 0 2
                default 1
                help
                    Set the SPI host used to communicate with DM9051.

            config EXAMPLE_DM9051_SCLK_GPIO
                int "SPI SCLK GPIO number"
                range 0 33
                default 19
                help
                    Set the GPIO number used by SPI SCLK.

            config EXAMPLE_DM9051_MOSI_GPIO
                int "SPI MOSI GPIO number"
                range 0 33
                default 23
                help
                    Set the GPIO number used by SPI MOSI.

            config EXAMPLE_DM9051_MISO_GPIO
                int "SPI MISO GPIO number"
                range 0 33
                default 25
                help
                    Set the GPIO number used by SPI MISO.

            config EXAMPLE_DM9051_CS_GPIO
                int "SPI CS GPIO number"
                range 0 33
                default 22
                help
                    Set the GPIO number used by SPI CS.

            config EXAMPLE_DM9051_SPI_CLOCK_MHZ
                int "SPI clock speed (MHz)"
                range 20 80
                default 20
                help
                    Set the clock speed (MHz) of SPI interface.

            config EXAMPLE_DM9051_INT_GPIO
                int "Interrupt GPIO number"
                default 4
                help
                    Set the GPIO number used by DM9051 interrupt.
        endif

        config EXAMPLE_ETH_PHY_RST_GPIO
            int "PHY Reset GPIO number"
            default 5
            help
                Set the GPIO number used to reset PHY chip.
                Set to -1 to disable PHY chip hardware reset.

        config EXAMPLE_ETH_PHY_ADDR
            int "PHY Address"
            range 0 31 if EXAMPLE_USE_INTERNAL_ETHERNET
            range 1 1 if !EXAMPLE_USE_INTERNAL_ETHERNET
            default 1
            help
                Set PHY address according your board schematic.
    endif

    config EXAMPLE_CONNECT_IPV6
        bool "Obtain IPv6 link-local address"
        depends on IDF_TARGET_ESP32
        # ToDo: remove once IPV6 is supported on esp32s2
        default y
        help
            By default, examples will wait until IPv4 and IPv6 addresses are obtained.
            Disable this option if the network does not support IPv6.
endmenu