Просмотр исходного кода

esp_wifi: support station only mode for code size down

Zhang Jun Hao 4 лет назад
Родитель
Сommit
a568b4fddf

+ 7 - 13
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();
 

+ 19 - 13
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
 /**

+ 6 - 0
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

+ 5 - 13
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_

+ 6 - 14
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
   *

+ 1 - 1
components/esp_wifi/lib

@@ -1 +1 @@
-Subproject commit 681c8bfeb739c2fcd579e404b1df8b19acc07497
+Subproject commit 1053c13faecea52a57c8e1cee75fc8bae2e8756e

+ 30 - 16
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

+ 6 - 0
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

+ 14 - 13
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;

+ 17 - 14
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)
 {

+ 4 - 1
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

+ 4 - 0
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

+ 6 - 13
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 <string.h>
 #include <esp_log.h>

+ 4 - 2
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")

+ 4 - 0
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 \

+ 6 - 13
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"

+ 16 - 13
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 */

+ 3 - 1
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;

+ 20 - 16
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 <string.h>
 
@@ -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;
     }
 

+ 1 - 0
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
 

+ 0 - 11
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
@@ -1179,10 +1177,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
@@ -1190,8 +1186,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
@@ -2659,7 +2653,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
@@ -2783,7 +2776,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
@@ -2793,15 +2785,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