Эх сурвалжийг харах

Build: Handle WiFi & BT enabled/disabled combos gracefully as possible

If using WIFI_INIT_CONFIG_DEFAULT, error message will point out lack
of WiFi. Otherwise linker errors on WiFi symbols should help give a
clue as to what is broken.

Piggy-backs on changes in !420, ref github #230 #237
Angus Gratton 9 жил өмнө
parent
commit
ea19838d3a

+ 8 - 1
components/esp32/component.mk

@@ -3,8 +3,15 @@
 #
 
 COMPONENT_SRCDIRS := . hwcrypto
+LIBS := core rtc phy
+ifdef CONFIG_BT_ENABLED
+LIBS += coexist
+endif
+ifdef CONFIG_WIFI_ENABLED
+LIBS += net80211 pp wpa smartconfig coexist wps wpa2
+endif
 
-LIBS := core net80211 phy rtc pp wpa smartconfig coexist wps wpa2
+LIBS := $(sort $(LIBS))  # de-duplicate, we can handle different orders here
 
 LINKER_SCRIPTS += esp32.common.ld esp32.rom.ld esp32.peripherals.ld
 

+ 5 - 1
components/esp32/include/esp_wifi.h

@@ -62,6 +62,7 @@
 #include "freertos/FreeRTOS.h"
 #include "freertos/queue.h"
 #include "rom/queue.h"
+#include "sdkconfig.h"
 #include "esp_err.h"
 #include "esp_wifi_types.h"
 #include "esp_event.h"
@@ -97,11 +98,14 @@ typedef struct {
     uint32_t rx_buf_num;  /**< WiFi RX buffer number */
 } wifi_init_config_t;
 
-
+#ifdef CONFIG_WIFI_ENABLED
 #define WIFI_INIT_CONFIG_DEFAULT() { \
     .event_handler = &esp_event_send, \
     .rx_buf_num = CONFIG_ESP32_WIFI_RX_BUFFER_NUM, \
 };
+#else
+#define WIFI_INIT_CONFIG_DEFAULT #error Wifi is disabled in config, WIFI_INIT_CONFIG_DEFAULT will not work
+#endif
 
 /**
   * @brief  Init WiFi

+ 3 - 0
components/esp32/system_api.c

@@ -17,6 +17,7 @@
 #include "esp_wifi.h"
 #include "esp_wifi_internal.h"
 #include "esp_log.h"
+#include "sdkconfig.h"
 #include "rom/efuse.h"
 #include "rom/cache.h"
 #include "rom/uart.h"
@@ -74,7 +75,9 @@ esp_err_t system_efuse_read_mac(uint8_t mac[6]) __attribute__((alias("esp_efuse_
 
 void IRAM_ATTR esp_restart(void)
 {
+#ifdef CONFIG_WIFI_ENABLED
     esp_wifi_stop();
+#endif
 
     // Disable scheduler on this core.
     vTaskSuspendAll();

+ 2 - 0
examples/02_blink/sdkconfig.defaults

@@ -0,0 +1,2 @@
+# Disable WiFi stack by default
+CONFIG_WIFI_ENABLED=n

+ 2 - 5
examples/14_gatt_server/sdkconfig.defaults

@@ -1,7 +1,4 @@
 # Override some defaults so BT stack is enabled
-# in this example
-
-#
-# BT config
-#
+# and WiFi disabled by default in this example
 CONFIG_BT_ENABLED=y
+CONFIG_WIFI_ENABLED=n

+ 2 - 5
examples/15_gatt_client/sdkconfig.defaults

@@ -1,7 +1,4 @@
 # Override some defaults so BT stack is enabled
-# in this example
-
-#
-# BT config
-#
+# and WiFi disabled by default in this example
 CONFIG_BT_ENABLED=y
+CONFIG_WIFI_ENABLED=n