From 0ce951938dc4620f49c1dccc77c5a97308e8cac0 Mon Sep 17 00:00:00 2001 From: gururaajar Date: Fri, 30 Jan 2026 17:50:22 -0500 Subject: [PATCH 1/2] =?UTF-8?q?RDKEMW-13122:=20Wi=E2=80=91Fi=20networks=20?= =?UTF-8?q?in=20the=20picker=20are=20not=20ordered=20by=20signal=20strengt?= =?UTF-8?q?h?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reason for change: Updated the onAvailableSSID to return strength and frequency as numbers so that the UI will do the sorting. Test Procedure: Check the onAvailableSSID returns strength and frequency as numbers Priority:P1 Risks: Medium Signed-off-by: Gururaaja ESR --- legacy/LegacyWiFiManagerAPIs.cpp | 5 +++++ plugin/gnome/NetworkManagerGnomeEvents.cpp | 4 ++-- plugin/gnome/NetworkManagerGnomeUtils.cpp | 20 +++++++++----------- plugin/gnome/NetworkManagerGnomeUtils.h | 4 ++-- plugin/gnome/NetworkManagerGnomeWIFI.cpp | 2 +- plugin/rdk/NetworkManagerRDKProxy.cpp | 5 +++++ 6 files changed, 24 insertions(+), 16 deletions(-) diff --git a/legacy/LegacyWiFiManagerAPIs.cpp b/legacy/LegacyWiFiManagerAPIs.cpp index a075e43e..67434dca 100644 --- a/legacy/LegacyWiFiManagerAPIs.cpp +++ b/legacy/LegacyWiFiManagerAPIs.cpp @@ -910,6 +910,11 @@ namespace WPEFramework for (int i = 0; i < ssids.Length(); i++) { JsonObject object = ssids[i].Object(); + if (object.HasLabel("strength")) + { + object["signalStrength"] = object["strength"]; + object.Remove("strength"); + } uint32_t security = object["security"].Number(); object["security"] = mapToLegacySecurityMode(security); ssidsUpdated.Add(object); diff --git a/plugin/gnome/NetworkManagerGnomeEvents.cpp b/plugin/gnome/NetworkManagerGnomeEvents.cpp index dea7c5ef..b14628f7 100644 --- a/plugin/gnome/NetworkManagerGnomeEvents.cpp +++ b/plugin/gnome/NetworkManagerGnomeEvents.cpp @@ -731,7 +731,7 @@ namespace WPEFramework { GBytes *ssid = NULL; int strength = 0; - std::string freq; + int freq; int security; guint32 flags, wpaFlags, rsnFlags, apFreq; if(ap == nullptr) @@ -757,7 +757,7 @@ namespace WPEFramework security = nmUtils::wifiSecurityModeFromAp(ssidString, flags, wpaFlags, rsnFlags, false); ssidObj["security"] = security; - ssidObj["strength"] = nmUtils::convertPercentageToSignalStrengtStr(strength); + ssidObj["strength"] = nmUtils::convertPercentageToSignalStrength(strength); ssidObj["frequency"] = freq; return true; } diff --git a/plugin/gnome/NetworkManagerGnomeUtils.cpp b/plugin/gnome/NetworkManagerGnomeUtils.cpp index 3910b6c3..6cfda65e 100644 --- a/plugin/gnome/NetworkManagerGnomeUtils.cpp +++ b/plugin/gnome/NetworkManagerGnomeUtils.cpp @@ -66,10 +66,10 @@ namespace WPEFramework } // Function to convert percentage (0-100) to dBm string - const char* nmUtils::convertPercentageToSignalStrengtStr(int percentage) { + int nmUtils::convertPercentageToSignalStrength(int percentage) { if (percentage <= 0 || percentage > 100) { - return ""; + return 0; } /* @@ -85,9 +85,7 @@ namespace WPEFramework const int max_dBm = -30; const int min_dBm = -90; int dBm_value = max_dBm + ((min_dBm - max_dBm) * (100 - percentage)) / 100; - static char result[8]={0}; - snprintf(result, sizeof(result), "%d", dBm_value); - return result; + return dBm_value; } std::string nmUtils::getSecurityModeString(guint32 flag, guint32 wpaFlags, guint32 rsnFlags) @@ -180,17 +178,17 @@ namespace WPEFramework return securityStr; } - std::string nmUtils::wifiFrequencyFromAp(guint32 apFreq) + float nmUtils::wifiFrequencyFromAp(guint32 apFreq) { - std::string freq; + float freq; if (apFreq >= 2400 && apFreq < 5000) - freq = "2.4"; + freq = 2.4f; else if (apFreq >= 5000 && apFreq < 6000) - freq = "5"; + freq = 5.0f; else if (apFreq >= 6000) - freq = "6"; + freq = 6.0f; else - freq = "Not available"; + freq = 0.0f; return freq; } diff --git a/plugin/gnome/NetworkManagerGnomeUtils.h b/plugin/gnome/NetworkManagerGnomeUtils.h index aab7daf0..71d44315 100644 --- a/plugin/gnome/NetworkManagerGnomeUtils.h +++ b/plugin/gnome/NetworkManagerGnomeUtils.h @@ -40,10 +40,10 @@ namespace WPEFramework static const char* wlanIface(); static const char* ethIface(); static const char* deviceHostname(); - static const char* convertPercentageToSignalStrengtStr(int percentage); + static int convertPercentageToSignalStrength(int percentage); static bool caseInsensitiveCompare(const std::string& str1, const std::string& str2); static uint8_t wifiSecurityModeFromAp(const std::string& ssid, guint32 flags, guint32 wpaFlags, guint32 rsnFlags, bool doPrint = true); - static std::string wifiFrequencyFromAp(guint32 apFreq); + static float wifiFrequencyFromAp(guint32 apFreq); static std::string getSecurityModeString(guint32 flags, guint32 wpaFlags, guint32 rsnFlags); static bool setNetworkManagerlogLevelToTrace(); static void setMarkerFile(const char* filename, bool unmark = false); diff --git a/plugin/gnome/NetworkManagerGnomeWIFI.cpp b/plugin/gnome/NetworkManagerGnomeWIFI.cpp index c1cbdfcb..eb3e1753 100644 --- a/plugin/gnome/NetworkManagerGnomeWIFI.cpp +++ b/plugin/gnome/NetworkManagerGnomeWIFI.cpp @@ -268,7 +268,7 @@ namespace WPEFramework wifiInfo.noise = std::to_string(noise); NMLOG_DEBUG("bitrate : %s kbit/s", wifiInfo.rate.c_str()); //TODO signal strenght to dBm - wifiInfo.strength = std::string(nmUtils::convertPercentageToSignalStrengtStr(strength)); + wifiInfo.strength = std::to_string(nmUtils::convertPercentageToSignalStrength(strength)); wifiInfo.security = static_cast(nmUtils::wifiSecurityModeFromAp(wifiInfo.ssid, flags, wpaFlags, rsnFlags, doPrint)); if(doPrint) { diff --git a/plugin/rdk/NetworkManagerRDKProxy.cpp b/plugin/rdk/NetworkManagerRDKProxy.cpp index 608d22d7..e1273af9 100644 --- a/plugin/rdk/NetworkManagerRDKProxy.cpp +++ b/plugin/rdk/NetworkManagerRDKProxy.cpp @@ -265,6 +265,11 @@ namespace WPEFramework for (int i = 0; i < ssids.Length(); i++) { JsonObject object = ssids[i].Object(); + if (object.HasLabel("signalStrength")) + { + object["strength"] = object["signalStrength"]; + object.Remove("signalStrength"); + } security = object["security"].Number(); object["security"] = mapToNewSecurityMode(security); ssidsUpdated.Add(object); From 947efe03dcaea317158c50c5dbcf07e0d159079f Mon Sep 17 00:00:00 2001 From: gururaajar Date: Fri, 30 Jan 2026 17:50:22 -0500 Subject: [PATCH 2/2] =?UTF-8?q?RDKEMW-13122:=20Wi=E2=80=91Fi=20networks=20?= =?UTF-8?q?in=20the=20picker=20are=20not=20ordered=20by=20signal=20strengt?= =?UTF-8?q?h?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reason for change: Updated the onAvailableSSID to return strength and frequency as numbers so that the UI will do the sorting. Test Procedure: Check the onAvailableSSID returns strength and frequency as numbers Priority:P1 Risks: Medium Signed-off-by: Gururaaja ESR --- legacy/LegacyWiFiManagerAPIs.cpp | 5 +++++ plugin/gnome/NetworkManagerGnomeEvents.cpp | 4 ++-- plugin/gnome/NetworkManagerGnomeUtils.cpp | 20 +++++++++----------- plugin/gnome/NetworkManagerGnomeUtils.h | 4 ++-- plugin/gnome/NetworkManagerGnomeWIFI.cpp | 2 +- plugin/rdk/NetworkManagerRDKProxy.cpp | 5 +++++ 6 files changed, 24 insertions(+), 16 deletions(-) diff --git a/legacy/LegacyWiFiManagerAPIs.cpp b/legacy/LegacyWiFiManagerAPIs.cpp index a075e43e..0b31de4f 100644 --- a/legacy/LegacyWiFiManagerAPIs.cpp +++ b/legacy/LegacyWiFiManagerAPIs.cpp @@ -910,6 +910,11 @@ namespace WPEFramework for (int i = 0; i < ssids.Length(); i++) { JsonObject object = ssids[i].Object(); + if (object.HasLabel("strength")) + { + object["signalStrength"] = object["strength"]; + object.Delete("strength"); + } uint32_t security = object["security"].Number(); object["security"] = mapToLegacySecurityMode(security); ssidsUpdated.Add(object); diff --git a/plugin/gnome/NetworkManagerGnomeEvents.cpp b/plugin/gnome/NetworkManagerGnomeEvents.cpp index dea7c5ef..b14628f7 100644 --- a/plugin/gnome/NetworkManagerGnomeEvents.cpp +++ b/plugin/gnome/NetworkManagerGnomeEvents.cpp @@ -731,7 +731,7 @@ namespace WPEFramework { GBytes *ssid = NULL; int strength = 0; - std::string freq; + int freq; int security; guint32 flags, wpaFlags, rsnFlags, apFreq; if(ap == nullptr) @@ -757,7 +757,7 @@ namespace WPEFramework security = nmUtils::wifiSecurityModeFromAp(ssidString, flags, wpaFlags, rsnFlags, false); ssidObj["security"] = security; - ssidObj["strength"] = nmUtils::convertPercentageToSignalStrengtStr(strength); + ssidObj["strength"] = nmUtils::convertPercentageToSignalStrength(strength); ssidObj["frequency"] = freq; return true; } diff --git a/plugin/gnome/NetworkManagerGnomeUtils.cpp b/plugin/gnome/NetworkManagerGnomeUtils.cpp index 3910b6c3..6cfda65e 100644 --- a/plugin/gnome/NetworkManagerGnomeUtils.cpp +++ b/plugin/gnome/NetworkManagerGnomeUtils.cpp @@ -66,10 +66,10 @@ namespace WPEFramework } // Function to convert percentage (0-100) to dBm string - const char* nmUtils::convertPercentageToSignalStrengtStr(int percentage) { + int nmUtils::convertPercentageToSignalStrength(int percentage) { if (percentage <= 0 || percentage > 100) { - return ""; + return 0; } /* @@ -85,9 +85,7 @@ namespace WPEFramework const int max_dBm = -30; const int min_dBm = -90; int dBm_value = max_dBm + ((min_dBm - max_dBm) * (100 - percentage)) / 100; - static char result[8]={0}; - snprintf(result, sizeof(result), "%d", dBm_value); - return result; + return dBm_value; } std::string nmUtils::getSecurityModeString(guint32 flag, guint32 wpaFlags, guint32 rsnFlags) @@ -180,17 +178,17 @@ namespace WPEFramework return securityStr; } - std::string nmUtils::wifiFrequencyFromAp(guint32 apFreq) + float nmUtils::wifiFrequencyFromAp(guint32 apFreq) { - std::string freq; + float freq; if (apFreq >= 2400 && apFreq < 5000) - freq = "2.4"; + freq = 2.4f; else if (apFreq >= 5000 && apFreq < 6000) - freq = "5"; + freq = 5.0f; else if (apFreq >= 6000) - freq = "6"; + freq = 6.0f; else - freq = "Not available"; + freq = 0.0f; return freq; } diff --git a/plugin/gnome/NetworkManagerGnomeUtils.h b/plugin/gnome/NetworkManagerGnomeUtils.h index aab7daf0..71d44315 100644 --- a/plugin/gnome/NetworkManagerGnomeUtils.h +++ b/plugin/gnome/NetworkManagerGnomeUtils.h @@ -40,10 +40,10 @@ namespace WPEFramework static const char* wlanIface(); static const char* ethIface(); static const char* deviceHostname(); - static const char* convertPercentageToSignalStrengtStr(int percentage); + static int convertPercentageToSignalStrength(int percentage); static bool caseInsensitiveCompare(const std::string& str1, const std::string& str2); static uint8_t wifiSecurityModeFromAp(const std::string& ssid, guint32 flags, guint32 wpaFlags, guint32 rsnFlags, bool doPrint = true); - static std::string wifiFrequencyFromAp(guint32 apFreq); + static float wifiFrequencyFromAp(guint32 apFreq); static std::string getSecurityModeString(guint32 flags, guint32 wpaFlags, guint32 rsnFlags); static bool setNetworkManagerlogLevelToTrace(); static void setMarkerFile(const char* filename, bool unmark = false); diff --git a/plugin/gnome/NetworkManagerGnomeWIFI.cpp b/plugin/gnome/NetworkManagerGnomeWIFI.cpp index c1cbdfcb..eb3e1753 100644 --- a/plugin/gnome/NetworkManagerGnomeWIFI.cpp +++ b/plugin/gnome/NetworkManagerGnomeWIFI.cpp @@ -268,7 +268,7 @@ namespace WPEFramework wifiInfo.noise = std::to_string(noise); NMLOG_DEBUG("bitrate : %s kbit/s", wifiInfo.rate.c_str()); //TODO signal strenght to dBm - wifiInfo.strength = std::string(nmUtils::convertPercentageToSignalStrengtStr(strength)); + wifiInfo.strength = std::to_string(nmUtils::convertPercentageToSignalStrength(strength)); wifiInfo.security = static_cast(nmUtils::wifiSecurityModeFromAp(wifiInfo.ssid, flags, wpaFlags, rsnFlags, doPrint)); if(doPrint) { diff --git a/plugin/rdk/NetworkManagerRDKProxy.cpp b/plugin/rdk/NetworkManagerRDKProxy.cpp index 608d22d7..0ce2df6b 100644 --- a/plugin/rdk/NetworkManagerRDKProxy.cpp +++ b/plugin/rdk/NetworkManagerRDKProxy.cpp @@ -265,6 +265,11 @@ namespace WPEFramework for (int i = 0; i < ssids.Length(); i++) { JsonObject object = ssids[i].Object(); + if (object.HasLabel("signalStrength")) + { + object["strength"] = object["signalStrength"]; + object.Delete("signalStrength"); + } security = object["security"].Number(); object["security"] = mapToNewSecurityMode(security); ssidsUpdated.Add(object);