2018-11-20 11:40:26 -05:00
|
|
|
menu "Example Connection Configuration"
|
|
|
|
|
2022-04-20 05:02:26 -04:00
|
|
|
orsource "$IDF_PATH/examples/common_components/env_caps/$IDF_TARGET/Kconfig.env_caps"
|
2021-08-13 10:50:39 -04:00
|
|
|
|
2020-04-23 10:23:46 -04:00
|
|
|
config EXAMPLE_CONNECT_WIFI
|
|
|
|
bool "connect using WiFi interface"
|
2023-01-31 02:29:00 -05:00
|
|
|
depends on !IDF_TARGET_LINUX
|
2020-04-23 10:23:46 -04:00
|
|
|
default y
|
|
|
|
help
|
|
|
|
Protocol examples can use Wi-Fi and/or Ethernet to connect to the network.
|
|
|
|
Choose this option to connect with WiFi
|
2018-11-20 11:40:26 -05:00
|
|
|
|
2019-06-25 07:36:56 -04:00
|
|
|
if EXAMPLE_CONNECT_WIFI
|
2022-07-03 03:24:39 -04:00
|
|
|
config EXAMPLE_WIFI_SSID_PWD_FROM_STDIN
|
|
|
|
bool "Get ssid and password from stdin"
|
|
|
|
default n
|
|
|
|
help
|
|
|
|
Give the WiFi SSID and password from stdin.
|
|
|
|
|
|
|
|
config EXAMPLE_PROVIDE_WIFI_CONSOLE_CMD
|
|
|
|
depends on !EXAMPLE_WIFI_SSID_PWD_FROM_STDIN
|
|
|
|
bool "Provide wifi connect commands"
|
|
|
|
default y
|
|
|
|
help
|
|
|
|
Provide wifi connect commands for esp_console.
|
2022-07-06 12:34:06 -04:00
|
|
|
Please use `example_register_wifi_connect_commands` to register them.
|
2022-07-03 03:24:39 -04:00
|
|
|
|
2019-06-25 07:36:56 -04:00
|
|
|
config EXAMPLE_WIFI_SSID
|
2022-07-03 03:24:39 -04:00
|
|
|
depends on !EXAMPLE_WIFI_SSID_PWD_FROM_STDIN
|
2019-06-25 07:36:56 -04:00
|
|
|
string "WiFi SSID"
|
|
|
|
default "myssid"
|
2018-11-20 11:40:26 -05:00
|
|
|
help
|
2019-06-25 07:36:56 -04:00
|
|
|
SSID (network name) for the example to connect to.
|
2018-11-20 11:40:26 -05:00
|
|
|
|
2019-06-25 07:36:56 -04:00
|
|
|
config EXAMPLE_WIFI_PASSWORD
|
2022-07-03 03:24:39 -04:00
|
|
|
depends on !EXAMPLE_WIFI_SSID_PWD_FROM_STDIN
|
2019-06-25 07:36:56 -04:00
|
|
|
string "WiFi Password"
|
|
|
|
default "mypassword"
|
2018-11-20 11:40:26 -05:00
|
|
|
help
|
2019-06-25 07:36:56 -04:00
|
|
|
WiFi password (WPA or WPA2) for the example to use.
|
|
|
|
Can be left blank if the network has no security set.
|
2021-02-25 06:47:53 -05:00
|
|
|
|
2022-07-04 10:13:16 -04:00
|
|
|
config EXAMPLE_WIFI_CONN_MAX_RETRY
|
|
|
|
int "Maximum retry"
|
|
|
|
default 6
|
|
|
|
help
|
|
|
|
Set the Maximum retry to avoid station reconnecting to the AP unlimited,
|
|
|
|
in case the AP is really inexistent.
|
|
|
|
|
2021-02-25 06:47:53 -05:00
|
|
|
choice EXAMPLE_WIFI_SCAN_METHOD
|
|
|
|
prompt "WiFi Scan Method"
|
2021-06-08 22:01:17 -04:00
|
|
|
default EXAMPLE_WIFI_SCAN_METHOD_ALL_CHANNEL
|
2021-02-25 06:47:53 -05:00
|
|
|
help
|
|
|
|
WiFi scan method:
|
|
|
|
|
|
|
|
If "Fast" is selected, scan will end after find SSID match AP.
|
|
|
|
|
|
|
|
If "All Channel" is selected, scan will end after scan all the channel.
|
|
|
|
|
|
|
|
config EXAMPLE_WIFI_SCAN_METHOD_FAST
|
|
|
|
bool "Fast"
|
|
|
|
config EXAMPLE_WIFI_SCAN_METHOD_ALL_CHANNEL
|
|
|
|
bool "All Channel"
|
|
|
|
endchoice
|
|
|
|
|
|
|
|
menu "WiFi Scan threshold"
|
|
|
|
config EXAMPLE_WIFI_SCAN_RSSI_THRESHOLD
|
|
|
|
int "WiFi minimum rssi"
|
|
|
|
range -127 0
|
|
|
|
|
|
|
|
default -127
|
|
|
|
help
|
|
|
|
The minimum rssi to accept in the scan mode.
|
|
|
|
|
|
|
|
choice EXAMPLE_WIFI_SCAN_AUTH_MODE_THRESHOLD
|
|
|
|
prompt "WiFi Scan auth mode threshold"
|
|
|
|
default EXAMPLE_WIFI_AUTH_OPEN
|
|
|
|
help
|
|
|
|
The weakest authmode to accept in the scan mode.
|
|
|
|
|
|
|
|
config EXAMPLE_WIFI_AUTH_OPEN
|
|
|
|
bool "OPEN"
|
|
|
|
config EXAMPLE_WIFI_AUTH_WEP
|
|
|
|
bool "WEP"
|
|
|
|
config EXAMPLE_WIFI_AUTH_WPA_PSK
|
|
|
|
bool "WPA PSK"
|
|
|
|
config EXAMPLE_WIFI_AUTH_WPA2_PSK
|
|
|
|
bool "WPA2 PSK"
|
|
|
|
config EXAMPLE_WIFI_AUTH_WPA_WPA2_PSK
|
|
|
|
bool "WPA WPA2 PSK"
|
|
|
|
config EXAMPLE_WIFI_AUTH_WPA2_ENTERPRISE
|
|
|
|
bool "WPA2 ENTERPRISE"
|
|
|
|
config EXAMPLE_WIFI_AUTH_WPA3_PSK
|
|
|
|
bool "WPA3 PSK"
|
|
|
|
config EXAMPLE_WIFI_AUTH_WPA2_WPA3_PSK
|
|
|
|
bool "WPA2 WPA3 PSK"
|
|
|
|
config EXAMPLE_WIFI_AUTH_WAPI_PSK
|
|
|
|
bool "WAPI PSK"
|
|
|
|
endchoice
|
|
|
|
endmenu
|
|
|
|
|
|
|
|
choice EXAMPLE_WIFI_CONNECT_AP_SORT_METHOD
|
|
|
|
prompt "WiFi Connect AP Sort Method"
|
|
|
|
default EXAMPLE_WIFI_CONNECT_AP_BY_SIGNAL
|
|
|
|
help
|
|
|
|
WiFi connect AP sort method:
|
|
|
|
|
|
|
|
If "Signal" is selected, Sort matched APs in scan list by RSSI.
|
|
|
|
|
|
|
|
If "Security" is selected, Sort matched APs in scan list by security mode.
|
|
|
|
|
|
|
|
config EXAMPLE_WIFI_CONNECT_AP_BY_SIGNAL
|
|
|
|
bool "Signal"
|
|
|
|
config EXAMPLE_WIFI_CONNECT_AP_BY_SECURITY
|
|
|
|
bool "Security"
|
|
|
|
endchoice
|
2019-06-25 07:36:56 -04:00
|
|
|
endif
|
2018-11-20 11:40:26 -05:00
|
|
|
|
2020-04-23 10:23:46 -04:00
|
|
|
config EXAMPLE_CONNECT_ETHERNET
|
|
|
|
bool "connect using Ethernet interface"
|
2023-01-31 02:29:00 -05:00
|
|
|
depends on !IDF_TARGET_LINUX
|
2020-04-23 10:23:46 -04:00
|
|
|
default n
|
|
|
|
help
|
|
|
|
Protocol examples can use Wi-Fi and/or Ethernet to connect to the network.
|
|
|
|
Choose this option to connect with Ethernet
|
|
|
|
|
2019-06-25 07:36:56 -04:00
|
|
|
if EXAMPLE_CONNECT_ETHERNET
|
2022-06-14 03:02:16 -04:00
|
|
|
config EXAMPLE_ETHERNET_EMAC_TASK_STACK_SIZE
|
|
|
|
int "emac_rx task stack size"
|
|
|
|
default 2048
|
|
|
|
help
|
|
|
|
This set stack size for emac_rx task
|
|
|
|
|
2020-11-26 22:44:42 -05:00
|
|
|
config EXAMPLE_USE_SPI_ETHERNET
|
|
|
|
bool
|
|
|
|
|
|
|
|
choice EXAMPLE_ETHERNET_TYPE
|
2019-06-25 07:36:56 -04:00
|
|
|
prompt "Ethernet Type"
|
|
|
|
default EXAMPLE_USE_INTERNAL_ETHERNET if IDF_TARGET_ESP32
|
2020-11-06 03:06:20 -05:00
|
|
|
default EXAMPLE_USE_W5500
|
2018-11-20 11:40:26 -05:00
|
|
|
help
|
2019-06-25 07:36:56 -04:00
|
|
|
Select which kind of Ethernet will be used in the example.
|
2018-11-20 11:40:26 -05:00
|
|
|
|
2019-06-25 07:36:56 -04:00
|
|
|
config EXAMPLE_USE_INTERNAL_ETHERNET
|
|
|
|
depends on IDF_TARGET_ESP32
|
|
|
|
select ETH_USE_ESP32_EMAC
|
|
|
|
bool "Internal EMAC"
|
|
|
|
help
|
|
|
|
Select internal Ethernet MAC controller.
|
2018-11-20 11:40:26 -05:00
|
|
|
|
2019-11-13 23:03:14 -05:00
|
|
|
config EXAMPLE_USE_DM9051
|
|
|
|
bool "DM9051 Module"
|
2020-11-26 22:44:42 -05:00
|
|
|
select EXAMPLE_USE_SPI_ETHERNET
|
2019-06-25 07:36:56 -04:00
|
|
|
select ETH_USE_SPI_ETHERNET
|
2019-11-13 23:03:14 -05:00
|
|
|
select ETH_SPI_ETHERNET_DM9051
|
2019-06-25 07:36:56 -04:00
|
|
|
help
|
|
|
|
Select external SPI-Ethernet module.
|
2019-10-01 12:50:34 -04:00
|
|
|
|
2020-11-06 03:06:20 -05:00
|
|
|
config EXAMPLE_USE_W5500
|
|
|
|
bool "W5500 Module"
|
2020-11-26 22:44:42 -05:00
|
|
|
select EXAMPLE_USE_SPI_ETHERNET
|
2020-11-06 03:06:20 -05:00
|
|
|
select ETH_USE_SPI_ETHERNET
|
|
|
|
select ETH_SPI_ETHERNET_W5500
|
|
|
|
help
|
|
|
|
Select external SPI-Ethernet module (W5500).
|
|
|
|
|
2019-10-01 12:50:34 -04:00
|
|
|
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.
|
|
|
|
|
2020-11-26 22:44:42 -05:00
|
|
|
endchoice # EXAMPLE_ETHERNET_TYPE
|
2019-06-25 07:36:56 -04:00
|
|
|
|
|
|
|
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.
|
|
|
|
|
2021-06-24 05:03:11 -04:00
|
|
|
config EXAMPLE_ETH_PHY_LAN87XX
|
|
|
|
bool "LAN87xx"
|
2019-06-25 07:36:56 -04:00
|
|
|
help
|
2021-06-24 05:03:11 -04:00
|
|
|
Below chips are supported:
|
|
|
|
LAN8710A is a small footprint MII/RMII 10/100 Ethernet Transceiver with HP Auto-MDIX and
|
|
|
|
flexPWR® Technology.
|
2019-06-25 07:36:56 -04:00
|
|
|
LAN8720A is a small footprint RMII 10/100 Ethernet Transceiver with HP Auto-MDIX Support.
|
2021-06-24 05:03:11 -04:00
|
|
|
LAN8740A/LAN8741A is a small footprint MII/RMII 10/100 Energy Efficient Ethernet Transceiver
|
|
|
|
with HP Auto-MDIX and flexPWR® Technology.
|
|
|
|
LAN8742A is a small footprint RMII 10/100 Ethernet Transceiver with HP Auto-MDIX and
|
|
|
|
flexPWR® Technology.
|
|
|
|
Goto https://www.microchip.com for more information about them.
|
2019-06-25 07:36:56 -04:00
|
|
|
|
|
|
|
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.
|
2021-11-16 10:18:43 -05:00
|
|
|
|
|
|
|
config EXAMPLE_ETH_PHY_KSZ80XX
|
|
|
|
bool "KSZ80xx"
|
|
|
|
help
|
|
|
|
With the KSZ80xx series, Microchip offers single-chip 10BASE-T/100BASE-TX
|
|
|
|
Ethernet Physical Layer Tranceivers (PHY).
|
|
|
|
The following chips are supported: KSZ8001, KSZ8021, KSZ8031, KSZ8041,
|
|
|
|
KSZ8051, KSZ8061, KSZ8081, KSZ8091
|
|
|
|
Goto https://www.microchip.com for more information about them.
|
2019-06-25 07:36:56 -04:00
|
|
|
endchoice
|
2019-11-13 23:03:14 -05:00
|
|
|
|
|
|
|
config EXAMPLE_ETH_MDC_GPIO
|
|
|
|
int "SMI MDC GPIO number"
|
2022-04-20 05:02:26 -04:00
|
|
|
range ENV_GPIO_RANGE_MIN ENV_GPIO_OUT_RANGE_MAX
|
2019-11-13 23:03:14 -05:00
|
|
|
default 23
|
|
|
|
help
|
|
|
|
Set the GPIO number used by SMI MDC.
|
|
|
|
|
|
|
|
config EXAMPLE_ETH_MDIO_GPIO
|
|
|
|
int "SMI MDIO GPIO number"
|
2022-04-20 05:02:26 -04:00
|
|
|
range ENV_GPIO_RANGE_MIN ENV_GPIO_OUT_RANGE_MAX
|
2019-11-13 23:03:14 -05:00
|
|
|
default 18
|
|
|
|
help
|
|
|
|
Set the GPIO number used by SMI MDIO.
|
2019-06-25 07:36:56 -04:00
|
|
|
endif
|
|
|
|
|
2020-11-26 22:44:42 -05:00
|
|
|
if EXAMPLE_USE_SPI_ETHERNET
|
2020-11-06 03:06:20 -05:00
|
|
|
config EXAMPLE_ETH_SPI_HOST
|
2019-06-25 07:36:56 -04:00
|
|
|
int "SPI Host Number"
|
|
|
|
range 0 2
|
|
|
|
default 1
|
|
|
|
help
|
2020-11-06 03:06:20 -05:00
|
|
|
Set the SPI host used to communicate with the SPI Ethernet Controller.
|
2019-06-25 07:36:56 -04:00
|
|
|
|
2020-11-06 03:06:20 -05:00
|
|
|
config EXAMPLE_ETH_SPI_SCLK_GPIO
|
2019-06-25 07:36:56 -04:00
|
|
|
int "SPI SCLK GPIO number"
|
2022-04-20 05:02:26 -04:00
|
|
|
range ENV_GPIO_RANGE_MIN ENV_GPIO_OUT_RANGE_MAX
|
2021-08-13 10:50:39 -04:00
|
|
|
default 14
|
2019-06-25 07:36:56 -04:00
|
|
|
help
|
|
|
|
Set the GPIO number used by SPI SCLK.
|
|
|
|
|
2020-11-06 03:06:20 -05:00
|
|
|
config EXAMPLE_ETH_SPI_MOSI_GPIO
|
2019-06-25 07:36:56 -04:00
|
|
|
int "SPI MOSI GPIO number"
|
2022-04-20 05:02:26 -04:00
|
|
|
range ENV_GPIO_RANGE_MIN ENV_GPIO_OUT_RANGE_MAX
|
2021-08-13 10:50:39 -04:00
|
|
|
default 13
|
2019-06-25 07:36:56 -04:00
|
|
|
help
|
|
|
|
Set the GPIO number used by SPI MOSI.
|
|
|
|
|
2020-11-06 03:06:20 -05:00
|
|
|
config EXAMPLE_ETH_SPI_MISO_GPIO
|
2019-06-25 07:36:56 -04:00
|
|
|
int "SPI MISO GPIO number"
|
2022-04-20 05:02:26 -04:00
|
|
|
range ENV_GPIO_RANGE_MIN ENV_GPIO_IN_RANGE_MAX
|
2021-08-13 10:50:39 -04:00
|
|
|
default 12
|
2019-06-25 07:36:56 -04:00
|
|
|
help
|
|
|
|
Set the GPIO number used by SPI MISO.
|
|
|
|
|
2020-11-06 03:06:20 -05:00
|
|
|
config EXAMPLE_ETH_SPI_CS_GPIO
|
2019-06-25 07:36:56 -04:00
|
|
|
int "SPI CS GPIO number"
|
2022-04-20 05:02:26 -04:00
|
|
|
range ENV_GPIO_RANGE_MIN ENV_GPIO_OUT_RANGE_MAX
|
2021-08-13 10:50:39 -04:00
|
|
|
default 15
|
2019-06-25 07:36:56 -04:00
|
|
|
help
|
|
|
|
Set the GPIO number used by SPI CS.
|
|
|
|
|
2020-11-06 03:06:20 -05:00
|
|
|
config EXAMPLE_ETH_SPI_CLOCK_MHZ
|
2019-06-25 07:36:56 -04:00
|
|
|
int "SPI clock speed (MHz)"
|
2021-08-13 10:50:39 -04:00
|
|
|
range 5 80
|
2020-11-06 03:06:20 -05:00
|
|
|
default 36
|
2019-06-25 07:36:56 -04:00
|
|
|
help
|
|
|
|
Set the clock speed (MHz) of SPI interface.
|
2019-11-13 23:03:14 -05:00
|
|
|
|
2020-11-06 03:06:20 -05:00
|
|
|
config EXAMPLE_ETH_SPI_INT_GPIO
|
2019-11-13 23:03:14 -05:00
|
|
|
int "Interrupt GPIO number"
|
2022-04-20 05:02:26 -04:00
|
|
|
range ENV_GPIO_RANGE_MIN ENV_GPIO_IN_RANGE_MAX
|
2019-11-13 23:03:14 -05:00
|
|
|
default 4
|
|
|
|
help
|
2020-11-06 03:06:20 -05:00
|
|
|
Set the GPIO number used by the SPI Ethernet module interrupt line.
|
2020-11-26 22:44:42 -05:00
|
|
|
endif # EXAMPLE_USE_SPI_ETHERNET
|
2019-11-13 23:03:14 -05:00
|
|
|
|
|
|
|
config EXAMPLE_ETH_PHY_RST_GPIO
|
|
|
|
int "PHY Reset GPIO number"
|
2022-04-20 05:02:26 -04:00
|
|
|
range -1 ENV_GPIO_OUT_RANGE_MAX
|
2019-11-13 23:03:14 -05:00
|
|
|
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
|
|
|
|
default 1
|
|
|
|
help
|
|
|
|
Set PHY address according your board schematic.
|
2020-11-26 22:44:42 -05:00
|
|
|
endif # EXAMPLE_CONNECT_ETHERNET
|
2018-11-20 11:40:26 -05:00
|
|
|
|
2022-10-03 11:28:01 -04:00
|
|
|
config EXAMPLE_CONNECT_IPV4
|
|
|
|
bool
|
|
|
|
depends on LWIP_IPV4
|
|
|
|
default y
|
|
|
|
|
2018-11-20 11:40:26 -05:00
|
|
|
config EXAMPLE_CONNECT_IPV6
|
2022-07-06 12:34:06 -04:00
|
|
|
depends on EXAMPLE_CONNECT_WIFI || EXAMPLE_CONNECT_ETHERNET
|
2020-02-07 03:19:55 -05:00
|
|
|
bool "Obtain IPv6 address"
|
2018-11-20 11:40:26 -05:00
|
|
|
default y
|
2021-01-18 06:16:06 -05:00
|
|
|
select LWIP_IPV6
|
2018-11-20 11:40:26 -05:00
|
|
|
help
|
2020-02-07 03:19:55 -05:00
|
|
|
By default, examples will wait until IPv4 and IPv6 local link addresses are obtained.
|
2018-11-20 11:40:26 -05:00
|
|
|
Disable this option if the network does not support IPv6.
|
2020-02-07 03:19:55 -05:00
|
|
|
Choose the preferred IPv6 address type if the connection code should wait until other than
|
|
|
|
the local link address gets assigned.
|
2020-11-06 03:59:40 -05:00
|
|
|
Consider enabling IPv6 stateless address autoconfiguration (SLAAC) in the LWIP component.
|
2020-02-07 03:19:55 -05:00
|
|
|
|
|
|
|
if EXAMPLE_CONNECT_IPV6
|
|
|
|
choice EXAMPLE_CONNECT_PREFERRED_IPV6
|
|
|
|
prompt "Preferred IPv6 Type"
|
|
|
|
default EXAMPLE_CONNECT_IPV6_PREF_LOCAL_LINK
|
|
|
|
help
|
|
|
|
Select which kind of IPv6 address the connect logic waits for.
|
|
|
|
|
|
|
|
config EXAMPLE_CONNECT_IPV6_PREF_LOCAL_LINK
|
|
|
|
bool "Local Link Address"
|
|
|
|
help
|
|
|
|
Blocks until Local link address assigned.
|
|
|
|
|
|
|
|
config EXAMPLE_CONNECT_IPV6_PREF_GLOBAL
|
|
|
|
bool "Global Address"
|
|
|
|
help
|
|
|
|
Blocks until Global address assigned.
|
|
|
|
|
|
|
|
config EXAMPLE_CONNECT_IPV6_PREF_SITE_LOCAL
|
|
|
|
bool "Site Local Address"
|
|
|
|
help
|
|
|
|
Blocks until Site link address assigned.
|
|
|
|
|
|
|
|
config EXAMPLE_CONNECT_IPV6_PREF_UNIQUE_LOCAL
|
|
|
|
bool "Unique Local Link Address"
|
|
|
|
help
|
|
|
|
Blocks until Unique local address assigned.
|
|
|
|
|
|
|
|
endchoice
|
|
|
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
2018-11-20 11:40:26 -05:00
|
|
|
endmenu
|