From aeebff9d5d0cda5b9ed84b84ccb30d201889e701 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kuba=20Szczodrzy=C5=84ski?= Date: Tue, 24 May 2022 17:47:45 +0200 Subject: [PATCH] [realtek-ambz] Fix WiFiEvents linking when not needed --- .../realtek-ambz/libraries/WiFi/WiFiEvents.cpp | 15 ++++++++++----- .../realtek-ambz/libraries/WiFi/WiFiGeneric.cpp | 4 ++++ 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/arduino/realtek-ambz/libraries/WiFi/WiFiEvents.cpp b/arduino/realtek-ambz/libraries/WiFi/WiFiEvents.cpp index 5c2dce3..07a0c2a 100644 --- a/arduino/realtek-ambz/libraries/WiFi/WiFiEvents.cpp +++ b/arduino/realtek-ambz/libraries/WiFi/WiFiEvents.cpp @@ -10,6 +10,8 @@ static xQueueHandle wifiEventQueueHandle = NULL; static xTaskHandle wifiEventTaskHandle = NULL; +WiFiClass *pWiFi = NULL; + // C code to support SDK-defined events (in wifi_conf.c) extern "C" { // SDK events @@ -133,6 +135,9 @@ void WiFiClass::handleRtwEvent(uint16_t event, char *data, int len, int flags) { handler(data, len, flags, event_callback_list[event][i].handler_user_data); } + if (pWiFi == NULL) + return; + EventId eventId; EventInfo eventInfo; String ssid; @@ -155,18 +160,18 @@ void WiFiClass::handleRtwEvent(uint16_t event, char *data, int len, int flags) { case WIFI_EVENT_FOURWAY_HANDSHAKE_DONE: eventId = ARDUINO_EVENT_WIFI_STA_CONNECTED; - ssid = WiFi.SSID(); + ssid = pWiFi->SSID(); eventInfo.wifi_sta_connected.ssid_len = ssid.length(); - eventInfo.wifi_sta_connected.channel = WiFi.channel(); - eventInfo.wifi_sta_connected.authmode = WiFi.getEncryption(); + eventInfo.wifi_sta_connected.channel = pWiFi->channel(); + eventInfo.wifi_sta_connected.authmode = pWiFi->getEncryption(); memcpy(eventInfo.wifi_sta_connected.ssid, ssid.c_str(), eventInfo.wifi_sta_connected.ssid_len + 1); - memcpy(eventInfo.wifi_sta_connected.bssid, WiFi.BSSID(), 6); + memcpy(eventInfo.wifi_sta_connected.bssid, pWiFi->BSSID(), 6); break; case WIFI_EVENT_SCAN_DONE: eventId = ARDUINO_EVENT_WIFI_SCAN_DONE; eventInfo.wifi_scan_done.status = 0; - eventInfo.wifi_scan_done.number = WiFi._netCount; + eventInfo.wifi_scan_done.number = pWiFi->_netCount; eventInfo.wifi_scan_done.scan_id = 0; break; diff --git a/arduino/realtek-ambz/libraries/WiFi/WiFiGeneric.cpp b/arduino/realtek-ambz/libraries/WiFi/WiFiGeneric.cpp index d2a2732..10c76e9 100644 --- a/arduino/realtek-ambz/libraries/WiFi/WiFiGeneric.cpp +++ b/arduino/realtek-ambz/libraries/WiFi/WiFiGeneric.cpp @@ -9,9 +9,13 @@ int32_t WiFiClass::channel() { return channel; } +extern WiFiClass *pWiFi; extern void startWifiTask(); bool WiFiClass::mode(WiFiMode mode) { + // store a pointer to WiFi for WiFiEvents.cpp + pWiFi = this; + WiFiMode currentMode = getMode(); LT_D_WG("Mode changing %u -> %u", currentMode, mode); if (mode == currentMode)