From 990ce591b5f32898b4125443e7fd1cfa4da88e79 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 14 Jan 2026 21:03:02 +0000 Subject: [PATCH 1/5] Initial plan From f047e54262b76ed46597384381ff3e4eb7305e46 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 14 Jan 2026 21:06:46 +0000 Subject: [PATCH 2/5] Add MAC address display to WiFi Networks screen Co-authored-by: lukestein <44452336+lukestein@users.noreply.github.com> --- src/activities/network/WifiSelectionActivity.cpp | 15 +++++++++++++++ src/activities/network/WifiSelectionActivity.h | 1 + 2 files changed, 16 insertions(+) diff --git a/src/activities/network/WifiSelectionActivity.cpp b/src/activities/network/WifiSelectionActivity.cpp index a8653f43..bed1d019 100644 --- a/src/activities/network/WifiSelectionActivity.cpp +++ b/src/activities/network/WifiSelectionActivity.cpp @@ -445,6 +445,17 @@ 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[24]; + 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 @@ -572,6 +583,10 @@ void WifiSelectionActivity::renderNetworkList() const { renderer.drawText(SMALL_FONT_ID, 20, pageHeight - 90, countStr); } + // Show MAC address above the network count and legend + std::string macAddress = getMacAddressString(); + renderer.drawText(SMALL_FONT_ID, 20, pageHeight - 105, macAddress.c_str()); + // Draw help text renderer.drawText(SMALL_FONT_ID, 20, pageHeight - 75, "* = Encrypted | + = Saved"); const auto labels = mappedInput.mapLabels("« Back", "Connect", "", ""); diff --git a/src/activities/network/WifiSelectionActivity.h b/src/activities/network/WifiSelectionActivity.h index 33ea26b1..5b46010d 100644 --- a/src/activities/network/WifiSelectionActivity.h +++ b/src/activities/network/WifiSelectionActivity.h @@ -90,6 +90,7 @@ 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, From d5e1f304348c0958352b6a209eb1619520e290f4 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 14 Jan 2026 21:07:43 +0000 Subject: [PATCH 3/5] Fix MAC address buffer size to avoid potential truncation Co-authored-by: lukestein <44452336+lukestein@users.noreply.github.com> --- src/activities/network/WifiSelectionActivity.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/activities/network/WifiSelectionActivity.cpp b/src/activities/network/WifiSelectionActivity.cpp index bed1d019..66f3e6c6 100644 --- a/src/activities/network/WifiSelectionActivity.cpp +++ b/src/activities/network/WifiSelectionActivity.cpp @@ -449,7 +449,7 @@ std::string WifiSelectionActivity::getMacAddressString() const { uint8_t mac[6]; WiFi.macAddress(mac); - char macStr[24]; + 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]); From a3d6ebeab370ceb03428f0b042d2ac955c98491b Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 14 Jan 2026 21:09:18 +0000 Subject: [PATCH 4/5] Address code review: cache MAC address and use lowercase hex format Co-authored-by: lukestein <44452336+lukestein@users.noreply.github.com> --- .../network/WifiSelectionActivity.cpp | 22 ++++++++----------- .../network/WifiSelectionActivity.h | 4 +++- 2 files changed, 12 insertions(+), 14 deletions(-) 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, From 666af1d7d6e7606ba71c076c9e0867579bc1dfe3 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 14 Jan 2026 21:20:58 +0000 Subject: [PATCH 5/5] Fix clang-format issue in snprintf line Co-authored-by: lukestein <44452336+lukestein@users.noreply.github.com> --- src/activities/network/WifiSelectionActivity.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/activities/network/WifiSelectionActivity.cpp b/src/activities/network/WifiSelectionActivity.cpp index 1c2cab57..07d44418 100644 --- a/src/activities/network/WifiSelectionActivity.cpp +++ b/src/activities/network/WifiSelectionActivity.cpp @@ -41,8 +41,8 @@ void WifiSelectionActivity::onEnter() { 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]); + 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