diff --git a/source/LedManager/led_manager_utils.c b/source/LedManager/led_manager_utils.c index 2921056..f633671 100644 --- a/source/LedManager/led_manager_utils.c +++ b/source/LedManager/led_manager_utils.c @@ -89,6 +89,27 @@ cpe_event_t ledmgr_get_event_from_str (char * event_str) } return i; } + +bool is_remote_lte_up() { + FILE *fp; + char buffer[512]; + CcspTraceError((" is_remote_lte_up called \n")); + fp = popen("dmcli eRT getv Device.X_RDK_WanManager.InterfaceActiveStatus", "r"); + if (!fp) return 0; + + while (fgets(buffer, sizeof(buffer), fp)) { + if (strstr(buffer, "REMOTE_LTE,1")) { + pclose(fp); + CcspTraceError((" is_remote_lte_up returned true \n")); + return true; + } + } + + pclose(fp); + CcspTraceError((" is_remote_lte_up returned false \n")); + return false; +} + #ifdef WAN_STATUS_LED_EVENT static int parse_wan_event(char * event_str, char * wan_event) { @@ -153,9 +174,26 @@ static int parse_wan_event(char * event_str, char * wan_event) (strcmp(led_wan_events[i].ipv6_event_value, led_wan_data->ipv6_event_value) == 0) && (strcmp(led_wan_events[i].mapt_event_value, led_wan_data->mapt_event_value) == 0)) { - strncpy(wan_event, led_wan_events[i].wan_event, BUFLEN_64-1); + if(strcmp(led_wan_events[i].wan_event,"rdkb_ipv4_only") == 0) + { + CcspTraceError((" wan_event is rdkb_ipv4_only \n")); + /*rdkb_ipv4_only - then it could be because of remote LTE completes WAN path*/ + if(is_remote_lte_up()){ + CcspTraceError(("Setting rdkb_wan_link_down as wan_event as is_remote_lte_up is true\n")); + /*if REMOTE_LTE_CHECK is true then local device is in WAN FAIL OVER MODE*/ + strncpy(wan_event,"rdkb_wan_link_down", BUFLEN_64-1); + } + else{ + strncpy(wan_event, led_wan_events[i].wan_event, BUFLEN_64-1); + } + } + else + { + strncpy(wan_event, led_wan_events[i].wan_event, BUFLEN_64-1); + } + CcspTraceError(("Final Wan Status Event: %s\n", led_wan_events[i].wan_event)); - free(led_wan_data); + free(led_wan_data); return SUCCESS; } } diff --git a/source/LedManager/led_manager_utils.h b/source/LedManager/led_manager_utils.h index 24e2d35..6f68806 100644 --- a/source/LedManager/led_manager_utils.h +++ b/source/LedManager/led_manager_utils.h @@ -39,6 +39,7 @@ char * ledmgr_read_config_file (FILE * fp); int ledmgr_parse_config_file (char * buffer); int ledmgr_print_data_to_logfile(); void ledmgr_free_data(); +bool is_remote_lte_up(); #ifdef WAN_STATUS_LED_EVENT BOOL check_captive_portal_mode(); #endif