diff --git a/components/esp_netif/esp_netif_defaults.c b/components/esp_netif/esp_netif_defaults.c index 73ff340314..3a1297da18 100644 --- a/components/esp_netif/esp_netif_defaults.c +++ b/components/esp_netif/esp_netif_defaults.c @@ -1,16 +1,8 @@ -// Copyright 2015-2019 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. +/* + * SPDX-FileCopyrightText: 2015-2021 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ #include "esp_netif.h" #include "esp_wifi_default.h" @@ -31,7 +23,9 @@ // const esp_netif_inherent_config_t _g_esp_netif_inherent_sta_config = ESP_NETIF_INHERENT_DEFAULT_WIFI_STA(); +#ifdef CONFIG_ESP_WIFI_SOFTAP_SUPPORT const esp_netif_inherent_config_t _g_esp_netif_inherent_ap_config = ESP_NETIF_INHERENT_DEFAULT_WIFI_AP(); +#endif const esp_netif_inherent_config_t _g_esp_netif_inherent_eth_config = ESP_NETIF_INHERENT_DEFAULT_ETH(); diff --git a/components/esp_netif/include/esp_netif_defaults.h b/components/esp_netif/include/esp_netif_defaults.h index da01500db1..b8276068e9 100644 --- a/components/esp_netif/include/esp_netif_defaults.h +++ b/components/esp_netif/include/esp_netif_defaults.h @@ -1,16 +1,8 @@ -// 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. +/* + * SPDX-FileCopyrightText: 2015-2021 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ #ifndef _ESP_NETIF_DEFAULTS_H #define _ESP_NETIF_DEFAULTS_H @@ -37,6 +29,7 @@ extern "C" { .route_prio = 100 \ } \ +#ifdef CONFIG_ESP_WIFI_SOFTAP_SUPPORT #define ESP_NETIF_INHERENT_DEFAULT_WIFI_AP() \ { \ .flags = (esp_netif_flags_t)(ESP_NETIF_DHCP_SERVER | ESP_NETIF_FLAG_AUTOUP), \ @@ -48,6 +41,7 @@ extern "C" { .if_desc = "ap", \ .route_prio = 10 \ }; +#endif #define ESP_NETIF_INHERENT_DEFAULT_ETH() \ { \ @@ -108,6 +102,7 @@ extern "C" { .stack = ESP_NETIF_NETSTACK_DEFAULT_ETH, \ } +#ifdef CONFIG_ESP_WIFI_SOFTAP_SUPPORT /** * @brief Default configuration reference of WIFI AP */ @@ -117,6 +112,7 @@ extern "C" { .driver = NULL, \ .stack = ESP_NETIF_NETSTACK_DEFAULT_WIFI_AP, \ } +#endif /** * @brief Default configuration reference of WIFI STA @@ -154,10 +150,12 @@ extern "C" { */ #define ESP_NETIF_BASE_DEFAULT_WIFI_STA &_g_esp_netif_inherent_sta_config +#ifdef CONFIG_ESP_WIFI_SOFTAP_SUPPORT /** * @brief Default base config (esp-netif inherent) of WIFI AP */ #define ESP_NETIF_BASE_DEFAULT_WIFI_AP &_g_esp_netif_inherent_ap_config +#endif /** * @brief Default base config (esp-netif inherent) of ethernet interface @@ -177,7 +175,9 @@ extern "C" { #define ESP_NETIF_NETSTACK_DEFAULT_ETH _g_esp_netif_netstack_default_eth #define ESP_NETIF_NETSTACK_DEFAULT_WIFI_STA _g_esp_netif_netstack_default_wifi_sta +#ifdef CONFIG_ESP_WIFI_SOFTAP_SUPPORT #define ESP_NETIF_NETSTACK_DEFAULT_WIFI_AP _g_esp_netif_netstack_default_wifi_ap +#endif #define ESP_NETIF_NETSTACK_DEFAULT_PPP _g_esp_netif_netstack_default_ppp #define ESP_NETIF_NETSTACK_DEFAULT_SLIP _g_esp_netif_netstack_default_slip #define ESP_NETIF_NETSTACK_DEFAULT_OPENTHREAD _g_esp_netif_netstack_default_openthread @@ -190,7 +190,9 @@ extern "C" { // extern const esp_netif_netstack_config_t *_g_esp_netif_netstack_default_eth; extern const esp_netif_netstack_config_t *_g_esp_netif_netstack_default_wifi_sta; +#ifdef CONFIG_ESP_WIFI_SOFTAP_SUPPORT extern const esp_netif_netstack_config_t *_g_esp_netif_netstack_default_wifi_ap; +#endif extern const esp_netif_netstack_config_t *_g_esp_netif_netstack_default_ppp; extern const esp_netif_netstack_config_t *_g_esp_netif_netstack_default_slip; @@ -200,12 +202,16 @@ extern const esp_netif_netstack_config_t *_g_esp_netif_netstack_default_slip; // common behavioural patterns for common interfaces such as STA, AP, ETH, PPP // extern const esp_netif_inherent_config_t _g_esp_netif_inherent_sta_config; +#ifdef CONFIG_ESP_WIFI_SOFTAP_SUPPORT extern const esp_netif_inherent_config_t _g_esp_netif_inherent_ap_config; +#endif extern const esp_netif_inherent_config_t _g_esp_netif_inherent_eth_config; extern const esp_netif_inherent_config_t _g_esp_netif_inherent_ppp_config; extern const esp_netif_inherent_config_t _g_esp_netif_inherent_slip_config; +#ifdef CONFIG_ESP_WIFI_SOFTAP_SUPPORT extern const esp_netif_ip_info_t _g_esp_netif_soft_ap_ip; +#endif #if CONFIG_OPENTHREAD_ENABLED /** diff --git a/components/esp_wifi/Kconfig b/components/esp_wifi/Kconfig index 1a5c5981e2..12b8abaa47 100644 --- a/components/esp_wifi/Kconfig +++ b/components/esp_wifi/Kconfig @@ -325,4 +325,10 @@ menu "Wi-Fi" help Select this option to enable GMAC support. GMAC support is compulsory for WiFi 192 bit certification. + config ESP_WIFI_SOFTAP_SUPPORT + bool "WiFi SoftAP Support" + default y + help + WiFi module can be compiled without SoftAP to save code size. + endmenu # Wi-Fi diff --git a/components/esp_wifi/include/esp_private/wifi_os_adapter.h b/components/esp_wifi/include/esp_private/wifi_os_adapter.h index b583e91626..88d0ee5402 100644 --- a/components/esp_wifi/include/esp_private/wifi_os_adapter.h +++ b/components/esp_wifi/include/esp_private/wifi_os_adapter.h @@ -1,16 +1,8 @@ -// Copyright 2018 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. +/* + * SPDX-FileCopyrightText: 2018-2021 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ #ifndef ESP_WIFI_OS_ADAPTER_H_ #define ESP_WIFI_OS_ADAPTER_H_ diff --git a/components/esp_wifi/include/esp_wifi.h b/components/esp_wifi/include/esp_wifi.h index 51e0323484..2d67159176 100644 --- a/components/esp_wifi/include/esp_wifi.h +++ b/components/esp_wifi/include/esp_wifi.h @@ -1,16 +1,8 @@ -// 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. +/* + * SPDX-FileCopyrightText: 2015-2021 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ /* Notes about WiFi Programming @@ -275,7 +267,7 @@ esp_err_t esp_wifi_deinit(void); * @brief Set the WiFi operating mode * * Set the WiFi operating mode as station, soft-AP or station+soft-AP, - * The default mode is soft-AP mode. + * The default mode is station mode. * * @param mode WiFi operating mode * diff --git a/components/esp_wifi/lib b/components/esp_wifi/lib index 681c8bfeb7..1053c13fae 160000 --- a/components/esp_wifi/lib +++ b/components/esp_wifi/lib @@ -1 +1 @@ -Subproject commit 681c8bfeb739c2fcd579e404b1df8b19acc07497 +Subproject commit 1053c13faecea52a57c8e1cee75fc8bae2e8756e diff --git a/components/esp_wifi/src/wifi_default.c b/components/esp_wifi/src/wifi_default.c index bd15054150..f2adf70f3e 100644 --- a/components/esp_wifi/src/wifi_default.c +++ b/components/esp_wifi/src/wifi_default.c @@ -1,16 +1,9 @@ -// Copyright 2019 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. +/* + * SPDX-FileCopyrightText: 2019-2021 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ +#include "sdkconfig.h" #include "esp_wifi.h" #include "esp_netif.h" #include "esp_log.h" @@ -110,6 +103,7 @@ static void wifi_default_action_sta_disconnected(void *arg, esp_event_base_t bas } } +#ifdef CONFIG_ESP_WIFI_SOFTAP_SUPPORT static void wifi_default_action_ap_start(void *arg, esp_event_base_t base, int32_t event_id, void *data) { if (s_wifi_netifs[WIFI_IF_AP] != NULL) { @@ -123,6 +117,7 @@ static void wifi_default_action_ap_stop(void *arg, esp_event_base_t base, int32_ esp_netif_action_stop(s_wifi_netifs[WIFI_IF_AP], base, event_id, data); } } +#endif static void wifi_default_action_sta_got_ip(void *arg, esp_event_base_t base, int32_t event_id, void *data) { @@ -145,8 +140,10 @@ esp_err_t _esp_wifi_clear_default_wifi_handlers(void) esp_event_handler_unregister(WIFI_EVENT, WIFI_EVENT_STA_STOP, wifi_default_action_sta_stop); esp_event_handler_unregister(WIFI_EVENT, WIFI_EVENT_STA_CONNECTED, wifi_default_action_sta_connected); esp_event_handler_unregister(WIFI_EVENT, WIFI_EVENT_STA_DISCONNECTED, wifi_default_action_sta_disconnected); +#ifdef CONFIG_ESP_WIFI_SOFTAP_SUPPORT esp_event_handler_unregister(WIFI_EVENT, WIFI_EVENT_AP_START, wifi_default_action_ap_start); esp_event_handler_unregister(WIFI_EVENT, WIFI_EVENT_AP_STOP, wifi_default_action_ap_stop); +#endif esp_event_handler_unregister(IP_EVENT, IP_EVENT_STA_GOT_IP, wifi_default_action_sta_got_ip); esp_unregister_shutdown_handler((shutdown_handler_t)esp_wifi_stop); wifi_default_handlers_set = false; @@ -162,6 +159,7 @@ esp_err_t _esp_wifi_set_default_wifi_handlers(void) return ESP_OK; } esp_err_t err; + err = esp_event_handler_register(WIFI_EVENT, WIFI_EVENT_STA_START, wifi_default_action_sta_start, NULL); if (err != ESP_OK) { goto fail; @@ -182,6 +180,7 @@ esp_err_t _esp_wifi_set_default_wifi_handlers(void) goto fail; } +#ifdef CONFIG_ESP_WIFI_SOFTAP_SUPPORT err = esp_event_handler_register(WIFI_EVENT, WIFI_EVENT_AP_START, wifi_default_action_ap_start, NULL); if (err != ESP_OK) { goto fail; @@ -191,6 +190,7 @@ esp_err_t _esp_wifi_set_default_wifi_handlers(void) if (err != ESP_OK) { goto fail; } +#endif err = esp_event_handler_register(IP_EVENT, IP_EVENT_STA_GOT_IP, wifi_default_action_sta_got_ip, NULL); if (err != ESP_OK) { @@ -278,7 +278,11 @@ static esp_err_t create_and_attach(wifi_interface_t wifi_if, esp_netif_t* esp_ne static inline esp_err_t esp_netif_attach_wifi(esp_netif_t *esp_netif, wifi_interface_t wifi_if) { - if (esp_netif == NULL || (wifi_if != WIFI_IF_STA && wifi_if != WIFI_IF_AP)) { + if (esp_netif == NULL || (wifi_if != WIFI_IF_STA +#ifdef CONFIG_ESP_WIFI_SOFTAP_SUPPORT + && wifi_if != WIFI_IF_AP +#endif + )) { return ESP_ERR_INVALID_ARG; } s_wifi_netifs[wifi_if] = esp_netif; @@ -290,16 +294,19 @@ esp_err_t esp_netif_attach_wifi_station(esp_netif_t *esp_netif) return esp_netif_attach_wifi(esp_netif, WIFI_IF_STA); } +#ifdef CONFIG_ESP_WIFI_SOFTAP_SUPPORT esp_err_t esp_netif_attach_wifi_ap(esp_netif_t *esp_netif) { return esp_netif_attach_wifi(esp_netif, WIFI_IF_AP); } +#endif // // Default WiFi creation from user code // +#ifdef CONFIG_ESP_WIFI_SOFTAP_SUPPORT /** * @brief User init default AP (official API) */ @@ -312,6 +319,7 @@ esp_netif_t* esp_netif_create_default_wifi_ap(void) esp_wifi_set_default_wifi_ap_handlers(); return netif; } +#endif /** * @brief User init default station (official API) @@ -347,9 +355,13 @@ esp_netif_t* esp_netif_create_wifi(wifi_interface_t wifi_if, esp_netif_inherent_ }; if (wifi_if == WIFI_IF_STA) { cfg.stack = ESP_NETIF_NETSTACK_DEFAULT_WIFI_STA; - } else if (wifi_if == WIFI_IF_AP) { + } else +#ifdef CONFIG_ESP_WIFI_SOFTAP_SUPPORT + if (wifi_if == WIFI_IF_AP) { cfg.stack = ESP_NETIF_NETSTACK_DEFAULT_WIFI_AP; - } else { + } else +#endif + { return NULL; } @@ -359,6 +371,7 @@ esp_netif_t* esp_netif_create_wifi(wifi_interface_t wifi_if, esp_netif_inherent_ return netif; } +#ifdef CONFIG_ESP_WIFI_SOFTAP_SUPPORT /** * @brief Creates mesh network interfaces based on default STA and AP, * but without DHCP, this is to be enabled separately only on root node @@ -404,3 +417,4 @@ esp_err_t esp_netif_create_default_wifi_mesh_netifs(esp_netif_t **p_netif_sta, e } return ESP_OK; } +#endif // CONFIG_ESP_WIFI_SOFTAP_SUPPORT diff --git a/components/esp_wifi/src/wifi_init.c b/components/esp_wifi/src/wifi_init.c index 40273d86bf..40b176f017 100644 --- a/components/esp_wifi/src/wifi_init.c +++ b/components/esp_wifi/src/wifi_init.c @@ -303,3 +303,9 @@ void ieee80211_ftm_attach(void) /* Do not remove, stub to overwrite weak link in Wi-Fi Lib */ } #endif + +#ifndef CONFIG_ESP_WIFI_SOFTAP_SUPPORT +void net80211_softap_funcs_init(void) +{ +} +#endif diff --git a/components/esp_wifi/src/wifi_netif.c b/components/esp_wifi/src/wifi_netif.c index ba92759b4f..6f8454ed9a 100644 --- a/components/esp_wifi/src/wifi_netif.c +++ b/components/esp_wifi/src/wifi_netif.c @@ -1,16 +1,8 @@ -// Copyright 2019 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. +/* + * SPDX-FileCopyrightText: 2019-2021 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ #include "esp_wifi.h" #include "esp_netif.h" #include "esp_log.h" @@ -47,10 +39,12 @@ static esp_err_t wifi_sta_receive(void *buffer, uint16_t len, void *eb) return s_wifi_rxcbs[WIFI_IF_STA](s_wifi_netifs[WIFI_IF_STA], buffer, len, eb); } +#ifdef CONFIG_ESP_WIFI_SOFTAP_SUPPORT static esp_err_t wifi_ap_receive(void *buffer, uint16_t len, void *eb) { return s_wifi_rxcbs[WIFI_IF_AP](s_wifi_netifs[WIFI_IF_AP], buffer, len, eb); } +#endif static void wifi_free(void *h, void* buffer) { @@ -113,8 +107,12 @@ esp_err_t esp_wifi_get_if_mac(wifi_netif_driver_t ifx, uint8_t mac[6]) bool esp_wifi_is_if_ready_when_started(wifi_netif_driver_t ifx) { +#ifdef CONFIG_ESP_WIFI_SOFTAP_SUPPORT // WiFi rxcb to be register wifi rxcb on start for AP only, station gets it registered on connect event return (ifx->wifi_if == WIFI_IF_AP); +#else + return false; +#endif } esp_err_t esp_wifi_register_if_rxcb(wifi_netif_driver_t ifx, esp_netif_receive_t fn, void * arg) @@ -130,13 +128,16 @@ esp_err_t esp_wifi_register_if_rxcb(wifi_netif_driver_t ifx, esp_netif_receive_t switch (wifi_interface) { + case WIFI_IF_STA: rxcb = wifi_sta_receive; break; +#ifdef CONFIG_ESP_WIFI_SOFTAP_SUPPORT case WIFI_IF_AP: rxcb = wifi_ap_receive; break; +#endif default: break; diff --git a/components/tcpip_adapter/tcpip_adapter_compat.c b/components/tcpip_adapter/tcpip_adapter_compat.c index bcd798fe7a..a995ae8f49 100644 --- a/components/tcpip_adapter/tcpip_adapter_compat.c +++ b/components/tcpip_adapter/tcpip_adapter_compat.c @@ -1,16 +1,8 @@ -// Copyright 2015-2019 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. +/* + * SPDX-FileCopyrightText: 2015-2021 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ #include "esp_netif.h" #include "esp_private/wifi.h" @@ -51,6 +43,7 @@ static const char* s_netif_keyif[TCPIP_ADAPTER_IF_MAX] = { static bool s_tcpip_adapter_compat = false; +#ifdef CONFIG_ESP_WIFI_SOFTAP_SUPPORT static void wifi_create_and_start_ap(void *esp_netif, esp_event_base_t base, int32_t event_id, void *data) { if (s_esp_netifs[TCPIP_ADAPTER_IF_AP] == NULL) { @@ -62,6 +55,7 @@ static void wifi_create_and_start_ap(void *esp_netif, esp_event_base_t base, int s_esp_netifs[TCPIP_ADAPTER_IF_AP] = ap_netif; } } +#endif static void wifi_create_and_start_sta(void *esp_netif, esp_event_base_t base, int32_t event_id, void *data) { @@ -85,10 +79,13 @@ static inline esp_netif_t * netif_from_if(tcpip_adapter_if_t interface) if (interface == TCPIP_ADAPTER_IF_STA) { wifi_create_and_start_sta(NULL, 0, 0, NULL); s_esp_netifs[interface] = esp_netif_get_handle_from_ifkey("WIFI_STA_DEF"); - } else if (interface == TCPIP_ADAPTER_IF_AP) { + } +#ifdef CONFIG_ESP_WIFI_SOFTAP_SUPPORT + else if (interface == TCPIP_ADAPTER_IF_AP) { wifi_create_and_start_ap(NULL, 0, 0, NULL); s_esp_netifs[interface] = esp_netif_get_handle_from_ifkey("WIFI_AP_DEF"); } +#endif } } return s_esp_netifs[interface]; @@ -147,10 +144,12 @@ esp_err_t tcpip_adapter_sta_input(void *buffer, uint16_t len, void *eb) return esp_netif_receive(netif_from_if(TCPIP_ADAPTER_IF_STA), buffer, len, eb); } +#ifdef CONFIG_ESP_WIFI_SOFTAP_SUPPORT esp_err_t tcpip_adapter_ap_input(void *buffer, uint16_t len, void *eb) { return esp_netif_receive(netif_from_if(TCPIP_ADAPTER_IF_AP), buffer, len, eb); } +#endif esp_err_t tcpip_adapter_set_default_wifi_handlers(void) { @@ -161,10 +160,12 @@ esp_err_t tcpip_adapter_set_default_wifi_handlers(void) if (err != ESP_OK) { return err; } +#ifdef CONFIG_ESP_WIFI_SOFTAP_SUPPORT err = esp_event_handler_register(WIFI_EVENT, WIFI_EVENT_AP_START, wifi_create_and_start_ap, NULL); if (err != ESP_OK) { return err; } +#endif _esp_wifi_set_default_wifi_handlers(); } return ESP_OK; @@ -319,11 +320,13 @@ esp_err_t tcpip_adapter_sta_start(uint8_t *mac, tcpip_adapter_ip_info_t *ip_info mac, ip_info); } +#ifdef CONFIG_ESP_WIFI_SOFTAP_SUPPORT esp_err_t tcpip_adapter_ap_start(uint8_t *mac, tcpip_adapter_ip_info_t *ip_info) { return tcpip_adapter_compat_start_netif(netif_from_if(TCPIP_ADAPTER_IF_AP), mac, ip_info); } +#endif esp_err_t tcpip_adapter_stop(tcpip_adapter_if_t tcpip_if) { diff --git a/components/wifi_provisioning/CMakeLists.txt b/components/wifi_provisioning/CMakeLists.txt index bb47508c69..799ba3bfef 100644 --- a/components/wifi_provisioning/CMakeLists.txt +++ b/components/wifi_provisioning/CMakeLists.txt @@ -2,12 +2,15 @@ set(srcs "src/wifi_config.c" "src/wifi_scan.c" "src/manager.c" "src/handlers.c" - "src/scheme_softap.c" "src/scheme_console.c" "proto-c/wifi_config.pb-c.c" "proto-c/wifi_scan.pb-c.c" "proto-c/wifi_constants.pb-c.c") +if(CONFIG_ESP_WIFI_SOFTAP_SUPPORT) + list(APPEND srcs "src/scheme_softap.c") +endif() + if(CONFIG_BT_ENABLED) if(CONFIG_BT_BLUEDROID_ENABLED OR CONFIG_BT_NIMBLE_ENABLED) list(APPEND srcs diff --git a/components/wifi_provisioning/component.mk b/components/wifi_provisioning/component.mk index 5a4b60459f..a006c793ca 100644 --- a/components/wifi_provisioning/component.mk +++ b/components/wifi_provisioning/component.mk @@ -7,3 +7,7 @@ ifndef CONFIG_BT_BLUEDROID_ENABLED COMPONENT_OBJEXCLUDE := src/scheme_ble.o endif endif + +ifeq ($(CONFIG_ESP_WIFI_SOFTAP_SUPPORT), y) + COMPONENT_OBJEXCLUDE += src/scheme_softap.o +endif diff --git a/components/wifi_provisioning/src/scheme_softap.c b/components/wifi_provisioning/src/scheme_softap.c index 289b1a4c62..339472a0b1 100644 --- a/components/wifi_provisioning/src/scheme_softap.c +++ b/components/wifi_provisioning/src/scheme_softap.c @@ -1,16 +1,9 @@ -// Copyright 2019 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. +/* + * SPDX-FileCopyrightText: 2019-2021 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ +#include "sdkconfig.h" #include #include diff --git a/components/wpa_supplicant/CMakeLists.txt b/components/wpa_supplicant/CMakeLists.txt index cd5a4b442a..d9db152c9c 100644 --- a/components/wpa_supplicant/CMakeLists.txt +++ b/components/wpa_supplicant/CMakeLists.txt @@ -52,13 +52,15 @@ set(srcs "port/os_xtensa.c" "src/wps/wps_registrar.c" "src/wps/wps_validate.c") -set(esp_srcs "esp_supplicant/src/esp_hostap.c" - "esp_supplicant/src/esp_wpa2.c" +set(esp_srcs "esp_supplicant/src/esp_wpa2.c" "esp_supplicant/src/esp_wpa_main.c" "esp_supplicant/src/esp_wpas_glue.c" "esp_supplicant/src/esp_wps.c" "esp_supplicant/src/esp_wpa3.c" "esp_supplicant/src/esp_dpp.c") +if(CONFIG_ESP_WIFI_SOFTAP_SUPPORT) + set(esp_srcs ${esp_srcs} "esp_supplicant/src/esp_hostap.c") +endif() if(CONFIG_WPA_MBEDTLS_CRYPTO) set(tls_src "src/crypto/tls_mbedtls.c") diff --git a/components/wpa_supplicant/component.mk b/components/wpa_supplicant/component.mk index 908eb7d116..66b59170e2 100644 --- a/components/wpa_supplicant/component.mk +++ b/components/wpa_supplicant/component.mk @@ -4,6 +4,10 @@ COMPONENT_PRIV_INCLUDEDIRS := src src/utils esp_supplicant/src COMPONENT_SRCDIRS := port src/ap src/common src/crypto src/eap_peer src/rsn_supp src/tls src/utils src/wps esp_supplicant/src COMPONENT_ADD_INCLUDEDIRS := include port/include esp_supplicant/include src/utils +ifeq ($(CONFIG_ESP_WIFI_SOFTAP_SUPPORT), y) + COMPONENT_OBJEXCLUDE += src/esp_hostap.o +endif + ifeq ($(CONFIG_WPA_MBEDTLS_CRYPTO), y) COMPONENT_OBJEXCLUDE += src/tls/asn1.o \ src/tls/bignum.o \ diff --git a/components/wpa_supplicant/esp_supplicant/src/esp_hostap.c b/components/wpa_supplicant/esp_supplicant/src/esp_hostap.c index ec4a2d3fa8..d806f651e7 100644 --- a/components/wpa_supplicant/esp_supplicant/src/esp_hostap.c +++ b/components/wpa_supplicant/esp_supplicant/src/esp_hostap.c @@ -1,17 +1,10 @@ -// Copyright 2019 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. +/* + * SPDX-FileCopyrightText: 2019-2021 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ +#include "sdkconfig.h" #include "utils/includes.h" #include "utils/common.h" diff --git a/components/wpa_supplicant/esp_supplicant/src/esp_hostap.h b/components/wpa_supplicant/esp_supplicant/src/esp_hostap.h index 59a183f21e..eef2fd5769 100644 --- a/components/wpa_supplicant/esp_supplicant/src/esp_hostap.h +++ b/components/wpa_supplicant/esp_supplicant/src/esp_hostap.h @@ -1,21 +1,24 @@ -// Copyright 2019 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. +/* + * SPDX-FileCopyrightText: 2019-2021 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ #ifndef ESP_HOSTAP_H #define ESP_HOSTAP_H +#ifdef __cplusplus +extern "C" { +#endif + +#include "sdkconfig.h" +#ifdef CONFIG_ESP_WIFI_SOFTAP_SUPPORT void *hostap_init(void); bool hostap_deinit(void *data); +#endif + +#ifdef __cplusplus +} +#endif #endif /* ESP_HOSTAP_H */ diff --git a/components/wpa_supplicant/esp_supplicant/src/esp_wpa_main.c b/components/wpa_supplicant/esp_supplicant/src/esp_wpa_main.c index 11681df428..f56ebcb8f5 100644 --- a/components/wpa_supplicant/esp_supplicant/src/esp_wpa_main.c +++ b/components/wpa_supplicant/esp_supplicant/src/esp_wpa_main.c @@ -241,7 +241,7 @@ int esp_supplicant_init(void) int ret = ESP_OK; struct wpa_funcs *wpa_cb; - wpa_cb = (struct wpa_funcs *)os_malloc(sizeof(struct wpa_funcs)); + wpa_cb = (struct wpa_funcs *)os_zalloc(sizeof(struct wpa_funcs)); if (!wpa_cb) { return ESP_ERR_NO_MEM; } @@ -253,6 +253,7 @@ int esp_supplicant_init(void) wpa_cb->wpa_sta_disconnected_cb = wpa_sta_disconnected_cb; wpa_cb->wpa_sta_in_4way_handshake = wpa_sta_in_4way_handshake; +#ifdef CONFIG_ESP_WIFI_SOFTAP_SUPPORT wpa_cb->wpa_ap_join = wpa_ap_join; wpa_cb->wpa_ap_remove = wpa_ap_remove; wpa_cb->wpa_ap_get_wpa_ie = wpa_ap_get_wpa_ie; @@ -260,6 +261,7 @@ int esp_supplicant_init(void) wpa_cb->wpa_ap_get_peer_spp_msg = wpa_ap_get_peer_spp_msg; wpa_cb->wpa_ap_init = hostap_init; wpa_cb->wpa_ap_deinit = hostap_deinit; +#endif wpa_cb->wpa_config_parse_string = wpa_config_parse_string; wpa_cb->wpa_parse_wpa_ie = wpa_parse_wpa_ie_wrapper; diff --git a/components/wpa_supplicant/esp_supplicant/src/esp_wps.c b/components/wpa_supplicant/esp_supplicant/src/esp_wps.c index 0f515e7b78..5cff95c578 100644 --- a/components/wpa_supplicant/esp_supplicant/src/esp_wps.c +++ b/components/wpa_supplicant/esp_supplicant/src/esp_wps.c @@ -1,16 +1,8 @@ -// Copyright 2019 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. +/* + * SPDX-FileCopyrightText: 2019-2021 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ #include @@ -572,7 +564,11 @@ wps_parse_scan_result(struct wps_scan_ie *scan) } esp_wifi_get_mode(&op_mode); - if ((op_mode == WIFI_MODE_STA || op_mode == WIFI_MODE_APSTA) && scan->wps) { + if ((op_mode == WIFI_MODE_STA +#ifdef CONFIG_ESP_WIFI_SOFTAP_SUPPORT + || op_mode == WIFI_MODE_APSTA +#endif + ) && scan->wps) { struct wpabuf *buf = wpabuf_alloc_copy(scan->wps + 6, scan->wps[1] - 4); if (wps_is_selected_pbc_registrar(buf, scan->bssid) @@ -2003,7 +1999,11 @@ int wps_check_wifi_mode(void) return ESP_FAIL; } - if (mode == WIFI_MODE_AP || mode == WIFI_MODE_NULL || sniffer == true) { + if ( +#ifdef CONFIG_ESP_WIFI_SOFTAP_SUPPORT + mode == WIFI_MODE_AP || +#endif + mode == WIFI_MODE_NULL || sniffer == true) { wpa_printf(MSG_ERROR, "wps check wifi mode: wrong wifi mode=%d sniffer=%d", mode, sniffer); return ESP_ERR_WIFI_MODE; } @@ -2180,7 +2180,11 @@ wifi_set_wps_cb(wps_st_cb_t cb) wifi_mode_t mode; esp_wifi_get_mode(&mode); - if (mode == WIFI_MODE_AP || mode == WIFI_MODE_NULL) { + if ( +#ifdef CONFIG_ESP_WIFI_SOFTAP_SUPPORT + mode == WIFI_MODE_AP || +#endif + mode == WIFI_MODE_NULL) { return false; } diff --git a/docs/en/api-guides/performance/size.rst b/docs/en/api-guides/performance/size.rst index 81dfd002b7..9132d65fe3 100644 --- a/docs/en/api-guides/performance/size.rst +++ b/docs/en/api-guides/performance/size.rst @@ -315,6 +315,7 @@ Wi-Fi @@@@@ - Disabling :ref:`CONFIG_ESP32_WIFI_ENABLE_WPA3_SAE` will save some Wi-Fi binary size if WPA3 support is not needed. (Note that WPA3 is mandatory for new Wi-Fi device certifications.) +- Disabling :ref:`CONFIG_ESP_WIFI_SOFTAP_SUPPORT` will save some Wi-Fi binary size if soft-AP support is not needed. .. only:: esp32 diff --git a/tools/ci/check_copyright_ignore.txt b/tools/ci/check_copyright_ignore.txt index 7e30f0e8f4..1c6f9b9fa3 100644 --- a/tools/ci/check_copyright_ignore.txt +++ b/tools/ci/check_copyright_ignore.txt @@ -844,11 +844,9 @@ components/esp_local_ctrl/src/esp_local_ctrl_handler.c components/esp_local_ctrl/src/esp_local_ctrl_priv.h components/esp_local_ctrl/src/esp_local_ctrl_transport_ble.c components/esp_local_ctrl/src/esp_local_ctrl_transport_httpd.c -components/esp_netif/esp_netif_defaults.c components/esp_netif/esp_netif_handlers.c components/esp_netif/esp_netif_objects.c components/esp_netif/include/esp_netif.h -components/esp_netif/include/esp_netif_defaults.h components/esp_netif/include/esp_netif_net_stack.h components/esp_netif/include/esp_netif_ppp.h components/esp_netif/include/esp_netif_slip.h @@ -1174,10 +1172,8 @@ components/esp_wifi/include/esp_mesh_internal.h components/esp_wifi/include/esp_now.h components/esp_wifi/include/esp_private/esp_wifi_private.h components/esp_wifi/include/esp_private/esp_wifi_types_private.h -components/esp_wifi/include/esp_private/wifi_os_adapter.h components/esp_wifi/include/esp_private/wifi_types.h components/esp_wifi/include/esp_smartconfig.h -components/esp_wifi/include/esp_wifi.h components/esp_wifi/include/esp_wifi_default.h components/esp_wifi/include/esp_wifi_netif.h components/esp_wifi/include/smartconfig_ack.h @@ -1185,8 +1181,6 @@ components/esp_wifi/src/lib_printf.c components/esp_wifi/src/mesh_event.c components/esp_wifi/src/smartconfig.c components/esp_wifi/src/smartconfig_ack.c -components/esp_wifi/src/wifi_default.c -components/esp_wifi/src/wifi_netif.c components/esp_wifi/test/test_wifi.c components/esp_wifi/test/test_wifi_init.c components/espcoredump/corefile/__init__.py @@ -2654,7 +2648,6 @@ components/tcp_transport/transport_ws.c components/tcpip_adapter/include/tcpip_adapter.h components/tcpip_adapter/include/tcpip_adapter_compatible/tcpip_adapter_compat.h components/tcpip_adapter/include/tcpip_adapter_types.h -components/tcpip_adapter/tcpip_adapter_compat.c components/tinyusb/additions/include/tinyusb.h components/tinyusb/additions/include/tinyusb_types.h components/tinyusb/additions/include/tusb_cdc_acm.h @@ -2778,7 +2771,6 @@ components/wifi_provisioning/python/wifi_scan_pb2.py components/wifi_provisioning/src/handlers.c components/wifi_provisioning/src/manager.c components/wifi_provisioning/src/scheme_console.c -components/wifi_provisioning/src/scheme_softap.c components/wifi_provisioning/src/wifi_config.c components/wifi_provisioning/src/wifi_provisioning_priv.h components/wifi_provisioning/src/wifi_scan.c @@ -2788,15 +2780,12 @@ components/wpa_supplicant/esp_supplicant/include/esp_wpa.h components/wpa_supplicant/esp_supplicant/include/esp_wps.h components/wpa_supplicant/esp_supplicant/src/esp_dpp.c components/wpa_supplicant/esp_supplicant/src/esp_dpp_i.h -components/wpa_supplicant/esp_supplicant/src/esp_hostap.c -components/wpa_supplicant/esp_supplicant/src/esp_hostap.h components/wpa_supplicant/esp_supplicant/src/esp_scan_i.h components/wpa_supplicant/esp_supplicant/src/esp_wpa3.c components/wpa_supplicant/esp_supplicant/src/esp_wpa3_i.h components/wpa_supplicant/esp_supplicant/src/esp_wpa_err.h components/wpa_supplicant/esp_supplicant/src/esp_wpas_glue.c components/wpa_supplicant/esp_supplicant/src/esp_wpas_glue.h -components/wpa_supplicant/esp_supplicant/src/esp_wps.c components/wpa_supplicant/include/utils/wpa_debug.h components/wpa_supplicant/include/utils/wpabuf.h components/wpa_supplicant/port/include/byteswap.h