diff --git a/dcm_utils.c b/dcm_utils.c index a48e0d18..41ed65b3 100644 --- a/dcm_utils.c +++ b/dcm_utils.c @@ -33,6 +33,7 @@ #include #include #include +#include "rdk_logger.h" #include "dcm_types.h" #include "dcm_utils.h" @@ -47,9 +48,30 @@ INT32 g_rdk_logger_enabled = 0; void DCMLOGInit() { #ifdef RDK_LOGGER_ENABLED - if (0 == rdk_logger_init(DEBUG_INI_NAME)) { + // Initialize RDK Logger + rdk_LogOutput_File filelog; + strncpy(filelog.fileName, "dcmscript.log", sizeof(filelog.fileName)-1); + filelog.fileName[sizeof(filelog.fileName) - 1] = '\0'; + strncpy(filelog.fileLocation, "/opt/logs/", sizeof(filelog.fileLocation)-1); + filelog.fileLocation[sizeof(filelog.fileLocation) - 1] = '\0'; + + /* Extended initialization with programmatic configuration */ + rdk_logger_ext_config_t config = { + .pModuleName = "LOG.RDK.DCM", /* Module name */ + .loglevel = RDK_LOG_INFO, /* Default log level */ + //.output = RDKLOG_OUTPUT_FILE, + .output = RDKLOG_OUTPUT_CONSOLE, + .format = RDKLOG_FORMAT_WITH_TS, /* Timestamped format */ + .pFilePolicy = NULL /* using file output */ + }; + + if (rdk_logger_ext_init(&config) != RDK_SUCCESS) { + printf("UPLOADSTB : ERROR - Extended logger init failed\n"); + } + else { g_rdk_logger_enabled = 1; } + #endif } diff --git a/test/functional-tests/tests/helper_functions.py b/test/functional-tests/tests/helper_functions.py index f02b2d10..5b706a31 100644 --- a/test/functional-tests/tests/helper_functions.py +++ b/test/functional-tests/tests/helper_functions.py @@ -22,7 +22,7 @@ import time import re -LOG_FILE = "/opt/logs/dcmd.log.0" +LOG_FILE = "/opt/logs/dcmd.log" RBUSCLI_SET_CMD = "rbuscli set " def run_dcmd(): diff --git a/uploadstblogs/include/uploadstblogs.h b/uploadstblogs/include/uploadstblogs.h index 3cb16fa2..41b2b7ae 100755 --- a/uploadstblogs/include/uploadstblogs.h +++ b/uploadstblogs/include/uploadstblogs.h @@ -28,6 +28,10 @@ #ifndef UPLOADSTBLOGS_H #define UPLOADSTBLOGS_H +#ifdef __cplusplus +extern "C" { +#endif + #include "uploadstblogs_types.h" /** @@ -117,4 +121,8 @@ int uploadstblogs_execute(int argc, char** argv); */ int main(int argc, char** argv); +#ifdef __cplusplus +} +#endif + #endif /* UPLOADSTBLOGS_H */ diff --git a/uploadstblogs/include/uploadstblogs_types.h b/uploadstblogs/include/uploadstblogs_types.h index d2ef38fd..55114ef0 100755 --- a/uploadstblogs/include/uploadstblogs_types.h +++ b/uploadstblogs/include/uploadstblogs_types.h @@ -145,6 +145,7 @@ typedef struct { TriggerType trigger_type; /**< Trigger type (TRIGGER_SCHEDULED, TRIGGER_ONDEMAND, etc.) */ bool rrd_flag; /**< RRD flag */ const char* rrd_file; /**< RRD upload log file path (optional) */ + bool uploadlogsnow_mode; /**< When true, execute UploadLogsNow workflow */ } UploadSTBLogsParams; diff --git a/uploadstblogs/src/Makefile.am b/uploadstblogs/src/Makefile.am index aa82bd8d..b68645bc 100755 --- a/uploadstblogs/src/Makefile.am +++ b/uploadstblogs/src/Makefile.am @@ -41,5 +41,9 @@ logupload_CFLAGS = -Wall -DEN_MAINTENANCE_MANAGER -DIARM_ENABLED -DT2_EVENT_ENAB logupload_LDADD = libuploadstblogs.la -lrdkloggers -lfwutils -lt2utils -ltelemetry_msgsender - +# Install public headers for external consumers (e.g. tr69hostif) +uploadstblogsincludedir = $(includedir)/uploadstblogs +uploadstblogsinclude_HEADERS = \ + $(top_srcdir)/uploadstblogs/include/uploadstblogs.h \ + $(top_srcdir)/uploadstblogs/include/uploadstblogs_types.h diff --git a/uploadstblogs/src/context_manager.c b/uploadstblogs/src/context_manager.c index a713ed2e..1906cff3 100755 --- a/uploadstblogs/src/context_manager.c +++ b/uploadstblogs/src/context_manager.c @@ -155,13 +155,19 @@ bool is_codebig_blocked(int block_time) bool init_context(RuntimeContext* ctx) { // Initialize RDK Logger + rdk_LogOutput_File filelog; + strncpy(filelog.fileName, "dcmscript.log", sizeof(filelog.fileName)-1); + filelog.fileName[sizeof(filelog.fileName) - 1] = '\0'; + strncpy(filelog.fileLocation, "/opt/logs/", sizeof(filelog.fileLocation)-1); + filelog.fileLocation[sizeof(filelog.fileLocation) - 1] = '\0'; + /* Extended initialization with programmatic configuration */ rdk_logger_ext_config_t config = { .pModuleName = "LOG.RDK.UPLOADSTB", /* Module name */ .loglevel = RDK_LOG_INFO, /* Default log level */ - .output = RDKLOG_OUTPUT_CONSOLE, /* Output to console (stdout/stderr) */ + .output = RDKLOG_OUTPUT_FILE, .format = RDKLOG_FORMAT_WITH_TS, /* Timestamped format */ - .pFilePolicy = NULL /* Not using file output, so NULL */ + .pFilePolicy = &filelog /* using file output */ }; if (rdk_logger_ext_init(&config) != RDK_SUCCESS) { diff --git a/uploadstblogs/src/uploadstblogs.c b/uploadstblogs/src/uploadstblogs.c index c766773c..203237bb 100755 --- a/uploadstblogs/src/uploadstblogs.c +++ b/uploadstblogs/src/uploadstblogs.c @@ -282,6 +282,24 @@ int uploadstblogs_run(const UploadSTBLogsParams* params) strncpy(ctx.rrd_file, params->rrd_file, sizeof(ctx.rrd_file) - 1); } + ctx.uploadlogsnow_mode = params->uploadlogsnow_mode; + + /* Handle UploadLogsNow mode */ + if (ctx.uploadlogsnow_mode) { + RDK_LOG(RDK_LOG_INFO, LOG_UPLOADSTB, + "[%s:%d] UploadLogsNow mode detected via API, executing custom workflow\n", + __FUNCTION__, __LINE__); + + ret = execute_uploadlogsnow_workflow(&ctx); + +#ifdef T2_EVENT_ENABLED + t2_uninit(); +#endif + cleanup_iarm_connection(); + release_lock(); + return ret; + } + /* Validate system prerequisites */ if (!validate_system(&ctx)) { fprintf(stderr, "System validation failed\n"); @@ -404,6 +422,14 @@ int uploadstblogs_execute(int argc, char** argv) return ret; } + /* Limit attempts to 1 when called from plugin (deepsleep) */ + if (ctx.trigger_type == TRIGGER_MANUAL) { + ctx.direct_max_attempts = 1; + RDK_LOG(RDK_LOG_INFO, LOG_UPLOADSTB, "Called from Plugin with 1 attempt\n"); + } else { + RDK_LOG(RDK_LOG_INFO, LOG_UPLOADSTB, "Called with %d attempts\n", ctx.direct_max_attempts); + } + /* Verify context after parse_args */ RDK_LOG(RDK_LOG_DEBUG, LOG_UPLOADSTB, "[main] Context after parse_args: MAC='%s', device_type='%s'\n",