21 #include "wifiSrvMgr.h"
22 #include "NetworkMgrMain.h"
23 #include "wifiSrvMgrIarmIf.h"
24 #include "NetworkMedium.h"
25 #include "wifiHalUtiles.h"
28 #ifdef USE_HOSTIF_WIFI_HAL
30 #include "hostIf_tr69ReqHandler.h"
34 #ifndef ENABLE_XCAM_SUPPORT
41 #endif // ENABLE_XCAM_SUPPORT
44 #define DELAY_LNF_TIMER_COUNT 5 //Each time wait will be 60 seconds
46 #include "safec_lib.h"
48 #define STRCPY_S(dest,size,source) \
52 #ifdef USE_RDK_WIFI_HAL
54 static void _irEventHandler(
const char *owner, IARM_EventId_t eventId,
void *data,
size_t len);
58 #ifdef ENABLE_LOST_FOUND
59 extern bool bDeviceActivated;
62 static void _eventHandler(
const char *owner, IARM_EventId_t eventId,
void *data,
size_t len);
64 extern bool bStopLNFWhileDisconnected;
65 extern bool bIsStopLNFWhileDisconnected;
66 extern bool bAutoSwitchToPrivateEnabled;
67 extern bool bSwitch2Private;
71 bool bStopProgressiveScanning;
75 char gWifiMacAddress[MAC_ADDR_BUFF_LEN] = {
'\0'};
78 IARM_Bus_Daemon_SysMode_t sysModeParam;
81 #ifdef ENABLE_RTMESSAGE
83 pthread_t wifiMsgThread;
87 bool WiFiNetworkMgr::instanceIsReady =
false;
88 pthread_mutex_t wpsConnLock = PTHREAD_MUTEX_INITIALIZER;
89 pthread_mutex_t wifiScanLock = PTHREAD_MUTEX_INITIALIZER;
91 #ifdef USE_TELEMETRY_2_0
93 #endif // #ifdef USE_TELEMETRY_2_0
95 WiFiNetworkMgr::WiFiNetworkMgr() {}
96 WiFiNetworkMgr::~WiFiNetworkMgr() { }
100 if (instance == NULL)
103 instanceIsReady =
true;
108 #ifndef ENABLE_XCAM_SUPPORT
135 if (-1 != access (wpa_supplicant_conf_file, F_OK))
137 LOG_ERR(
"wpa_supplicant_conf_file [%s] already exists. Will not overwrite.",
138 wpa_supplicant_conf_file);
140 else if (SQLITE_OK != sqlite3_open_v2 (netapp_db_file, &db, SQLITE_OPEN_READONLY, NULL))
142 LOG_ERR(
"Failed to open netapp_db_file [%s]. Error = [%s]",
143 netapp_db_file, sqlite3_errmsg(db));
148 sprintf (zSql,
"SELECT value FROM EAV where entity = 'NETAPP_DB_IFACE_WIRELESS' and attribute = 'NETAPP_DB_A_CURRENT_APINFO'");
149 LOG_INFO(
"NetApp DB query = [%s]", zSql);
151 sqlite3_stmt *res = NULL;
153 cJSON *root_json = NULL;
156 if (SQLITE_OK != sqlite3_prepare_v2 (db, zSql, -1, &res, 0))
158 LOG_ERR(
"NetApp DB query prepare statement error = [%s]", sqlite3_errmsg(db));
160 else if (SQLITE_ROW != sqlite3_step (res))
162 LOG_ERR(
"NetApp DB query returned no rows.");
164 else if (NULL == (value = (
char *) sqlite3_column_text (res, 0)))
166 LOG_ERR(
"NetApp DB query returned NULL value.");
168 else if (NULL == (root_json = cJSON_Parse (value)))
170 LOG_ERR(
"NetApp DB query returned non-JSON value = [%s]. Error = [%s]",
171 value, cJSON_GetErrorPtr());
173 else if (NULL == (f = fopen (wpa_supplicant_conf_file,
"w")))
175 LOG_ERR(
"Error opening wpa_supplicant_conf_file [%s] for write",wpa_supplicant_conf_file);
179 LOG_TRACE(
"NetApp DB query returned value = [%s]",value);
182 const char *ssid = (json = cJSON_GetObjectItem (root_json,
"SSID")) ? json->valuestring :
"";
183 const char *bssid = (json = cJSON_GetObjectItem (root_json,
"BSSID")) ? json->valuestring :
"";
184 const char *password = (json = cJSON_GetObjectItem (root_json,
"Password")) ? json->valuestring :
"";
185 const char *security = (json = cJSON_GetObjectItem (root_json,
"Security")) ? json->valuestring :
"";
187 LOG_TRACE(
"NetApp DB parameters: ssid = [%s], bssid = [%s], password = [%s], security = [%s]",
188 ssid, bssid, password, security);
190 if (!*ssid) LOG_ERR(
"TELEMETRY_WIFI_CONF_FROM_DB_SSID_EMPTY");
191 if (!*bssid) LOG_ERR(
"TELEMETRY_WIFI_CONF_FROM_DB_BSSID_EMPTY");
192 if (!*password) LOG_ERR(
"TELEMETRY_WIFI_CONF_FROM_DB_PASSWORD_EMPTY");
193 if (!*security) LOG_ERR(
"TELEMETRY_WIFI_CONF_FROM_DB_MODE_EMPTY");
195 const char *security_mode_map[][2] = {
198 {
"WpaPskAes",
"WPA-PSK"},
199 {
"WpaPskTkip",
"WPA-PSK"},
200 {
"Wpa2PskAes",
"WPA-PSK"},
201 {
"Wpa2PskTkip",
"WPA-PSK"},
202 {
"WpaEnterprise",
"WPA-EAP"},
203 {
"Wpa2Enterprise",
"WPA-EAP"},
207 const char *wpa_security_mode =
"";
208 int n =
sizeof (security_mode_map) /
sizeof (security_mode_map[0]);
212 if (0 == strcasecmp (security, security_mode_map[i][0]))
214 wpa_security_mode = security_mode_map[i][1];
220 LOG_ERR(
"TELEMETRY_WIFI_CONF_FROM_DB_MODE_UNMAPPABLE");
223 fprintf (f,
"ctrl_interface=/var/run/wpa_supplicant\n");
224 fprintf (f,
"update_config=1\n");
226 fprintf (f,
"network={\n");
227 fprintf (f,
" ssid=\"%s\"\n", ssid);
228 fprintf (f,
" scan_ssid=1\n");
229 fprintf (f,
" bssid=%s\n", bssid);
230 fprintf (f,
" psk=\"%s\"\n", password);
231 fprintf (f,
" key_mgmt=%s\n", wpa_security_mode);
232 fprintf (f,
" auth_alg=OPEN\n");
239 LOG_INFO(
"Successfully created wpa_supplicant_conf_file [%s].", wpa_supplicant_conf_file);
240 LOG_INFO(
"TELEMETRY_WIFI_CREATED_CONF_FROM_DB");
245 cJSON_Delete (root_json);
250 sqlite3_finalize (res);
259 remove(netapp_db_file);
263 #endif // #ifndef ENABLE_XCAM_SUPPORT
265 int WiFiNetworkMgr::removeWifiCredsFromNonSecuredPartition(
void)
267 const char *wpaSupplicantConfFile =
"/opt/wifi/wpa_supplicant.conf";
268 const char *wifiRoamingFile =
"/opt/wifi/wifi_roamingControl.json";
271 if(!access(wpaSupplicantConfFile, F_OK))
273 if((retValue = remove(wpaSupplicantConfFile)) == -1)
275 LOG_ERR(
"Failed to remove wpa_supplicant.conf [%s]", wpaSupplicantConfFile);
279 if(!access(wifiRoamingFile, F_OK))
281 if((retValue = remove(wifiRoamingFile)) == -1)
283 LOG_ERR(
"Failed to remove wifi_roamingControl.json [%s]",
291 int WiFiNetworkMgr::Init()
315 #ifdef WIFI_CLIENT_ROAMING
319 #ifdef ENABLE_LOST_FOUND
336 #ifdef USE_RDK_WIFI_HAL
342 #endif // #ifdef ENABLE_IARM
344 memset(&gSsidList,
'\0',
sizeof(
ssidList));
351 char *ifName = getenv(
"WIFI_INTERFACE");
352 LOG_INFO(
"The interface use is '%s'", ifName);
354 LOG_INFO(
"The '%s' Mac Addr :%s", ifName, gWifiMacAddress);
357 LOG_WARN(
"Failed to get wifi mac address.");
361 #ifndef ENABLE_XCAM_SUPPORT
363 #endif // ENABLE_XCAM_SUPPORT
366 removeWifiCredsFromNonSecuredPartition();
368 #ifdef USE_TELEMETRY_2_0
369 wifi_telemetry_ops.init = telemetry_init;
370 wifi_telemetry_ops.event_s = telemetry_event_s;
371 wifi_telemetry_ops.event_d = telemetry_event_d;
373 telemetry_init(
"wifihal");
374 #endif // #ifdef USE_TELEMETRY_2_0
379 #ifdef USE_RDK_WIFI_HAL
380 bool WiFiNetworkMgr::setWifiEnabled (
bool newState)
382 static bool bWiFiEnabled =
false;
386 LOG_INFO(
"WiFi state: current [%d] requested [%d]", bWiFiEnabled, newState);
388 if (!bWiFiEnabled == !newState)
390 LOG_INFO(
"Already in requested state. Nothing to do.");
394 bWiFiEnabled = newState;
397 WiFiNetworkMgr::getInstance()->Start();
398 LOG_INFO(
"TELEMETRY_NETWORK_MANAGER_ENABLE_WIFI.");
402 WiFiNetworkMgr::getInstance()->Stop();
403 LOG_INFO(
"TELEMETRY_NETWORK_MANAGER_DISABLE_WIFI.");
407 #endif // USE_RDK_WIFI_HAL
409 int WiFiNetworkMgr::Start()
415 #ifdef ENABLE_RTMESSAGE
417 #if defined(XHB1) || defined(XHC3)
418 if( 0 != pthread_create(&wifiMsgThread, NULL, &rtMessage_Receive, NULL))
420 LOG_ERR(
"Can't create thread.");
423 LOG_INFO(
"Thread created successfully and waiting for message.");
427 #ifdef USE_RDK_WIFI_HAL
428 monitor_WiFiStatus();
431 LOG_INFO(
"[%s] Successfully wifi_init() done", MODULE_NAME);
433 LOG_ERR(
"[%s] Failed in wifi_init(). ", MODULE_NAME);
442 #if !defined(ENABLE_XCAM_SUPPORT) && !defined(XHB1) && !defined(XHC3)
444 memset(&tmpWiFiConnList,
'\0',
sizeof(tmpWiFiConnList));
445 #ifdef USE_RDK_WIFI_HAL
446 retVal = lastConnectedSSID(&tmpWiFiConnList);
448 if(
false == retVal) {
450 retVal = connectToMfrWifiCredentials();
452 LOG_INFO(
"[%s] Successfully connected to the SSID in the MFR", MODULE_NAME);
455 LOG_INFO(
"[%s] Failed to connect to the SSID in the MFR", MODULE_NAME);
459 #endif // ENABLE_XCAM_SUPPORT
461 #ifdef ENABLE_LOST_FOUND
462 if(confProp.wifiProps.bEnableLostFound)
466 lafConnectToPrivate();
468 if(
false == isWifiConnected())
470 #ifdef ENABLE_XCAM_SUPPORT
472 while (
false == isWifiConnected() && retry < DELAY_LNF_TIMER_COUNT)
477 if (
false == isWifiConnected())
488 LOG_ERR(
"[%s] lfssid fetch failure !!!!!!! ", MODULE_NAME);
496 int WiFiNetworkMgr::Stop()
500 wpsConnLock = PTHREAD_MUTEX_INITIALIZER;
502 #ifdef ENABLE_RTMESSAGE
503 #if defined(XHB1) || defined(XHC3)
504 pthread_kill(wifiMsgThread, 0);
506 rtConnection_destroy();
512 IARM_Result_t WiFiNetworkMgr::getAvailableSSIDsWithName(
void *arg)
514 IARM_Result_t ret = IARM_RESULT_IPCCORE_FAIL;
516 char SSID[64] = {
'\0'};
522 char jbuff[MAX_SSIDLIST_BUF] = {
'\0'};
525 #ifdef USE_RDK_WIFI_HAL
526 if(param != NULL && param->SSID != NULL)
527 strncpy(SSID,param->SSID,63);
529 frequency = param->frequency;
530 status = scan_SpecificSSID_WifiAP(jbuff,(
const char*)SSID,frequency);
531 jBuffLen = strlen(jbuff);
532 LOG_DBG(
"[%s] Scan AP's SSID list buffer size : \"%d\"", MODULE_NAME, jBuffLen);
536 param->status =
false;
537 LOG_ERR(
"[%s] No SSID available.", MODULE_NAME);
540 LOG_DBG(
"[%s] json Message length : [%d].", MODULE_NAME, jBuffLen);
544 strncpy(param->curSsids.
jdata, jbuff,
sizeof(param->curSsids.
jdata));
545 param->curSsids.
jdataLen = jBuffLen;
546 param->status =
true;
547 ret = IARM_RESULT_SUCCESS;
551 param->status =
false;
557 IARM_Result_t WiFiNetworkMgr::getAvailableSSIDs(
void *arg)
559 IARM_Result_t ret = IARM_RESULT_IPCCORE_FAIL;
565 char jbuff[MAX_SSIDLIST_BUF] = {
'\0'};
568 #ifdef USE_RDK_WIFI_HAL
569 status = scan_Neighboring_WifiAP(jbuff);
570 jBuffLen = strlen(jbuff);
571 LOG_DBG(
"[%s] Scan AP's SSID list buffer size : \n\"%d\"", MODULE_NAME, jBuffLen);
575 param->status =
false;
576 LOG_ERR(
"[%s] No SSID connected or SSID available.", MODULE_NAME);
581 LOG_DBG(
"[%s] json Message length : [%d].", MODULE_NAME, jBuffLen);
584 strncpy(param->curSsids.
jdata, jbuff,
sizeof(param->curSsids.
jdata));
585 param->curSsids.
jdataLen = jBuffLen;
586 param->status =
true;
587 ret = IARM_RESULT_SUCCESS;
590 param->status =
false;
599 void *getAvailableSSIDsThread(
void* arg)
605 IARM_Result_t ret = WiFiNetworkMgr::getAvailableSSIDs(¶m);
607 if(ret == IARM_RESULT_SUCCESS)
609 LOG_DBG(
"[%s] SSID List : [%s]", MODULE_NAME, param.curSsids.
jdata);
614 strncpy( eventData.data.wifiSSIDList.ssid_list, param.curSsids.
jdata, MAX_SSIDLIST_BUF );
615 eventData.data.wifiSSIDList.ssid_list[MAX_SSIDLIST_BUF-1] = 0;
618 IARM_BUS_WIFI_MGR_EVENT_onAvailableSSIDs,
619 (
void *)&eventData,
sizeof(eventData));
622 LOG_ERR(
"[%s] Failed to get Available SSID", MODULE_NAME);
628 IARM_Result_t WiFiNetworkMgr::getAvailableSSIDsAsync(
void *arg)
632 pthread_t getAvailableSSIDsPThread;
635 pthread_attr_init(&attr);
636 pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
637 rc = pthread_create(&getAvailableSSIDsPThread, &attr, getAvailableSSIDsThread, NULL);
639 LOG_ERR(
"Thread creation failed with rc = %d", rc);
642 return IARM_RESULT_SUCCESS;
651 clock_gettime(CLOCK_REALTIME, timer);
654 void getTimeValDiff(
struct timespec *start,
struct timespec *stop,
655 struct timespec *timeDiff)
657 if ((stop->tv_nsec - start->tv_nsec) < 0) {
658 timeDiff->tv_sec = stop->tv_sec - start->tv_sec - 1;
659 timeDiff->tv_nsec = stop->tv_nsec - start->tv_nsec + 1000000000;
661 timeDiff->tv_sec = stop->tv_sec - start->tv_sec;
662 timeDiff->tv_nsec = stop->tv_nsec - start->tv_nsec;
666 static IARM_Result_t scanAndBroadcastResults(
bool moreData)
669 IARM_Result_t ret = WiFiNetworkMgr::getAvailableSSIDs(¶m);
670 if(ret == IARM_RESULT_SUCCESS)
672 LOG_DBG(
"[%s] SSID List : [%s]", MODULE_NAME, param.curSsids.
jdata);
675 strncpy( eventData.data.wifiSSIDList.ssid_list, param.curSsids.
jdata, MAX_SSIDLIST_BUF );
676 eventData.data.wifiSSIDList.ssid_list[MAX_SSIDLIST_BUF-1] = 0;
677 eventData.data.wifiSSIDList.more_data = moreData;
680 IARM_BUS_WIFI_MGR_EVENT_onAvailableSSIDsIncr,
681 (
void *)&eventData,
sizeof(eventData));
684 LOG_ERR(
"[%s] Failed to broadcast SSID list", MODULE_NAME);
688 void *getAvailableSSIDsIncrThread(
void* arg)
692 bool more_data =
true;
693 struct timespec start, end,timeDiff;
694 bStopProgressiveScanning =
false;
695 const char* freq_list =
"5785 5180 5220 5240 5805 5745 5200 5500 5825";
698 LOG_INFO(
"Starting scan for 5GHz preferred channels...");
700 wifi_setRadioScanningFreqList(radioIndex, freq_list);
701 IARM_Result_t ret = scanAndBroadcastResults(more_data);
702 if(ret == IARM_RESULT_SUCCESS)
705 getTimeValDiff(&start,&end,&timeDiff);
706 LOG_INFO(
"Successfully broadcasted scan results of 5GHz preferred channels in %ld.%09ld seconds.",(
long)timeDiff.tv_sec,timeDiff.tv_nsec);
710 LOG_ERR(
"Failed to broadcast 5GHz preferred scan results");
712 pthread_mutex_lock(&wifiScanLock);
713 if(bStopProgressiveScanning ==
true)
715 LOG_INFO(
"Progressive scanning stopped, Skipping further scanning...");
716 pthread_mutex_unlock(&wifiScanLock);
719 pthread_mutex_unlock(&wifiScanLock);
722 if(wifi_getDualBandSupport() ==
true)
724 LOG_INFO(
"Starting scan for 2.4GHz channels...");
726 freq_list =
"2412 2417 2422 2427 2432 2437 2442 2447 2452 2457 2462";
727 wifi_setRadioScanningFreqList(radioIndex, freq_list);
728 ret = scanAndBroadcastResults(more_data);
729 if(ret == IARM_RESULT_SUCCESS)
732 getTimeValDiff(&start,&end,&timeDiff);
733 LOG_INFO(
"Successfully broadcasted scan results of 2.4GHz channels in %ld.%09ld seconds.",(
long)timeDiff.tv_sec,timeDiff.tv_nsec);
737 LOG_ERR(
"Failed to broadcast 2.4GHz scan results");
741 pthread_mutex_lock(&wifiScanLock);
742 if(bStopProgressiveScanning ==
true)
744 LOG_INFO(
"Progressive scanning stopped, Skipping further scanning..");
745 pthread_mutex_unlock(&wifiScanLock);
748 pthread_mutex_unlock(&wifiScanLock);
751 LOG_INFO(
"Starting scan for 5GHz low priority channels...\n");
753 freq_list =
"5260 5280 5300 5320 5520 5540 5560 5580 5600 5620 5640 5660 5680 5700 5720 5765";
754 wifi_setRadioScanningFreqList(radioIndex, freq_list);
756 ret = scanAndBroadcastResults(more_data);
757 if(ret == IARM_RESULT_SUCCESS)
760 getTimeValDiff(&start,&end,&timeDiff);
761 LOG_INFO(
"Successfully broadcasted scan results of 5GHz Non-preferred channels in %ld.%09ld seconds.",(
long)timeDiff.tv_sec,timeDiff.tv_nsec);
765 LOG_ERR(
"Failed to broadcast 5GHz Non-preferred scan results");
770 wifi_setRadioScanningFreqList(radioIndex, (
const char*)
"0");
774 IARM_Result_t WiFiNetworkMgr::stopProgressiveWifiScanning(
void *arg)
776 IARM_Result_t ret = IARM_RESULT_SUCCESS;
777 pthread_mutex_lock(&wifiScanLock);
778 bStopProgressiveScanning =
true;
779 pthread_mutex_unlock(&wifiScanLock);
783 IARM_Result_t WiFiNetworkMgr::getAvailableSSIDsAsyncIncr(
void *arg)
787 pthread_t getAvailableSSIDsIncrPThread;
789 pthread_attr_init(&attr);
790 pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
791 pthread_create(&getAvailableSSIDsIncrPThread, &attr, getAvailableSSIDsIncrThread, NULL);
794 return IARM_RESULT_SUCCESS;
797 IARM_Result_t WiFiNetworkMgr::getCurrentState(
void *arg)
802 param->status =
true;
805 if (
false == isInterfaceEnabled(
"WIFI", enabled))
810 param->data.wifiStatus = getWpaStatus();
812 return IARM_RESULT_SUCCESS;
815 IARM_Result_t WiFiNetworkMgr::getCurrentConnectionType(
void *arg)
817 IARM_Result_t ret = IARM_RESULT_SUCCESS;
821 param->status =
true;
827 param->data.connectionType = WIFI_CON_UNKNOWN;
833 #ifdef ENABLE_LOST_FOUND
834 IARM_Result_t WiFiNetworkMgr::isAutoSwitchToPrivateEnabled(
void *arg)
836 IARM_Result_t ret = IARM_RESULT_SUCCESS;
839 bool *param = (
bool *)arg;
840 *param=bAutoSwitchToPrivateEnabled;
845 IARM_Result_t WiFiNetworkMgr::getSwitchToPrivateResults(
void *arg)
847 IARM_Result_t ret = IARM_RESULT_IPCCORE_FAIL;
853 char jbuff[MAX_SSIDLIST_BUF] = {
'\0'};
856 status = convertSwitchToPrivateResultsToJson(jbuff);
857 jBuffLen = strlen(jbuff);
858 LOG_DBG(
"[%s] Switch Private Results list buffer size : \n\"%d\"", MODULE_NAME,jBuffLen);
861 param->status =
false;
862 LOG_ERR(
"[%s] No Switch private Results.", MODULE_NAME);
867 LOG_DBG(
"[%s] json Message length : [%d].", MODULE_NAME, jBuffLen);
870 strncpy(param->switchPvtResults.
jdata, jbuff, MAX_SSIDLIST_BUF);
871 param->switchPvtResults.
jdataLen = jBuffLen;
872 param->status =
true;
873 ret = IARM_RESULT_SUCCESS;
876 param->status =
false;
878 LOG_DBG(
"[%s] json Data : %s", MODULE_NAME,param->switchPvtResults.
jdata);
885 IARM_Result_t WiFiNetworkMgr::isStopLNFWhileDisconnected(
void *arg)
887 IARM_Result_t ret = IARM_RESULT_SUCCESS;
889 bool *param = (
bool *)arg;
890 *param=bIsStopLNFWhileDisconnected;
894 IARM_Result_t WiFiNetworkMgr::getLNFState(
void *arg)
896 IARM_Result_t ret = IARM_RESULT_SUCCESS;
899 param->status =
true;
900 param->data.wifiLNFStatus = get_WiFiLNFStatusCode();
904 #endif // ENABLE_LOST_FOUND
905 IARM_Result_t WiFiNetworkMgr::setEnabled(
void *arg)
910 bool wifiadapterEnableState = param->data.setwifiadapter.enable;
912 LOG_INFO(
"IARM_BUS_WIFI_MGR_API_setEnabled %d", wifiadapterEnableState);
914 #ifdef USE_RDK_WIFI_HAL
915 WiFiNetworkMgr::getInstance()->setWifiEnabled(wifiadapterEnableState);
916 #endif // USE_RDK_WIFI_HAL
918 return IARM_RESULT_SUCCESS;
921 IARM_Result_t WiFiNetworkMgr::connect(
void *arg)
923 IARM_Result_t ret = IARM_RESULT_SUCCESS;
928 param->status =
false;
930 SsidSecurity securityMode;
931 securityMode = param->data.connect.security_mode;
932 char *ssid = param->data.connect.ssid;
933 short ssid_len = strlen(param->data.connect.ssid);
934 char *pass = param->data.connect.passphrase;
935 short pass_len = strlen (param->data.connect.passphrase);
936 char *eapIden = param->data.connect.eapIdentity;
937 char * carootcert = param->data.connect.carootcert;
938 char * clientcert = param->data.connect.clientcert;
939 char * privatekey = param->data.connect.privatekey;
941 LOG_DBG(
"[%s] Connect with SSID (%s) & Passphrase (%s) security mode (%d)", MODULE_NAME, ssid, pass,securityMode);
945 if((savedWiFiConnList.ssidSession.ssid[0] !=
'\0') && (savedWiFiConnList.ssidSession.passphrase[0] !=
'\0'))
948 #ifdef USE_RDK_WIFI_HAL
949 connect_withSSID(ssidIndex, savedWiFiConnList.ssidSession.ssid, savedWiFiConnList.ssidSession.security_mode, NULL,savedWiFiConnList.ssidSession.passphrase, savedWiFiConnList.ssidSession.passphrase,SAVE_SSID,eapIden,carootcert,clientcert,privatekey,WIFI_CON_MANUAL);
951 param->status =
true;
955 LOG_ERR(
"[%s] Failed, Empty saved SSID & Passphrase.", MODULE_NAME);
956 param->status =
false;
962 if(ssid_len && pass_len)
965 LOG_DBG(
"[%s] Received valid SSID (%s) & Passphrase (%s).", MODULE_NAME, ssid, pass);
966 #ifdef USE_RDK_WIFI_HAL
967 connect_withSSID(ssidIndex, ssid, securityMode, NULL, pass, pass,SAVE_SSID,eapIden,carootcert,clientcert,privatekey,WIFI_CON_MANUAL);
969 param->status =
true;
972 else if (ssid_len && (0 == pass_len) && securityMode == NET_WIFI_SECURITY_NONE)
974 LOG_DBG(
"[%s] Received valid SSID (%s) with Empty Passphrase.", MODULE_NAME, ssid);
975 #ifdef USE_RDK_WIFI_HAL
976 connect_withSSID(ssidIndex, ssid, securityMode, NULL,savedWiFiConnList.ssidSession.passphrase , savedWiFiConnList.ssidSession.passphrase,SAVE_SSID,eapIden,carootcert,clientcert,privatekey,WIFI_CON_MANUAL);
978 param->status =
true;
981 LOG_ERR(
"[%s] Invalid SSID & Passphrase.", MODULE_NAME);
988 IARM_Result_t WiFiNetworkMgr::initiateWPSPairing(
void *arg)
992 param->status =
false;
993 #ifdef USE_RDK_WIFI_HAL
994 pthread_mutex_lock(&wpsConnLock);
995 param->status = connect_WpsPush();
996 pthread_mutex_unlock(&wpsConnLock);
998 return IARM_RESULT_SUCCESS;
1001 IARM_Result_t WiFiNetworkMgr::initiateWPSPairing2(
void *arg)
1005 params->status =
false;
1006 #ifdef USE_RDK_WIFI_HAL
1007 pthread_mutex_lock(&wpsConnLock);
1008 params->status = params->pbc ? connect_WpsPush() : connect_WpsPin(params->pin);
1009 pthread_mutex_unlock(&wpsConnLock);
1011 return IARM_RESULT_SUCCESS;
1014 IARM_Result_t WiFiNetworkMgr::saveSSID(
void* arg)
1016 IARM_Result_t ret = IARM_RESULT_SUCCESS;
1020 bool retval =
false;
1021 param->status =
false;
1022 SsidSecurity securityMode;
1023 securityMode = param->data.connect.security_mode;
1024 char *ssid = param->data.connect.ssid;
1025 short ssid_len = strlen(param->data.connect.ssid);
1026 char *psk = param->data.connect.passphrase;
1027 short psk_len = strlen (param->data.connect.passphrase);
1033 if(ssid_len && psk_len)
1035 memset(&savedWiFiConnList, 0 ,
sizeof(savedWiFiConnList));
1036 strncpy(savedWiFiConnList.ssidSession.ssid, ssid, ssid_len+1);
1037 strncpy(savedWiFiConnList.ssidSession.passphrase, psk, psk_len+1);
1038 savedWiFiConnList.conn_type = SSID_SECLECTION_CONNECT;
1039 savedWiFiConnList.ssidSession.security_mode = (
SsidSecurity)securityMode;
1041 LOG_INFO(
"[%s] %s to file, SSID (%s) & Passphrase (%s) SecurityMode (%d).", MODULE_NAME, retval?
"Successfully Saved":
"Failed to Save",
1042 savedWiFiConnList.ssidSession.ssid, savedWiFiConnList.ssidSession.passphrase, savedWiFiConnList.ssidSession.security_mode);
1043 param->status = retval;
1047 LOG_ERR(
"[%s] Empty data for SaveSSID", MODULE_NAME);
1048 ret = IARM_RESULT_INVALID_PARAM;
1055 IARM_Result_t WiFiNetworkMgr::disconnectSSID(
void* arg)
1057 IARM_Result_t ret = IARM_RESULT_SUCCESS;
1060 param->status =
false;
1061 #ifdef USE_RDK_WIFI_HAL
1062 param->status = disconnectFromCurrentSSID();
1068 IARM_Result_t WiFiNetworkMgr::clearSSID(
void* arg)
1070 IARM_Result_t ret = IARM_RESULT_SUCCESS;
1073 param->status =
false;
1075 #ifdef USE_RDK_WIFI_HAL
1076 param->status = clearSSID_On_Disconnect_AP();
1084 IARM_Result_t WiFiNetworkMgr::getPairedSSID(
void *arg)
1086 IARM_Result_t ret = IARM_RESULT_SUCCESS;
1087 bool retVal =
false;
1090 memset(&tmpSavedWiFiConnList,
'\0',
sizeof(tmpSavedWiFiConnList));
1100 #ifdef USE_RDK_WIFI_HAL
1101 retVal=lastConnectedSSID(&tmpSavedWiFiConnList);
1103 if( retVal ==
true )
1105 char *ssid = tmpSavedWiFiConnList.ssidSession.ssid;
1106 STRCPY_S(param->data.getPairedSSID.ssid,
sizeof(param->data.getPairedSSID.ssid), ssid);
1107 LOG_INFO(
"[%s] getPairedSSID SSID (%s).", MODULE_NAME, ssid);
1108 param->status =
true;
1112 LOG_ERR(
"[%s] Error in getting last ssid ", MODULE_NAME);
1132 bool convertSecurityModeToString(
char* securityModeStr,SsidSecurity sec_mode)
1136 if(!securityModeStr)
1138 LOG_ERR(
"securityModeStr is NULL, Failed to get Security mode string.");
1145 case NET_WIFI_SECURITY_WPA2_PSK_AES:
1146 strncpy(securityModeStr,
"WPA2-Personal",BUFF_LENGTH_32-1);
1148 case NET_WIFI_SECURITY_WPA2_PSK_TKIP:
1149 strncpy(securityModeStr,
"WPA2-Personal",BUFF_LENGTH_32-1);
1151 case NET_WIFI_SECURITY_WPA_PSK_AES:
1152 strncpy(securityModeStr,
"WPA-Personal",BUFF_LENGTH_32-1);
1154 case NET_WIFI_SECURITY_WPA_PSK_TKIP:
1155 strncpy(securityModeStr,
"WPA-Personal",BUFF_LENGTH_32-1);
1157 case NET_WIFI_SECURITY_WPA2_ENTERPRISE_AES:
1158 strncpy(securityModeStr,
"WPA2-Enterprise",BUFF_LENGTH_32-1);
1160 case NET_WIFI_SECURITY_WPA2_ENTERPRISE_TKIP:
1161 strncpy(securityModeStr,
"WPA2-Enterprise",BUFF_LENGTH_32-1);
1163 case NET_WIFI_SECURITY_WPA_ENTERPRISE_AES:
1164 strncpy(securityModeStr,
"WPA-Enterprise",BUFF_LENGTH_32-1);
1166 case NET_WIFI_SECURITY_WPA_ENTERPRISE_TKIP:
1167 strncpy(securityModeStr,
"WPA-Enterprise",BUFF_LENGTH_32-1);
1169 case NET_WIFI_SECURITY_WEP_64:
1170 strncpy(securityModeStr,
"WEP-64",BUFF_LENGTH_32-1);
1172 case NET_WIFI_SECURITY_WEP_128:
1173 strncpy(securityModeStr,
"WEP-128",BUFF_LENGTH_32-1);
1175 case NET_WIFI_SECURITY_WPA3_PSK_AES:
1176 strncpy(securityModeStr,
"WPA2-WPA3",BUFF_LENGTH_32-1);
1178 case NET_WIFI_SECURITY_WPA3_SAE:
1179 strncpy(securityModeStr,
"WPA3",BUFF_LENGTH_32-1);
1181 case NET_WIFI_SECURITY_WPA_WPA2_PSK:
1182 strncpy(securityModeStr,
"WPA-WPA2-Personal",BUFF_LENGTH_32-1);
1184 case NET_WIFI_SECURITY_WPA_WPA2_ENTERPRISE:
1185 strncpy(securityModeStr,
"WPA-WPA2-Enterprise",BUFF_LENGTH_32-1);
1187 case NET_WIFI_SECURITY_NONE:
1188 strncpy(securityModeStr,
"None",BUFF_LENGTH_32-1);
1191 strncpy(securityModeStr,
"None",BUFF_LENGTH_32-1);
1198 IARM_Result_t WiFiNetworkMgr::getPairedSSIDInfo(
void *arg)
1200 IARM_Result_t ret = IARM_RESULT_IPCCORE_FAIL;
1201 bool retVal =
false;
1202 char securityModeString[BUFF_LENGTH_32];
1204 memset(&tmpSavedWiFiConnList,
'\0',
sizeof(tmpSavedWiFiConnList));
1208 #ifdef USE_RDK_WIFI_HAL
1209 retVal=lastConnectedSSID(&tmpSavedWiFiConnList);
1211 if( retVal ==
true )
1213 char *ssid = tmpSavedWiFiConnList.ssidSession.ssid;
1214 STRCPY_S(param->data.getPairedSSIDInfo.ssid,
sizeof(param->data.getPairedSSIDInfo.ssid), ssid);
1215 char *bssid = tmpSavedWiFiConnList.ssidSession.bssid;
1216 STRCPY_S(param->data.getPairedSSIDInfo.bssid,
sizeof(param->data.getPairedSSIDInfo.bssid), bssid);
1217 memset(securityModeString,0,BUFF_LENGTH_32);
1218 convertSecurityModeToString(securityModeString,tmpSavedWiFiConnList.ssidSession.security_mode);
1219 strncpy(param->data.getPairedSSIDInfo.security,securityModeString,BUFF_LENGTH_32-1);
1220 LOG_INFO(
"[%s] getPairedSSIDInfo SSID (%s) : BSSID (%s).", MODULE_NAME, ssid, bssid);
1221 param->status =
true;
1222 ret = IARM_RESULT_SUCCESS;
1226 LOG_ERR(
"[%s] Error in getting last ssid .", MODULE_NAME);
1234 IARM_Result_t WiFiNetworkMgr::isPaired(
void *arg)
1236 IARM_Result_t ret = IARM_RESULT_SUCCESS;
1237 #ifdef USE_RDK_WIFI_HAL
1241 memset(&tmpSavedWiFiConnList,
'\0',
sizeof(tmpSavedWiFiConnList));
1249 #ifdef USE_RDK_WIFI_HAL
1250 retVal=lastConnectedSSID(&tmpSavedWiFiConnList);
1253 int ssid_len = strlen(tmpSavedWiFiConnList.ssidSession.ssid);
1255 param->data.isPaired = (ssid_len) ?
true :
false; ;
1257 if(param->data.isPaired) {
1258 LOG_TRACE(
"[%s] This is Paired with \"%s\".", MODULE_NAME, tmpSavedWiFiConnList.ssidSession.ssid);
1261 LOG_ERR(
"[%s] This is Not Paired with \"%s\".", MODULE_NAME, tmpSavedWiFiConnList.ssidSession.ssid);
1263 param->status =
true;
1272 IARM_Result_t WiFiNetworkMgr::getConnectedSSID(
void *arg)
1274 IARM_Result_t ret = IARM_RESULT_SUCCESS;
1280 param->status =
true;
1283 #ifdef USE_RDK_WIFI_HAL
1294 IARM_Result_t WiFiNetworkMgr::cancelWPSPairing (
void *arg)
1296 IARM_Result_t ret = IARM_RESULT_SUCCESS;
1302 #ifdef USE_RDK_WIFI_HAL
1303 retVal = cancelWPSPairingOperation();
1305 param->status = retVal;
1311 #ifdef USE_RDK_WIFI_HAL
1312 static void _irEventHandler(
const char *owner, IARM_EventId_t eventId,
void *data,
size_t len)
1317 if(confProp.wifiProps.disableWpsXRE)
1321 LOG_DBG(
"[%s] Enter", MODULE_NAME);
1322 int keyCode = irEventData->data.irkey.keyCode;
1323 int keyType = irEventData->data.irkey.keyType;
1324 int isFP = irEventData->data.irkey.isFP;
1327 if (
keyType == KET_KEYDOWN && keyCode == KED_WPS)
1329 pthread_mutex_lock(&wpsConnLock);
1330 LOG_INFO(
"[%s] Received Key info [Type : %d; Code : %d; isFP : %d ]", MODULE_NAME,
keyType, keyCode, isFP );
1332 pthread_mutex_unlock(&wpsConnLock);
1338 LOG_DBG(
"[%s] Disabled WPS event by default. Now, WPS key functionality handled by XRE and disabled in netsrvmgr.", MODULE_NAME );
1345 IARM_Result_t WiFiNetworkMgr::getRadioProps(
void *arg)
1347 IARM_Result_t ret = IARM_RESULT_SUCCESS;
1348 #ifdef USE_RDK_WIFI_HAL
1349 unsigned char output_bool[BUFF_MIN] = {
'\0'};
1350 char output_string[BUFF_MAX] = {
'\0'};
1352 unsigned long output_ulong = 0;
1354 char freqBand[BUFF_MIN] = {
'\0'};
1360 memset(output_bool,0,BUFF_MIN);
1362 LOG_DBG(
"[%s] radio enable is %s .", MODULE_NAME, output_bool);
1364 param->data.radio.params.enable=*output_bool;
1365 LOG_DBG(
"[%s] radio enable is %s .", MODULE_NAME, param->data.radio.params.enable ?
"true" :
"false");
1369 LOG_ERR(
"[%s] HAL wifi_getRadioEnable FAILURE ", MODULE_NAME);
1371 memset(output_string,0,BUFF_MAX);
1373 LOG_DBG(
"[%s] radio status is %s ", MODULE_NAME, output_string);
1374 snprintf(param->data.radio.params.status,BUFF_MIN,output_string);
1378 LOG_ERR(
"[%s] HAL wifi_getRadioStatus FAILURE ", MODULE_NAME);
1380 memset(output_string,0,BUFF_MAX);
1382 LOG_DBG(
"[%s] radio ifname is %s .", MODULE_NAME, output_string);
1383 snprintf(param->data.radio.params.name,BUFF_LENGTH_24,output_string);
1387 LOG_ERR(
"[%s] HAL wifi_getRadioIfName FAILURE ", MODULE_NAME);
1389 memset(output_string,0,BUFF_MAX);
1391 LOG_DBG(
"[%s] max bit rate is %s ", MODULE_NAME, output_string);
1392 param->data.radio.params.maxBitRate=atoi(output_string);
1397 LOG_ERR(
"[%s] HAL wifi_getRadioMaxBitRate FAILURE ", MODULE_NAME);
1399 memset(output_bool,0,BUFF_MIN);
1401 LOG_DBG(
"[%s] auto channel supported is %s .", MODULE_NAME, output_bool);
1402 param->data.radio.params.autoChannelSupported=output_bool == (
unsigned char*)
"true";
1406 LOG_ERR(
"[%s] HAL wifi_getRadioAutoChannelSupported FAILURE ", MODULE_NAME);
1408 memset(output_bool,0,BUFF_MIN);
1410 LOG_DBG(
"[%s] auto channel enable is %s ", MODULE_NAME, output_bool);
1411 param->data.radio.params.autoChannelEnable=output_bool == (
unsigned char*)
"true";
1415 LOG_ERR(
"[%s] HAL wifi_getRadioAutoChannelEnable FAILURE ", MODULE_NAME);
1418 LOG_DBG(
"[%s] auto channel refresh period is %lu ", MODULE_NAME, output_ulong);
1419 param->data.radio.params.autoChannelRefreshPeriod=output_ulong;
1423 LOG_ERR(
"[%s] HAL wifi_getRadioAutoChannelRefreshPeriod FAILURE ", MODULE_NAME);
1425 memset(output_string,0,BUFF_MAX);
1427 LOG_DBG(
"[%s] radio ext channel is %s .", MODULE_NAME, output_string);
1428 snprintf(param->data.radio.params.extensionChannel,BUFF_LENGTH_24,output_string);
1432 LOG_ERR(
"[%s] HAL wifi_getRadioExtChannel FAILURE ", MODULE_NAME);
1434 memset(output_string,0,BUFF_MAX);
1436 LOG_DBG(
"[%s] radio guard is %s ", MODULE_NAME, output_string);
1437 snprintf(param->data.radio.params.guardInterval,BUFF_LENGTH_24,output_string);
1441 LOG_ERR(
"[%s] HAL wifi_getRadioGuarderval FAILURE ", MODULE_NAME);
1445 LOG_DBG(
"[%s] radio ext channel is %d ", MODULE_NAME, output_INT);
1446 param->data.radio.params.mcs=output_INT;
1450 LOG_ERR(
"[%s] HAL wifi_getRadioMCS FAILURE ", MODULE_NAME);
1452 memset(output_string,0,BUFF_MAX);
1454 LOG_DBG(
"[%s] radio transmit power support is %s .", MODULE_NAME, output_string);
1455 snprintf(param->data.radio.params.transmitPowerSupported,BUFF_LENGTH_64,output_string);
1459 LOG_ERR(
"[%s] HAL wifi_getRadioTransmitPowerSupported FAILURE", MODULE_NAME);
1463 LOG_DBG(
"[%s] radio transmit power is %lu .", MODULE_NAME, output_ulong);
1467 LOG_ERR(
"[%s] HAL wifi_getRadioTransmitPower FAILURE", MODULE_NAME);
1469 memset(output_bool,0,BUFF_MIN);
1471 LOG_DBG(
"[%s] IEEE80211h Supp is %s ", MODULE_NAME, output_bool);
1476 LOG_ERR(
"[%s] HAL wifi_getRadioIEEE80211hSupported FAILURE", MODULE_NAME);
1478 memset(output_bool,0,BUFF_MIN);
1480 LOG_DBG(
"[%s] IEEE80211hEnabled is %s ", MODULE_NAME, output_bool);
1485 LOG_ERR(
"[%s] HAL wifi_getRadioIEEE80211hEnabled FAILURE", MODULE_NAME);
1489 LOG_DBG(
"[%s] radio channel is %lu .", MODULE_NAME, output_ulong);
1490 param->data.radio.params.channel=output_ulong;
1494 LOG_ERR(
"[%s] HAL wifi_getRadioChannel FAILURE", MODULE_NAME);
1496 memset(output_string,0,BUFF_MAX);
1498 LOG_DBG(
"[%s] radio channels in use is %s .", MODULE_NAME, output_string);
1499 snprintf(param->data.radio.params.channelsInUse,BUFF_LENGTH_24,output_string);
1503 LOG_ERR(
"[%s] HAL wifi_getRadioChannelsInUse FAILURE ", MODULE_NAME);
1505 memset(output_string,0,BUFF_MAX);
1507 LOG_DBG(
"[%s] operating channel bandwith is %s .", MODULE_NAME, output_string);
1508 snprintf(param->data.radio.params.operatingChannelBandwidth,BUFF_LENGTH_24,output_string);
1512 LOG_ERR(
"[%s] HAL wifi_getRadioOperatingChannelBandwidth FAILURE ", MODULE_NAME);
1514 memset(output_string,0,BUFF_MAX);
1516 LOG_DBG(
"[%s] Supported frequency band is %s .", MODULE_NAME, output_string);
1517 snprintf(param->data.radio.params.supportedFrequencyBands,BUFF_LENGTH_24,output_string);
1521 LOG_ERR(
"[%s] HAL wifi_getRadioSupportedFrequencyBands FAILURE ", MODULE_NAME);
1523 memset(output_string,0,BUFF_MAX);
1524 memset(freqBand,0,BUFF_MIN);
1526 LOG_DBG(
"[%s] operating frequency band is %s .", MODULE_NAME, output_string);
1527 snprintf(param->data.radio.params.operatingFrequencyBand,BUFF_LENGTH_24,output_string);
1528 strncpy(freqBand,output_string,BUFF_MIN-1);
1532 LOG_ERR(
"[%s] HAL wifi_getRadioOperatingFrequencyBand FAILURE", MODULE_NAME);
1534 memset(output_string,0,BUFF_MAX);
1536 int actualRadioIndex = 0;
1537 if(strncmp(freqBand,
"5GHz",BUFF_MIN-1) == 0)
1538 actualRadioIndex = 1;
1541 LOG_DBG(
"[%s] radio Supported standards are %s .", MODULE_NAME, output_string);
1542 snprintf(param->data.radio.params.supportedStandards,BUFF_LENGTH_24,output_string);
1545 LOG_ERR(
"[%s] HAL wifi_getRadioSupportedStandards FAILURE ", MODULE_NAME);
1548 memset(output_string,0,BUFF_MAX);
1550 LOG_DBG(
"[%s] radio standards is %s .", MODULE_NAME, output_string);
1551 snprintf(param->data.radio.params.operatingStandards,BUFF_MIN,output_string);
1555 LOG_ERR(
"[%s] HAL wifi_getRadioStandard FAILURE ", MODULE_NAME);
1557 memset(output_string,0,BUFF_MAX);
1559 LOG_DBG(
"[%s] radio possible channels is %s ", MODULE_NAME, output_string);
1560 snprintf(param->data.radio.params.possibleChannels,BUFF_LENGTH_256,output_string);
1564 LOG_ERR(
"[%s] HAL wifi_getRadioPossibleChannels FAILURE", MODULE_NAME);
1568 LOG_DBG(
"[%s] Radio TransmitPower %d .", MODULE_NAME, output_INT);
1569 param->data.radio.params.transmitPower = output_INT;
1573 LOG_ERR(
"[%s] Failed to get HAL wifi_getRadioTransmitPower.", MODULE_NAME);
1575 memset(output_string,0,BUFF_MAX);
1577 LOG_DBG(
"[%s] Radio wifi_getRegulatoryDomain is %s .", MODULE_NAME, output_string);
1578 snprintf(param->data.radio.params.regulatoryDomain,BUFF_LENGTH_4,output_string);
1582 LOG_ERR(
"[%s] Failed to get wifi_getRegulatoryDomain.", MODULE_NAME);
1586 param->status =
true;
1591 IARM_Result_t WiFiNetworkMgr::setRadioProps(
void *arg)
1593 IARM_Result_t ret = IARM_RESULT_SUCCESS;
1600 IARM_Result_t WiFiNetworkMgr::getRadioStatsProps(
void *arg)
1602 IARM_Result_t ret = IARM_RESULT_SUCCESS;
1603 #ifdef USE_RDK_WIFI_HAL
1605 param->status =
getRadioStats(¶m->data.radio_stats.params);
1610 IARM_Result_t WiFiNetworkMgr::getSSIDProps(
void *arg)
1612 IARM_Result_t ret = IARM_RESULT_SUCCESS;
1613 #ifdef USE_RDK_WIFI_HAL
1614 unsigned long output_ulong;
1620 char output_string[BUFF_MAX];
1622 memset(output_string,0, BUFF_MAX);
1624 if(param->numEntry == IARM_BUS_WIFI_MGR_SSIDEntry)
1627 LOG_DBG(
"[%s] SSID Entries is %lu ", MODULE_NAME, output_ulong);
1628 param->data.ssidNumberOfEntries=(
unsigned int)output_ulong;
1629 LOG_DBG(
"[%s] SSID Entries param->data.ssidNumberOfEntries is %d .", MODULE_NAME, param->data.ssidNumberOfEntries);
1634 LOG_ERR(
"[%s] HAL wifi_getSSIDEntries FAILURE ", MODULE_NAME);
1637 else if(param->numEntry == IARM_BUS_WIFI_MGR_RadioEntry)
1640 LOG_DBG(
"[%s] Radio Entries is %lu .", MODULE_NAME, output_ulong);
1641 param->data.radioNumberOfEntries=(
unsigned int)output_ulong;
1642 LOG_DBG(
"[%s] Radio Entries param->data.radioNumberOfEntries is %d .", MODULE_NAME, param->data.ssidNumberOfEntries);
1647 LOG_ERR(
"[%s] HAL wifi_getRadioNumberOfEntries FAILURE", MODULE_NAME);
1653 LOG_DBG(
"[%s] SSID Name is %s .", MODULE_NAME, output_string);
1654 snprintf(param->data.ssid.params.name,BUFF_LENGTH_32,output_string);
1655 LOG_DBG(
"[%s] SSID Name is %s .", MODULE_NAME, param->data.ssid.params.name);
1660 LOG_ERR(
"[%s] HAL wifi_getSSIDName FAILURE", MODULE_NAME);
1663 memset(output_string,0, BUFF_MAX);
1665 LOG_DBG(
"[%s] BSSID is %s .", MODULE_NAME, output_string);
1666 snprintf(param->data.ssid.params.bssid,BUFF_MAC,output_string);
1667 LOG_DBG(
"[%s] BSSID is %s .", MODULE_NAME, param->data.ssid.params.bssid);
1671 LOG_ERR(
"[%s] HAL wifi_getBaseBSSID FAILURE ", MODULE_NAME);
1673 memset(output_string,0, BUFF_MAX);
1674 if (gWifiMacAddress[0] !=
'\0') {
1675 LOG_DBG(
"[%s] SSID MAC address is %s ",MODULE_NAME, gWifiMacAddress);
1676 snprintf(param->data.ssid.params.macaddr,BUFF_MAC, gWifiMacAddress);
1677 LOG_DBG(
"[%s] SSID MAC address is %s .",MODULE_NAME, param->data.ssid.params.macaddr);
1681 LOG_ERR(
"[%s] HAL wifi_getSSIDMACAddress FAILURE", MODULE_NAME);
1683 memset(&currSsidInfo,
'\0',
sizeof(currSsidInfo));
1685 STRCPY_S(param->data.ssid.params.ssid,
sizeof(param->data.ssid.params.ssid), currSsidInfo.ssidSession.ssid);
1686 if(currSsidInfo.ssidSession.ssid[0] !=
'\0')
1688 LOG_DBG(
"[%s] get current SSID (%s).", MODULE_NAME, currSsidInfo.ssidSession.ssid);
1692 memset(&currSsidInfo,
'\0',
sizeof(currSsidInfo));
1693 getWpaSsid(&currSsidInfo);
1694 STRCPY_S(param->data.ssid.params.ssid,
sizeof(param->data.ssid.params.ssid), currSsidInfo.ssidSession.ssid);
1696 if(currSsidInfo.ssidSession.ssid[0] !=
'\0')
1698 LOG_DBG(
"[%s] get current SSID (%s).", MODULE_NAME, currSsidInfo.ssidSession.ssid);
1702 LOG_ERR(
"[%s] Empty SSID", MODULE_NAME);
1707 LOG_DBG(
"[%s] getPairedSSID SSID (%s).", MODULE_NAME, currSsidInfo.ssidSession.ssid);
1710 param->data.ssid.params.enable =
true;
1711 snprintf(param->data.ssid.params.status,BUFF_MIN,
"UP");
1715 status = getWpaStatus();
1718 param->data.ssid.params.enable =
true;
1719 snprintf(param->data.ssid.params.status,BUFF_MIN,
"UP");
1723 param->data.ssid.params.enable =
false;
1724 snprintf(param->data.ssid.params.status,BUFF_MIN,
"DOWN");
1734 #ifdef ENABLE_LOST_FOUND
1736 static void _eventHandler(
const char *owner, IARM_EventId_t eventId,
void *data,
size_t len)
1739 if (strcmp(owner, IARM_BUS_AUTHSERVICE_NAME) == 0) {
1741 case IARM_BUS_AUTHSERVICE_EVENT_SWITCH_TO_PRIVATE:
1743 IARM_BUS_AuthService_EventData_t *param = (IARM_BUS_AuthService_EventData_t *)data;
1744 if (param->value == DEVICE_ACTIVATED)
1746 LOG_INFO(
"[%s] Auth service msg Box Activated ", MODULE_NAME);
1747 bDeviceActivated =
true;
1755 else if (strcmp(owner, IARM_BUS_NM_SRV_MGR_NAME) == 0) {
1757 case IARM_BUS_NETWORK_MANAGER_EVENT_SWITCH_TO_PRIVATE:
1760 if ((!bDeviceActivated)&&(param->value == DEVICE_ACTIVATED))
1762 LOG_INFO(
"[%s] Service Manager msg Box Activated ", MODULE_NAME);
1763 bDeviceActivated =
true;
1765 if(!bAutoSwitchToPrivateEnabled)
1767 LOG_INFO(
"[%s] explicit call to switch to private", MODULE_NAME);
1768 bSwitch2Private=
true;
1769 lnfConnectPrivCredentials();
1773 case IARM_BUS_NETWORK_MANAGER_EVENT_STOP_LNF_WHILE_DISCONNECTED:
1775 bool *param = (
bool *)data;
1776 if(*param == bStopLNFWhileDisconnected)
1778 LOG_INFO(
"[%s] Discarding stopLNFWhileDisconnected event since there is no change in value existing %d new %d ", MODULE_NAME,bStopLNFWhileDisconnected,*param);
1781 LOG_INFO(
"[%s] event handler of stopLNFWhileDisconnected old value %d current value %d", MODULE_NAME, bStopLNFWhileDisconnected,*param);
1782 bStopLNFWhileDisconnected=*param;
1783 if((!bStopLNFWhileDisconnected) && (confProp.wifiProps.bEnableLostFound) && (gWifiLNFStatus != CONNECTED_PRIVATE))
1785 lnfConnectPrivCredentials();
1786 LOG_INFO(
"[%s] starting LnF since stopLNFWhileDisconnected value is %d.",MODULE_NAME,bStopLNFWhileDisconnected);
1790 case IARM_BUS_NETWORK_MANAGER_EVENT_AUTO_SWITCH_TO_PRIVATE_ENABLED:
1792 bool *param = (
bool *)data;
1793 if(*param == bAutoSwitchToPrivateEnabled)
1795 LOG_INFO(
"[%s] Discarding event bAutoSwitchToPrivateEnabled since there is no change in value existing %d new %d", MODULE_NAME,bAutoSwitchToPrivateEnabled,*param);
1798 LOG_INFO(
"[%s] event handler of bAutoSwitchToPrivateEnabled old value %d current value %d ", MODULE_NAME,bAutoSwitchToPrivateEnabled,*param);
1799 bAutoSwitchToPrivateEnabled=*param;
1800 if((gWifiLNFStatus != CONNECTED_PRIVATE) && bAutoSwitchToPrivateEnabled)
1802 lnfConnectPrivCredentials();
1803 LOG_INFO(
"[%s] starting LnF since AutoSwitchToPrivateEnabled value is %d.", MODULE_NAME,bAutoSwitchToPrivateEnabled);
1825 IARM_Result_t WiFiNetworkMgr::sysModeChange(
void *arg)
1828 IARM_Bus_CommonAPI_SysModeChange_Param_t *param = (IARM_Bus_CommonAPI_SysModeChange_Param_t *)arg;
1829 LOG_INFO(
"[%s] Sys Mode Change::New mode --> %d, Old mode --> %d", MODULE_NAME, param->newMode,param->oldMode);
1830 sysModeParam=param->newMode;
1831 if(IARM_BUS_SYS_MODE_WAREHOUSE == sysModeParam)
1833 LOG_INFO(
"[%s] Trigger Dhcp lease since we are in warehouse mode",MODULE_NAME );
1834 netSrvMgrUtiles::triggerDhcpRenew();
1837 return IARM_RESULT_SUCCESS;
1848 IARM_Result_t WiFiNetworkMgr::getEndPointProps(
void *arg)
1856 param->status =
true;
1857 memset(¶m->data.endPointInfo,
'\0',
sizeof(param->data.endPointInfo));
1859 #ifdef USE_RDK_WIFI_HAL
1864 return IARM_RESULT_SUCCESS;
1868 #ifdef WIFI_CLIENT_ROAMING
1869 IARM_Result_t WiFiNetworkMgr::getRoamingCtrls(
void *arg)
1871 IARM_Result_t ret = IARM_RESULT_SUCCESS;
1874 WiFi_RoamingCtrl_t *param = (WiFi_RoamingCtrl_t *)arg;
1875 memset(param,0,
sizeof(WiFi_RoamingCtrl_t));
1876 retVal = getRoamingConfigInfo(param);
1877 ret = (retVal==
true?IARM_RESULT_SUCCESS:IARM_RESULT_IPCCORE_FAIL);
1883 IARM_Result_t WiFiNetworkMgr::setRoamingCtrls(
void *arg)
1885 IARM_Result_t ret = IARM_RESULT_SUCCESS;
1888 WiFi_RoamingCtrl_t *param = (WiFi_RoamingCtrl_t *)arg;
1889 retVal = setRoamingConfigInfo(param);
1890 ret = (retVal==
true?IARM_RESULT_SUCCESS:IARM_RESULT_IPCCORE_FAIL);