diff --git a/src/activities/network/WifiSelectionActivity.cpp b/src/activities/network/WifiSelectionActivity.cpp index 66f3e6c6..1c2cab57 100644 --- a/src/activities/network/WifiSelectionActivity.cpp +++ b/src/activities/network/WifiSelectionActivity.cpp @@ -37,6 +37,14 @@ void WifiSelectionActivity::onEnter() { savePromptSelection = 0; forgetPromptSelection = 0; + // Cache MAC address for display + uint8_t mac[6]; + WiFi.macAddress(mac); + char macStr[32]; + snprintf(macStr, sizeof(macStr), "MAC address: %02x-%02x-%02x-%02x-%02x-%02x", + mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]); + cachedMacAddress = std::string(macStr); + // Trigger first update to show scanning message updateRequired = true; @@ -445,17 +453,6 @@ std::string WifiSelectionActivity::getSignalStrengthIndicator(const int32_t rssi return " "; // Very weak } -std::string WifiSelectionActivity::getMacAddressString() const { - uint8_t mac[6]; - WiFi.macAddress(mac); - - char macStr[32]; - snprintf(macStr, sizeof(macStr), "MAC address: %02X-%02X-%02X-%02X-%02X-%02X", - mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]); - - return std::string(macStr); -} - void WifiSelectionActivity::displayTaskLoop() { while (true) { // If a subactivity is active, yield CPU time but don't render @@ -584,8 +581,7 @@ void WifiSelectionActivity::renderNetworkList() const { } // Show MAC address above the network count and legend - std::string macAddress = getMacAddressString(); - renderer.drawText(SMALL_FONT_ID, 20, pageHeight - 105, macAddress.c_str()); + renderer.drawText(SMALL_FONT_ID, 20, pageHeight - 105, cachedMacAddress.c_str()); // Draw help text renderer.drawText(SMALL_FONT_ID, 20, pageHeight - 75, "* = Encrypted | + = Saved"); diff --git a/src/activities/network/WifiSelectionActivity.h b/src/activities/network/WifiSelectionActivity.h index 5b46010d..0a7e7166 100644 --- a/src/activities/network/WifiSelectionActivity.h +++ b/src/activities/network/WifiSelectionActivity.h @@ -62,6 +62,9 @@ class WifiSelectionActivity final : public ActivityWithSubactivity { // Password to potentially save (from keyboard or saved credentials) std::string enteredPassword; + // Cached MAC address string for display + std::string cachedMacAddress; + // Whether network was connected using a saved password (skip save prompt) bool usedSavedPassword = false; @@ -90,7 +93,6 @@ class WifiSelectionActivity final : public ActivityWithSubactivity { void attemptConnection(); void checkConnectionStatus(); std::string getSignalStrengthIndicator(int32_t rssi) const; - std::string getMacAddressString() const; public: explicit WifiSelectionActivity(GfxRenderer& renderer, MappedInputManager& mappedInput,