From 5b768d0234a42e978f681352a21332a2ba093928 Mon Sep 17 00:00:00 2001 From: biju-vi <151033276+biju-vi@users.noreply.github.com> Date: Mon, 20 Jul 2026 15:43:47 +0000 Subject: [PATCH 1/2] XER10-2389: Gateway LED lite solid white in WFO mode while using XLE as backup mode Reason for change: Send primary and backup events from rbus handler and handle the events Test Procedure: Test WFO use cases Risks: Low Signed-off-by: biju.vijayanindiradevi@sky.uk XER10-2389: Gateway LED lite solid white in WFO mode while using XLE as backup mode Reason for change: Send primary and backup events from rbus handler and handle the events Test Procedure: Test WFO use cases Risks: Low Signed-off-by: biju.vijayanindiradevi@sky.uk --- source/LedManager/Makefile.am | 4 - source/LedManager/led_manager.c | 6 +- source/LedManager/led_manager.h | 2 + source/LedManager/led_manager_events.c | 14 +- source/Makefile.am | 2 - source/TR-181/middle_layer_src/Makefile.am | 7 +- .../ledmgr_plugin_main_apis.c | 2 + .../ledmgr_rbus_handler_apis.c | 174 +++++++++++++++++- .../ledmgr_rbus_handler_apis.h | 10 +- 9 files changed, 202 insertions(+), 19 deletions(-) diff --git a/source/LedManager/Makefile.am b/source/LedManager/Makefile.am index f3cc045..02e6a2b 100644 --- a/source/LedManager/Makefile.am +++ b/source/LedManager/Makefile.am @@ -26,17 +26,13 @@ AM_CPPFLAGS = -I$(top_srcdir)/../CcspCommonLibrary/source/ccsp/components/includ -I$(top_srcdir)/../hal/include \ -I${PKG_CONFIG_SYSROOT_DIR}$(includedir) -if FEATURE_LEDMGR_WEBCONFIG AM_CPPFLAGS += -I$(top_srcdir)/source/TR-181/middle_layer_src -endif rdkledmanager_DEPENDENCIES = \ $(EXTRA_DEPENDENCIES) -if FEATURE_LEDMGR_WEBCONFIG EXTRA_DEPENDENCIES= \ ${top_builddir}/source/TR-181/middle_layer_src/libCcspLedManager_middle_layer_src.la -endif rdkledmanager_CFLAGS = -Werror -D_ANSC_LINUX -D_ANSC_USER -D_ANSC_LITTLE_ENDIAN_ -DFEATURE_SUPPORT_RDKLOG $(DBUS_CFLAGS) $(SYSTEMD_CFLAGS) rdkledmanager_SOURCES = led_manager.c led_manager_events.c led_manager_utils.c led_manager_dbus_utils.c diff --git a/source/LedManager/led_manager.c b/source/LedManager/led_manager.c index c46c47e..e325b28 100644 --- a/source/LedManager/led_manager.c +++ b/source/LedManager/led_manager.c @@ -40,10 +40,10 @@ #include "cap.h" #ifdef LEDMGR_WEBCONFIG #include "ledmgr_webconfig.h" -#include "ledmgr_rbus_handler_apis.h" #else #include "led_manager_global.h" #endif +#include "ledmgr_rbus_handler_apis.h" #define DEBUG_INI_NAME "/etc/debug.ini" extern char * pComponentName; @@ -56,10 +56,8 @@ extern char g_Subsystem[32]; extern PCOMPONENT_COMMON_LED_MANAGER g_pComponentCommonLedMgr; cap_user appcaps; -#ifdef LEDMGR_WEBCONFIG char conf_filepath[BUFLEN_128]; ANSC_STATUS retStatus = ANSC_STATUS_FAILURE; -#endif static void ledmgr_start () { @@ -254,14 +252,12 @@ int main(int argc, char* argv[]) exit(1); } -#ifdef LEDMGR_WEBCONFIG retStatus = LedMgr_Rbus_Init(); if(retStatus != ANSC_STATUS_SUCCESS) { CcspTraceError(("%s %d - Rbus Init failed !\n", __FUNCTION__, __LINE__ )); return retStatus; } -#endif ledmgr_start(); diff --git a/source/LedManager/led_manager.h b/source/LedManager/led_manager.h index 4e654a4..97bfa89 100644 --- a/source/LedManager/led_manager.h +++ b/source/LedManager/led_manager.h @@ -93,6 +93,8 @@ eIPv6Only, eDualStackUp, eMaptUp, #endif +eWanBackupActive, +eWanPrimaryActive, eFwUpdateStart, eFwUpdateStop, eFwUpdateComplete, diff --git a/source/LedManager/led_manager_events.c b/source/LedManager/led_manager_events.c index 5f304f5..1217997 100644 --- a/source/LedManager/led_manager_events.c +++ b/source/LedManager/led_manager_events.c @@ -37,7 +37,7 @@ #ifdef WAN_STATUS_LED_EVENT #define LED_WAN_SYSEVENT_KEY "rdkb_wan_status" #endif - +static pthread_mutex_t event_lock = PTHREAD_MUTEX_INITIALIZER; cpe_led_events_t led_events[] = { { ePowerOn, "power_on" }, @@ -59,6 +59,8 @@ cpe_led_events_t led_events[] = { eDualStackUp, "rdkb_dualstack" }, { eMaptUp, "rdkb_mapt" }, #endif +{ eWanBackupActive, "rdkb_wan_backup_active" }, +{ eWanPrimaryActive, "rdkb_wan_primary_active" }, { eFwUpdateStart, "rdkb_fwupdate_start" }, { eFwUpdateStop, "rdkb_fwupdate_stop" }, { eFwUpdateComplete, "rdkb_fwupdate_complete" }, @@ -103,15 +105,17 @@ cpe_event_t ledmgr_get_event_from_str (char * event_str); #ifdef WAN_STATUS_LED_EVENT cpe_event_t ledmgr_get_wan_event_from_str (char * event_str); #endif -static int handle_event(cpe_event_t event) +int handle_event(cpe_event_t event) { + pthread_mutex_lock(&event_lock); led_t * led_data_arr = g_led_data.led_obj_head; led_mode_t * mode_data_arr = g_mode_data.mode_obj_head; if ((mode_data_arr == NULL) || (led_data_arr == NULL)) { CcspTraceError(("%s %d: invalid event or invalid config\n", __func__, __LINE__)); + pthread_mutex_unlock(&event_lock); return FAILURE; } @@ -164,9 +168,15 @@ static int handle_event(cpe_event_t event) } if (bupdate) + { + pthread_mutex_unlock(&event_lock); return SUCCESS; + } else + { + pthread_mutex_unlock(&event_lock); return FAILURE; + } } int ledmgr_catch_events() diff --git a/source/Makefile.am b/source/Makefile.am index 2079a34..27f021e 100644 --- a/source/Makefile.am +++ b/source/Makefile.am @@ -18,8 +18,6 @@ ########################################################################## SUBDIRS = -if FEATURE_LEDMGR_WEBCONFIG SUBDIRS += TR-181 -endif SUBDIRS += LedManager diff --git a/source/TR-181/middle_layer_src/Makefile.am b/source/TR-181/middle_layer_src/Makefile.am index b8d2c36..b417020 100644 --- a/source/TR-181/middle_layer_src/Makefile.am +++ b/source/TR-181/middle_layer_src/Makefile.am @@ -30,7 +30,12 @@ libCcspLedManager_middle_layer_src_la_CPPFLAGS = -I$(top_srcdir)/source/TR-181/m -I$(top_srcdir)/source/LedManager libCcspLedManager_middle_layer_src_la_SOURCES = ledmgr_dml_apis.c ledmgr_plugin_main_apis.c cJSON.c secure_wrapper.c -libCcspLedManager_middle_layer_src_la_LDFLAGS = -lccsp_common -lsyscfg -lsysevent -lpthread -ljson_schema_validator_wrapper -lsecure_wrapper -lm +libCcspLedManager_middle_layer_src_la_LDFLAGS = -lccsp_common -lsyscfg -lsysevent -lpthread -lsecure_wrapper -lm + +if FEATURE_LEDMGR_WEBCONFIG +libCcspLedManager_middle_layer_src_la_CPPFLAGS += -I$(top_srcdir)/source/TR-181/middle_layer_src/json_schema_validator_wrapper +libCcspLedManager_middle_layer_src_la_LDFLAGS += -ljson_schema_validator_wrapper +endif libCcspLedManager_middle_layer_src_la_CPPFLAGS += -I${PKG_CONFIG_SYSROOT_DIR}$(includedir)/rbus libCcspLedManager_middle_layer_src_la_SOURCES += ledmgr_rbus_handler_apis.c diff --git a/source/TR-181/middle_layer_src/ledmgr_plugin_main_apis.c b/source/TR-181/middle_layer_src/ledmgr_plugin_main_apis.c index 47da2f1..f8220e1 100644 --- a/source/TR-181/middle_layer_src/ledmgr_plugin_main_apis.c +++ b/source/TR-181/middle_layer_src/ledmgr_plugin_main_apis.c @@ -191,7 +191,9 @@ ANSC_STATUS BackEndManagerInitialize(ANSC_HANDLE hThisObject) } #endif //RBUS_BUILD_FLAG_ENABLE +#ifdef LEDMGR_WEBCONFIG LedMgrDmlLedWebConfigInit(); +#endif return returnStatus; } diff --git a/source/TR-181/middle_layer_src/ledmgr_rbus_handler_apis.c b/source/TR-181/middle_layer_src/ledmgr_rbus_handler_apis.c index 287d42a..b40fc17 100644 --- a/source/TR-181/middle_layer_src/ledmgr_rbus_handler_apis.c +++ b/source/TR-181/middle_layer_src/ledmgr_rbus_handler_apis.c @@ -35,7 +35,9 @@ #include "led_manager.h" #include "led_manager_events.h" #include "ledmgr_rbus_handler_apis.h" +#ifdef LEDMGR_WEBCONFIG #include "json_schema_validator_wrapper.h" +#endif #include "led_manager_utils.h" #include #include @@ -52,8 +54,11 @@ static rbusHandle_t rbusHandle; char componentName[32] = "LEDMANAGER"; unsigned int gSubscribersCount = 0; pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; - +static unsigned int wan_backup_status; +extern int handle_event(cpe_event_t event); rbusError_t LedMgr_Rbus_GetHandler(rbusHandle_t handle, rbusProperty_t property, rbusGetHandlerOptions_t* opts); + +#ifdef LEDMGR_WEBCONFIG rbusError_t LedMgr_Rbus_FullJson_SetHandler(rbusHandle_t handle, rbusProperty_t prop, rbusSetHandlerOptions_t* opts); rbusError_t LedMgr_Rbus_Brightness_SetHandler(rbusHandle_t handle, rbusProperty_t prop, rbusSetHandlerOptions_t* opts); rbusError_t LedMgr_Rbus_OnOff_SetHandler(rbusHandle_t handle, rbusProperty_t prop, rbusSetHandlerOptions_t* opts); @@ -66,6 +71,7 @@ rbusDataElement_t ledMgrRbusDataElements[NUM_OF_RBUS_PARAMS] = { {LEDMGR_WEBCONFIG_BRIGHTNESS_DATA, RBUS_ELEMENT_TYPE_EVENT | RBUS_ELEMENT_TYPE_PROPERTY, {LedMgr_Rbus_GetHandler, LedMgr_Rbus_Brightness_SetHandler, NULL, NULL, NULL, NULL}}, {LEDMGR_WEBCONFIG_ONOFF_DATA, RBUS_ELEMENT_TYPE_EVENT | RBUS_ELEMENT_TYPE_PROPERTY, {LedMgr_Rbus_GetHandler, LedMgr_Rbus_OnOff_SetHandler, NULL, NULL, NULL, NULL}}, }; +#endif rbusError_t LedMgr_Rbus_GetHandler(rbusHandle_t handle, rbusProperty_t property, rbusGetHandlerOptions_t* opts) { char const* name = rbusProperty_GetName(property); @@ -85,6 +91,7 @@ rbusError_t LedMgr_Rbus_GetHandler(rbusHandle_t handle, rbusProperty_t property, return ret; } +#ifdef LEDMGR_WEBCONFIG rbusError_t LedMgr_Rbus_OnOff_SetHandler(rbusHandle_t handle, rbusProperty_t prop, rbusSetHandlerOptions_t* opts) { char const* name = rbusProperty_GetName(prop); @@ -122,6 +129,7 @@ rbusError_t LedMgr_Rbus_OnOff_SetHandler(rbusHandle_t handle, rbusProperty_t pro return ret; } + rbusError_t LedMgr_Rbus_Brightness_SetHandler(rbusHandle_t handle, rbusProperty_t prop, rbusSetHandlerOptions_t* opts) { char const* name = rbusProperty_GetName(prop); @@ -652,6 +660,7 @@ int LedMgr_parseBrightnessJson(char* buffer_brightness) { CcspTraceInfo(("%s %d - LedMgr_parseBrightnessJson() success\n", __FUNCTION__, __LINE__)); return 0; } +#endif static void LedMgr_Rbus_EventReceiveHandler(rbusHandle_t handle, rbusEvent_t const* event, rbusEventSubscription_t* subscription) { (void)handle; @@ -676,6 +685,136 @@ static void LedMgr_Rbus_EventReceiveHandler(rbusHandle_t handle, rbusEvent_t con CcspTraceError(("%s:%d Unexpected Event Received [%s:%s]\n",__FUNCTION__, __LINE__,eventName)); } } + +static InterfaceStatusType GetActiveInterfaceType(const char *interface_active_status) +{ + unsigned int len = 0; + unsigned int status = 0; + char *ptr = NULL; + char *token = NULL; + char ifType[64] = {0}; + + if (interface_active_status == NULL) + { + return IF_NONE_ACTIVE; + } + + char *active_status = strdup(interface_active_status); + + if (active_status == NULL) + { + return IF_NONE_ACTIVE; + } + + token = strtok_r(active_status, "|", &ptr); + + while (token) + { + char *comma = strchr(token, ','); + if (comma) + { + len = comma - token; + if (len >= sizeof(ifType)) + { + len = sizeof(ifType) - 1; + } + memset(ifType,0,sizeof(ifType)); + strncpy(ifType, token, len); + ifType[len] = '\0'; + if(strlen(ifType) == 0) + { + CcspTraceError(("%s:%d Cannot determine interface type\n",__FUNCTION__, __LINE__)); + free(active_status); + return IF_NONE_ACTIVE; + } + status = atoi(comma + 1); + if (status == 1) + { + free(active_status); + if ((strcmp(ifType, "HOTSPOT") == 0) || (strcmp(ifType, "REMOTE_LTE") == 0)) + { + CcspTraceInfo(("%s:%d Backup wan interface type %s is active\n",__FUNCTION__, __LINE__,ifType)); + return IF_BACKUP_ACTIVE; + } + CcspTraceInfo(("%s:%d Primary wan interface type %s is active \n",__FUNCTION__, __LINE__,ifType)); + return IF_PRIMARY_ACTIVE; + } + } + token = strtok_r(NULL, "|", &ptr); + } + free(active_status); + return IF_NONE_ACTIVE; +} + +static void WanInterfaceStatusHandler(rbusHandle_t handle, rbusEvent_t const* event, rbusEventSubscription_t* subscription) +{ + (void)handle; + (void)subscription; + rbusValue_t value = NULL; + const char* status = NULL; + const char* eventName = NULL; + + if(!event || !event->data) + { + CcspTraceInfo(("%s:%d event is NULL\n",__FUNCTION__, __LINE__)); + return; + } + + eventName = event->name; + + if(!eventName) + { + CcspTraceInfo(("%s:%d eventName is NULL\n",__FUNCTION__, __LINE__)); + return; + } + + CcspTraceInfo(("%s:%d Received notification for %s\n",__FUNCTION__, __LINE__, eventName)); + + value = rbusObject_GetValue(event->data, NULL); + + if(!value) + { + CcspTraceError(("%s:%d Subscribed event does not have a value\n",__FUNCTION__, __LINE__)); + return; + } + + status = rbusValue_GetString(value, NULL); + + if(!status) + { + CcspTraceError(("%s:%d Subscribed event does not have a status value\n",__FUNCTION__, __LINE__)); + return; + } + + CcspTraceInfo(("%s:%d Notification for %s : %s\n",__FUNCTION__, __LINE__, eventName, status)); + + + InterfaceStatusType active_type = GetActiveInterfaceType(status); + + /* HOTSPOT,0|DOCSIS,0|WANOE,1|DSL,0|REMOTE_LTE,0 */ + if(active_type == IF_PRIMARY_ACTIVE) + { + if(wan_backup_status == 0) + { + CcspTraceInfo(("%s:%d Ignoring Notification for %s\n",__FUNCTION__, __LINE__, eventName)); + return; + } + // send primary interface event only if there was a backup interface active previously + wan_backup_status = 0; + CcspTraceInfo(("%s:%d Sending primary wan active LED event\n",__FUNCTION__, __LINE__)); + handle_event(eWanPrimaryActive); + } + /* HOTSPOT,0|DOCSIS,0|WANOE,0|DSL,0|REMOTE_LTE,1 */ + else if(active_type == IF_BACKUP_ACTIVE) + { + wan_backup_status = 1; + CcspTraceInfo(("%s:%d Sending backup wan active LED event\n",__FUNCTION__, __LINE__)); + handle_event(eWanBackupActive); + } + + return; +} + void LedMgr_Rbus_SubscribeDML(void) { rbusError_t ret = RBUS_ERROR_SUCCESS; @@ -699,10 +838,17 @@ void LedMgr_Rbus_SubscribeDML(void) void LedMgr_Rbus_UnSubscribeDML(void) { rbusError_t ret = RBUS_ERROR_SUCCESS; +#ifdef LEDMGR_WEBCONFIG ret = rbusEvent_Unsubscribe(rbusHandle, LEDMGR_WEBCONFIG_FULLJSON_DATA); if(ret != RBUS_ERROR_SUCCESS) { - CcspTraceError(("%s %d - Failed to Subscribe %s, Error=%s \n", __FUNCTION__, __LINE__, LEDMGR_WEBCONFIG_FULLJSON_DATA, rbusError_ToString(ret))); + CcspTraceError(("%s %d - Failed to unsubscribe %s, Error=%s \n", __FUNCTION__, __LINE__, LEDMGR_WEBCONFIG_FULLJSON_DATA, rbusError_ToString(ret))); + } +#endif + ret = rbusEvent_Unsubscribe(rbusHandle, "Device.X_RDK_WanManager.InterfaceActiveStatus"); + if(ret != RBUS_ERROR_SUCCESS) + { + CcspTraceError(("%s %d - Failed to unsubscribe %s, Error=%s \n", __FUNCTION__, __LINE__, "Device.X_RDK_WanManager.InterfaceActiveStatus", rbusError_ToString(ret))); } CcspTraceInfo(("LedMgr_UnSubscribeDML done\n")); } @@ -718,6 +864,8 @@ ANSC_STATUS LedMgr_Rbus_Init() CcspTraceError(("LedMgr_Rbus_Init rbus initialization failed\n")); return rc; } + +#ifdef LEDMGR_WEBCONFIG // Register data elements rc = rbus_regDataElements(rbusHandle, NUM_OF_RBUS_PARAMS, ledMgrRbusDataElements); if (rc != RBUS_ERROR_SUCCESS) @@ -733,15 +881,33 @@ ANSC_STATUS LedMgr_Rbus_Init() return ANSC_STATUS_FAILURE; } strncpy(g_LedMgr.data, "None", strlen("None")+1); +#endif + rc = rbusEvent_Subscribe(rbusHandle,"Device.X_RDK_WanManager.InterfaceActiveStatus", WanInterfaceStatusHandler,NULL,0); + + if(rc != RBUS_ERROR_SUCCESS) + { + AnscTraceError(("%s:%d:: Unable to subscribe for Device.X_RDK_WanManager.InterfaceActiveStatus\n", __FUNCTION__, __LINE__ )); + if(g_LedMgr.data) + { + free(g_LedMgr.data); + g_LedMgr.data = NULL; + } + rbus_close(rbusHandle); + return ANSC_STATUS_FAILURE; + } + return ANSC_STATUS_SUCCESS; + } /******************************************************************************* - LedMgr_RbusExit(): Unreg data elements and Exit + LedMgr_Rbus_Exit(): Unreg data elements and Exit ********************************************************************************/ -ANSC_STATUS LedMgr_RbusExit() +ANSC_STATUS LedMgr_Rbus_Exit() { CcspTraceInfo(("%s %d - LedMgr_RbusExit called\n", __FUNCTION__, __LINE__ )); +#ifdef LEDMGR_WEBCONFIG rbus_unregDataElements(rbusHandle, NUM_OF_RBUS_PARAMS, ledMgrRbusDataElements); +#endif LedMgr_Rbus_UnSubscribeDML(); rbus_close(rbusHandle); return ANSC_STATUS_SUCCESS; diff --git a/source/TR-181/middle_layer_src/ledmgr_rbus_handler_apis.h b/source/TR-181/middle_layer_src/ledmgr_rbus_handler_apis.h index e92f930..65739c8 100644 --- a/source/TR-181/middle_layer_src/ledmgr_rbus_handler_apis.h +++ b/source/TR-181/middle_layer_src/ledmgr_rbus_handler_apis.h @@ -39,6 +39,13 @@ typedef struct { CHAR* data; }LED_DATA; +typedef enum +{ + IF_NONE_ACTIVE, + IF_PRIMARY_ACTIVE, + IF_BACKUP_ACTIVE +} InterfaceStatusType; + ANSC_STATUS LedMgr_Rbus_Init(); ANSC_STATUS LedMgr_Rbus_Exit(); ANSC_STATUS LedMgr_Rbus_String_EventPublish(char *dm_event, char *dm_value); @@ -49,5 +56,6 @@ void LedMgr_Rbus_UnSubscribeDML(void); int LedMgr_parseOnOffJson (char* buffer_onOff); int LedMgr_parseBrightnessJson(char* buffer_brightness); int LedMgr_validateSchema(char* json_string, char* schema_path); - +static InterfaceStatusType GetActiveInterfaceType(const char *interface_active_status); +static void WanInterfaceStatusHandler(rbusHandle_t handle, rbusEvent_t const* event, rbusEventSubscription_t* subscription); #endif //_LEDMGR_RBUS_H_ From 4fae710aca20e3041130c2fe19a06645fa59b037 Mon Sep 17 00:00:00 2001 From: biju-vi <151033276+biju-vi@users.noreply.github.com> Date: Mon, 20 Jul 2026 15:43:47 +0000 Subject: [PATCH 2/2] XER10-2389: Gateway LED lite solid white in WFO mode while using XLE as backup mode Reason for change: Send primary and backup events from rbus handler and handle the events Test Procedure: Test WFO use cases Risks: Low Signed-off-by: biju.vijayanindiradevi@sky.uk --- source/TR-181/middle_layer_src/ledmgr_rbus_handler_apis.c | 2 ++ source/TR-181/middle_layer_src/ledmgr_rbus_handler_apis.h | 2 -- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/source/TR-181/middle_layer_src/ledmgr_rbus_handler_apis.c b/source/TR-181/middle_layer_src/ledmgr_rbus_handler_apis.c index b40fc17..f8765ce 100644 --- a/source/TR-181/middle_layer_src/ledmgr_rbus_handler_apis.c +++ b/source/TR-181/middle_layer_src/ledmgr_rbus_handler_apis.c @@ -56,6 +56,8 @@ unsigned int gSubscribersCount = 0; pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; static unsigned int wan_backup_status; extern int handle_event(cpe_event_t event); +static InterfaceStatusType GetActiveInterfaceType(const char *interface_active_status); +static void WanInterfaceStatusHandler(rbusHandle_t handle, rbusEvent_t const* event, rbusEventSubscription_t* subscription); rbusError_t LedMgr_Rbus_GetHandler(rbusHandle_t handle, rbusProperty_t property, rbusGetHandlerOptions_t* opts); #ifdef LEDMGR_WEBCONFIG diff --git a/source/TR-181/middle_layer_src/ledmgr_rbus_handler_apis.h b/source/TR-181/middle_layer_src/ledmgr_rbus_handler_apis.h index 65739c8..2238fba 100644 --- a/source/TR-181/middle_layer_src/ledmgr_rbus_handler_apis.h +++ b/source/TR-181/middle_layer_src/ledmgr_rbus_handler_apis.h @@ -56,6 +56,4 @@ void LedMgr_Rbus_UnSubscribeDML(void); int LedMgr_parseOnOffJson (char* buffer_onOff); int LedMgr_parseBrightnessJson(char* buffer_brightness); int LedMgr_validateSchema(char* json_string, char* schema_path); -static InterfaceStatusType GetActiveInterfaceType(const char *interface_active_status); -static void WanInterfaceStatusHandler(rbusHandle_t handle, rbusEvent_t const* event, rbusEventSubscription_t* subscription); #endif //_LEDMGR_RBUS_H_