From cb10860f372c562bf8d5b157f7e08e1d7574d896 Mon Sep 17 00:00:00 2001 From: Vismal S Kumar Date: Thu, 26 Feb 2026 15:57:40 +0530 Subject: [PATCH 1/5] Update Device_WiFi_EndPoint.cpp --- .../profiles/wifi/Device_WiFi_EndPoint.cpp | 33 ++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/src/hostif/profiles/wifi/Device_WiFi_EndPoint.cpp b/src/hostif/profiles/wifi/Device_WiFi_EndPoint.cpp index 72dfd8c58..10db4d0e2 100644 --- a/src/hostif/profiles/wifi/Device_WiFi_EndPoint.cpp +++ b/src/hostif/profiles/wifi/Device_WiFi_EndPoint.cpp @@ -326,6 +326,7 @@ int hostIf_WiFi_EndPoint::refreshCache() int hostIf_WiFi_EndPoint::refreshCache() { LOG_ENTRY_EXIT; + RDK_LOG (RDK_LOG_INFO, LOG_TR69HOSTIF, "[%s][STEP 1] refreshCache start\n", __FUNCTION__); static time_t time_of_last_successful_query = 0; static int last_call_status = NOK; @@ -336,26 +337,31 @@ int hostIf_WiFi_EndPoint::refreshCache() // Using a 1-second cache. if ((last_call_status == OK ) && (time (0) <= time_of_last_successful_query + 1)) { + RDK_LOG (RDK_LOG_INFO, LOG_TR69HOSTIF, "[%s][STEP 2] Cache still valid, returning cached values\n", __FUNCTION__); RDK_LOG (RDK_LOG_DEBUG, LOG_TR69HOSTIF, "[%s] Cache not stale. last call status is SUCCESS, Refresh not required.\n", __FUNCTION__); return OK; } - + RDK_LOG (RDK_LOG_INFO, LOG_TR69HOSTIF, "[%s][STEP 3] Fetching WifiState from NetworkManager\n", __FUNCTION__); std::string postData = "{\"jsonrpc\":\"2.0\",\"id\":\"42\",\"method\": \"org.rdk.NetworkManager.GetWifiState\"}"; string response = getJsonRPCData(std::move(postData)); + RDK_LOG (RDK_LOG_INFO, LOG_TR69HOSTIF, "[%s][STEP 4] WifiState RPC returned\n", __FUNCTION__); if(response.c_str()) { RDK_LOG (RDK_LOG_INFO, LOG_TR69HOSTIF, "%s: curl response string = %s\n", __FUNCTION__, response.c_str()); cJSON* root = cJSON_Parse(response.c_str()); + RDK_LOG (RDK_LOG_INFO, LOG_TR69HOSTIF, "[%s][STEP 5] WifiState JSON parse attempted\n", __FUNCTION__); if(root) { cJSON* jsonObj = cJSON_GetObjectItem(root, "result"); + RDK_LOG (RDK_LOG_INFO, LOG_TR69HOSTIF, "[%s][STEP 6] WifiState result object lookup done\n", __FUNCTION__); if (jsonObj) { cJSON *interfaces = cJSON_GetObjectItem(jsonObj, "interfaces"); cJSON *interface = nullptr, *interfaceType; + RDK_LOG (RDK_LOG_INFO, LOG_TR69HOSTIF, "[%s][STEP 7] Iterating interfaces to find WIFI\n", __FUNCTION__); for (int i = 0; i < cJSON_GetArraySize(interfaces); i++) { interface = cJSON_GetArrayItem(interfaces, i); interfaceType = cJSON_GetObjectItem(interface, "type"); @@ -366,9 +372,11 @@ int hostIf_WiFi_EndPoint::refreshCache() //ASSIGN TO OP HERE cJSON *result = cJSON_GetObjectItem(interface, "enabled"); Enable = result->type; + RDK_LOG (RDK_LOG_INFO, LOG_TR69HOSTIF, "[%s][STEP 8] Enable parsed from WifiState\n", __FUNCTION__); cJSON *state = cJSON_GetObjectItem(jsonObj, "state"); int res = state->valueint; + RDK_LOG (RDK_LOG_INFO, LOG_TR69HOSTIF, "[%s][STEP 9] Endpoint state value received: %d\n", __FUNCTION__, res); switch (res) { case 0: strncpy(Status, "UNINSTALLED", BUFF_LENGTH_64); @@ -413,9 +421,11 @@ int hostIf_WiFi_EndPoint::refreshCache() strncpy(Status, "ERROR", BUFF_LENGTH_64); break; } + RDK_LOG (RDK_LOG_INFO, LOG_TR69HOSTIF, "[%s][STEP 10] Status mapping completed: %s\n", __FUNCTION__, Status); } else { + RDK_LOG (RDK_LOG_INFO, LOG_TR69HOSTIF, "[%s][STEP 6-FAIL] WifiState result object missing\n", __FUNCTION__); RDK_LOG (RDK_LOG_ERROR, LOG_TR69HOSTIF, "[%s] json parse error, no \"result\" in the output from Thunder plugin\n", __FUNCTION__); cJSON_Delete(root); return NOK; @@ -424,26 +434,32 @@ int hostIf_WiFi_EndPoint::refreshCache() } else { + RDK_LOG (RDK_LOG_INFO, LOG_TR69HOSTIF, "[%s][STEP 5-FAIL] WifiState JSON parse failed\n", __FUNCTION__); RDK_LOG (RDK_LOG_ERROR, LOG_TR69HOSTIF, "%s: json parse error\n", __FUNCTION__); return NOK; } } else { + RDK_LOG (RDK_LOG_INFO, LOG_TR69HOSTIF, "[%s][STEP 4-FAIL] WifiState RPC returned empty/null response\n", __FUNCTION__); RDK_LOG (RDK_LOG_ERROR, LOG_TR69HOSTIF, "%s: curl init failed\n", __FUNCTION__); return NOK; } + RDK_LOG (RDK_LOG_INFO, LOG_TR69HOSTIF, "[%s][STEP 11] Fetching ConnectedSSID from NetworkManager\n", __FUNCTION__); postData = "{\"jsonrpc\":\"2.0\",\"id\":\"42\",\"method\": \"org.rdk.NetworkManager.GetConnectedSSID\"}"; response = getJsonRPCData(postData); + RDK_LOG (RDK_LOG_INFO, LOG_TR69HOSTIF, "[%s][STEP 12] ConnectedSSID RPC returned\n", __FUNCTION__); if(response.c_str()) { RDK_LOG (RDK_LOG_INFO, LOG_TR69HOSTIF, "%s: curl response string = %s\n", __FUNCTION__, response.c_str()); cJSON* root = cJSON_Parse(response.c_str()); + RDK_LOG (RDK_LOG_INFO, LOG_TR69HOSTIF, "[%s][STEP 13] ConnectedSSID JSON parse attempted\n", __FUNCTION__); if(root) { cJSON* jsonObj = cJSON_GetObjectItem(root, "result"); + RDK_LOG (RDK_LOG_INFO, LOG_TR69HOSTIF, "[%s][STEP 14] ConnectedSSID result object lookup done\n", __FUNCTION__); if (jsonObj) { @@ -451,9 +467,11 @@ int hostIf_WiFi_EndPoint::refreshCache() //ASSIGN TO OP HERE strncpy (SSIDReference, ssid->valuestring, BUFF_LENGTH_256); SSIDReference[BUFF_LENGTH_256 - 1] = '\0'; + RDK_LOG (RDK_LOG_INFO, LOG_TR69HOSTIF, "[%s][STEP 15] SSIDReference parsed: %s\n", __FUNCTION__, SSIDReference); } else { + RDK_LOG (RDK_LOG_INFO, LOG_TR69HOSTIF, "[%s][STEP 14-FAIL] ConnectedSSID result object missing\n", __FUNCTION__); RDK_LOG (RDK_LOG_ERROR, LOG_TR69HOSTIF, "[%s] json parse error, no \"result\" in the output from Thunder plugin\n", __FUNCTION__); cJSON_Delete(root); return NOK; @@ -462,35 +480,43 @@ int hostIf_WiFi_EndPoint::refreshCache() } else { + RDK_LOG (RDK_LOG_INFO, LOG_TR69HOSTIF, "[%s][STEP 13-FAIL] ConnectedSSID JSON parse failed\n", __FUNCTION__); RDK_LOG (RDK_LOG_ERROR, LOG_TR69HOSTIF, "%s: json parse error\n", __FUNCTION__); return NOK; } } else { + RDK_LOG (RDK_LOG_INFO, LOG_TR69HOSTIF, "[%s][STEP 12-FAIL] ConnectedSSID RPC returned empty/null response\n", __FUNCTION__); RDK_LOG (RDK_LOG_ERROR, LOG_TR69HOSTIF, "%s: curl init failed\n", __FUNCTION__); return NOK; } + RDK_LOG (RDK_LOG_INFO, LOG_TR69HOSTIF, "[%s][STEP 16] Fetching WiFiSignalStrength from NetworkManager\n", __FUNCTION__); postData = "{\"jsonrpc\":\"2.0\",\"id\":\"42\",\"method\": \"org.rdk.NetworkManager.GetWiFiSignalStrength\"}"; response = getJsonRPCData(std::move(postData)); + RDK_LOG (RDK_LOG_INFO, LOG_TR69HOSTIF, "[%s][STEP 17] WiFiSignalStrength RPC returned\n", __FUNCTION__); if(response.c_str()) { RDK_LOG (RDK_LOG_INFO, LOG_TR69HOSTIF, "%s: curl response string = %s\n", __FUNCTION__, response.c_str()); cJSON* root = cJSON_Parse(response.c_str()); + RDK_LOG (RDK_LOG_INFO, LOG_TR69HOSTIF, "[%s][STEP 18] WiFiSignalStrength JSON parse attempted\n", __FUNCTION__); if(root) { cJSON* jsonObj = cJSON_GetObjectItem(root, "result"); + RDK_LOG (RDK_LOG_INFO, LOG_TR69HOSTIF, "[%s][STEP 19] WiFiSignalStrength result object lookup done\n", __FUNCTION__); if (jsonObj) { cJSON *sigstr = cJSON_GetObjectItem(jsonObj, "signalStrength"); //ASSIGN TO OP HERE stats.SignalStrength = sigstr->valueint; + RDK_LOG (RDK_LOG_INFO, LOG_TR69HOSTIF, "[%s][STEP 20] Signal strength parsed: %d\n", __FUNCTION__, stats.SignalStrength); } else { + RDK_LOG (RDK_LOG_INFO, LOG_TR69HOSTIF, "[%s][STEP 19-FAIL] WiFiSignalStrength result object missing\n", __FUNCTION__); RDK_LOG (RDK_LOG_ERROR, LOG_TR69HOSTIF, "[%s] json parse error, no \"result\" in the output from Thunder plugin\n", __FUNCTION__); cJSON_Delete(root); return NOK; @@ -499,17 +525,20 @@ int hostIf_WiFi_EndPoint::refreshCache() } else { + RDK_LOG (RDK_LOG_INFO, LOG_TR69HOSTIF, "[%s][STEP 18-FAIL] WiFiSignalStrength JSON parse failed\n", __FUNCTION__); RDK_LOG (RDK_LOG_ERROR, LOG_TR69HOSTIF, "%s: json parse error\n", __FUNCTION__); return NOK; } } else { + RDK_LOG (RDK_LOG_INFO, LOG_TR69HOSTIF, "[%s][STEP 17-FAIL] WiFiSignalStrength RPC returned empty/null response\n", __FUNCTION__); RDK_LOG (RDK_LOG_ERROR, LOG_TR69HOSTIF, "%s: curl init failed\n", __FUNCTION__); return NOK; } time_of_last_successful_query = time (0); + RDK_LOG (RDK_LOG_INFO, LOG_TR69HOSTIF, "[%s][STEP 21] Cache timestamp updated\n", __FUNCTION__); //strncpy (Alias, param.data.endPointInfo.alias, BUFF_LENGTH_64); //strncpy (ProfileReference, param.data.endPointInfo.ProfileReference, BUFF_LENGTH_256); @@ -519,10 +548,12 @@ int hostIf_WiFi_EndPoint::refreshCache() if (false == Enable) // "Disabled" endpoint { + RDK_LOG (RDK_LOG_INFO, LOG_TR69HOSTIF, "[%s][STEP 22] Endpoint disabled path hit\n", __FUNCTION__); RDK_LOG (RDK_LOG_ERROR, LOG_TR69HOSTIF, "[%s] EndPoint is disabled\n", __FUNCTION__); last_call_status = NOK; return OK; } + RDK_LOG (RDK_LOG_INFO, LOG_TR69HOSTIF, "[%s][STEP 23] refreshCache completed successfully\n", __FUNCTION__); last_call_status = OK; return OK; } From 273404ee22abbfaa71571ff3175c50e11975c74a Mon Sep 17 00:00:00 2001 From: Vismal S Kumar Date: Fri, 27 Feb 2026 14:30:33 +0530 Subject: [PATCH 2/5] Update Device_WiFi_EndPoint.cpp --- .../profiles/wifi/Device_WiFi_EndPoint.cpp | 60 ++++++++++++++++--- 1 file changed, 51 insertions(+), 9 deletions(-) diff --git a/src/hostif/profiles/wifi/Device_WiFi_EndPoint.cpp b/src/hostif/profiles/wifi/Device_WiFi_EndPoint.cpp index 10db4d0e2..81f14e1ff 100644 --- a/src/hostif/profiles/wifi/Device_WiFi_EndPoint.cpp +++ b/src/hostif/profiles/wifi/Device_WiFi_EndPoint.cpp @@ -362,20 +362,47 @@ int hostIf_WiFi_EndPoint::refreshCache() cJSON *interfaces = cJSON_GetObjectItem(jsonObj, "interfaces"); cJSON *interface = nullptr, *interfaceType; RDK_LOG (RDK_LOG_INFO, LOG_TR69HOSTIF, "[%s][STEP 7] Iterating interfaces to find WIFI\n", __FUNCTION__); - for (int i = 0; i < cJSON_GetArraySize(interfaces); i++) { - interface = cJSON_GetArrayItem(interfaces, i); - interfaceType = cJSON_GetObjectItem(interface, "type"); - if (strcmp(interfaceType->valuestring, "WIFI") == 0) - break; - } + if (cJSON_IsArray(interfaces)) + { + for (int i = 0; i < cJSON_GetArraySize(interfaces); i++) { + interface = cJSON_GetArrayItem(interfaces, i); + interfaceType = cJSON_GetObjectItem(interface, "type"); + if (cJSON_IsString(interfaceType) && interfaceType->valuestring && (strcmp(interfaceType->valuestring, "WIFI") == 0)) + break; + } + } + else + { + RDK_LOG (RDK_LOG_WARN, LOG_TR69HOSTIF, "[%s][STEP 7-WARN] WifiState response has no interfaces array\n", __FUNCTION__); + } //ASSIGN TO OP HERE - cJSON *result = cJSON_GetObjectItem(interface, "enabled"); - Enable = result->type; + if (interface) + { + cJSON *result = cJSON_GetObjectItem(interface, "enabled"); + if (cJSON_IsBool(result)) + { + Enable = cJSON_IsTrue(result); + } + else if (cJSON_IsNumber(result)) + { + Enable = (0 != result->valueint); + } + } + else + { + RDK_LOG (RDK_LOG_WARN, LOG_TR69HOSTIF, "[%s][STEP 8-WARN] WIFI interface not found, keeping existing Enable value\n", __FUNCTION__); + } RDK_LOG (RDK_LOG_INFO, LOG_TR69HOSTIF, "[%s][STEP 8] Enable parsed from WifiState\n", __FUNCTION__); cJSON *state = cJSON_GetObjectItem(jsonObj, "state"); - int res = state->valueint; + if (!cJSON_IsNumber(state)) + { + RDK_LOG (RDK_LOG_ERROR, LOG_TR69HOSTIF, "[%s][STEP 9-FAIL] WifiState result missing numeric state\n", __FUNCTION__); + cJSON_Delete(root); + return NOK; + } + int res = state->valueint; RDK_LOG (RDK_LOG_INFO, LOG_TR69HOSTIF, "[%s][STEP 9] Endpoint state value received: %d\n", __FUNCTION__, res); switch (res) { case 0: @@ -420,6 +447,9 @@ int hostIf_WiFi_EndPoint::refreshCache() case 13: strncpy(Status, "ERROR", BUFF_LENGTH_64); break; + default: + strncpy(Status, "ERROR", BUFF_LENGTH_64); + break; } RDK_LOG (RDK_LOG_INFO, LOG_TR69HOSTIF, "[%s][STEP 10] Status mapping completed: %s\n", __FUNCTION__, Status); } @@ -464,6 +494,12 @@ int hostIf_WiFi_EndPoint::refreshCache() if (jsonObj) { cJSON *ssid = cJSON_GetObjectItem(jsonObj, "ssid"); + if (!(cJSON_IsString(ssid) && ssid->valuestring)) + { + RDK_LOG (RDK_LOG_ERROR, LOG_TR69HOSTIF, "[%s][STEP 15-FAIL] ConnectedSSID result missing ssid string\n", __FUNCTION__); + cJSON_Delete(root); + return NOK; + } //ASSIGN TO OP HERE strncpy (SSIDReference, ssid->valuestring, BUFF_LENGTH_256); SSIDReference[BUFF_LENGTH_256 - 1] = '\0'; @@ -510,6 +546,12 @@ int hostIf_WiFi_EndPoint::refreshCache() if (jsonObj) { cJSON *sigstr = cJSON_GetObjectItem(jsonObj, "signalStrength"); + if (!cJSON_IsNumber(sigstr)) + { + RDK_LOG (RDK_LOG_ERROR, LOG_TR69HOSTIF, "[%s][STEP 20-FAIL] WiFiSignalStrength result missing numeric signalStrength\n", __FUNCTION__); + cJSON_Delete(root); + return NOK; + } //ASSIGN TO OP HERE stats.SignalStrength = sigstr->valueint; RDK_LOG (RDK_LOG_INFO, LOG_TR69HOSTIF, "[%s][STEP 20] Signal strength parsed: %d\n", __FUNCTION__, stats.SignalStrength); From 20955125cc3ff34dde7c86a90a556bcd4d012a7f Mon Sep 17 00:00:00 2001 From: Vismal S Kumar Date: Fri, 27 Feb 2026 14:32:05 +0530 Subject: [PATCH 3/5] Update hostIf_utils.cpp --- src/hostif/src/hostIf_utils.cpp | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/hostif/src/hostIf_utils.cpp b/src/hostif/src/hostIf_utils.cpp index 68627f913..c8a6d5278 100644 --- a/src/hostif/src/hostIf_utils.cpp +++ b/src/hostif/src/hostIf_utils.cpp @@ -554,12 +554,17 @@ std::string get_security_token() { return sToken; } -size_t static writeCurlResponse(void *ptr, size_t size, size_t nmemb, string stream); -size_t static writeCurlResponse(void *ptr, size_t size, size_t nmemb, string stream) +size_t static writeCurlResponse(void *ptr, size_t size, size_t nmemb, void *userdata); +size_t static writeCurlResponse(void *ptr, size_t size, size_t nmemb, void *userdata) { size_t realsize = size * nmemb; - string temp(static_cast(ptr), realsize); - stream.append(temp); + if ((NULL == ptr) || (NULL == userdata)) + { + return 0; + } + + string* stream = static_cast(userdata); + stream->append(static_cast(ptr), realsize); return realsize; } @@ -644,7 +649,7 @@ string getJsonRPCData(std::string postData) } #ifdef GTEST_ENABLE -size_t (*getWriteCurlResponse(void))(void *ptr, size_t size, size_t nmemb, std::string stream) { +size_t (*getWriteCurlResponse(void))(void *ptr, size_t size, size_t nmemb, void *userdata) { return &writeCurlResponse; } #endif From d7e7f07737c44cb48122f2b5be1f5d3983d0872e Mon Sep 17 00:00:00 2001 From: Vismal S Kumar Date: Fri, 27 Feb 2026 14:33:05 +0530 Subject: [PATCH 4/5] Update gtest_src.cpp --- src/hostif/src/gtest/gtest_src.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/hostif/src/gtest/gtest_src.cpp b/src/hostif/src/gtest/gtest_src.cpp index 639b3f0a8..3f175c559 100644 --- a/src/hostif/src/gtest/gtest_src.cpp +++ b/src/hostif/src/gtest/gtest_src.cpp @@ -49,7 +49,7 @@ extern "C" using namespace std; #ifdef GTEST_ENABLE -extern size_t (*getWriteCurlResponse(void))(void *ptr, size_t size, size_t nmemb, std::string stream); +extern size_t (*getWriteCurlResponse(void))(void *ptr, size_t size, size_t nmemb, void *userdata); #endif XRFCStore* m_rfcStore; @@ -306,7 +306,7 @@ TEST(srcTest, writeCurlResponse) { size_t size = 1; size_t nmemb = strlen(input); std::string response; - size_t written = getWriteCurlResponse()((void*)input, size, nmemb, response); + size_t written = getWriteCurlResponse()((void*)input, size, nmemb, &response); EXPECT_EQ(written, nmemb); } From d97d649d6239264087f741101d09a838f1c1b42a Mon Sep 17 00:00:00 2001 From: Vismal S Kumar Date: Mon, 2 Mar 2026 19:41:38 +0530 Subject: [PATCH 5/5] Update Device_WiFi_EndPoint.cpp --- .../profiles/wifi/Device_WiFi_EndPoint.cpp | 61 ++++--------------- 1 file changed, 11 insertions(+), 50 deletions(-) diff --git a/src/hostif/profiles/wifi/Device_WiFi_EndPoint.cpp b/src/hostif/profiles/wifi/Device_WiFi_EndPoint.cpp index 81f14e1ff..de2011eeb 100644 --- a/src/hostif/profiles/wifi/Device_WiFi_EndPoint.cpp +++ b/src/hostif/profiles/wifi/Device_WiFi_EndPoint.cpp @@ -494,6 +494,7 @@ int hostIf_WiFi_EndPoint::refreshCache() if (jsonObj) { cJSON *ssid = cJSON_GetObjectItem(jsonObj, "ssid"); + cJSON *strength = cJSON_GetObjectItem(jsonObj, "strength"); if (!(cJSON_IsString(ssid) && ssid->valuestring)) { RDK_LOG (RDK_LOG_ERROR, LOG_TR69HOSTIF, "[%s][STEP 15-FAIL] ConnectedSSID result missing ssid string\n", __FUNCTION__); @@ -504,6 +505,15 @@ int hostIf_WiFi_EndPoint::refreshCache() strncpy (SSIDReference, ssid->valuestring, BUFF_LENGTH_256); SSIDReference[BUFF_LENGTH_256 - 1] = '\0'; RDK_LOG (RDK_LOG_INFO, LOG_TR69HOSTIF, "[%s][STEP 15] SSIDReference parsed: %s\n", __FUNCTION__, SSIDReference); + if (cJSON_IsNumber(strength)) + { + stats.SignalStrength = strength->valueint; + RDK_LOG (RDK_LOG_INFO, LOG_TR69HOSTIF, "[%s][STEP 15A] Signal strength fallback parsed from ConnectedSSID: %d\n", __FUNCTION__, stats.SignalStrength); + } + else + { + RDK_LOG (RDK_LOG_WARN, LOG_TR69HOSTIF, "[%s][STEP 15A-WARN] ConnectedSSID result missing numeric strength, keeping existing value: %d\n", __FUNCTION__, stats.SignalStrength); + } } else { @@ -527,57 +537,8 @@ int hostIf_WiFi_EndPoint::refreshCache() RDK_LOG (RDK_LOG_ERROR, LOG_TR69HOSTIF, "%s: curl init failed\n", __FUNCTION__); return NOK; } - - RDK_LOG (RDK_LOG_INFO, LOG_TR69HOSTIF, "[%s][STEP 16] Fetching WiFiSignalStrength from NetworkManager\n", __FUNCTION__); - postData = "{\"jsonrpc\":\"2.0\",\"id\":\"42\",\"method\": \"org.rdk.NetworkManager.GetWiFiSignalStrength\"}"; - response = getJsonRPCData(std::move(postData)); - RDK_LOG (RDK_LOG_INFO, LOG_TR69HOSTIF, "[%s][STEP 17] WiFiSignalStrength RPC returned\n", __FUNCTION__); - - if(response.c_str()) - { - RDK_LOG (RDK_LOG_INFO, LOG_TR69HOSTIF, "%s: curl response string = %s\n", __FUNCTION__, response.c_str()); - cJSON* root = cJSON_Parse(response.c_str()); - RDK_LOG (RDK_LOG_INFO, LOG_TR69HOSTIF, "[%s][STEP 18] WiFiSignalStrength JSON parse attempted\n", __FUNCTION__); - if(root) - { - cJSON* jsonObj = cJSON_GetObjectItem(root, "result"); - RDK_LOG (RDK_LOG_INFO, LOG_TR69HOSTIF, "[%s][STEP 19] WiFiSignalStrength result object lookup done\n", __FUNCTION__); - if (jsonObj) - { - cJSON *sigstr = cJSON_GetObjectItem(jsonObj, "signalStrength"); - if (!cJSON_IsNumber(sigstr)) - { - RDK_LOG (RDK_LOG_ERROR, LOG_TR69HOSTIF, "[%s][STEP 20-FAIL] WiFiSignalStrength result missing numeric signalStrength\n", __FUNCTION__); - cJSON_Delete(root); - return NOK; - } - //ASSIGN TO OP HERE - stats.SignalStrength = sigstr->valueint; - RDK_LOG (RDK_LOG_INFO, LOG_TR69HOSTIF, "[%s][STEP 20] Signal strength parsed: %d\n", __FUNCTION__, stats.SignalStrength); - } - else - { - RDK_LOG (RDK_LOG_INFO, LOG_TR69HOSTIF, "[%s][STEP 19-FAIL] WiFiSignalStrength result object missing\n", __FUNCTION__); - RDK_LOG (RDK_LOG_ERROR, LOG_TR69HOSTIF, "[%s] json parse error, no \"result\" in the output from Thunder plugin\n", __FUNCTION__); - cJSON_Delete(root); - return NOK; - } - cJSON_Delete(root); - } - else - { - RDK_LOG (RDK_LOG_INFO, LOG_TR69HOSTIF, "[%s][STEP 18-FAIL] WiFiSignalStrength JSON parse failed\n", __FUNCTION__); - RDK_LOG (RDK_LOG_ERROR, LOG_TR69HOSTIF, "%s: json parse error\n", __FUNCTION__); - return NOK; - } - } - else - { - RDK_LOG (RDK_LOG_INFO, LOG_TR69HOSTIF, "[%s][STEP 17-FAIL] WiFiSignalStrength RPC returned empty/null response\n", __FUNCTION__); - RDK_LOG (RDK_LOG_ERROR, LOG_TR69HOSTIF, "%s: curl init failed\n", __FUNCTION__); - return NOK; - } + RDK_LOG (RDK_LOG_INFO, LOG_TR69HOSTIF, "[%s][STEP 16] SignalStrength is sourced from ConnectedSSID RPC\n", __FUNCTION__); time_of_last_successful_query = time (0); RDK_LOG (RDK_LOG_INFO, LOG_TR69HOSTIF, "[%s][STEP 21] Cache timestamp updated\n", __FUNCTION__);