From 15facd8866b4f7e7a25da67c3f2cc267eca59f4e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kuba=20Szczodrzy=C5=84ski?= Date: Tue, 5 Jul 2022 13:16:51 +0200 Subject: [PATCH] [realtek-ambz] Fix reading MAC address without WiFi enabled --- arduino/realtek-ambz/cores/arduino/LibreTuyaAPI.cpp | 1 + arduino/realtek-ambz/libraries/WiFi/WiFiSTA.cpp | 11 ++++++++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/arduino/realtek-ambz/cores/arduino/LibreTuyaAPI.cpp b/arduino/realtek-ambz/cores/arduino/LibreTuyaAPI.cpp index 343e5cc..9d31dcb 100644 --- a/arduino/realtek-ambz/cores/arduino/LibreTuyaAPI.cpp +++ b/arduino/realtek-ambz/cores/arduino/LibreTuyaAPI.cpp @@ -43,6 +43,7 @@ uint32_t LibreTuya::getChipId() { // TODO do what EFUSE_LogicalMapRead() does, and read only the used data EFUSE_LogicalMap_Read(efuse); memcpy(id, efuse + 0x11A + 3, 3); + free(efuse); return chipId; } diff --git a/arduino/realtek-ambz/libraries/WiFi/WiFiSTA.cpp b/arduino/realtek-ambz/libraries/WiFi/WiFiSTA.cpp index d6a8d56..fbef139 100644 --- a/arduino/realtek-ambz/libraries/WiFi/WiFiSTA.cpp +++ b/arduino/realtek-ambz/libraries/WiFi/WiFiSTA.cpp @@ -145,9 +145,14 @@ IPAddress WiFiClass::localIP() { } uint8_t *WiFiClass::macAddress(uint8_t *mac) { - uint8_t *macLocal = LwIP_GetMAC(NETIF_RTW_STA); - memcpy(mac, macLocal, ETH_ALEN); - free(macLocal); + if (getMode() == WIFI_MODE_NULL) { + uint8_t *efuse = (uint8_t *)malloc(512); + EFUSE_LogicalMap_Read(efuse); + memcpy(mac, efuse + 0x11A, ETH_ALEN); + free(efuse); + return mac; + } + memcpy(mac, LwIP_GetMAC(NETIF_RTW_STA), ETH_ALEN); return mac; }