From 8348a718478ac59c7528536f9eb408971c9be810 Mon Sep 17 00:00:00 2001 From: Kedar Sovani Date: Wed, 16 Aug 2017 12:03:37 +0530 Subject: [PATCH 1/2] ethernet: remove CONFIG_ETHERNET 1. Hello World application shows no footprint difference before and after this change 2. examples/ethernet/ethernet application compiles properly (can't test with my board) --- components/esp32/event_default_handlers.c | 40 +++++-------------- components/esp32/include/esp_event.h | 5 +++ components/ethernet/Kconfig | 11 +---- components/ethernet/emac_common.h | 8 +--- components/ethernet/emac_main.c | 11 ++--- components/ethernet/include/esp_eth.h | 18 +++++++++ examples/ethernet/ethernet/sdkconfig.defaults | 2 +- tools/unit-test-app/sdkconfig | 1 - 8 files changed, 43 insertions(+), 53 deletions(-) diff --git a/components/esp32/event_default_handlers.c b/components/esp32/event_default_handlers.c index d08fe43e7c..2f671f69f6 100644 --- a/components/esp32/event_default_handlers.c +++ b/components/esp32/event_default_handlers.c @@ -56,46 +56,17 @@ static esp_err_t system_event_sta_connected_handle_default(system_event_t *event static esp_err_t system_event_sta_disconnected_handle_default(system_event_t *event); static esp_err_t system_event_sta_got_ip_default(system_event_t *event); -#ifdef CONFIG_ETHERNET static esp_err_t system_event_eth_start_handle_default(system_event_t *event); static esp_err_t system_event_eth_stop_handle_default(system_event_t *event); static esp_err_t system_event_eth_connected_handle_default(system_event_t *event); static esp_err_t system_event_eth_disconnected_handle_default(system_event_t *event); -#endif /* Default event handler functions Any entry in this table which is disabled by config will have a NULL handler. */ -static system_event_handler_t default_event_handlers[SYSTEM_EVENT_MAX] = { - [SYSTEM_EVENT_WIFI_READY] = NULL, - [SYSTEM_EVENT_SCAN_DONE] = NULL, - [SYSTEM_EVENT_STA_START] = NULL, - [SYSTEM_EVENT_STA_STOP] = NULL, - [SYSTEM_EVENT_STA_CONNECTED] = NULL, - [SYSTEM_EVENT_STA_DISCONNECTED] = NULL, - [SYSTEM_EVENT_STA_AUTHMODE_CHANGE] = NULL, - [SYSTEM_EVENT_STA_GOT_IP] = NULL, - [SYSTEM_EVENT_STA_WPS_ER_SUCCESS] = NULL, - [SYSTEM_EVENT_STA_WPS_ER_FAILED] = NULL, - [SYSTEM_EVENT_STA_WPS_ER_TIMEOUT] = NULL, - [SYSTEM_EVENT_STA_WPS_ER_PIN] = NULL, - [SYSTEM_EVENT_AP_START] = NULL, - [SYSTEM_EVENT_AP_STOP] = NULL, - [SYSTEM_EVENT_AP_STACONNECTED] = NULL, - [SYSTEM_EVENT_AP_STADISCONNECTED] = NULL, - [SYSTEM_EVENT_AP_PROBEREQRECVED] = NULL, - [SYSTEM_EVENT_AP_STA_GOT_IP6] = NULL, -#ifdef CONFIG_ETHERNET - [SYSTEM_EVENT_ETH_START] = system_event_eth_start_handle_default, - [SYSTEM_EVENT_ETH_STOP] = system_event_eth_stop_handle_default, - [SYSTEM_EVENT_ETH_CONNECTED] = system_event_eth_connected_handle_default, - [SYSTEM_EVENT_ETH_DISCONNECTED] = system_event_eth_disconnected_handle_default, - [SYSTEM_EVENT_ETH_GOT_IP] = NULL, -#endif -}; +static system_event_handler_t default_event_handlers[SYSTEM_EVENT_MAX] = { 0 }; -#ifdef CONFIG_ETHERNET esp_err_t system_event_eth_start_handle_default(system_event_t *event) { tcpip_adapter_ip_info_t eth_ip; @@ -151,7 +122,6 @@ esp_err_t system_event_eth_disconnected_handle_default(system_event_t *event) tcpip_adapter_down(TCPIP_ADAPTER_IF_ETH); return ESP_OK; } -#endif static esp_err_t system_event_sta_got_ip_default(system_event_t *event) { @@ -417,3 +387,11 @@ esp_err_t esp_wifi_init(wifi_init_config_t *config) esp_register_shutdown_handler((shutdown_handler_t)esp_wifi_stop); return esp_wifi_init_internal(config); } + +void esp_event_set_default_eth_handlers() +{ + default_event_handlers[SYSTEM_EVENT_ETH_START] = system_event_eth_start_handle_default; + default_event_handlers[SYSTEM_EVENT_ETH_STOP] = system_event_eth_stop_handle_default; + default_event_handlers[SYSTEM_EVENT_ETH_CONNECTED] = system_event_eth_connected_handle_default; + default_event_handlers[SYSTEM_EVENT_ETH_DISCONNECTED] = system_event_eth_disconnected_handle_default; +} diff --git a/components/esp32/include/esp_event.h b/components/esp32/include/esp_event.h index 7b3a85732f..3000e50047 100644 --- a/components/esp32/include/esp_event.h +++ b/components/esp32/include/esp_event.h @@ -159,6 +159,11 @@ esp_err_t esp_event_send(system_event_t *event); */ esp_err_t esp_event_process_default(system_event_t *event); +/** + * @brief Install default event handlers for Ethernet interface + * + */ +void esp_event_set_default_eth_handlers(); #ifdef __cplusplus } diff --git a/components/ethernet/Kconfig b/components/ethernet/Kconfig index 46e86cc60e..c213a3fc1b 100644 --- a/components/ethernet/Kconfig +++ b/components/ethernet/Kconfig @@ -1,14 +1,9 @@ -menuconfig ETHERNET - bool "Ethernet" - default n - help - Select this option to enable ethernet driver and show the submenu with ethernet features. +menu ETHERNET config DMA_RX_BUF_NUM int "Number of DMA RX buffers" range 3 20 default 10 - depends on ETHERNET help Number of DMA receive buffers. Each buffer is 1600 bytes. Buffers are allocated statically. @@ -19,7 +14,6 @@ config DMA_TX_BUF_NUM int "Number of DMA RX buffers" range 3 20 default 10 - depends on ETHERNET help Number of DMA transmit buffers. Each buffer is 1600 bytes. Buffers are allocated statically. @@ -28,7 +22,6 @@ config DMA_TX_BUF_NUM config EMAC_L2_TO_L3_RX_BUF_MODE bool "Enable copy between Layer2 and Layer3" default n - depends on ETHERNET help If this options is selected, a copy of each received buffer will be created when passing it from the Ethernet MAC (L2) to the IP stack (L3). Otherwise, IP stack @@ -46,7 +39,7 @@ config EMAC_TASK_PRIORITY int "EMAC_TASK_PRIORITY" default 20 range 3 22 - depends on ETHERNET help Ethernet MAC task priority. +endmenu \ No newline at end of file diff --git a/components/ethernet/emac_common.h b/components/ethernet/emac_common.h index d68c20a056..d70abdd77a 100644 --- a/components/ethernet/emac_common.h +++ b/components/ethernet/emac_common.h @@ -101,15 +101,11 @@ struct emac_open_cmd { struct emac_close_cmd { int8_t err; }; -#if CONFIG_ETHERNET + #define DMA_RX_BUF_NUM CONFIG_DMA_RX_BUF_NUM #define DMA_TX_BUF_NUM CONFIG_DMA_TX_BUF_NUM #define EMAC_TASK_PRIORITY CONFIG_EMAC_TASK_PRIORITY -#else -#define DMA_RX_BUF_NUM 1 -#define DMA_TX_BUF_NUM 1 -#define EMAC_TASK_PRIORITY 10 -#endif + #define DMA_RX_BUF_SIZE 1600 #define DMA_TX_BUF_SIZE 1600 diff --git a/components/ethernet/emac_main.c b/components/ethernet/emac_main.c index df614582d4..89e7ae0da3 100644 --- a/components/ethernet/emac_main.c +++ b/components/ethernet/emac_main.c @@ -978,13 +978,14 @@ esp_err_t IRAM_ATTR emac_post(emac_sig_t sig, emac_par_t par) } esp_err_t esp_eth_init(eth_config_t *config) +{ + esp_event_set_default_eth_handlers(); + return esp_eth_init_internal(config); +} + +esp_err_t esp_eth_init_internal(eth_config_t *config) { esp_err_t ret = ESP_OK; -#if !CONFIG_ETHERNET - ESP_LOGI(TAG, "eth driver init fail,please make menuconfig and enable ethernet ."); - ret = ESP_FAIL; - goto _exit; -#endif if (emac_config.emac_status != EMAC_RUNTIME_NOT_INIT) { goto _exit; } diff --git a/components/ethernet/include/esp_eth.h b/components/ethernet/include/esp_eth.h index a7f92ad4ba..01cd0e29fa 100644 --- a/components/ethernet/include/esp_eth.h +++ b/components/ethernet/include/esp_eth.h @@ -117,6 +117,24 @@ typedef struct { */ esp_err_t esp_eth_init(eth_config_t *config); +/** + * @brief Init Ethernet mac driver only + * + * For the most part, you need not call this function directly. It gets called + * from esp_eth_init(). + * + * This function may be called, if you only need to initialize the Ethernet + * driver without having to use the network stack on top. + * + * @note config can not be NULL,and phy chip must be suitable to phy init func. + * @param[in] config mac init data. + * + * @return + * - ESP_OK + * - ESP_FAIL + */ +esp_err_t esp_eth_init_internal(eth_config_t *config); + /** * @brief Send packet from tcp/ip to mac * diff --git a/examples/ethernet/ethernet/sdkconfig.defaults b/examples/ethernet/ethernet/sdkconfig.defaults index 62a7778f15..8b13789179 100644 --- a/examples/ethernet/ethernet/sdkconfig.defaults +++ b/examples/ethernet/ethernet/sdkconfig.defaults @@ -1 +1 @@ -CONFIG_ETHERNET=y + diff --git a/tools/unit-test-app/sdkconfig b/tools/unit-test-app/sdkconfig index 9aa13bc2a4..55a5121e21 100644 --- a/tools/unit-test-app/sdkconfig +++ b/tools/unit-test-app/sdkconfig @@ -191,7 +191,6 @@ CONFIG_ESP32_PHY_CALIBRATION_AND_DATA_STORAGE=y # CONFIG_ESP32_PHY_INIT_DATA_IN_PARTITION is not set CONFIG_ESP32_PHY_MAX_WIFI_TX_POWER=20 CONFIG_ESP32_PHY_MAX_TX_POWER=20 -# CONFIG_ETHERNET is not set # # FAT Filesystem support From 4c1c62a453236f8636140564893a2ef66da102b0 Mon Sep 17 00:00:00 2001 From: Kedar Sovani Date: Thu, 17 Aug 2017 09:41:34 +0530 Subject: [PATCH 2/2] wifi: refactor code to match ethernet's init function structure --- components/esp32/event_default_handlers.c | 3 +-- components/esp32/include/esp_event.h | 6 +++++ components/esp32/include/esp_wifi_internal.h | 6 +++++ components/esp32/wifi_init.c | 23 ++++++++++++++++++++ 4 files changed, 36 insertions(+), 2 deletions(-) create mode 100644 components/esp32/wifi_init.c diff --git a/components/esp32/event_default_handlers.c b/components/esp32/event_default_handlers.c index 2f671f69f6..75ef164651 100644 --- a/components/esp32/event_default_handlers.c +++ b/components/esp32/event_default_handlers.c @@ -374,7 +374,7 @@ esp_err_t esp_event_process_default(system_event_t *event) return ESP_OK; } -esp_err_t esp_wifi_init(wifi_init_config_t *config) +void esp_event_set_default_wifi_handlers() { default_event_handlers[SYSTEM_EVENT_STA_START] = system_event_sta_start_handle_default; default_event_handlers[SYSTEM_EVENT_STA_STOP] = system_event_sta_stop_handle_default; @@ -385,7 +385,6 @@ esp_err_t esp_wifi_init(wifi_init_config_t *config) default_event_handlers[SYSTEM_EVENT_AP_STOP] = system_event_ap_stop_handle_default; esp_register_shutdown_handler((shutdown_handler_t)esp_wifi_stop); - return esp_wifi_init_internal(config); } void esp_event_set_default_eth_handlers() diff --git a/components/esp32/include/esp_event.h b/components/esp32/include/esp_event.h index 3000e50047..5cb60dba63 100644 --- a/components/esp32/include/esp_event.h +++ b/components/esp32/include/esp_event.h @@ -165,6 +165,12 @@ esp_err_t esp_event_process_default(system_event_t *event); */ void esp_event_set_default_eth_handlers(); +/** + * @brief Install default event handlers for Wi-Fi interfaces (station and AP) + * + */ +void esp_event_set_default_wifi_handlers(); + #ifdef __cplusplus } #endif diff --git a/components/esp32/include/esp_wifi_internal.h b/components/esp32/include/esp_wifi_internal.h index e86d60f7fa..6627636df0 100644 --- a/components/esp32/include/esp_wifi_internal.h +++ b/components/esp32/include/esp_wifi_internal.h @@ -45,6 +45,12 @@ extern "C" { * Alloc resource for WiFi driver, such as WiFi control structure, RX/TX buffer, * WiFi NVS structure among others. * + * For the most part, you need not call this function directly. It gets called + * from esp_wifi_init(). + * + * This function may be called, if you only need to initialize the Wi-Fi driver + * without having to use the network stack on top. + * * @param config provide WiFi init configuration * * @return diff --git a/components/esp32/wifi_init.c b/components/esp32/wifi_init.c new file mode 100644 index 0000000000..dd155d8f1a --- /dev/null +++ b/components/esp32/wifi_init.c @@ -0,0 +1,23 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include +#include +#include "esp_wifi_internal.h" + +esp_err_t esp_wifi_init(wifi_init_config_t *config) +{ + esp_event_set_default_wifi_handlers(); + return esp_wifi_init_internal(config); +}