37 #ifdef BTRTEST_SYS_DIAG_ENABLE
40 #include "wifiSrvMgrIarmIf.h"
46 #include "btrMgr_logger.h"
54 #ifdef BTRTEST_SYS_DIAG_ENABLE
55 IARM_Bus_PWRMgr_PowerState_t _powerState;
58 fPtr_BTRMgr_SD_StatusCb fpcBSdStatus;
65 static int btrMgr_SysDiag_getDeviceMAC(
char* aFileName,
unsigned char* aData);
66 static int btrMgr_SysDiag_getDiagInfoFromFile(
char* aFileName,
char* aData);
67 static int btrMgr_SysDiag_getDiagInfoFromPipe(
char* aCmd,
char* aData);
70 #ifdef BTRTEST_SYS_DIAG_ENABLE
71 static void btrMgr_SysDiag_powerModeChangeCb (
const char *owner, IARM_EventId_t eventId,
void *data,
size_t len);
76 btrMgr_SysDiag_getDeviceMAC (
81 unsigned char lElement;
84 unsigned int lDeviceMac[16];
88 int leBtrMgrAcRet = 0;
90 fPtr = fopen(aFileName,
"r");
92 printf(
"File cannot be opened\n");
95 while ((lElement = fgetc(fPtr)) !=
'\n') {
96 if (lElement !=
':') {
97 snprintf(temp,
sizeof(temp),
"%c", lElement);
98 sscanf(temp,
"%x", &ch);
99 lDeviceMac[index] = ch;
106 while (index < lDataLen) {
107 aData[count] = lDeviceMac[index] << 4;
109 aData[count] |= lDeviceMac[index++];
115 printf(
"device mac addr is %s\n", aData);
116 return leBtrMgrAcRet;
120 btrMgr_SysDiag_getDiagInfoFromFile (
125 int leBtrMgrAcRet = 0;
127 fPtr = fopen(aFileName,
"r");
130 printf(
"File cannot be opened\n");
133 if (NULL == fgets(aData, BTRMGR_STR_LEN_MAX, fPtr)) {
134 BTRMGRLOG_DEBUG(
"Could not parse output of <%s>\n", aFileName);
137 if (
'\n' == aData[strlen(aData) - 1]) {
138 aData[strlen(aData) - 1] =
'\0';
144 return leBtrMgrAcRet;
148 btrMgr_SysDiag_getDiagInfoFromPipe (
153 int leBtrMgrAcRet = 0;
155 fPipe = popen(aCmd,
"r");
158 BTRMGRLOG_DEBUG(
"Pipe failed to open\n");
161 if (NULL == fgets(aData, BTRMGR_STR_LEN_MAX, fPipe)) {
162 BTRMGRLOG_DEBUG(
"Could not parse output of <%s>\n", aCmd);
165 if (
'\n' == aData[strlen(aData) - 1]) {
166 aData[strlen(aData) - 1] =
'\0';
173 return leBtrMgrAcRet;
180 tBTRMgrSDHdl* hBTRMgrSdHdl,
181 fPtr_BTRMgr_SD_StatusCb afpcBSdStatus,
187 BTRMGRLOG_ERROR (
"BTRMgr_SD_Init FAILED\n");
188 return eBTRMgrFailure;
192 sDHandle->lstBtrMgrSysDiagStat.enSysDiagChar = BTRMGR_SYS_DIAG_UNKNOWN;
193 #ifdef BTRTEST_SYS_DIAG_ENABLE
194 sDHandle->_powerState = IARM_BUS_PWRMGR_POWERSTATE_OFF;
196 sDHandle->fpcBSdStatus= afpcBSdStatus;
197 sDHandle->pvcBUserData= apvUserData;
199 gpstSDHandle = sDHandle;
200 *hBTRMgrSdHdl = (tBTRMgrSDHdl)sDHandle;
201 return eBTRMgrSuccess;
207 tBTRMgrSDHdl hBTRMgrSdHdl
211 if (NULL != pstBtrMgrSdHdl) {
213 free((
void*)pstBtrMgrSdHdl);
214 pstBtrMgrSdHdl = NULL;
215 BTRMGRLOG_INFO (
"BTRMgr_SD_DeInit SUCCESS\n");
216 return eBTRMgrSuccess;
219 BTRMGRLOG_WARN (
"BTRMgr SD handle is not Inited(NULL)\n");
220 return eBTRMgrFailure;
226 BTRMGR_SysDiag_GetData (
227 tBTRMgrSDHdl hBTRMgrSdHdl,
228 BTRMGR_SysDiagChar_t aenSysDiagChar,
233 #ifdef BTRTEST_SYS_DIAG_ENABLE
234 IARM_Result_t lIARMStatus = IARM_RESULT_SUCCESS;
237 if (NULL == pstBtrMgrSdHdl)
238 return eBTRMgrFailure;
240 switch (aenSysDiagChar) {
241 case BTRMGR_SYS_DIAG_DEVICEMAC: {
242 unsigned char lData[BTRMGR_STR_LEN_MAX] =
"\0";
244 btrMgr_SysDiag_getDeviceMAC(
"/tmp/.estb_mac", lData);
245 int ret = snprintf(aData, (BTRMGR_STR_LEN_MAX - 1),
"%s", lData);
246 if (ret > (BTRMGR_STR_LEN_MAX - 1)) {
247 BTRMGRLOG_DEBUG(
"BTRMGR_SYS_DIAG_DEVICEMAC truncated\n");
251 case BTRMGR_SYS_DIAG_BTRADDRESS: {
252 btrMgr_SysDiag_getDiagInfoFromPipe(
"hcitool dev |grep hci |cut -d$'\t' -f3", aData);
255 case BTRMGR_SYS_DIAG_SYSTEMID:
256 case BTRMGR_SYS_DIAG_HWREVISION:
257 case BTRMGR_SYS_DIAG_MODELNUMBER: {
258 btrMgr_SysDiag_getDiagInfoFromFile(
"/tmp/.model_number", aData);
261 case BTRMGR_SYS_DIAG_SERIALNUMBER: {
262 btrMgr_SysDiag_getDiagInfoFromPipe(
"grep Serial /proc/cpuinfo | cut -d ' ' -f2 | tr '[:lower:]' '[:upper:]'", aData);
265 case BTRMGR_SYS_DIAG_FWREVISION:
266 case BTRMGR_SYS_DIAG_SWREVISION: {
267 btrMgr_SysDiag_getDiagInfoFromFile(
"/tmp/.imageVersion", aData);
270 case BTRMGR_SYS_DIAG_MFGRNAME: {
271 btrMgr_SysDiag_getDiagInfoFromPipe(
"grep MFG_NAME /etc/device.properties | cut -d'=' -f2", aData);
274 case BTRMGR_SYS_DIAG_DEVICESTATUS: {
277 case BTRMGR_SYS_DIAG_FWDOWNLOADSTATUS: {
278 char lValue[BTRMGR_STR_LEN_MAX] =
"";
279 #ifdef BTRTEST_SYS_DIAG_ENABLE
281 memset(¶m, 0,
sizeof(param));
284 btrMgr_SysDiag_getDiagInfoFromPipe(
"grep BOX_TYPE /etc/device.properties | cut -d'=' -f2", lValue);
285 if (!strcmp(lValue,
"pi")) {
286 BTRMGRLOG_DEBUG(
"Box is PI \n");
287 snprintf(aData, (BTRMGR_STR_LEN_MAX - 1),
"%s",
"COMPLETED");
290 #ifdef BTRTEST_SYS_DIAG_ENABLE
292 if (IARM_RESULT_SUCCESS != lIARMStatus) {
293 BTRMGRLOG_DEBUG(
"Failure : Return code is %d\n", lIARMStatus);
297 BTRMGRLOG_DEBUG(
"Iarm call fw state :%d\n", param.firmware_download.state);
299 if (IARM_BUS_SYSMGR_IMAGE_FWDNLD_DOWNLOAD_INPROGRESS == param.firmware_download.state) {
300 snprintf(aData, (BTRMGR_STR_LEN_MAX - 1),
"%s",
"IN PROGRESS");
303 snprintf(aData, (BTRMGR_STR_LEN_MAX - 1),
"%s",
"COMPLETED");
310 case BTRMGR_SYS_DIAG_WEBPASTATUS: {
311 char lValue[BTRMGR_STR_LEN_MAX] =
"";
312 char* lCmd =
"tr181Set -g Device.DeviceInfo.X_RDKCENTRAL-COM_RFC.Feature.TR069support.Enable 2>&1 1>/dev/null";
314 btrMgr_SysDiag_getDiagInfoFromPipe(lCmd, lValue);
315 if (0 == strcmp(lValue,
"true")) {
316 snprintf(aData, (BTRMGR_STR_LEN_MAX - 1),
"%s",
"UP");
319 snprintf(aData, (BTRMGR_STR_LEN_MAX - 1),
"%s",
"DOWN");
321 BTRMGRLOG_DEBUG(
"Webpa status:%s\n", aData);
324 case BTRMGR_SYS_DIAG_WIFIRADIO1STATUS:
325 case BTRMGR_SYS_DIAG_WIFIRADIO2STATUS: {
326 #ifdef BTRTEST_SYS_DIAG_ENABLE
328 memset(¶m, 0,
sizeof(param));
332 BTRMGRLOG_DEBUG(
"Wifi status is %s\n", param.data.radio.params.status);
333 if (IARM_RESULT_SUCCESS != lIARMStatus) {
334 BTRMGRLOG_DEBUG(
"Failure : Return code is %d\n", lIARMStatus);
338 if (!strcmp(
"UP", param.data.radio.params.status)) {
339 snprintf(aData, (BTRMGR_STR_LEN_MAX - 1),
"%s",
"UP");
342 snprintf(aData, (BTRMGR_STR_LEN_MAX - 1),
"%s",
"DOWN");
346 BTRMGRLOG_DEBUG(
"Wifi diagnostics is not available\n");
347 snprintf(aData, (BTRMGR_STR_LEN_MAX - 1),
"%s",
"DOWN");
351 case BTRMGR_SYS_DIAG_RFSTATUS: {
352 char lValue[BTRMGR_STR_LEN_MAX] =
"";
353 #ifdef BTRTEST_SYS_DIAG_ENABLE
355 memset(¶m, 0,
sizeof(param));
358 btrMgr_SysDiag_getDiagInfoFromPipe(
"grep GATEWAY_DEVICE /etc/device.properties | cut -d'=' -f2", lValue);
359 BTRMGRLOG_DEBUG(
"Is Gateway device:%s\n", lValue);
361 if (!strcmp(lValue,
"false")) {
362 snprintf(aData, (BTRMGR_STR_LEN_MAX - 1),
"%s",
"NOT CONNECTED");
365 #ifdef BTRTEST_SYS_DIAG_ENABLE
367 if (IARM_RESULT_SUCCESS != lIARMStatus) {
368 BTRMGRLOG_DEBUG(
"Failure : Return code is %d\n", lIARMStatus);
372 BTRMGRLOG_DEBUG(
" Iarm call fw state :%d\n", param.rf_connected.state);
374 if (0 == param.rf_connected.state) {
375 snprintf(aData, (BTRMGR_STR_LEN_MAX - 1),
"%s",
"NOT CONNECTED");
378 snprintf(aData, (BTRMGR_STR_LEN_MAX - 1),
"%s",
"CONNECTED");
385 case BTRMGR_SYS_DIAG_POWERSTATE: {
386 #ifdef BTRTEST_SYS_DIAG_ENABLE
389 (
void *)¶m,
sizeof(param));
391 snprintf(aData, (BTRMGR_STR_LEN_MAX - 1),
"%s", BTRMGR_SYS_DIAG_PWRST_UNKNOWN);
392 if (res == IARM_RESULT_SUCCESS) {
394 if (param.curState == IARM_BUS_PWRMGR_POWERSTATE_ON)
395 snprintf(aData, BTRMGR_STR_LEN_MAX - 1,
"%s", BTRMGR_SYS_DIAG_PWRST_ON);
396 else if (param.curState == IARM_BUS_PWRMGR_POWERSTATE_STANDBY)
397 snprintf(aData, BTRMGR_STR_LEN_MAX - 1,
"%s", BTRMGR_SYS_DIAG_PWRST_STANDBY);
398 else if (param.curState == IARM_BUS_PWRMGR_POWERSTATE_STANDBY_LIGHT_SLEEP)
399 snprintf(aData, BTRMGR_STR_LEN_MAX - 1,
"%s", BTRMGR_SYS_DIAG_PWRST_STDBY_LIGHT_SLEEP);
400 else if (param.curState == IARM_BUS_PWRMGR_POWERSTATE_STANDBY_DEEP_SLEEP)
401 snprintf(aData, BTRMGR_STR_LEN_MAX - 1,
"%s", BTRMGR_SYS_DIAG_PWRST_STDBY_DEEP_SLEEP);
402 else if (param.curState == IARM_BUS_PWRMGR_POWERSTATE_OFF)
403 snprintf(aData, BTRMGR_STR_LEN_MAX - 1,
"%s", BTRMGR_SYS_DIAG_PWRST_OFF);
406 pstBtrMgrSdHdl->lstBtrMgrSysDiagStat.enSysDiagChar = BTRMGR_SYS_DIAG_POWERSTATE;
407 strncpy(pstBtrMgrSdHdl->lstBtrMgrSysDiagStat.pcSysDiagRes, aData, BTRMGR_STR_LEN_MAX - 1);
408 pstBtrMgrSdHdl->_powerState = param.curState;
410 if (param.curState != IARM_BUS_PWRMGR_POWERSTATE_ON) {
411 BTRMGRLOG_WARN(
"BTRMGR_SYS_DIAG_POWERSTATE PWRMGR :%d - %s\n", param.curState, aData);
416 BTRMGRLOG_DEBUG(
"BTRMGR_SYS_DIAG_POWERSTATE Failure : Return code is %d\n", res);
436 BTRMGR_SysDiag_ConnectToWifi (
437 tBTRMgrSDHdl hBTRMgrSdHdl,
445 if (NULL == pstBtrMgrSdHdl)
446 return eBTRMgrFailure;
449 #ifdef BTRTEST_SYS_DIAG_ENABLE
450 IARM_Result_t retVal = IARM_RESULT_SUCCESS;
453 strcpy(param.data.connect.ssid, aSSID);
454 strcpy(param.data.connect.passphrase, aPassword);
455 param.data.connect.security_mode = (
SsidSecurity)aSecurityMode;
459 BTRMGRLOG_DEBUG(
"\n \"%s\", status: \"%s\"\n",
IARM_BUS_WIFI_MGR_API_connect, ((retVal == IARM_RESULT_SUCCESS && param.status) ?
"Success" :
"Failure"));
461 BTRMGRLOG_DEBUG(
"Wifi not available\n");
468 #ifdef BTRTEST_SYS_DIAG_ENABLE
470 btrMgr_SysDiag_powerModeChangeCb (
472 IARM_EventId_t eventId,
480 BTRMGRLOG_WARN(
"BTRMGR_SYS_DIAG_POWERSTATE Event IARM_BUS_PWRMGR_EVENT_MODECHANGED: new State: %d\n", param->data.state.newState);
482 if (gpstSDHandle != NULL) {
484 if (param->data.state.newState == IARM_BUS_PWRMGR_POWERSTATE_ON)
485 snprintf(gpstSDHandle->lstBtrMgrSysDiagStat.pcSysDiagRes, BTRMGR_STR_LEN_MAX - 1,
"%s", BTRMGR_SYS_DIAG_PWRST_ON);
486 else if (param->data.state.newState == IARM_BUS_PWRMGR_POWERSTATE_STANDBY)
487 snprintf(gpstSDHandle->lstBtrMgrSysDiagStat.pcSysDiagRes, BTRMGR_STR_LEN_MAX - 1,
"%s", BTRMGR_SYS_DIAG_PWRST_STANDBY);
488 else if (param->data.state.newState == IARM_BUS_PWRMGR_POWERSTATE_STANDBY_LIGHT_SLEEP)
489 snprintf(gpstSDHandle->lstBtrMgrSysDiagStat.pcSysDiagRes, BTRMGR_STR_LEN_MAX - 1,
"%s", BTRMGR_SYS_DIAG_PWRST_STDBY_LIGHT_SLEEP);
490 else if (param->data.state.newState == IARM_BUS_PWRMGR_POWERSTATE_STANDBY_DEEP_SLEEP)
491 snprintf(gpstSDHandle->lstBtrMgrSysDiagStat.pcSysDiagRes, BTRMGR_STR_LEN_MAX - 1,
"%s", BTRMGR_SYS_DIAG_PWRST_STDBY_DEEP_SLEEP);
492 else if (param->data.state.newState == IARM_BUS_PWRMGR_POWERSTATE_OFF)
493 snprintf(gpstSDHandle->lstBtrMgrSysDiagStat.pcSysDiagRes, BTRMGR_STR_LEN_MAX - 1,
"%s", BTRMGR_SYS_DIAG_PWRST_OFF);
495 snprintf(gpstSDHandle->lstBtrMgrSysDiagStat.pcSysDiagRes, BTRMGR_STR_LEN_MAX - 1,
"%s", BTRMGR_SYS_DIAG_PWRST_UNKNOWN);
497 gpstSDHandle->lstBtrMgrSysDiagStat.enSysDiagChar = BTRMGR_SYS_DIAG_POWERSTATE;
500 if (gpstSDHandle->_powerState != param->data.state.newState && (param->data.state.newState != IARM_BUS_PWRMGR_POWERSTATE_ON && param->data.state.newState != IARM_BUS_PWRMGR_POWERSTATE_STANDBY_LIGHT_SLEEP)) {
501 BTRMGRLOG_WARN(
"BTRMGR_SYS_DIAG_POWERSTATE - Device is being suspended\n");
504 if (gpstSDHandle->_powerState != param->data.state.newState && param->data.state.newState == IARM_BUS_PWRMGR_POWERSTATE_ON) {
505 BTRMGRLOG_WARN(
"BTRMGR_SYS_DIAG_POWERSTATE - Device just woke up\n");
506 if (gpstSDHandle->fpcBSdStatus) {
511 if ((leBtrMgrSdRet = gpstSDHandle->fpcBSdStatus(&lstBtrMgrSysDiagStat, gpstSDHandle->pvcBUserData)) != eBTRMgrSuccess) {
512 BTRMGRLOG_ERROR(
"BTRMGR_SYS_DIAG_POWERSTATE - Device woke up - NOT PROCESSED\n");
517 gpstSDHandle->_powerState = param->data.state.newState;