diff --git a/definition/NetworkManager.json b/definition/NetworkManager.json index 86183cab..617b05a0 100644 --- a/definition/NetworkManager.json +++ b/definition/NetworkManager.json @@ -128,18 +128,18 @@ }, "strength":{ "summary": "The WiFi Signal RSSI value in dBm", - "type": "string", - "example": "-32" + "type": "integer", + "example": -32 }, "noise":{ "summary": "The WiFi Signal Noise detected in dBm", - "type": "string", - "example": "-96" + "type": "integer", + "example": -96 }, "snr":{ "summary": "Signal to Noise Ratio(SNR) in dBm", - "type": "string", - "example": "74" + "type": "integer", + "example": 74 }, "quality":{ "summary": "WiFi Quality based on Signal to Noise Ratio (SNR)", @@ -148,8 +148,9 @@ }, "frequency":{ "summary": "The supported frequency for this SSID in GHz", - "type": "string", - "example": "2.4420" + "type": "number", + "float": true, + "example": 2.4420 }, "errors": { "summary": "Error string of scan failure", @@ -1109,8 +1110,8 @@ }, "rate":{ "summary": "The physical data rate in Mbps", - "type": "string", - "example": "144" + "type": "integer", + "example": 144 }, "noise":{ "$ref": "#/definitions/noise" diff --git a/docs/NetworkManagerPlugin.md b/docs/NetworkManagerPlugin.md index 275a69ec..47a19887 100644 --- a/docs/NetworkManagerPlugin.md +++ b/docs/NetworkManagerPlugin.md @@ -1367,10 +1367,10 @@ This method takes no parameters. | result.ssid | string | The WiFi SSID Name | | result.bssid | string | The BSSID of given SSID | | result.security | string | The security mode. See the `connect` method | -| result.strength | string | The WiFi Signal RSSI value in dBm | -| result.frequency | string | The supported frequency for this SSID in GHz | -| result.rate | string | The physical data rate in Mbps | -| result.noise | string | The WiFi Signal Noise detected in dBm | +| result.strength | integer | The WiFi Signal RSSI value in dBm | +| result.frequency | number | The supported frequency for this SSID in GHz | +| result.rate | integer | The physical data rate in Mbps | +| result.noise | integer | The WiFi Signal Noise detected in dBm | | result.success | boolean | Whether the request succeeded | ### Example @@ -1395,10 +1395,10 @@ This method takes no parameters. "ssid": "myHomeSSID", "bssid": "AA:BB:CC:DD:EE:FF", "security": "2", - "strength": "-32", - "frequency": "2.4420", - "rate": "144", - "noise": "-96", + "strength": -32, + "frequency": 2.442, + "rate": 144, + "noise": -96, "success": true } } @@ -1524,9 +1524,9 @@ This method takes no parameters. | result | object | | | result.ssid | string | The WiFi SSID Name | | result.quality | string | WiFi Quality based on Signal to Noise Ratio (SNR) | -| result.snr | string | Signal to Noise Ratio(SNR) in dBm | -| result.strength | string | The WiFi Signal RSSI value in dBm | -| result.noise | string | The WiFi Signal Noise detected in dBm | +| result.snr | integer | Signal to Noise Ratio(SNR) in dBm | +| result.strength | integer | The WiFi Signal RSSI value in dBm | +| result.noise | integer | The WiFi Signal Noise detected in dBm | | result.success | boolean | Whether the request succeeded | ### Example @@ -1550,9 +1550,9 @@ This method takes no parameters. "result": { "ssid": "myHomeSSID", "quality": "Excellent", - "snr": "74", - "strength": "-32", - "noise": "-96", + "snr": 74, + "strength": -32, + "noise": -96, "success": true } } @@ -1872,8 +1872,8 @@ Triggered when scan completes or when scan cancelled. | params.ssids[#] | object | | | params.ssids[#].ssid | string | Discovered SSID | | params.ssids[#].security | integer | The security mode. See `GetSupportedSecurityModes` | -| params.ssids[#].strength | string | The WiFi Signal RSSI value in dBm | -| params.ssids[#].frequency | string | The supported frequency for this SSID in GHz | +| params.ssids[#].strength | integer | The WiFi Signal RSSI value in dBm | +| params.ssids[#].frequency | number | The supported frequency for this SSID in GHz | ### Example @@ -1886,8 +1886,8 @@ Triggered when scan completes or when scan cancelled. { "ssid": "myAP-2.4", "security": 2, - "strength": "-32", - "frequency": "2.4420" + "strength": -32, + "frequency": 2.442 } ] } @@ -1932,9 +1932,9 @@ Triggered when WIFI Signal quality changed which is decided based on SNR value w | params | object | | | params.ssid | string | The WiFi SSID Name | | params.quality | string | WiFi Quality based on Signal to Noise Ratio (SNR) | -| params.snr | string | Signal to Noise Ratio(SNR) in dBm | -| params.strength | string | The WiFi Signal RSSI value in dBm | -| params.noise | string | The WiFi Signal Noise detected in dBm | +| params.snr | integer | Signal to Noise Ratio(SNR) in dBm | +| params.strength | integer | The WiFi Signal RSSI value in dBm | +| params.noise | integer | The WiFi Signal Noise detected in dBm | ### Example @@ -1945,9 +1945,9 @@ Triggered when WIFI Signal quality changed which is decided based on SNR value w "params": { "ssid": "myHomeSSID", "quality": "Excellent", - "snr": "74", - "strength": "-32", - "noise": "-96" + "snr": 74, + "strength": -32, + "noise": -96 } } ``` diff --git a/interface/INetworkManager.h b/interface/INetworkManager.h index a3097d7a..2bedba99 100644 --- a/interface/INetworkManager.h +++ b/interface/INetworkManager.h @@ -30,7 +30,14 @@ namespace WPEFramework ID_NETWORKMANAGER = 0x800004E0, ID_NETWORKMANAGER_NOTIFICATION = ID_NETWORKMANAGER + 1, ID_NETWORKMANAGER_INTERFACE_DETAILS_ITERATOR = ID_NETWORKMANAGER + 2, - ID_NETWORKMANAGER_WIFI_SECURITY_MODE_ITERATOR = ID_NETWORKMANAGER + 3 + ID_NETWORKMANAGER_WIFI_SECURITY_MODE_ITERATOR = ID_NETWORKMANAGER + 3, + ID_NETWORKMANAGER_INTERFACE_STATE_NOTIFICATION = ID_NETWORKMANAGER + 4, + ID_NETWORKMANAGER_ACTIVE_INTERFACE_NOTIFICATION = ID_NETWORKMANAGER + 5, + ID_NETWORKMANAGER_IP_ADDRESS_NOTIFICATION = ID_NETWORKMANAGER + 6, + ID_NETWORKMANAGER_INTERNET_STATUS_NOTIFICATION = ID_NETWORKMANAGER + 7, + ID_NETWORKMANAGER_AVAILABLE_SSIDS_NOTIFICATION = ID_NETWORKMANAGER + 8, + ID_NETWORKMANAGER_WIFI_STATE_NOTIFICATION = ID_NETWORKMANAGER + 9, + ID_NETWORKMANAGER_WIFI_SIGNAL_NOTIFICATION = ID_NETWORKMANAGER + 10 }; /* @json @text:keep */ @@ -130,10 +137,10 @@ namespace WPEFramework string ssid; string bssid; WIFISecurityMode security; - string strength; - string frequency; - string rate; - string noise; + int32_t strength; + double frequency; + int32_t rate; + int32_t noise; }; struct EXTERNAL WIFISecurityModeInfo { @@ -252,7 +259,7 @@ namespace WPEFramework virtual uint32_t StartWPS(const WiFiWPS& method /* @in */, const string& pin /* @in */) = 0; virtual uint32_t StopWPS(void) = 0; virtual uint32_t GetWifiState(WiFiState &state /* @out */) = 0; - virtual uint32_t GetWiFiSignalQuality(string& ssid /* @out */, string& strength /* @out */, string& noise /* @out */, string& snr /* @out */, WiFiSignalQuality& quality /* @out */) = 0; + virtual uint32_t GetWiFiSignalQuality(string& ssid /* @out */, int& strength /* @out */, int& noise /* @out */, int& snr /* @out */, WiFiSignalQuality& quality /* @out */) = 0; virtual uint32_t GetSupportedSecurityModes(ISecurityModeIterator*& modes/* @out */) const = 0; /* @brief Set the network manager plugin log level */ @@ -263,25 +270,76 @@ namespace WPEFramework virtual uint32_t Configure(const string configLine/* @in */) = 0; /* @event */ - struct EXTERNAL INotification : virtual public Core::IUnknown + struct EXTERNAL IInterfaceStateChangeNotification : virtual public Core::IUnknown { - enum { ID = ID_NETWORKMANAGER_NOTIFICATION }; + enum { ID = ID_NETWORKMANAGER_INTERFACE_STATE_NOTIFICATION }; - // Network Notifications that other processes can subscribe to virtual void onInterfaceStateChange(const InterfaceState state /* @in */, const string interface /* @in */) = 0; + }; + + /* @event */ + struct EXTERNAL IActiveInterfaceChangeNotification : virtual public Core::IUnknown + { + enum { ID = ID_NETWORKMANAGER_ACTIVE_INTERFACE_NOTIFICATION }; + virtual void onActiveInterfaceChange(const string prevActiveInterface /* @in */, const string currentActiveInterface /* @in */) = 0; + }; + + /* @event */ + struct EXTERNAL IIPAddressChangeNotification : virtual public Core::IUnknown + { + enum { ID = ID_NETWORKMANAGER_IP_ADDRESS_NOTIFICATION }; + virtual void onIPAddressChange(const string interface /* @in */, const string ipversion /* @in */, const string ipaddress /* @in */, const IPStatus status /* @in */) = 0; + }; + + /* @event */ + struct EXTERNAL IInternetStatusChangeNotification : virtual public Core::IUnknown + { + enum { ID = ID_NETWORKMANAGER_INTERNET_STATUS_NOTIFICATION }; + virtual void onInternetStatusChange(const InternetStatus prevState /* @in */, const InternetStatus currState /* @in */, const string interface /* @in */) = 0; + }; + + /* @event */ + struct EXTERNAL IAvailableSSIDsNotification : virtual public Core::IUnknown + { + enum { ID = ID_NETWORKMANAGER_AVAILABLE_SSIDS_NOTIFICATION }; - // WiFi Notifications that other processes can subscribe to virtual void onAvailableSSIDs(const string jsonOfScanResults /* @in */) = 0; + }; + + /* @event */ + struct EXTERNAL IWiFiStateChangeNotification : virtual public Core::IUnknown + { + enum { ID = ID_NETWORKMANAGER_WIFI_STATE_NOTIFICATION }; + virtual void onWiFiStateChange(const WiFiState state /* @in */) = 0; - virtual void onWiFiSignalQualityChange(const string ssid /* @in */, const string strength /* @in */, const string noise /* @in */, const string snr /* @in */, const WiFiSignalQuality quality /* @in */) = 0; + }; + + /* @event */ + struct EXTERNAL IWiFiSignalQualityChangeNotification : virtual public Core::IUnknown + { + enum { ID = ID_NETWORKMANAGER_WIFI_SIGNAL_NOTIFICATION }; + + virtual void onWiFiSignalQualityChange(const string ssid /* @in */, const int strength /* @in */, const int noise /* @in */, const int snr /* @in */, const WiFiSignalQuality quality /* @in */) = 0; }; // Allow other processes to register/unregister from our notifications - virtual uint32_t Register(INetworkManager::INotification* notification) = 0; - virtual uint32_t Unregister(INetworkManager::INotification* notification) = 0; + virtual uint32_t RegisterInterfaceStateChangeNotification(IInterfaceStateChangeNotification* notification) = 0; + virtual uint32_t UnregisterInterfaceStateChangeNotification(IInterfaceStateChangeNotification* notification) = 0; + virtual uint32_t RegisterActiveInterfaceChangeNotification(IActiveInterfaceChangeNotification* notification) = 0; + virtual uint32_t UnregisterActiveInterfaceChangeNotification(IActiveInterfaceChangeNotification* notification) = 0; + virtual uint32_t RegisterIPAddressChangeNotification(IIPAddressChangeNotification* notification) = 0; + virtual uint32_t UnregisterIPAddressChangeNotification(IIPAddressChangeNotification* notification) = 0; + virtual uint32_t RegisterInternetStatusChangeNotification(IInternetStatusChangeNotification* notification) = 0; + virtual uint32_t UnregisterInternetStatusChangeNotification(IInternetStatusChangeNotification* notification) = 0; + virtual uint32_t RegisterAvailableSSIDsNotification(IAvailableSSIDsNotification* notification) = 0; + virtual uint32_t UnregisterAvailableSSIDsNotification(IAvailableSSIDsNotification* notification) = 0; + virtual uint32_t RegisterWiFiStateChangeNotification(IWiFiStateChangeNotification* notification) = 0; + virtual uint32_t UnregisterWiFiStateChangeNotification(IWiFiStateChangeNotification* notification) = 0; + virtual uint32_t RegisterWiFiSignalQualityChangeNotification(IWiFiSignalQualityChangeNotification* notification) = 0; + virtual uint32_t UnregisterWiFiSignalQualityChangeNotification(IWiFiSignalQualityChangeNotification* notification) = 0; }; } } diff --git a/legacy/LegacyWiFiManagerAPIs.cpp b/legacy/LegacyWiFiManagerAPIs.cpp index a075e43e..12e91b0a 100644 --- a/legacy/LegacyWiFiManagerAPIs.cpp +++ b/legacy/LegacyWiFiManagerAPIs.cpp @@ -400,11 +400,12 @@ namespace WPEFramework { response["ssid"] = ssidInfo.ssid; response["bssid"] = ssidInfo.bssid; - response["rate"] = ssidInfo.rate; - response["noise"] = ssidInfo.noise; + response["rate"] = to_string(ssidInfo.rate); + response["noise"] = to_string(ssidInfo.noise); response["security"] = JsonValue(mapToLegacySecurityMode(ssidInfo.security)); - response["signalStrength"] = ssidInfo.strength; - response["frequency"] = ssidInfo.frequency; + response["signalStrength"] = to_string(ssidInfo.strength); + std::string freqStr = to_string(ssidInfo.frequency); + response["frequency"] = freqStr.substr(0, 3); } returnJson(rc); } @@ -911,10 +912,15 @@ namespace WPEFramework { JsonObject object = ssids[i].Object(); uint32_t security = object["security"].Number(); - object["security"] = mapToLegacySecurityMode(security); - ssidsUpdated.Add(object); + JsonObject newObject; + newObject["ssid"] = object["ssid"]; + newObject["security"] = mapToLegacySecurityMode(security); + newObject["signalStrength"] = object["strength"]; + newObject["frequency"] = object["frequency"]; + ssidsUpdated.Add(newObject); } newParameters["ssids"] = ssidsUpdated; + newParameters["moreData"] = false; newParameters.ToString(json); NMLOG_INFO("Event with %d SSIDs as, %s", ssids.Length(), json.c_str()); diff --git a/plugin/NetworkManager.cpp b/plugin/NetworkManager.cpp index 1049e503..f3b3a4eb 100644 --- a/plugin/NetworkManager.cpp +++ b/plugin/NetworkManager.cpp @@ -92,7 +92,13 @@ namespace WPEFramework // Register Notifications SYSLOG(Logging::Startup, (_T("Registering Notification to NetworkManager"))); - _networkManager->Register(&_notification); + _networkManager->RegisterInterfaceStateChangeNotification(_notification.baseInterface()); + _networkManager->RegisterActiveInterfaceChangeNotification(_notification.baseInterface()); + _networkManager->RegisterIPAddressChangeNotification(_notification.baseInterface()); + _networkManager->RegisterInternetStatusChangeNotification(_notification.baseInterface()); + _networkManager->RegisterAvailableSSIDsNotification(_notification.baseInterface()); + _networkManager->RegisterWiFiStateChangeNotification(_notification.baseInterface()); + _networkManager->RegisterWiFiSignalQualityChangeNotification(_notification.baseInterface()); SYSLOG(Logging::Startup, (_T("Configuring NetworkManager"))); if (_networkManager->Configure(service->ConfigLine()) != Core::ERROR_NONE) @@ -145,7 +151,13 @@ namespace WPEFramework _service->Unregister(&_notification); SYSLOG(Logging::Shutdown, (_T("Unregister Event Notifications of NetworkManager"))); - _networkManager->Unregister(&_notification); + _networkManager->UnregisterInterfaceStateChangeNotification(_notification.baseInterface()); + _networkManager->UnregisterActiveInterfaceChangeNotification(_notification.baseInterface()); + _networkManager->UnregisterIPAddressChangeNotification(_notification.baseInterface()); + _networkManager->UnregisterInternetStatusChangeNotification(_notification.baseInterface()); + _networkManager->UnregisterAvailableSSIDsNotification(_notification.baseInterface()); + _networkManager->UnregisterWiFiStateChangeNotification(_notification.baseInterface()); + _networkManager->UnregisterWiFiSignalQualityChangeNotification(_notification.baseInterface()); // Unregister all our JSON-RPC methods SYSLOG(Logging::Shutdown, (_T("Unregister JSON RPC Methods of NetworkManager"))); diff --git a/plugin/NetworkManager.h b/plugin/NetworkManager.h index 6529e058..841c2dff 100644 --- a/plugin/NetworkManager.h +++ b/plugin/NetworkManager.h @@ -45,7 +45,13 @@ namespace WPEFramework * for notifications raised by the COM-RPC API */ class Notification : public RPC::IRemoteConnection::INotification, - public Exchange::INetworkManager::INotification + public Exchange::INetworkManager::IInterfaceStateChangeNotification, + public Exchange::INetworkManager::IActiveInterfaceChangeNotification, + public Exchange::INetworkManager::IIPAddressChangeNotification, + public Exchange::INetworkManager::IInternetStatusChangeNotification, + public Exchange::INetworkManager::IAvailableSSIDsNotification, + public Exchange::INetworkManager::IWiFiStateChangeNotification, + public Exchange::INetworkManager::IWiFiSignalQualityChangeNotification { private: Notification() = delete; @@ -62,6 +68,13 @@ namespace WPEFramework { } + template + T* baseInterface() + { + static_assert(std::is_base_of(), "base type mismatch"); + return static_cast(this); + } + public: void onInterfaceStateChange(const Exchange::INetworkManager::InterfaceState state, const string interface) override @@ -94,7 +107,7 @@ namespace WPEFramework _parent.onWiFiStateChange(state); } - void onWiFiSignalQualityChange(const string ssid, const string strength, const string noise, const string snr, const Exchange::INetworkManager::WiFiSignalQuality quality) override + void onWiFiSignalQualityChange(const string ssid, const int strength, const int noise, const int snr, const Exchange::INetworkManager::WiFiSignalQuality quality) override { _parent.onWiFiSignalQualityChange(ssid, strength, noise, snr, quality); } @@ -115,7 +128,13 @@ namespace WPEFramework // Build QueryInterface implementation, specifying all possible interfaces we implement BEGIN_INTERFACE_MAP(Notification) - INTERFACE_ENTRY(Exchange::INetworkManager::INotification) + INTERFACE_ENTRY(Exchange::INetworkManager::IInterfaceStateChangeNotification) + INTERFACE_ENTRY(Exchange::INetworkManager::IActiveInterfaceChangeNotification) + INTERFACE_ENTRY(Exchange::INetworkManager::IIPAddressChangeNotification) + INTERFACE_ENTRY(Exchange::INetworkManager::IInternetStatusChangeNotification) + INTERFACE_ENTRY(Exchange::INetworkManager::IAvailableSSIDsNotification) + INTERFACE_ENTRY(Exchange::INetworkManager::IWiFiStateChangeNotification) + INTERFACE_ENTRY(Exchange::INetworkManager::IWiFiSignalQualityChangeNotification) INTERFACE_ENTRY(RPC::IRemoteConnection::INotification) END_INTERFACE_MAP @@ -262,7 +281,7 @@ namespace WPEFramework void onInternetStatusChange(const Exchange::INetworkManager::InternetStatus prevState, const Exchange::INetworkManager::InternetStatus currState, const string interface); void onAvailableSSIDs(const string jsonOfScanResults); void onWiFiStateChange(const Exchange::INetworkManager::WiFiState state); - void onWiFiSignalQualityChange(const string ssid, const string strength, const string noise, const string snr, const Exchange::INetworkManager::WiFiSignalQuality quality); + void onWiFiSignalQualityChange(const string ssid, const int strength, const int noise, const int snr, const Exchange::INetworkManager::WiFiSignalQuality quality); private: uint32_t _connectionId; diff --git a/plugin/NetworkManagerImplementation.cpp b/plugin/NetworkManagerImplementation.cpp index ef3165a4..8fd5e663 100644 --- a/plugin/NetworkManagerImplementation.cpp +++ b/plugin/NetworkManagerImplementation.cpp @@ -36,7 +36,6 @@ namespace WPEFramework SERVICE_REGISTRATION(NetworkManagerImplementation, NETWORKMANAGER_MAJOR_VERSION, NETWORKMANAGER_MINOR_VERSION, NETWORKMANAGER_PATCH_VERSION); NetworkManagerImplementation::NetworkManagerImplementation() - : _notificationCallbacks({}) { /* Initialize STUN Endpoints */ m_stunEndpoint = "stun.l.google.com"; @@ -85,14 +84,15 @@ namespace WPEFramework /** * Register a notification callback */ - uint32_t NetworkManagerImplementation::Register(INetworkManager::INotification *notification) + template + uint32_t NetworkManagerImplementation::Register(std::list& list, T* notification) { LOG_ENTRY_FUNCTION(); _notificationLock.Lock(); // Make sure we can't register the same notification callback multiple times - if (std::find(_notificationCallbacks.begin(), _notificationCallbacks.end(), notification) == _notificationCallbacks.end()) { - _notificationCallbacks.push_back(notification); + if (std::find(list.begin(), list.end(), notification) == list.end()) { + list.push_back(notification); notification->AddRef(); } @@ -104,16 +104,17 @@ namespace WPEFramework /** * Unregister a notification callback */ - uint32_t NetworkManagerImplementation::Unregister(INetworkManager::INotification *notification) + template + uint32_t NetworkManagerImplementation::Unregister(std::list& list, T* notification) { LOG_ENTRY_FUNCTION(); _notificationLock.Lock(); // Make sure we can't register the same notification callback multiple times - auto itr = std::find(_notificationCallbacks.begin(), _notificationCallbacks.end(), notification); - if (itr != _notificationCallbacks.end()) { + auto itr = std::find(list.begin(), list.end(), notification); + if (itr != list.end()) { (*itr)->Release(); - _notificationCallbacks.erase(itr); + list.erase(itr); } _notificationLock.Unlock(); @@ -121,6 +122,104 @@ namespace WPEFramework return Core::ERROR_NONE; } + uint32_t NetworkManagerImplementation::RegisterInterfaceStateChangeNotification(Exchange::INetworkManager::IInterfaceStateChangeNotification* notification) + { + uint32_t errorCode = Register(_interfaceStateChangeNotifications, notification); + NMLOG_INFO("IInterfaceStateChangeNotification %p, errorCode: %u", notification, errorCode); + return errorCode; + } + + uint32_t NetworkManagerImplementation::UnregisterInterfaceStateChangeNotification(Exchange::INetworkManager::IInterfaceStateChangeNotification* notification) + { + uint32_t errorCode = Unregister(_interfaceStateChangeNotifications, notification); + NMLOG_INFO("IInterfaceStateChangeNotification %p, errorCode: %u", notification, errorCode); + return errorCode; + } + + uint32_t NetworkManagerImplementation::RegisterActiveInterfaceChangeNotification(Exchange::INetworkManager::IActiveInterfaceChangeNotification* notification) + { + uint32_t errorCode = Register(_activeInterfaceChangeNotifications, notification); + NMLOG_INFO("IActiveInterfaceChangeNotification %p, errorCode: %u", notification, errorCode); + return errorCode; + } + + uint32_t NetworkManagerImplementation::UnregisterActiveInterfaceChangeNotification(Exchange::INetworkManager::IActiveInterfaceChangeNotification* notification) + { + uint32_t errorCode = Unregister(_activeInterfaceChangeNotifications, notification); + NMLOG_INFO("IActiveInterfaceChangeNotification %p, errorCode: %u", notification, errorCode); + return errorCode; + } + + uint32_t NetworkManagerImplementation::RegisterIPAddressChangeNotification(Exchange::INetworkManager::IIPAddressChangeNotification* notification) + { + uint32_t errorCode = Register(_ipAddressChangeNotifications, notification); + NMLOG_INFO("IIPAddressChangeNotification %p, errorCode: %u", notification, errorCode); + return errorCode; + } + + uint32_t NetworkManagerImplementation::UnregisterIPAddressChangeNotification(Exchange::INetworkManager::IIPAddressChangeNotification* notification) + { + uint32_t errorCode = Unregister(_ipAddressChangeNotifications, notification); + NMLOG_INFO("IIPAddressChangeNotification %p, errorCode: %u", notification, errorCode); + return errorCode; + } + + uint32_t NetworkManagerImplementation::RegisterInternetStatusChangeNotification(Exchange::INetworkManager::IInternetStatusChangeNotification * notification) + { + uint32_t errorCode = Register(_internetStatusChangeNotifications, notification); + NMLOG_INFO("IInternetStatusChangeNotification %p, errorCode: %u", notification, errorCode); + return errorCode; + } + + uint32_t NetworkManagerImplementation::UnregisterInternetStatusChangeNotification(Exchange::INetworkManager::IInternetStatusChangeNotification * notification) + { + uint32_t errorCode = Unregister(_internetStatusChangeNotifications, notification); + NMLOG_INFO("IInternetStatusChangeNotification %p, errorCode: %u", notification, errorCode); + return errorCode; + } + + uint32_t NetworkManagerImplementation::RegisterAvailableSSIDsNotification(Exchange::INetworkManager::IAvailableSSIDsNotification * notification) + { + uint32_t errorCode = Register(_availableSSIDsNotifications, notification); + NMLOG_INFO("IAvailableSSIDsNotification %p, errorCode: %u", notification, errorCode); + return errorCode; + } + + uint32_t NetworkManagerImplementation::UnregisterAvailableSSIDsNotification(Exchange::INetworkManager::IAvailableSSIDsNotification * notification) + { + uint32_t errorCode = Unregister(_availableSSIDsNotifications, notification); + NMLOG_INFO("IAvailableSSIDsNotification %p, errorCode: %u", notification, errorCode); + return errorCode; + } + + uint32_t NetworkManagerImplementation::RegisterWiFiStateChangeNotification(Exchange::INetworkManager::IWiFiStateChangeNotification * notification) + { + uint32_t errorCode = Register(_wifiStateChangeNotifications, notification); + NMLOG_INFO("IWiFiStateChangeNotification %p, errorCode: %u", notification, errorCode); + return errorCode; + } + + uint32_t NetworkManagerImplementation::UnregisterWiFiStateChangeNotification(Exchange::INetworkManager::IWiFiStateChangeNotification * notification) + { + uint32_t errorCode = Unregister(_wifiStateChangeNotifications, notification); + NMLOG_INFO("IWiFiStateChangeNotification %p, errorCode: %u", notification, errorCode); + return errorCode; + } + + uint32_t NetworkManagerImplementation::RegisterWiFiSignalQualityChangeNotification(Exchange::INetworkManager::IWiFiSignalQualityChangeNotification * notification) + { + uint32_t errorCode = Register(_wifiSignalQualityChangeNotifications, notification); + NMLOG_INFO("IWiFiSignalQualityChangeNotification %p, errorCode: %u", notification, errorCode); + return errorCode; + } + + uint32_t NetworkManagerImplementation::UnregisterWiFiSignalQualityChangeNotification(Exchange::INetworkManager::IWiFiSignalQualityChangeNotification * notification) + { + uint32_t errorCode = Unregister(_wifiSignalQualityChangeNotifications, notification); + NMLOG_INFO("IWiFiSignalQualityChangeNotification %p, errorCode: %u", notification, errorCode); + return errorCode; + } + uint32_t NetworkManagerImplementation::Configure(const string configLine) { LOG_ENTRY_FUNCTION(); @@ -684,7 +783,7 @@ namespace WPEFramework _notificationLock.Lock(); NMLOG_INFO("Posting onInterfaceChange %s - %u", interface.c_str(), (unsigned)state); - for (const auto callback : _notificationCallbacks) { + for (const auto callback : _interfaceStateChangeNotifications) { callback->onInterfaceStateChange(state, interface); } _notificationLock.Unlock(); @@ -709,7 +808,7 @@ namespace WPEFramework // FIXME : This could be the place to define `m_defaultInterface` to incoming `currentActiveinterface`. // m_defaultInterface = currentActiveinterface; - for (const auto callback : _notificationCallbacks) { + for (const auto callback : _activeInterfaceChangeNotifications) { callback->onActiveInterfaceChange(prevActiveInterface, currentActiveinterface); } _notificationLock.Unlock(); @@ -748,7 +847,7 @@ namespace WPEFramework _notificationLock.Lock(); NMLOG_INFO("Posting onIPAddressChange %s - %s", ipaddress.c_str(), interface.c_str()); - for (const auto callback : _notificationCallbacks) { + for (const auto callback : _ipAddressChangeNotifications) { callback->onIPAddressChange(interface, ipversion, ipaddress, status); } _notificationLock.Unlock(); @@ -758,7 +857,7 @@ namespace WPEFramework { _notificationLock.Lock(); NMLOG_INFO("Posting onInternetStatusChange with current state as %u", (unsigned)currState); - for (const auto callback : _notificationCallbacks) { + for (const auto callback : _internetStatusChangeNotifications) { callback->onInternetStatusChange(prevState, currState, interface); } _notificationLock.Unlock(); @@ -800,7 +899,7 @@ namespace WPEFramework NMLOG_INFO("Posting onAvailableSSIDs event with %d SSIDs as,", filterResult.Length()); logSSIDs(LOG_LEVEL_INFO, filterResult); - for (const auto callback : _notificationCallbacks) { + for (const auto callback : _availableSSIDsNotifications) { callback->onAvailableSSIDs(jsonOfFilterScanResults); } _notificationLock.Unlock(); @@ -839,7 +938,7 @@ namespace WPEFramework } /* The below implementation of GetWiFiSignalQuality is a temporary mitigation. Need to be revisited */ - uint32_t NetworkManagerImplementation::GetWiFiSignalQuality(string& ssid /* @out */, string& strength /* @out */, string& noise /* @out */, string& snr /* @out */, WiFiSignalQuality& quality /* @out */) + uint32_t NetworkManagerImplementation::GetWiFiSignalQuality(string& ssid /* @out */, int& strength /* @out */, int& noise /* @out */, int& snr /* @out */, WiFiSignalQuality& quality /* @out */) { std::string key{}, value{}, bssid{}, band{}; char buff[512] = {'\0'}; @@ -875,9 +974,9 @@ namespace WPEFramework NMLOG_WARNING("WiFi is disconnected (BSSID is empty)"); quality = WiFiSignalQuality::WIFI_SIGNAL_DISCONNECTED; ssid = ""; - strength = "0"; - noise = "0"; - snr = "0"; + strength = 0; + noise = 0; + snr = 0; return Core::ERROR_NONE; } @@ -889,38 +988,27 @@ namespace WPEFramework return Core::ERROR_GENERAL; } - std::string linkSpeed; + // Collect raw values during parsing + std::string linkSpeed, rssiValue, noiseValue, avgRssiValue, freqValue; while ((!feof(fp)) && (fgets(buff, sizeof (buff), fp) != NULL)) { std::istringstream mystream(buff); if(std::getline(std::getline(mystream, key, '=') >> std::ws, value)) { if (key == "RSSI") { - strength = value; + rssiValue = value; } else if (key == "NOISE") { - noise = value; + noiseValue = value; } - else if (key == "AVG_RSSI") { // if RSSI is not available - if (strength.empty()) - strength = value; + else if (key == "AVG_RSSI") { + avgRssiValue = value; } else if (key == "FREQUENCY") { - if (!value.empty()) - { - int freq = std::stoi(value); - if (freq >= 2400 && freq < 5000) - band = "2.4GHz"; - else if (freq >= 5000 && freq < 6000) - band = "5GHz"; - else if (freq >= 6000) - band = "6GHz"; - else - band = "not known"; - } + freqValue = value; } - else if (key == "LINKSPEED") + else if (key == "LINKSPEED") { linkSpeed = value; } @@ -928,13 +1016,25 @@ namespace WPEFramework } pclose(fp); - if (noise.empty()) - noise = "0"; - if (strength.empty()) - strength = "0"; + // Helper to safely convert string to int + auto toInt = [](const std::string& str, int defaultVal = 0) -> int { + return str.empty() ? defaultVal : std::stoi(str); + }; + + // Perform conversions - use RSSI if available, otherwise fallback to AVG_RSSI + strength = toInt(!rssiValue.empty() ? rssiValue : avgRssiValue, 0); + noise = toInt(noiseValue, 0); + + // Determine band from frequency + if (!freqValue.empty()) { + int freq = std::stoi(freqValue); + band = (freq >= 2400 && freq < 5000) ? "2.4GHz" : + (freq >= 5000 && freq < 6000) ? "5GHz" : + (freq >= 6000) ? "6GHz" : "not known"; + } - int16_t readRssi = std::stoi(strength); - int16_t readNoise = std::stoi(noise); + int16_t readRssi = strength; + int16_t readNoise = noise; /* Check the RSSI is within range between -10 and -100 dbm*/ if (readRssi >= 0 || readRssi < -100) { @@ -953,36 +1053,36 @@ namespace WPEFramework NMLOG_DEBUG("Received Noise (%d) from wifi driver is not valid; so clamping it", readNoise); if (readNoise >= 0) { readNoise = 0; - noise = std::to_string(0); + noise = 0; } else if (readNoise < DEFAULT_NOISE) { readNoise = DEFAULT_NOISE; - noise = std::to_string(DEFAULT_NOISE); + noise = DEFAULT_NOISE; } } /*Calculate SNR = RSSI - Noise */ int16_t calculatedSnr = readRssi - readNoise; - snr = std::to_string(calculatedSnr); + snr = calculatedSnr; /* mapping rssi value when the SNR value is not proper */ if(!(calculatedSnr > 0 && calculatedSnr <= MAX_SNR_VALUE)) { - NMLOG_WARNING("calculated SNR (%d) is not valid; Lets map with RSSI (%s)", calculatedSnr, strength.c_str()); - calculatedSnr = std::stoi(strength); + NMLOG_WARNING("calculated SNR (%d) is not valid; Lets map with RSSI (%d)", calculatedSnr, strength); + calculatedSnr = strength; /* Take the absolute value */ calculatedSnr = (calculatedSnr < 0) ? -calculatedSnr : calculatedSnr; - snr = std::to_string(calculatedSnr); + snr = calculatedSnr; } - NMLOG_INFO("SSID:%s, BSSID:%s, Band:%s, RSSI:%s, Noise:%s, SNR:%s", ssid.c_str(), bssid.c_str(), band.c_str(), strength.c_str(), noise.c_str(), snr.c_str()); - NMLOG_INFO("bssid=%s,ssid=%s,rssi=%s,phyrate=%s,noise=%s,Band=%s", bssid.c_str(), ssid.c_str(), strength.c_str(), linkSpeed.c_str(), noise.c_str(), band.c_str()); + NMLOG_INFO("SSID:%s, BSSID:%s, Band:%s, RSSI:%d, Noise:%d, SNR:%d", ssid.c_str(), bssid.c_str(), band.c_str(), strength, noise, snr); + NMLOG_INFO("bssid=%s,ssid=%s,rssi=%d,phyrate=%s,noise=%d,Band=%s", bssid.c_str(), ssid.c_str(), strength, linkSpeed.c_str(), noise, band.c_str()); if (calculatedSnr == 0) { quality = WiFiSignalQuality::WIFI_SIGNAL_DISCONNECTED; - strength = "0"; + strength = 0; } else if (calculatedSnr > 0 && calculatedSnr < NM_WIFI_SNR_THRESHOLD_FAIR) { @@ -1062,9 +1162,9 @@ namespace WPEFramework while (true) { std::string ssid{}; - std::string strength{}; - std::string noise{}; - std::string snr{}; + int strength = 0; + int noise = 0; + int snr = 0; Exchange::INetworkManager::WiFiSignalQuality newSignalQuality; GetWiFiSignalQuality(ssid, strength, noise, snr, newSignalQuality); @@ -1108,17 +1208,17 @@ namespace WPEFramework _notificationLock.Lock(); NMLOG_INFO("Posting onWiFiStateChange (%d)", state); - for (const auto callback : _notificationCallbacks) { + for (const auto callback : _wifiStateChangeNotifications) { callback->onWiFiStateChange(state); } _notificationLock.Unlock(); } - void NetworkManagerImplementation::ReportWiFiSignalQualityChange(const string ssid, const string strength, const string noise, const string snr, const Exchange::INetworkManager::WiFiSignalQuality quality) + void NetworkManagerImplementation::ReportWiFiSignalQualityChange(const string ssid, const int strength, const int noise, const int snr, const Exchange::INetworkManager::WiFiSignalQuality quality) { _notificationLock.Lock(); - NMLOG_INFO("Posting onWiFiSignalQualityChange %s", strength.c_str()); - for (const auto callback : _notificationCallbacks) { + NMLOG_INFO("Posting onWiFiSignalQualityChange %d", strength); + for (const auto callback : _wifiSignalQualityChangeNotifications) { callback->onWiFiSignalQualityChange(ssid, strength, noise, snr, quality); } _notificationLock.Unlock(); diff --git a/plugin/NetworkManagerImplementation.h b/plugin/NetworkManagerImplementation.h index 7c798e29..fb6bc256 100644 --- a/plugin/NetworkManagerImplementation.h +++ b/plugin/NetworkManagerImplementation.h @@ -188,8 +188,25 @@ namespace WPEFramework END_INTERFACE_MAP // Handle Notification registration/removal - uint32_t Register(INetworkManager::INotification *notification) override; - uint32_t Unregister(INetworkManager::INotification *notification) override; + template + uint32_t Register(std::list& list, T* notification); + template + uint32_t Unregister(std::list& list, T* notification); + + virtual uint32_t RegisterInterfaceStateChangeNotification(IInterfaceStateChangeNotification* notification) override; + virtual uint32_t UnregisterInterfaceStateChangeNotification(IInterfaceStateChangeNotification* notification) override; + virtual uint32_t RegisterActiveInterfaceChangeNotification(IActiveInterfaceChangeNotification* notification) override; + virtual uint32_t UnregisterActiveInterfaceChangeNotification(IActiveInterfaceChangeNotification* notification) override; + virtual uint32_t RegisterIPAddressChangeNotification(IIPAddressChangeNotification* notification) override; + virtual uint32_t UnregisterIPAddressChangeNotification(IIPAddressChangeNotification* notification) override; + virtual uint32_t RegisterInternetStatusChangeNotification(IInternetStatusChangeNotification* notification) override; + virtual uint32_t UnregisterInternetStatusChangeNotification(IInternetStatusChangeNotification* notification) override; + virtual uint32_t RegisterAvailableSSIDsNotification(IAvailableSSIDsNotification* notification) override; + virtual uint32_t UnregisterAvailableSSIDsNotification(IAvailableSSIDsNotification* notification) override; + virtual uint32_t RegisterWiFiStateChangeNotification(IWiFiStateChangeNotification* notification) override; + virtual uint32_t UnregisterWiFiStateChangeNotification(IWiFiStateChangeNotification* notification) override; + virtual uint32_t RegisterWiFiSignalQualityChangeNotification(IWiFiSignalQualityChangeNotification* notification) override; + virtual uint32_t UnregisterWiFiSignalQualityChangeNotification(IWiFiSignalQualityChangeNotification* notification) override; public: // Below Control APIs will work with RDK or GNome NW. @@ -225,7 +242,7 @@ namespace WPEFramework uint32_t StartWPS(const WiFiWPS& method /* @in */, const string& wps_pin /* @in */) override; uint32_t StopWPS(void) override; uint32_t GetWifiState(WiFiState &state) override; - uint32_t GetWiFiSignalQuality(string& ssid /* @out */, string& strength /* @out */, string& noise /* @out */, string& snr /* @out */, WiFiSignalQuality& quality /* @out */) override; + uint32_t GetWiFiSignalQuality(string& ssid /* @out */, int& strength /* @out */, int& noise /* @out */, int& snr /* @out */, WiFiSignalQuality& quality /* @out */) override; uint32_t SetStunEndpoint (string const endpoint /* @in */, const uint32_t port /* @in */, const uint32_t bindTimeout /* @in */, const uint32_t cacheTimeout /* @in */) override; uint32_t GetStunEndpoint (string &endpoint /* @out */, uint32_t& port /* @out */, uint32_t& bindTimeout /* @out */, uint32_t& cacheTimeout /* @out */) const override; @@ -268,7 +285,7 @@ namespace WPEFramework void ReportInternetStatusChange(const Exchange::INetworkManager::InternetStatus prevState, const Exchange::INetworkManager::InternetStatus currState, const string interface); void ReportAvailableSSIDs(const JsonArray &arrayofWiFiScanResults); void ReportWiFiStateChange(const Exchange::INetworkManager::WiFiState state); - void ReportWiFiSignalQualityChange(const string ssid, const string strength, const string noise, const string snr, const Exchange::INetworkManager::WiFiSignalQuality quality); + void ReportWiFiSignalQualityChange(const string ssid, const int strength, const int noise, const int snr, const Exchange::INetworkManager::WiFiSignalQuality quality); private: void platform_init(void); @@ -284,7 +301,13 @@ namespace WPEFramework void processMonitor(uint16_t interval); private: - std::list _notificationCallbacks; + std::list _interfaceStateChangeNotifications; + std::list _activeInterfaceChangeNotifications; + std::list _ipAddressChangeNotifications; + std::list _internetStatusChangeNotifications; + std::list _availableSSIDsNotifications; + std::list _wifiStateChangeNotifications; + std::list _wifiSignalQualityChangeNotifications; Core::CriticalSection _notificationLock; string m_publicIP; stun::client stunClient; diff --git a/plugin/NetworkManagerJsonRpc.cpp b/plugin/NetworkManagerJsonRpc.cpp index ff1dd5df..b63a322c 100644 --- a/plugin/NetworkManagerJsonRpc.cpp +++ b/plugin/NetworkManagerJsonRpc.cpp @@ -915,9 +915,9 @@ namespace WPEFramework LOG_INPARAM(); uint32_t rc = Core::ERROR_GENERAL; string ssid{}; - string strength{}; - string noise{}; - string snr{}; + int strength = 0; + int noise = 0; + int snr = 0; Exchange::INetworkManager::WiFiSignalQuality quality{}; if (_networkManager) @@ -1044,7 +1044,7 @@ namespace WPEFramework Notify(_T("onWiFiStateChange"), parameters); } - void NetworkManager::onWiFiSignalQualityChange(const string ssid, const string strength, const string noise, const string snr, const Exchange::INetworkManager::WiFiSignalQuality quality) + void NetworkManager::onWiFiSignalQualityChange(const string ssid, const int strength, const int noise, const int snr, const Exchange::INetworkManager::WiFiSignalQuality quality) { Core::JSON::EnumType iquality(quality); JsonObject parameters; diff --git a/plugin/gnome/NetworkManagerGnomeEvents.cpp b/plugin/gnome/NetworkManagerGnomeEvents.cpp index dea7c5ef..15dfef34 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; + float 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..294cd765 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) + double nmUtils::wifiFrequencyFromAp(guint32 apFreq) { - std::string freq; + double freq; if (apFreq >= 2400 && apFreq < 5000) - freq = "2.4"; + freq = 2.4f; else if (apFreq >= 5000 && apFreq < 6000) - freq = "5"; + freq = 5; else if (apFreq >= 6000) - freq = "6"; + freq = 6; else - freq = "Not available"; + freq = 0; return freq; } diff --git a/plugin/gnome/NetworkManagerGnomeUtils.h b/plugin/gnome/NetworkManagerGnomeUtils.h index aab7daf0..b9632d2e 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 double 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..0f903285 100644 --- a/plugin/gnome/NetworkManagerGnomeWIFI.cpp +++ b/plugin/gnome/NetworkManagerGnomeWIFI.cpp @@ -261,23 +261,22 @@ namespace WPEFramework } wifiInfo.bssid = (hwaddr != nullptr) ? hwaddr : "-----"; - std::string freqStr = std::to_string((double)freq/1000); - wifiInfo.frequency = freqStr.substr(0, 5); - - wifiInfo.rate = std::to_string(bitrate); - 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.frequency = ((double)freq/1000); + + wifiInfo.rate = bitrate; + wifiInfo.noise = noise; + NMLOG_DEBUG("bitrate : %d kbit/s", wifiInfo.rate); + //TODO signal strength to dBm + wifiInfo.strength = nmUtils::convertPercentageToSignalStrength(strength); wifiInfo.security = static_cast(nmUtils::wifiSecurityModeFromAp(wifiInfo.ssid, flags, wpaFlags, rsnFlags, doPrint)); if(doPrint) { - NMLOG_INFO("ssid: %s, frequency: %s, sterngth: %s, security: %u", wifiInfo.ssid.c_str(), wifiInfo.frequency.c_str(), wifiInfo.strength.c_str(), wifiInfo.security); + NMLOG_INFO("ssid: %s, frequency: %f, strength: %d, security: %u", wifiInfo.ssid.c_str(), wifiInfo.frequency, wifiInfo.strength, wifiInfo.security); NMLOG_DEBUG("Mode: %s", mode == NM_802_11_MODE_ADHOC ? "Ad-Hoc": mode == NM_802_11_MODE_INFRA ? "Infrastructure": "Unknown"); } else { - NMLOG_DEBUG("ssid: %s, frequency: %s, sterngth: %s, security: %u", wifiInfo.ssid.c_str(), wifiInfo.frequency.c_str(), wifiInfo.strength.c_str(), wifiInfo.security); + NMLOG_DEBUG("ssid: %s, frequency: %f, strength: %d, security: %u", wifiInfo.ssid.c_str(), wifiInfo.frequency, wifiInfo.strength, wifiInfo.security); NMLOG_DEBUG("Mode: %s", mode == NM_802_11_MODE_ADHOC ? "Ad-Hoc": mode == NM_802_11_MODE_INFRA ? "Infrastructure": "Unknown"); } } diff --git a/plugin/gnome/gdbus/NetworkManagerGdbusClient.cpp b/plugin/gnome/gdbus/NetworkManagerGdbusClient.cpp index 9f71abd4..6954164c 100644 --- a/plugin/gnome/gdbus/NetworkManagerGdbusClient.cpp +++ b/plugin/gnome/gdbus/NetworkManagerGdbusClient.cpp @@ -2382,7 +2382,7 @@ namespace WPEFramework return ret; } - bool NetworkManagerClient::getWiFiSignalQuality(string& ssid, string& signalStrength, Exchange::INetworkManager::WiFiSignalQuality& quality) + bool NetworkManagerClient::getWiFiSignalQuality(string& ssid, int& signalStrength, Exchange::INetworkManager::WiFiSignalQuality& quality) { Exchange::INetworkManager::WiFiSSIDInfo ssidInfo; float rssi = 0.0f; @@ -2398,10 +2398,10 @@ namespace WPEFramework else { ssid = ssidInfo.ssid; - if (!ssidInfo.strength.empty()) - rssi = std::stof(ssidInfo.strength.c_str()); - if (!ssidInfo.noise.empty()) - noise = std::stof(ssidInfo.noise.c_str()); + if (ssidInfo.strength) + rssi = ssidInfo.strength; + if (ssidInfo.noise) + noise = ssidInfo.noise; floatSignalStrength = (rssi - noise); if (floatSignalStrength < 0) floatSignalStrength = 0.0; @@ -2412,7 +2412,7 @@ namespace WPEFramework if (signalStrengthOut == 0) { quality = Exchange::INetworkManager::WiFiSignalQuality::WIFI_SIGNAL_DISCONNECTED; - signalStrength = "0"; + signalStrength = 0; } else if (signalStrengthOut > 0 && signalStrengthOut < NM_WIFI_SNR_THRESHOLD_FAIR) { @@ -2431,9 +2431,9 @@ namespace WPEFramework quality = Exchange::INetworkManager::WiFiSignalQuality::WIFI_SIGNAL_EXCELLENT; } - signalStrength = std::to_string(signalStrengthOut); + signalStrength = signalStrengthOut; - NMLOG_INFO("strength success %s dBm", signalStrength.c_str()); + NMLOG_INFO("strength success %d dBm", signalStrength); } return true; diff --git a/plugin/gnome/gdbus/NetworkManagerGdbusClient.h b/plugin/gnome/gdbus/NetworkManagerGdbusClient.h index 25f94ace..512ab637 100644 --- a/plugin/gnome/gdbus/NetworkManagerGdbusClient.h +++ b/plugin/gnome/gdbus/NetworkManagerGdbusClient.h @@ -69,7 +69,7 @@ namespace WPEFramework bool wifiDisconnect(); bool activateKnownConnection(const std::string& interface, const std::string& knownConnectionID = ""); bool getWifiState(Exchange::INetworkManager::WiFiState &state); - bool getWiFiSignalQuality(std::string& ssid, std::string& signalStrength, Exchange::INetworkManager::WiFiSignalQuality& quality); + bool getWiFiSignalQuality(std::string& ssid, int& signalStrength, Exchange::INetworkManager::WiFiSignalQuality& quality); bool startWPS(); bool stopWPS(); bool setHostname(const std::string& hostname); diff --git a/plugin/gnome/gdbus/NetworkManagerGdbusUtils.cpp b/plugin/gnome/gdbus/NetworkManagerGdbusUtils.cpp index c487d6c5..ad1659a9 100644 --- a/plugin/gnome/gdbus/NetworkManagerGdbusUtils.cpp +++ b/plugin/gnome/gdbus/NetworkManagerGdbusUtils.cpp @@ -393,7 +393,7 @@ namespace WPEFramework return false; } g_variant_get(result, "y", &strength); - wifiInfo.strength = GnomeUtils::convertPercentageToSignalStrengtStr((int)strength); + wifiInfo.strength = GnomeUtils::convertPercentageToSignalStrength((int)strength); g_variant_unref(result); GnomeUtils::getCachedPropertyU(proxy, "Flags", &flags); @@ -403,14 +403,13 @@ namespace WPEFramework GnomeUtils::getCachedPropertyU(proxy, "Frequency", &freq); GnomeUtils::getCachedPropertyU(proxy, "MaxBitrate", &bitrate); - std::string freqStr = std::to_string((double)freq/1000); - wifiInfo.frequency = freqStr.substr(0, 5); - wifiInfo.rate = std::to_string(bitrate); + wifiInfo.frequency = ((double)freq/1000); + wifiInfo.rate = bitrate; wifiInfo.security = static_cast(wifiSecurityModeFromApFlags(wifiInfo.ssid, flags, wpaFlags, rsnFlags)); if(noise <= 0 && noise >= DEFAULT_NOISE) - wifiInfo.noise = std::to_string(noise); + wifiInfo.noise = noise; else - wifiInfo.noise = std::to_string(0); + wifiInfo.noise = 0; // NMLOG_DEBUG("SSID: %s", wifiInfo.m_ssid.c_str()); // NMLOG_DEBUG("bssid %s", wifiInfo.m_bssid.c_str()); @@ -436,10 +435,10 @@ namespace WPEFramework } // Function to convert percentage (0-100) to dBm string - const char* GnomeUtils::convertPercentageToSignalStrengtStr(int percentage) { + int GnomeUtils::convertPercentageToSignalStrength(int percentage) { if (percentage <= 0 || percentage > 100) { - return ""; + return 0; } /* @@ -455,9 +454,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; } bool GnomeUtils::getWifiConnectionPaths(DbusMgr& m_dbus, const char* devicePath, std::list& paths) diff --git a/plugin/gnome/gdbus/NetworkManagerGdbusUtils.h b/plugin/gnome/gdbus/NetworkManagerGdbusUtils.h index f02373e5..e79c6429 100644 --- a/plugin/gnome/gdbus/NetworkManagerGdbusUtils.h +++ b/plugin/gnome/gdbus/NetworkManagerGdbusUtils.h @@ -86,7 +86,7 @@ namespace WPEFramework static void addGvariantToBuilder(GVariant *variant, GVariantBuilder *builder, gboolean excludeRouteMetric); static bool convertSsidInfoToJsonObject(Exchange::INetworkManager::WiFiSSIDInfo& wifiInfo, JsonObject& ssidObj); - static const char* convertPercentageToSignalStrengtStr(int percentage); + static int convertPercentageToSignalStrength(int percentage); static uint8_t wifiSecurityModeFromApFlags(const std::string& ssid, guint32 flags, guint32 wpaFlags, guint32 rsnFlags); static const char* getWifiIfname(); static const char* getEthIfname(); diff --git a/plugin/rdk/NetworkManagerRDKProxy.cpp b/plugin/rdk/NetworkManagerRDKProxy.cpp index 608d22d7..f2a1e959 100644 --- a/plugin/rdk/NetworkManagerRDKProxy.cpp +++ b/plugin/rdk/NetworkManagerRDKProxy.cpp @@ -266,8 +266,12 @@ namespace WPEFramework { JsonObject object = ssids[i].Object(); security = object["security"].Number(); - object["security"] = mapToNewSecurityMode(security); - ssidsUpdated.Add(object); + JsonObject newObject; + newObject["ssid"] = object["ssid"]; + newObject["security"] = mapToNewSecurityMode(security); + newObject["strength"] = object["signalStrength"]; + newObject["frequency"] = object["frequency"]; + ssidsUpdated.Add(newObject); } ::_instance->ReportAvailableSSIDs(ssidsUpdated); break; @@ -1173,24 +1177,23 @@ const string CIDR_PREFIXES[CIDR_NETMASK_IP_LEN+1] = { ssidInfo.ssid = string(connectedSsid.ssid); ssidInfo.bssid = string(connectedSsid.bssid); ssidInfo.security = (WIFISecurityMode)mapToNewSecurityMode(connectedSsid.securityMode); - ssidInfo.strength = to_string((int)connectedSsid.signalStrength); - ssidInfo.rate = to_string((int)connectedSsid.rate); + ssidInfo.strength = (int)connectedSsid.signalStrength; + ssidInfo.rate = (int)connectedSsid.rate; if(((int) connectedSsid.noise >= 0) || ((int) connectedSsid.noise < DEFAULT_NOISE)) { NMLOG_DEBUG ("Received Noise (%f) from wifi driver is not valid; so clamping it", connectedSsid.noise); if (connectedSsid.noise >= 0) { - ssidInfo.noise = std::to_string(0); + ssidInfo.noise = 0; } else if (connectedSsid.noise < DEFAULT_NOISE) { - ssidInfo.noise = std::to_string(DEFAULT_NOISE); + ssidInfo.noise = DEFAULT_NOISE; } } else - ssidInfo.noise = std::to_string((int)connectedSsid.noise); + ssidInfo.noise = (int)connectedSsid.noise; - std::string freqStr = to_string((double)connectedSsid.frequency/1000); - ssidInfo.frequency = freqStr.substr(0, 5); + ssidInfo.frequency = ((double)connectedSsid.frequency/1000); NMLOG_INFO ("GetConnectedSSID Success"); rc = Core::ERROR_NONE; diff --git a/tests/l2Test/legacy/l2_test_LegacyPlugin_WiFiManagerAPIs.cpp b/tests/l2Test/legacy/l2_test_LegacyPlugin_WiFiManagerAPIs.cpp index aa90be47..ddb81495 100644 --- a/tests/l2Test/legacy/l2_test_LegacyPlugin_WiFiManagerAPIs.cpp +++ b/tests/l2Test/legacy/l2_test_LegacyPlugin_WiFiManagerAPIs.cpp @@ -188,11 +188,11 @@ TEST_F(WiFiManagerTest, getConnectedSSID) { Exchange::INetworkManager::WiFiSSIDInfo ssidInfo{}; ssidInfo.ssid = "my-ssid"; ssidInfo.bssid = "00:11:22:33:44:55"; - ssidInfo.rate = "100"; - ssidInfo.noise = "-50"; + ssidInfo.rate = 100; + ssidInfo.noise = -50; ssidInfo.security = Exchange::INetworkManager::WIFISecurityMode::WIFI_SECURITY_WPA_PSK; - ssidInfo.strength = "50"; - ssidInfo.frequency = "2.4"; + ssidInfo.strength = 50; + ssidInfo.frequency = 2.4; EXPECT_CALL(*mockNetworkManager, GetConnectedSSID(::testing::_)) .WillOnce(::testing::DoAll( ::testing::SetArgReferee<0>(ssidInfo), @@ -221,11 +221,11 @@ TEST_F(WiFiManagerTest, getConnectedSSIDSAE) { Exchange::INetworkManager::WiFiSSIDInfo ssidInfo{}; ssidInfo.ssid = "my-ssid"; ssidInfo.bssid = "00:11:22:33:44:55"; - ssidInfo.rate = "100"; - ssidInfo.noise = "-50"; + ssidInfo.rate = 100; + ssidInfo.noise = -50; ssidInfo.security = Exchange::INetworkManager::WIFISecurityMode::WIFI_SECURITY_SAE; - ssidInfo.strength = "50"; - ssidInfo.frequency = "2.4"; + ssidInfo.strength = 50; + ssidInfo.frequency = 2.4; EXPECT_CALL(*mockNetworkManager, GetConnectedSSID(::testing::_)) .WillOnce(::testing::DoAll( ::testing::SetArgReferee<0>(ssidInfo), @@ -254,11 +254,11 @@ TEST_F(WiFiManagerTest, getConnectedSSIDEAP) { Exchange::INetworkManager::WiFiSSIDInfo ssidInfo{}; ssidInfo.ssid = "my-ssid"; ssidInfo.bssid = "00:11:22:33:44:55"; - ssidInfo.rate = "100"; - ssidInfo.noise = "-50"; + ssidInfo.rate = 100; + ssidInfo.noise = -50; ssidInfo.security = Exchange::INetworkManager::WIFISecurityMode::WIFI_SECURITY_EAP; - ssidInfo.strength = "50"; - ssidInfo.frequency = "2.4"; + ssidInfo.strength = 50; + ssidInfo.frequency = 2.4; EXPECT_CALL(*mockNetworkManager, GetConnectedSSID(::testing::_)) .WillOnce(::testing::DoAll( ::testing::SetArgReferee<0>(ssidInfo), diff --git a/tests/l2Test/libnm/l2_test_libnmproxyWifi.cpp b/tests/l2Test/libnm/l2_test_libnmproxyWifi.cpp index 9dc75cb1..278dcbcb 100644 --- a/tests/l2Test/libnm/l2_test_libnmproxyWifi.cpp +++ b/tests/l2Test/libnm/l2_test_libnmproxyWifi.cpp @@ -386,7 +386,7 @@ TEST_F(NetworkManagerWifiTest, GetConnectedSSID_ApNotConnected) .WillOnce(::testing::Return(NM_DEVICE_STATE_DISCONNECTED)); EXPECT_EQ(Core::ERROR_NONE, handler.Invoke(connection, _T("GetConnectedSSID"), _T(""), response)); - EXPECT_EQ(response, _T("{\"ssid\":\"\",\"bssid\":\"\",\"security\":0,\"strength\":\"\",\"frequency\":\"\",\"rate\":\"\",\"noise\":\"\",\"success\":true}")); + EXPECT_EQ(response, _T("{\"ssid\":\"\",\"bssid\":\"\",\"security\":0,\"strength\":0,\"frequency\":0,\"rate\":0,\"noise\":0,\"success\":true}")); g_object_unref(deviceDummy); g_ptr_array_free(fakeDevices, TRUE); @@ -467,7 +467,7 @@ TEST_F(NetworkManagerWifiTest, GetConnectedSSID_Connected_psk) EXPECT_EQ(Core::ERROR_NONE, handler.Invoke(connection, _T("GetConnectedSSID"), _T(""), response)); // Update expected response to match the mock data - EXPECT_EQ(response, _T("{\"ssid\":\"TestWiFiNetwork\",\"bssid\":\"AA:BB:CC:DD:EE:FF\",\"security\":2,\"strength\":\"-39\",\"frequency\":\"2.462\",\"rate\":\"54000\",\"noise\":\"0\",\"success\":true}")); + EXPECT_EQ(response, _T("{\"ssid\":\"TestWiFiNetwork\",\"bssid\":\"AA:BB:CC:DD:EE:FF\",\"security\":2,\"strength\":-39,\"frequency\":2.462,\"rate\":54000,\"noise\":0,\"success\":true}")); // Free the GBytes object g_bytes_unref(fake_ssid); @@ -528,7 +528,7 @@ TEST_F(NetworkManagerWifiTest, GetConnectedSSID_Connected_EAP) EXPECT_EQ(Core::ERROR_NONE, handler.Invoke(connection, _T("GetConnectedSSID"), _T(""), response)); // Update expected response to match the mock data - EXPECT_EQ(response, _T("{\"ssid\":\"TestWiFiNetwork\",\"bssid\":\"AA:BB:CC:DD:EE:FF\",\"security\":3,\"strength\":\"-39\",\"frequency\":\"2.462\",\"rate\":\"54000\",\"noise\":\"0\",\"success\":true}")); + EXPECT_EQ(response, _T("{\"ssid\":\"TestWiFiNetwork\",\"bssid\":\"AA:BB:CC:DD:EE:FF\",\"security\":3,\"strength\":-39,\"frequency\":2.462,\"rate\":54000,\"noise\":0,\"success\":true}")); // Free the GBytes object g_bytes_unref(fake_ssid); @@ -589,7 +589,7 @@ TEST_F(NetworkManagerWifiTest, GetConnectedSSID_Connected_ssidNull) EXPECT_EQ(Core::ERROR_NONE, handler.Invoke(connection, _T("GetConnectedSSID"), _T(""), response)); // Update expected response to match the mock data - EXPECT_EQ(response, _T("{\"ssid\":\"\",\"bssid\":\"AA:BB:CC:DD:EE:FF\",\"security\":1,\"strength\":\"-78\",\"frequency\":\"2.462\",\"rate\":\"54000\",\"noise\":\"0\",\"success\":true}")); + EXPECT_EQ(response, _T("{\"ssid\":\"\",\"bssid\":\"AA:BB:CC:DD:EE:FF\",\"security\":1,\"strength\":-78,\"frequency\":2.462,\"rate\":54000,\"noise\":0,\"success\":true}")); // Free the GBytes object g_bytes_unref(fake_ssid); diff --git a/tests/l2Test/rdk/l2_test_rdkproxy.cpp b/tests/l2Test/rdk/l2_test_rdkproxy.cpp index d1b97ca9..5bcdc3d5 100644 --- a/tests/l2Test/rdk/l2_test_rdkproxy.cpp +++ b/tests/l2Test/rdk/l2_test_rdkproxy.cpp @@ -921,7 +921,7 @@ TEST_F(NetworkManagerTest, GetConnectedSSID_Success) )); EXPECT_EQ(Core::ERROR_NONE, handler.Invoke(connection, _T("GetConnectedSSID"), _T("{}"), response)); - EXPECT_EQ(response, _T("{\"ssid\":\"TestNetwork\",\"bssid\":\"AB:CD:EF:GH:IJ:KL\",\"security\":1,\"strength\":\"-30\",\"frequency\":\"2.412\",\"rate\":\"0\",\"noise\":\"0\",\"success\":true}")); + EXPECT_EQ(response, _T("{\"ssid\":\"TestNetwork\",\"bssid\":\"AB:CD:EF:GH:IJ:KL\",\"security\":1,\"strength\":-30,\"frequency\":2.412,\"rate\":0,\"noise\":0,\"success\":true}")); } TEST_F(NetworkManagerTest, GetConnectedSSID_Success_noise_9999) @@ -946,7 +946,7 @@ TEST_F(NetworkManagerTest, GetConnectedSSID_Success_noise_9999) )); EXPECT_EQ(Core::ERROR_NONE, handler.Invoke(connection, _T("GetConnectedSSID"), _T("{}"), response)); - EXPECT_EQ(response, _T("{\"ssid\":\"TestNetwork\",\"bssid\":\"AB:CD:EF:GH:IJ:KL\",\"security\":1,\"strength\":\"-30\",\"frequency\":\"2.412\",\"rate\":\"0\",\"noise\":\"0\",\"success\":true}")); + EXPECT_EQ(response, _T("{\"ssid\":\"TestNetwork\",\"bssid\":\"AB:CD:EF:GH:IJ:KL\",\"security\":1,\"strength\":-30,\"frequency\":2.412,\"rate\":0,\"noise\":0,\"success\":true}")); } TEST_F(NetworkManagerTest, GetConnectedSSID_Success_noise_100) @@ -971,7 +971,7 @@ TEST_F(NetworkManagerTest, GetConnectedSSID_Success_noise_100) )); EXPECT_EQ(Core::ERROR_NONE, handler.Invoke(connection, _T("GetConnectedSSID"), _T("{}"), response)); - EXPECT_EQ(response, _T("{\"ssid\":\"TestNetwork\",\"bssid\":\"AB:CD:EF:GH:IJ:KL\",\"security\":1,\"strength\":\"-30\",\"frequency\":\"2.412\",\"rate\":\"0\",\"noise\":\"-96\",\"success\":true}")); + EXPECT_EQ(response, _T("{\"ssid\":\"TestNetwork\",\"bssid\":\"AB:CD:EF:GH:IJ:KL\",\"security\":1,\"strength\":-30,\"frequency\":2.412,\"rate\":0,\"noise\":-96,\"success\":true}")); } TEST_F(NetworkManagerTest, GetConnectedSSID_Success_noise_50) @@ -996,7 +996,7 @@ TEST_F(NetworkManagerTest, GetConnectedSSID_Success_noise_50) )); EXPECT_EQ(Core::ERROR_NONE, handler.Invoke(connection, _T("GetConnectedSSID"), _T("{}"), response)); - EXPECT_EQ(response, _T("{\"ssid\":\"TestNetwork\",\"bssid\":\"AB:CD:EF:GH:IJ:KL\",\"security\":1,\"strength\":\"-30\",\"frequency\":\"2.412\",\"rate\":\"0\",\"noise\":\"-50\",\"success\":true}")); + EXPECT_EQ(response, _T("{\"ssid\":\"TestNetwork\",\"bssid\":\"AB:CD:EF:GH:IJ:KL\",\"security\":1,\"strength\":-30,\"frequency\":2.412,\"rate\":0,\"noise\":-50,\"success\":true}")); } TEST_F(NetworkManagerTest, GetConnectedSSID_Failed) @@ -1331,7 +1331,7 @@ TEST_F(NetworkManagerTest, GetWiFiSignalQualityDisconnected2) })); EXPECT_EQ(Core::ERROR_NONE, handler.Invoke(connection, _T("GetWiFiSignalQuality"), _T("{}"), response)); - EXPECT_EQ(response, _T("{\"ssid\":\"\",\"quality\":\"Disconnected\",\"snr\":\"0\",\"strength\":\"0\",\"noise\":\"0\",\"success\":true}")); + EXPECT_EQ(response, _T("{\"ssid\":\"\",\"quality\":\"Disconnected\",\"snr\":0,\"strength\":0,\"noise\":0,\"success\":true}")); } TEST_F(NetworkManagerTest, GetWiFiSignalQualityConnected) @@ -1369,7 +1369,7 @@ TEST_F(NetworkManagerTest, GetWiFiSignalQualityConnected) })); EXPECT_EQ(Core::ERROR_NONE, handler.Invoke(connection, _T("GetWiFiSignalQuality"), _T("{}"), response)); - EXPECT_EQ(response, _T("{\"ssid\":\"dummySSID\",\"quality\":\"Excellent\",\"snr\":\"66\",\"strength\":\"-30\",\"noise\":\"-96\",\"success\":true}")); + EXPECT_EQ(response, _T("{\"ssid\":\"dummySSID\",\"quality\":\"Excellent\",\"snr\":66,\"strength\":-30,\"noise\":-96,\"success\":true}")); } TEST_F(NetworkManagerTest, GetWiFiSignalQualityConnectedGood) @@ -1407,7 +1407,7 @@ TEST_F(NetworkManagerTest, GetWiFiSignalQualityConnectedGood) })); EXPECT_EQ(Core::ERROR_NONE, handler.Invoke(connection, _T("GetWiFiSignalQuality"), _T("{}"), response)); - EXPECT_EQ(response, _T("{\"ssid\":\"dummySSID\",\"quality\":\"Weak\",\"snr\":\"6\",\"strength\":\"-90\",\"noise\":\"-96\",\"success\":true}")); + EXPECT_EQ(response, _T("{\"ssid\":\"dummySSID\",\"quality\":\"Weak\",\"snr\":6,\"strength\":-90,\"noise\":-96,\"success\":true}")); } TEST_F(NetworkManagerTest, GetWiFiSignalQualityConnectedLowBad) @@ -1445,7 +1445,7 @@ TEST_F(NetworkManagerTest, GetWiFiSignalQualityConnectedLowBad) })); EXPECT_EQ(Core::ERROR_NONE, handler.Invoke(connection, _T("GetWiFiSignalQuality"), _T("{}"), response)); - EXPECT_EQ(response, _T("{\"ssid\":\"dummySSID\",\"quality\":\"Excellent\",\"snr\":\"120\",\"strength\":\"-120\",\"noise\":\"0\",\"success\":true}")); + EXPECT_EQ(response, _T("{\"ssid\":\"dummySSID\",\"quality\":\"Excellent\",\"snr\":120,\"strength\":-120,\"noise\":0,\"success\":true}")); } TEST_F(NetworkManagerTest, Trace_Success_ipv4) diff --git a/tests/mocks/INetworkManagerMock.h b/tests/mocks/INetworkManagerMock.h index b89926af..56e7db9b 100644 --- a/tests/mocks/INetworkManagerMock.h +++ b/tests/mocks/INetworkManagerMock.h @@ -47,14 +47,26 @@ class MockINetworkManager : public WPEFramework::Exchange::INetworkManager { MOCK_METHOD(uint32_t, StartWPS, (const WiFiWPS& method, const string& pin), (override)); MOCK_METHOD(uint32_t, StopWPS, (), (override)); MOCK_METHOD(uint32_t, GetWifiState, (WPEFramework::Exchange::INetworkManager::WiFiState& state), (override)); - MOCK_METHOD(uint32_t, GetWiFiSignalQuality, (string& ssid, string& strength, string& noise, string& snr, WPEFramework::Exchange::INetworkManager::WiFiSignalQuality& quality), (override)); + MOCK_METHOD(uint32_t, GetWiFiSignalQuality, (string& ssid, int& strength, int& noise, int& snr, WPEFramework::Exchange::INetworkManager::WiFiSignalQuality& quality), (override)); MOCK_METHOD(uint32_t, GetSupportedSecurityModes, (ISecurityModeIterator*& modes), (const)); MOCK_METHOD(uint32_t, SetLogLevel, (const Logging& level), (override)); MOCK_METHOD(uint32_t, SetHostname, (const string& hostname), (override)); MOCK_METHOD(uint32_t, GetLogLevel, (Logging& level), (override)); MOCK_METHOD(uint32_t, Configure, (const string configLine), (override)); - MOCK_METHOD(uint32_t, Register, (WPEFramework::Exchange::INetworkManager::INotification* notification), (override)); - MOCK_METHOD(uint32_t, Unregister, (WPEFramework::Exchange::INetworkManager::INotification* notification), (override)); + MOCK_METHOD(uint32_t, RegisterInterfaceStateChangeNotification, (WPEFramework::Exchange::INetworkManager::IInterfaceStateChangeNotification* notification), (override)); + MOCK_METHOD(uint32_t, UnregisterInterfaceStateChangeNotification, (WPEFramework::Exchange::INetworkManager::IInterfaceStateChangeNotification* notification), (override)); + MOCK_METHOD(uint32_t, RegisterActiveInterfaceChangeNotification, (WPEFramework::Exchange::INetworkManager::IActiveInterfaceChangeNotification* notification), (override)); + MOCK_METHOD(uint32_t, UnregisterActiveInterfaceChangeNotification, (WPEFramework::Exchange::INetworkManager::IActiveInterfaceChangeNotification* notification), (override)); + MOCK_METHOD(uint32_t, RegisterIPAddressChangeNotification, (WPEFramework::Exchange::INetworkManager::IIPAddressChangeNotification* notification), (override)); + MOCK_METHOD(uint32_t, UnregisterIPAddressChangeNotification, (WPEFramework::Exchange::INetworkManager::IIPAddressChangeNotification* notification), (override)); + MOCK_METHOD(uint32_t, RegisterInternetStatusChangeNotification, (WPEFramework::Exchange::INetworkManager::IInternetStatusChangeNotification* notification), (override)); + MOCK_METHOD(uint32_t, UnregisterInternetStatusChangeNotification, (WPEFramework::Exchange::INetworkManager::IInternetStatusChangeNotification* notification), (override)); + MOCK_METHOD(uint32_t, RegisterAvailableSSIDsNotification, (WPEFramework::Exchange::INetworkManager::IAvailableSSIDsNotification* notification), (override)); + MOCK_METHOD(uint32_t, UnregisterAvailableSSIDsNotification, (WPEFramework::Exchange::INetworkManager::IAvailableSSIDsNotification* notification), (override)); + MOCK_METHOD(uint32_t, RegisterWiFiStateChangeNotification, (WPEFramework::Exchange::INetworkManager::IWiFiStateChangeNotification* notification), (override)); + MOCK_METHOD(uint32_t, UnregisterWiFiStateChangeNotification, (WPEFramework::Exchange::INetworkManager::IWiFiStateChangeNotification* notification), (override)); + MOCK_METHOD(uint32_t, RegisterWiFiSignalQualityChangeNotification, (WPEFramework::Exchange::INetworkManager::IWiFiSignalQualityChangeNotification* notification), (override)); + MOCK_METHOD(uint32_t, UnregisterWiFiSignalQualityChangeNotification, (WPEFramework::Exchange::INetworkManager::IWiFiSignalQualityChangeNotification* notification), (override)); MOCK_METHOD(uint32_t, AddRef, (), (const, override)); MOCK_METHOD(uint32_t, Release, (), (const, override)); MOCK_METHOD(void*, QueryInterface, (uint32_t), (override)); diff --git a/tools/plugincli/NetworkManagerGdbusTest.cpp b/tools/plugincli/NetworkManagerGdbusTest.cpp index 25dd50cb..b44ee872 100644 --- a/tools/plugincli/NetworkManagerGdbusTest.cpp +++ b/tools/plugincli/NetworkManagerGdbusTest.cpp @@ -63,7 +63,7 @@ namespace WPEFramework { NMLOG_INFO("calling 'ReportWiFiStateChange' cb"); } - void NetworkManagerImplementation::ReportWiFiSignalQualityChange(const string ssid, const string strength, const string noise, const string snr, const Exchange::INetworkManager::WiFiSignalQuality quality) + void NetworkManagerImplementation::ReportWiFiSignalQualityChange(const string ssid, const int strength, const int noise, const int snr, const Exchange::INetworkManager::WiFiSignalQuality quality) { NMLOG_INFO("calling 'ReportWiFiSignalQualityChange' cb"); } @@ -272,10 +272,11 @@ int main() } case 10: { - std::string ssid, signalStrength; + std::string ssid; + int signalStrength; Exchange::INetworkManager::WiFiSignalQuality quality; if (nmClient->getWiFiSignalQuality(ssid, signalStrength, quality)) { - NMLOG_INFO("SSID: %s, Signal Strength: %s, Quality: %d", ssid.c_str(), signalStrength.c_str(), quality); + NMLOG_INFO("SSID: %s, Signal Strength: %d, Quality: %d", ssid.c_str(), signalStrength, quality); } else { NMLOG_ERROR("Failed to get WiFi signal strength"); } diff --git a/tools/plugincli/NetworkManagerLibnmTest.cpp b/tools/plugincli/NetworkManagerLibnmTest.cpp index 33472ce5..650a1ba1 100644 --- a/tools/plugincli/NetworkManagerLibnmTest.cpp +++ b/tools/plugincli/NetworkManagerLibnmTest.cpp @@ -62,7 +62,7 @@ namespace WPEFramework { NMLOG_INFO("calling 'ReportWiFiStateChange' cb"); } - void NetworkManagerImplementation::ReportWiFiSignalQualityChange(const string ssid, const string strength, const string noise, const string snr, const Exchange::INetworkManager::WiFiSignalQuality quality) + void NetworkManagerImplementation::ReportWiFiSignalQualityChange(const string ssid, const int strength, const int noise, const int snr, const Exchange::INetworkManager::WiFiSignalQuality quality) { NMLOG_INFO("calling 'ReportWiFiSignalQualityChange' cb"); }