36 #ifdef USE_WIFI_PROFILE
44 #include "wifi_client_hal.h"
45 #include "wifiSrvMgrIarmIf.h"
48 GHashTable* hostIf_WiFi_Radio::ifHash = NULL;
64 ifHash = g_hash_table_new(NULL,NULL);
73 RDK_LOG(RDK_LOG_WARN,LOG_TR69HOSTIF,
"Caught exception, not able create hostIf_WiFi_Radio instance..\n");
75 g_hash_table_insert(ifHash,(gpointer)dev_id, pRet);
88 GList* hostIf_WiFi_Radio::getAllAssociateDevs()
91 return g_hash_table_get_keys(ifHash);
99 g_hash_table_remove(ifHash, (gconstpointer)pDev->dev_id);
105 void hostIf_WiFi_Radio::closeAllInstances()
109 GList* tmp_list = g_hash_table_get_values (ifHash);
114 tmp_list = tmp_list->next;
120 hostIf_WiFi_Radio::hostIf_WiFi_Radio(
int dev_id):
128 AutoChannelSupported(false),
129 AutoChannelEnable(false),
130 AutoChannelRefreshPeriod (0),
132 IEEE80211hSupported (false),
133 IEEE80211hEnabled (false),
136 memset(Status, 0,
sizeof(Status));
137 memset(Alias,0,
sizeof(Alias));
138 memset(Name,0,
sizeof(Name));
139 memset(LowerLayers,0,
sizeof(LowerLayers));
140 memset(SupportedFrequencyBands,0,
sizeof(SupportedFrequencyBands));
141 memset(OperatingFrequencyBand,0,
sizeof(OperatingFrequencyBand));
142 memset(SupportedStandards, 0,
sizeof(SupportedStandards));
143 memset(OperatingStandards, 0,
sizeof(OperatingStandards));
144 memset(PossibleChannels, 0,
sizeof(PossibleChannels));
145 memset(ChannelsInUse, 0,
sizeof(ChannelsInUse));
146 memset(OperatingChannelBandwidth, 0,
sizeof(OperatingChannelBandwidth));
147 memset(ExtensionChannel, 0,
sizeof(ExtensionChannel));
148 memset(GuardInterval, 0,
sizeof(GuardInterval));
149 memset(TransmitPowerSupported, 0,
sizeof(TransmitPowerSupported));
150 memset(RegulatoryDomain, 0,
sizeof(RegulatoryDomain));
154 int hostIf_WiFi_Radio::get_Device_WiFi_Radio_Props_Fields(
int radioIndex)
156 IARM_Result_t retVal = IARM_RESULT_SUCCESS;
160 RDK_LOG(RDK_LOG_TRACE1,LOG_TR69HOSTIF,
"[%s:%s] Entering..\n", __FUNCTION__, __FILE__);
165 if (IARM_RESULT_SUCCESS != retVal)
167 RDK_LOG(RDK_LOG_ERROR,LOG_TR69HOSTIF,
"[%s:%s] IARM BUS CALL failed with : %d.\n", __FILE__, __FUNCTION__, retVal);
170 Enable = param.data.radio.params.enable;
171 snprintf(Status,BUFF_LENGTH_64,param.data.radio.params.status);
172 snprintf(Alias,BUFF_LENGTH_64,param.data.radio.params.alias);
173 snprintf(Name,BUFF_LENGTH_64,param.data.radio.params.name);
174 LastChange = param.data.radio.params.lastChange;
175 snprintf(LowerLayers,BUFF_LENGTH_1024,param.data.radio.params.lowerLayers);
176 Upstream = param.data.radio.params.upstream;
177 MaxBitRate = param.data.radio.params.maxBitRate;
178 snprintf(SupportedFrequencyBands,BUFF_LENGTH_256,param.data.radio.params.supportedFrequencyBands);
179 snprintf(OperatingFrequencyBand,BUFF_LENGTH_64,param.data.radio.params.operatingFrequencyBand);
180 snprintf(SupportedStandards,BUFF_LENGTH_64,param.data.radio.params.supportedStandards);
181 snprintf(OperatingStandards,BUFF_LENGTH_64,param.data.radio.params.operatingStandards);
182 snprintf(PossibleChannels,BUFF_LENGTH_256,param.data.radio.params.possibleChannels);
183 snprintf(ChannelsInUse,BUFF_LENGTH_1024,param.data.radio.params.channelsInUse);
184 Channel = param.data.radio.params.channel;
185 AutoChannelSupported = param.data.radio.params.autoChannelSupported;
186 AutoChannelEnable = param.data.radio.params.autoChannelEnable;
187 AutoChannelRefreshPeriod = param.data.radio.params.autoChannelRefreshPeriod;
188 snprintf(OperatingChannelBandwidth,BUFF_LENGTH_1024,param.data.radio.params.operatingChannelBandwidth);
189 snprintf(ExtensionChannel,BUFF_LENGTH_64,param.data.radio.params.extensionChannel);
190 snprintf(GuardInterval,BUFF_LENGTH_64,param.data.radio.params.guardInterval);
191 mcs = param.data.radio.params.mcs;
192 snprintf(TransmitPowerSupported,BUFF_LENGTH_64,param.data.radio.params.transmitPowerSupported);
193 TransmitPower = param.data.radio.params.transmitPower;
196 snprintf(RegulatoryDomain,BUFF_MIN_16,param.data.radio.params.regulatoryDomain);
197 radioFirstExTime = time (NULL);
198 RDK_LOG(RDK_LOG_TRACE1,LOG_TR69HOSTIF,
"[%s:%s] Exiting..\n", __FUNCTION__, __FILE__);
203 RDK_LOG(RDK_LOG_ERROR,LOG_TR69HOSTIF,
"[%s:%s]Error! Unable to connect to wifi instance\n", __FILE__, __FUNCTION__);
208 void hostIf_WiFi_Radio::checkWifiRadioFetch(
int radioIndex)
211 time_t currExTime = time (NULL);
212 if((currExTime - radioFirstExTime ) > QUERY_INTERVAL)
214 retVal = get_Device_WiFi_Radio_Props_Fields(radioIndex);
217 RDK_LOG(RDK_LOG_ERROR,LOG_TR69HOSTIF,
"[%s:%s] Failed to fetch : %d.\n", __FILE__, __FUNCTION__, retVal);
225 RDK_LOG(RDK_LOG_TRACE1,LOG_TR69HOSTIF,
"[%s:%s] Entering..\n", __FUNCTION__, __FILE__);
226 checkWifiRadioFetch(radioIndex);
228 stMsgData->
paramtype = hostIf_BooleanType;
230 RDK_LOG(RDK_LOG_TRACE1,LOG_TR69HOSTIF,
"[%s:%s] Exiting..\n", __FUNCTION__, __FILE__);
237 RDK_LOG(RDK_LOG_TRACE1,LOG_TR69HOSTIF,
"[%s:%s] Entering..\n", __FUNCTION__, __FILE__);
238 checkWifiRadioFetch(radioIndex);
240 stMsgData->
paramtype = hostIf_BooleanType;
242 RDK_LOG(RDK_LOG_TRACE1,LOG_TR69HOSTIF,
"[%s:%s] Exiting..\n", __FUNCTION__, __FILE__);
250 RDK_LOG(RDK_LOG_TRACE1,LOG_TR69HOSTIF,
"[%s:%s] Entering..\n", __FUNCTION__, __FILE__);
251 checkWifiRadioFetch(radioIndex);
253 stMsgData->
paramtype = hostIf_BooleanType;
255 RDK_LOG(RDK_LOG_TRACE1,LOG_TR69HOSTIF,
"[%s:%s] Exiting..\n", __FUNCTION__, __FILE__);
263 RDK_LOG(RDK_LOG_TRACE1,LOG_TR69HOSTIF,
"[%s:%s] Entering..\n", __FUNCTION__, __FILE__);
264 checkWifiRadioFetch(radioIndex);
266 stMsgData->
paramtype = hostIf_BooleanType;
268 RDK_LOG(RDK_LOG_TRACE1,LOG_TR69HOSTIF,
"[%s:%s] Exiting..\n", __FUNCTION__, __FILE__);
272 int hostIf_WiFi_Radio::get_Device_WiFi_Radio_IEEE80211hSupported(
HOSTIF_MsgData_t *stMsgData,
int radioIndex )
276 RDK_LOG(RDK_LOG_TRACE1,LOG_TR69HOSTIF,
"[%s:%s] Entering..\n", __FUNCTION__, __FILE__);
277 checkWifiRadioFetch(radioIndex);
279 stMsgData->
paramtype = hostIf_BooleanType;
281 RDK_LOG(RDK_LOG_TRACE1,LOG_TR69HOSTIF,
"[%s:%s] Exiting..\n", __FUNCTION__, __FILE__);
285 int hostIf_WiFi_Radio::get_Device_WiFi_Radio_IEEE80211hEnabled(
HOSTIF_MsgData_t *stMsgData,
int radioIndex )
289 RDK_LOG(RDK_LOG_TRACE1,LOG_TR69HOSTIF,
"[%s:%s] Entering..\n", __FUNCTION__, __FILE__);
290 checkWifiRadioFetch(radioIndex);
292 stMsgData->
paramtype = hostIf_BooleanType;
294 RDK_LOG(RDK_LOG_TRACE1,LOG_TR69HOSTIF,
"[%s:%s] Exiting..\n", __FUNCTION__, __FILE__);
300 RDK_LOG(RDK_LOG_TRACE1,LOG_TR69HOSTIF,
"[%s:%s] Entering..\n", __FUNCTION__, __FILE__);
301 checkWifiRadioFetch(radioIndex);
303 stMsgData->
paramtype = hostIf_UnsignedIntType;
305 RDK_LOG(RDK_LOG_TRACE1,LOG_TR69HOSTIF,
"[%s:%s] Exiting..\n", __FUNCTION__, __FILE__);
311 RDK_LOG(RDK_LOG_TRACE1,LOG_TR69HOSTIF,
"[%s:%s] Entering..\n", __FUNCTION__, __FILE__);
312 checkWifiRadioFetch(radioIndex);
314 stMsgData->
paramtype = hostIf_UnsignedIntType;
316 RDK_LOG(RDK_LOG_TRACE1,LOG_TR69HOSTIF,
"[%s:%s] Exiting..\n", __FUNCTION__, __FILE__);
322 RDK_LOG(RDK_LOG_TRACE1,LOG_TR69HOSTIF,
"[%s:%s] Entering..\n", __FUNCTION__, __FILE__);
323 checkWifiRadioFetch(radioIndex);
325 stMsgData->
paramtype = hostIf_UnsignedIntType;
327 RDK_LOG(RDK_LOG_TRACE1,LOG_TR69HOSTIF,
"[%s:%s] Exiting..\n", __FUNCTION__, __FILE__);
331 int hostIf_WiFi_Radio::get_Device_WiFi_Radio_AutoChannelRefreshPeriod(
HOSTIF_MsgData_t *stMsgData,
int radioIndex )
333 RDK_LOG(RDK_LOG_TRACE1,LOG_TR69HOSTIF,
"[%s:%s] Entering..\n", __FUNCTION__, __FILE__);
334 checkWifiRadioFetch(radioIndex);
336 stMsgData->
paramtype = hostIf_UnsignedIntType;
338 RDK_LOG(RDK_LOG_TRACE1,LOG_TR69HOSTIF,
"[%s:%s] Exiting..\n", __FUNCTION__, __FILE__);
342 int hostIf_WiFi_Radio::get_Device_WiFi_Radio_MCS(
HOSTIF_MsgData_t *stMsgData,
int radioIndex )
344 RDK_LOG(RDK_LOG_TRACE1,LOG_TR69HOSTIF,
"[%s:%s] Entering..\n", __FUNCTION__, __FILE__);
345 checkWifiRadioFetch(radioIndex);
347 stMsgData->
paramtype = hostIf_IntegerType;
349 RDK_LOG(RDK_LOG_TRACE1,LOG_TR69HOSTIF,
"[%s:%s] Exiting..\n", __FUNCTION__, __FILE__);
353 int hostIf_WiFi_Radio::get_Device_WiFi_Radio_TransmitPower(
HOSTIF_MsgData_t *stMsgData,
int radioIndex )
355 RDK_LOG(RDK_LOG_TRACE1,LOG_TR69HOSTIF,
"[%s:%s] Entering..\n", __FUNCTION__, __FILE__);
356 checkWifiRadioFetch(radioIndex);
358 stMsgData->
paramtype = hostIf_IntegerType;
360 RDK_LOG(RDK_LOG_TRACE1,LOG_TR69HOSTIF,
"[%s:%s] Exiting..\n", __FUNCTION__, __FILE__);
366 RDK_LOG(RDK_LOG_TRACE1,LOG_TR69HOSTIF,
"[%s:%s] Entering..\n", __FUNCTION__, __FILE__);
367 checkWifiRadioFetch(radioIndex);
368 strncpy(stMsgData->
paramValue, Status,TR69HOSTIFMGR_MAX_PARAM_LEN);
369 stMsgData->
paramtype = hostIf_StringType;
370 stMsgData->
paramLen = strlen(Status);
371 RDK_LOG(RDK_LOG_TRACE1,LOG_TR69HOSTIF,
"[%s:%s] Exiting..\n", __FUNCTION__, __FILE__);
377 RDK_LOG(RDK_LOG_TRACE1,LOG_TR69HOSTIF,
"[%s:%s] Entering..\n", __FUNCTION__, __FILE__);
378 checkWifiRadioFetch(radioIndex);
379 strncpy(stMsgData->
paramValue, Alias,TR69HOSTIFMGR_MAX_PARAM_LEN);
380 stMsgData->
paramtype = hostIf_StringType;
381 stMsgData->
paramLen = strlen(Alias);
382 RDK_LOG(RDK_LOG_TRACE1,LOG_TR69HOSTIF,
"[%s:%s] Exiting..\n", __FUNCTION__, __FILE__);
388 RDK_LOG(RDK_LOG_TRACE1,LOG_TR69HOSTIF,
"[%s:%s] Entering..\n", __FUNCTION__, __FILE__);
389 checkWifiRadioFetch(radioIndex);
390 strncpy(stMsgData->
paramValue, Name,TR69HOSTIFMGR_MAX_PARAM_LEN);
391 stMsgData->
paramtype = hostIf_StringType;
393 RDK_LOG(RDK_LOG_TRACE1,LOG_TR69HOSTIF,
"[%s:%s] Exiting..\n", __FUNCTION__, __FILE__);
399 RDK_LOG(RDK_LOG_TRACE1,LOG_TR69HOSTIF,
"[%s:%s] Entering..\n", __FUNCTION__, __FILE__);
400 checkWifiRadioFetch(radioIndex);
401 strncpy(stMsgData->
paramValue, SupportedFrequencyBands,TR69HOSTIFMGR_MAX_PARAM_LEN);
402 stMsgData->
paramtype = hostIf_StringType;
403 stMsgData->
paramLen = strlen(SupportedFrequencyBands);
404 RDK_LOG(RDK_LOG_TRACE1,LOG_TR69HOSTIF,
"[%s:%s] Exiting..\n", __FUNCTION__, __FILE__);
410 RDK_LOG(RDK_LOG_TRACE1,LOG_TR69HOSTIF,
"[%s:%s] Entering..\n", __FUNCTION__, __FILE__);
411 checkWifiRadioFetch(radioIndex);
412 strncpy(stMsgData->
paramValue, OperatingFrequencyBand,TR69HOSTIFMGR_MAX_PARAM_LEN );
413 stMsgData->
paramtype = hostIf_StringType;
414 stMsgData->
paramLen = strlen(OperatingFrequencyBand);
415 RDK_LOG(RDK_LOG_TRACE1,LOG_TR69HOSTIF,
"[%s:%s] Exiting..\n", __FUNCTION__, __FILE__);
421 RDK_LOG(RDK_LOG_TRACE1,LOG_TR69HOSTIF,
"[%s:%s] Entering..\n", __FUNCTION__, __FILE__);
422 checkWifiRadioFetch(radioIndex);
423 strncpy(stMsgData->
paramValue, SupportedStandards,TR69HOSTIFMGR_MAX_PARAM_LEN );
424 stMsgData->
paramtype = hostIf_StringType;
425 stMsgData->
paramLen = strlen(SupportedStandards);
426 RDK_LOG(RDK_LOG_TRACE1,LOG_TR69HOSTIF,
"[%s:%s] Exiting..\n", __FUNCTION__, __FILE__);
432 RDK_LOG(RDK_LOG_TRACE1,LOG_TR69HOSTIF,
"[%s:%s] Entering..\n", __FUNCTION__, __FILE__);
433 checkWifiRadioFetch(radioIndex);
434 strncpy(stMsgData->
paramValue, OperatingStandards,TR69HOSTIFMGR_MAX_PARAM_LEN );
435 stMsgData->
paramtype = hostIf_StringType;
436 stMsgData->
paramLen = strlen(OperatingStandards);
437 RDK_LOG(RDK_LOG_TRACE1,LOG_TR69HOSTIF,
"[%s:%s] Exiting..\n", __FUNCTION__, __FILE__);
443 RDK_LOG(RDK_LOG_TRACE1,LOG_TR69HOSTIF,
"[%s:%s] Entering..\n", __FUNCTION__, __FILE__);
444 checkWifiRadioFetch(radioIndex);
445 strncpy(stMsgData->
paramValue, PossibleChannels,TR69HOSTIFMGR_MAX_PARAM_LEN);
446 stMsgData->
paramtype = hostIf_StringType;
447 stMsgData->
paramLen = strlen(PossibleChannels);
448 RDK_LOG(RDK_LOG_TRACE1,LOG_TR69HOSTIF,
"[%s:%s] Exiting..\n", __FUNCTION__, __FILE__);
454 RDK_LOG(RDK_LOG_TRACE1,LOG_TR69HOSTIF,
"[%s:%s] Entering..\n", __FUNCTION__, __FILE__);
455 checkWifiRadioFetch(radioIndex);
456 strncpy(stMsgData->
paramValue, ChannelsInUse,TR69HOSTIFMGR_MAX_PARAM_LEN );
457 stMsgData->
paramtype = hostIf_StringType;
458 stMsgData->
paramLen = strlen(ChannelsInUse);
459 RDK_LOG(RDK_LOG_TRACE1,LOG_TR69HOSTIF,
"[%s:%s] Exiting..\n", __FUNCTION__, __FILE__);
463 int hostIf_WiFi_Radio::get_Device_WiFi_Radio_OperatingChannelBandwidth(
HOSTIF_MsgData_t *stMsgData,
int radioIndex )
465 RDK_LOG(RDK_LOG_TRACE1,LOG_TR69HOSTIF,
"[%s:%s] Entering..\n", __FUNCTION__, __FILE__);
466 checkWifiRadioFetch(radioIndex);
467 strncpy(stMsgData->
paramValue, OperatingChannelBandwidth,TR69HOSTIFMGR_MAX_PARAM_LEN);
468 stMsgData->
paramtype = hostIf_StringType;
469 stMsgData->
paramLen = strlen(OperatingChannelBandwidth);
470 RDK_LOG(RDK_LOG_TRACE1,LOG_TR69HOSTIF,
"[%s:%s] Exiting..\n", __FUNCTION__, __FILE__);
474 int hostIf_WiFi_Radio::get_Device_WiFi_Radio_ExtensionChannel(
HOSTIF_MsgData_t *stMsgData,
int radioIndex )
476 RDK_LOG(RDK_LOG_TRACE1,LOG_TR69HOSTIF,
"[%s:%s] Entering..\n", __FUNCTION__, __FILE__);
477 checkWifiRadioFetch(radioIndex);
478 strncpy(stMsgData->
paramValue, ExtensionChannel,TR69HOSTIFMGR_MAX_PARAM_LEN );
479 stMsgData->
paramtype = hostIf_StringType;
480 stMsgData->
paramLen = strlen(ExtensionChannel);
481 RDK_LOG(RDK_LOG_TRACE1,LOG_TR69HOSTIF,
"[%s:%s] Exiting..\n", __FUNCTION__, __FILE__);
485 int hostIf_WiFi_Radio::get_Device_WiFi_Radio_GuardInterval(
HOSTIF_MsgData_t *stMsgData,
int radioIndex )
487 RDK_LOG(RDK_LOG_TRACE1,LOG_TR69HOSTIF,
"[%s:%s] Entering..\n", __FUNCTION__, __FILE__);
488 checkWifiRadioFetch(radioIndex);
489 strncpy(stMsgData->
paramValue, GuardInterval,TR69HOSTIFMGR_MAX_PARAM_LEN );
490 stMsgData->
paramtype = hostIf_StringType;
491 stMsgData->
paramLen = strlen(GuardInterval);
492 RDK_LOG(RDK_LOG_TRACE1,LOG_TR69HOSTIF,
"[%s:%s] Exiting..\n", __FUNCTION__, __FILE__);
498 RDK_LOG(RDK_LOG_TRACE1,LOG_TR69HOSTIF,
"[%s:%s] Entering..\n", __FUNCTION__, __FILE__);
499 checkWifiRadioFetch(radioIndex);
500 strncpy(stMsgData->
paramValue, LowerLayers,TR69HOSTIFMGR_MAX_PARAM_LEN );
501 stMsgData->
paramtype = hostIf_StringType;
502 stMsgData->
paramLen = strlen(LowerLayers);
503 RDK_LOG(RDK_LOG_TRACE1,LOG_TR69HOSTIF,
"[%s:%s] Exiting..\n", __FUNCTION__, __FILE__);
507 int hostIf_WiFi_Radio::get_Device_WiFi_Radio_TransmitPowerSupported(
HOSTIF_MsgData_t *stMsgData,
int radioIndex )
509 RDK_LOG(RDK_LOG_TRACE1,LOG_TR69HOSTIF,
"[%s:%s] Entering..\n", __FUNCTION__, __FILE__);
510 checkWifiRadioFetch(radioIndex);
511 strncpy(stMsgData->
paramValue, TransmitPowerSupported,TR69HOSTIFMGR_MAX_PARAM_LEN );
512 stMsgData->
paramtype = hostIf_StringType;
513 stMsgData->
paramLen = strlen(TransmitPowerSupported);
514 RDK_LOG(RDK_LOG_TRACE1,LOG_TR69HOSTIF,
"[%s:%s] Exiting..\n", __FUNCTION__, __FILE__);
518 int hostIf_WiFi_Radio::get_Device_WiFi_Radio_RegulatoryDomain(
HOSTIF_MsgData_t *stMsgData,
int radioIndex )
520 RDK_LOG(RDK_LOG_TRACE1,LOG_TR69HOSTIF,
"[%s:%s] Entering..\n", __FUNCTION__, __FILE__);
521 checkWifiRadioFetch(radioIndex);
522 strncpy(stMsgData->
paramValue, RegulatoryDomain,TR69HOSTIFMGR_MAX_PARAM_LEN);
523 stMsgData->
paramtype = hostIf_StringType;
524 stMsgData->
paramLen = strlen(RegulatoryDomain);
525 RDK_LOG(RDK_LOG_TRACE1,LOG_TR69HOSTIF,
"[%s:%s] Exiting..\n", __FUNCTION__, __FILE__);