diff --git a/CHANGELOG.md b/CHANGELOG.md index c7b39ff..a0071cc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,9 @@ All notable changes to this RDK Service will be documented in this file. * Changes in CHANGELOG should be updated when commits are added to the main or release branches. There should be one CHANGELOG entry per JIRA Ticket. This is not enforced on sprint branches since there could be multiple changes for the same JIRA ticket during development. +## [0.4.1] - 2024-10-08 +- Added Fitler Frequency logic in StartWifiScan + ## [0.4.0] - 2024-10-04 ### Added - Added RDKLogger Integration diff --git a/CMakeLists.txt b/CMakeLists.txt index 7c39039..2c52435 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,7 +6,7 @@ find_package(WPEFramework) list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake") set(VERSION_MAJOR 0) set(VERSION_MINOR 4) -set(VERSION_PATCH 0) +set(VERSION_PATCH 1) add_compile_definitions(NETWORKMANAGER_MAJOR_VERSION=${VERSION_MAJOR}) add_compile_definitions(NETWORKMANAGER_MINOR_VERSION=${VERSION_MINOR}) diff --git a/NetworkManagerGnomeEvents.cpp b/NetworkManagerGnomeEvents.cpp index b7f1706..49cb632 100644 --- a/NetworkManagerGnomeEvents.cpp +++ b/NetworkManagerGnomeEvents.cpp @@ -597,7 +597,7 @@ namespace WPEFramework if(_nmEventInstance->doScanNotify) { _nmEventInstance->doScanNotify = false; - _instance->ReportAvailableSSIDsEvent(ssidListJson); + _instance->ReportAvailableSSIDsEvent(ssidList); } } diff --git a/NetworkManagerImplementation.cpp b/NetworkManagerImplementation.cpp index 7315ca0..c46d7ff 100644 --- a/NetworkManagerImplementation.cpp +++ b/NetworkManagerImplementation.cpp @@ -456,6 +456,49 @@ namespace WPEFramework return; } + void NetworkManagerImplementation::filterScanResults(JsonArray &ssids) + { + JsonArray result; + + if (scanForFreq != WIFI_FREQUENCY_WHATEVER) + { + for(int i=0; ionAvailableSSIDs(jsonOfWiFiScanResults); diff --git a/NetworkManagerImplementation.h b/NetworkManagerImplementation.h index 8c98390..2b67858 100644 --- a/NetworkManagerImplementation.h +++ b/NetworkManagerImplementation.h @@ -219,7 +219,7 @@ namespace WPEFramework void ReportIPAddressChangedEvent(const string& interface, bool isAcquired, bool isIPv6, const string& ipAddress); void ReportActiveInterfaceChangedEvent(const string prevActiveInterface, const string currentActiveinterface); void ReportInternetStatusChangedEvent(const InternetStatus oldState, const InternetStatus newstate); - void ReportAvailableSSIDsEvent(const string jsonOfWiFiScanResults); + void ReportAvailableSSIDsEvent(JsonArray &arrayofWiFiScanResults); void ReportWiFiStateChangedEvent(const INetworkManager::WiFiState state); void ReportWiFiSignalStrengthChangedEvent(const string ssid , const string signalLevel , const WiFiSignalQuality signalQuality); @@ -228,6 +228,7 @@ namespace WPEFramework void retryIarmEventRegistration(); void threadEventRegistration(); void executeExternally(NetworkEvents event, const string commandToExecute, string& response); + void filterScanResults(JsonArray &ssids); private: std::list _notificationCallbacks; @@ -240,6 +241,8 @@ namespace WPEFramework uint16_t m_stunBindTimeout; uint16_t m_stunCacheTimeout; std::thread m_registrationThread; + INetworkManager::WiFiFrequency scanForFreq; + public: WiFiSignalStrengthMonitor m_wifiSignalMonitor; mutable ConnectivityMonitor connectivityMonitor; diff --git a/NetworkManagerJsonRpc.cpp b/NetworkManagerJsonRpc.cpp index 06da7b6..97b1396 100644 --- a/NetworkManagerJsonRpc.cpp +++ b/NetworkManagerJsonRpc.cpp @@ -769,7 +769,27 @@ namespace WPEFramework { LOG_INPARAM(); uint32_t rc = Core::ERROR_GENERAL; - const Exchange::INetworkManager::WiFiFrequency frequency = static_cast (parameters["frequency"].Number()); + Exchange::INetworkManager::WiFiFrequency frequency = Exchange::INetworkManager::WiFiFrequency::WIFI_FREQUENCY_WHATEVER; + + string freqString = parameters["frequency"].String(); + + NMLOG_INFO("Received frequency string: %s", freqString.c_str()); + + if (freqString == "2.4") { + frequency = Exchange::INetworkManager::WiFiFrequency::WIFI_FREQUENCY_2_4_GHZ; + } + else if (freqString == "5") { + frequency = Exchange::INetworkManager::WiFiFrequency::WIFI_FREQUENCY_5_GHZ; + } + else if (freqString == "6") { + frequency = Exchange::INetworkManager::WiFiFrequency::WIFI_FREQUENCY_6_GHZ; + } + else { + NMLOG_ERROR("Invalid frequency value received: %s", freqString.c_str()); + frequency = Exchange::INetworkManager::WiFiFrequency::WIFI_FREQUENCY_WHATEVER; + } + + NMLOG_INFO("Frequency value mapped to enum: %d", frequency); if (_networkManager) rc = _networkManager->StartWiFiScan(frequency); diff --git a/NetworkManagerRDKProxy.cpp b/NetworkManagerRDKProxy.cpp index 67052cd..1f1bd92 100644 --- a/NetworkManagerRDKProxy.cpp +++ b/NetworkManagerRDKProxy.cpp @@ -498,10 +498,8 @@ namespace WPEFramework } JsonArray ssids = eventDocument["getAvailableSSIDs"].Array(); - string json; - ssids.ToString(json); - ::_instance->ReportAvailableSSIDsEvent(json); + ::_instance->ReportAvailableSSIDsEvent(ssids); } case IARM_BUS_WIFI_MGR_EVENT_onWIFIStateChanged: { @@ -994,7 +992,9 @@ const string CIDR_PREFIXES[CIDR_NETMASK_IP_LEN] = { IARM_Result_t retVal = IARM_RESULT_SUCCESS; memset(¶m, 0, sizeof(param)); - (void) frequency; + + NMLOG_INFO ("StartWifiScan frequency value :%d",frequency); + scanForFreq = frequency; retVal = IARM_Bus_Call(IARM_BUS_NM_SRV_MGR_NAME, IARM_BUS_WIFI_MGR_API_getAvailableSSIDsAsync, (void *)¶m, sizeof(IARM_Bus_WiFiSrvMgr_SsidList_Param_t));