From d3a2867ae807c9a78115d7e2b613a402c019ef2b Mon Sep 17 00:00:00 2001 From: Arun P Madhavan <54109113+arun-madhavan-013@users.noreply.github.com> Date: Fri, 5 Dec 2025 15:04:16 -0500 Subject: [PATCH 01/39] RDKEMW-11168, RDKEMW-4848: pass the proper handle to dsEnableHDCP (#182) * RDKEMW-4848: pass the proper handle to dsEnableHDCP --- ds/videoOutputPortType.cpp | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/ds/videoOutputPortType.cpp b/ds/videoOutputPortType.cpp index 87ebbaa6..2e112058 100644 --- a/ds/videoOutputPortType.cpp +++ b/ds/videoOutputPortType.cpp @@ -36,7 +36,7 @@ #include "illegalArgumentException.hpp" #include "videoOutputPortConfig.hpp" #include "dslogger.h" - +#include "dsVideoPort.h" #include @@ -209,19 +209,26 @@ void VideoOutputPortType::enabledDTCP() */ void VideoOutputPortType::enabledHDCP(bool contentProtect , char *hdcpKey , size_t keySize ) { - dsError_t ret = dsERR_NONE; - if (device::Host::getInstance().isHDMIOutPortPresent()){ - ret = dsEnableHDCP(dsVIDEOPORT_TYPE_HDMI, contentProtect, hdcpKey, keySize); + dsError_t ret = dsERR_NONE; + intptr_t handle = -1; + + // Assuming isHDMIOutPortPresent() will only be 'true' for Source devices + dsVideoPortType_t portType = device::Host::getInstance().isHDMIOutPortPresent() + ? dsVIDEOPORT_TYPE_HDMI + : dsVIDEOPORT_TYPE_INTERNAL; + ret = dsGetVideoPort(portType, 0, &handle); + if ((ret == dsERR_NONE) && (handle != -1)) { + ret = dsEnableHDCP(handle, contentProtect, hdcpKey, keySize); + } else { + INT_ERROR("VideoOutputPortType::enabledHDCP: Error type %d, handle=%p, error code=%d", portType, (void *)handle, ret); + // Set ret to an error code on dsGetVideoPort failure or invalid handle to ensure exception is thrown + ret = dsERR_GENERAL; } - else{ - ret = dsEnableHDCP(dsVIDEOPORT_TYPE_INTERNAL , contentProtect, hdcpKey, keySize); + + if (ret != dsERR_NONE) { + throw IllegalArgumentException(); } - - if (ret != dsERR_NONE) - { - throw IllegalArgumentException(); - } - _hdcpSupported = true; + _hdcpSupported = true; } From 6abd42423efc7c80dfad66ec29def87099457e7e Mon Sep 17 00:00:00 2001 From: grandhi_santoshkumar Date: Thu, 30 Oct 2025 11:43:36 +0000 Subject: [PATCH 02/39] RDKEMW-8587: consume the config variables using dlsym() in MW. Reason for change: consume the config variables using dlsym() in MW. Test Procedure: refer RDKEMW-8587 Risks: High Signed-off-by:gsanto722 --- ds/audioOutputPortConfig.cpp | 160 +++++++++++++++++++++++++++++++++++ 1 file changed, 160 insertions(+) diff --git a/ds/audioOutputPortConfig.cpp b/ds/audioOutputPortConfig.cpp index c3ab1cc6..28822598 100644 --- a/ds/audioOutputPortConfig.cpp +++ b/ds/audioOutputPortConfig.cpp @@ -35,6 +35,13 @@ #include "stdlib.h" #include "dslogger.h" +#define DEBUG 1 + +static dsAudioTypeConfig_t *kConfigs1 = NULL; +static dsAudioPortConfig_t *kPorts1 = NULL; +int *pKConSize, *pKPortSize; +static int kConfig_size_local = -1, kPort_size_local = -1; + namespace device { //To Make the instance as thread-safe, using = default, that can request special methods from the compiler. They are Special because only compiler can create them. @@ -108,6 +115,117 @@ List AudioOutputPortConfig::getSupportedTypes() return supportedTypes; } +bool searchConfigs() +{ + IARM_BUS_Lock(lock); + + void *dllib = dlopen(RDK_DSHAL_NAME, RTLD_LAZY); + if (dllib) { + kConfigs1 = (dsAudioTypeConfig_t *) dlsym(dllib, "kAudioConfigs"); + if (kConfigs1) { + INT_INFO("kAudioConfigs is defined and loaded kConfigs1 = %p\r\n", kConfigs1); + printf("%d:%s: kAudioConfigs is defined and loaded kConfigs1 = %p\n", __LINE__, __func__, kConfigs1); + } + else { + INT_ERROR("kAudioConfigs is not defined\r\n"); + INT_ERROR("%d:%s: kAudioConfigs is not defined\n", __LINE__, __func__); + } + + pKConSize = (int *) dlsym(dllib, "kAudioConfigs_size"); + if(pKConSize) + { + kConfig_size_local = *pKConSize; + INT_INFO("%d:%s: kAudioConfigs_size is defined and loaded kConfig_size_local = %d\n", __LINE__, __func__, kConfig_size_local); + } + else + { + INT_ERROR("%d:%s: kAudioConfigs_size is not defined\n", __LINE__, __func__); + kConfig_size_local = -1; + } + + kPorts1 = (dsAudioPortConfig_t *) dlsym(dllib, "kAudioPorts"); + if (kPorts1) { + INT_INFO("kAudioPorts is defined and loaded kPorts1 = %p\r\n", kPorts1); + INT_INFO("%d:%s: kAudioPorts is defined and loaded kPorts1 = %p\n", __LINE__, __func__, kPorts1); + } + else { + INT_ERROR("kAudioPorts is not defined\r\n"); + INT_ERROR("%d:%s: kAudioPorts is not defined\n", __LINE__, __func__); + } + + pKPortSize = (int *) dlsym(dllib, "kAudioPorts_size"); + if(pKPortSize) + { + kPort_size_local = *pKPortSize; + INT_INFO("%d:%s: kAudioPorts_size is defined and loaded kPort_size_local = %d\n", __LINE__, __func__, kPort_size_local); + } + else + { + INT_ERROR("%d:%s: kAudioPorts_size is not defined\n", __LINE__, __func__); + kPort_size_local = -1; + } + dlclose(dllib); + } + else { + INT_ERROR("Opening libdshalsrv.so failed\r\n"); + INT_ERROR("%d:%s: Opening libdshalsrv.so failed\n", __LINE__, __func__); + } + IARM_BUS_Unlock(lock); +#if DEBUG + INT_INFO("\n\n=========================================================================================================================\n\n"); + INT_INFO("\n%d:%s print configs using extern\n", __LINE__, __func__); + //printf("%d:%s: size of(kConfig_audio) = %d size of(kPort_audio) = %d\n", __LINE__, __func__, kConfig_size, kPort_size); + //kConfig_size_local = kConfig_size; + //kPort_size_local = kPort_size; + + if(kConfigs1 != NULL && kConfig_size_local != -1) + { + for (size_t i = 0; i < kConfig_size_local; i++) { + const dsAudioTypeConfig_t *typeCfg = &kConfigs1[i]; + //AudioOutputPortType &aPortType = AudioOutputPortType::getInstance(typeCfg->typeId); + //aPortType.enable(); + INT_INFO("%d:%s: typeCfg->typeId = %d\n", __LINE__, __func__, typeCfg->typeId); + INT_INFO("%d:%s: typeCfg->name = %s\n", __LINE__, __func__, typeCfg->name); + INT_INFO("%d:%s: typeCfg->numSupportedEncodings = %zu\n", __LINE__, __func__, typeCfg->numSupportedEncodings); + INT_INFO("%d:%s: typeCfg->numSupportedCompressions = %zu\n", __LINE__, __func__, typeCfg->numSupportedCompressions); + INT_INFO("%d:%s: typeCfg->numSupportedStereoModes = %zu\n", __LINE__, __func__, typeCfg->numSupportedStereoModes); + } + } + else + { + INT_ERROR("%d:%s: kAudioConfigs is NULL and kConfig_size_local is -1\n", __LINE__, __func__); + } + if(kPorts1 != NULL && kPort_size_local != -1) + { + /* + * set up ports based on kPorts[] + */ + for (size_t i = 0; i < kPort_size_local; i++) { + const dsAudioPortConfig_t *port = &kPorts1[i]; + INT_INFO("%d:%s: port->id.type = %d\n", __LINE__, __func__, port->id.type); + INT_INFO("%d:%s: port->id.index = %d\n", __LINE__, __func__, port->id.index); + } + } + else + { + INT_ERROR("%d:%s: kAudioPorts is NULL and kPort_size_local is -1\n", __LINE__, __func__); + } + INT_INFO("\n\n=========================================================================================================================\n\n"); +#endif + if(kConfigs1 == NULL || kConfig_size_local == -1 || kPorts1 == NULL || kPort_size_local == -1) + { + printf("Either kAudioConfigs or kAudioPorts is NULL and kConfig_size_local is -1, kPort_size_local is -1\n"); + return false; + } + else + { + printf("Both kAudioConfigs and kAudioPorts, kConfig_size_local, kPort_size_local are valid\n"); + return true; + } + //return (kConfigs1 && kPorts1); +} + + void AudioOutputPortConfig::load() { try { @@ -133,6 +251,47 @@ void AudioOutputPortConfig::load() } + if(searchConfigs() == true) + { + /* + * Initialize Audio portTypes (encodings, compressions etc.) + * and its port instances (db, level etc) + */ + if(kConfigs1 != NULL) + { + for (size_t i = 0; i < kConfig_size_local; i++) { + const dsAudioTypeConfig_t *typeCfg = &kConfigs1[i]; + AudioOutputPortType &aPortType = AudioOutputPortType::getInstance(typeCfg->typeId); + aPortType.enable(); + for (size_t j = 0; j < typeCfg->numSupportedEncodings; j++) { + aPortType.addEncoding(AudioEncoding::getInstance(typeCfg->encodings[j])); + _aEncodings.at(typeCfg->encodings[j]).enable(); + } + for (size_t j = 0; j < typeCfg->numSupportedCompressions; j++) { + aPortType.addCompression(typeCfg->compressions[j]); + _aCompressions.at(typeCfg->compressions[j]).enable(); + } + for (size_t j = 0; j < typeCfg->numSupportedStereoModes; j++) { + aPortType.addStereoMode(typeCfg->stereoModes[j]); + _aStereoModes.at(typeCfg->stereoModes[j]).enable(); + } + } + + /* + * set up ports based on kPorts[] + */ + if(kPorts1 != NULL) + { + for (size_t i = 0; i < kPort_size_local; i++) { + const dsAudioPortConfig_t *port = &kPorts1[i]; + _aPorts.push_back(AudioOutputPort((port->id.type), port->id.index, i)); + _aPortTypes.at(port->id.type).addPort(_aPorts.at(i)); + } + } + } + + } + else{ /* * Initialize Audio portTypes (encodings, compressions etc.) * and its port instances (db, level etc) @@ -165,6 +324,7 @@ void AudioOutputPortConfig::load() _aPorts.push_back(AudioOutputPort((port->id.type), port->id.index, i)); _aPortTypes.at(port->id.type).addPort(_aPorts.at(i)); } + } } catch(const Exception &e) { From 59bbd5caa69647354e6028b565ffd8c2280d2a64 Mon Sep 17 00:00:00 2001 From: grandhi_santoshkumar Date: Thu, 30 Oct 2025 12:15:11 +0000 Subject: [PATCH 03/39] fix build issue --- ds/audioOutputPortConfig.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ds/audioOutputPortConfig.cpp b/ds/audioOutputPortConfig.cpp index 28822598..ac53db0a 100644 --- a/ds/audioOutputPortConfig.cpp +++ b/ds/audioOutputPortConfig.cpp @@ -36,11 +36,14 @@ #include "dslogger.h" #define DEBUG 1 +#define IARM_BUS_Lock(lock) pthread_mutex_lock(&dsLock) +#define IARM_BUS_Unlock(lock) pthread_mutex_unlock(&dsLock) static dsAudioTypeConfig_t *kConfigs1 = NULL; static dsAudioPortConfig_t *kPorts1 = NULL; int *pKConSize, *pKPortSize; static int kConfig_size_local = -1, kPort_size_local = -1; +static pthread_mutex_t dsLock = PTHREAD_MUTEX_INITIALIZER; namespace device { From b08a24dcefddc6082f7dd1fe394db2302229a3df Mon Sep 17 00:00:00 2001 From: grandhi_santoshkumar Date: Thu, 30 Oct 2025 12:36:56 +0000 Subject: [PATCH 04/39] fix build issue Signed-off-by: grandhi_santoshkumar --- ds/audioOutputPortConfig.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/ds/audioOutputPortConfig.cpp b/ds/audioOutputPortConfig.cpp index ac53db0a..89a0ec18 100644 --- a/ds/audioOutputPortConfig.cpp +++ b/ds/audioOutputPortConfig.cpp @@ -34,10 +34,9 @@ #include "dsUtl.h" #include "stdlib.h" #include "dslogger.h" +#include #define DEBUG 1 -#define IARM_BUS_Lock(lock) pthread_mutex_lock(&dsLock) -#define IARM_BUS_Unlock(lock) pthread_mutex_unlock(&dsLock) static dsAudioTypeConfig_t *kConfigs1 = NULL; static dsAudioPortConfig_t *kPorts1 = NULL; @@ -120,7 +119,7 @@ List AudioOutputPortConfig::getSupportedTypes() bool searchConfigs() { - IARM_BUS_Lock(lock); + pthread_mutex_lock(&dsLock); void *dllib = dlopen(RDK_DSHAL_NAME, RTLD_LAZY); if (dllib) { @@ -173,7 +172,7 @@ bool searchConfigs() INT_ERROR("Opening libdshalsrv.so failed\r\n"); INT_ERROR("%d:%s: Opening libdshalsrv.so failed\n", __LINE__, __func__); } - IARM_BUS_Unlock(lock); + pthread_mutex_unlock(&dsLock); #if DEBUG INT_INFO("\n\n=========================================================================================================================\n\n"); INT_INFO("\n%d:%s print configs using extern\n", __LINE__, __func__); From 9cc6b5f593c2a1b564433e135e46d18c9b83db0d Mon Sep 17 00:00:00 2001 From: grandhi_santoshkumar Date: Wed, 5 Nov 2025 07:58:54 +0000 Subject: [PATCH 05/39] addressed review comments --- ds/audioOutputPortConfig.cpp | 179 +++++++++++++++++++++++++++++++++-- 1 file changed, 172 insertions(+), 7 deletions(-) diff --git a/ds/audioOutputPortConfig.cpp b/ds/audioOutputPortConfig.cpp index 89a0ec18..ba9fda68 100644 --- a/ds/audioOutputPortConfig.cpp +++ b/ds/audioOutputPortConfig.cpp @@ -38,12 +38,16 @@ #define DEBUG 1 -static dsAudioTypeConfig_t *kConfigs1 = NULL; -static dsAudioPortConfig_t *kPorts1 = NULL; -int *pKConSize, *pKPortSize; -static int kConfig_size_local = -1, kPort_size_local = -1; static pthread_mutex_t dsLock = PTHREAD_MUTEX_INITIALIZER; +typedef struct Configs +{ + dsAudioTypeConfig_t *pKConfigs; + dsAudioPortConfig_t *pKPorts; + int *pKConfigSize; + int *pKPortSize; +}Configs_t; + namespace device { //To Make the instance as thread-safe, using = default, that can request special methods from the compiler. They are Special because only compiler can create them. @@ -117,6 +121,115 @@ List AudioOutputPortConfig::getSupportedTypes() return supportedTypes; } +bool searchConfigs(Configs_t *config, char *searchVaribles) +{ + INT_INFO("%d:%s: Entering function\n", __LINE__, __func__); + INT_INFO("%d:%s: searchVaribles[0] = %s\n", __LINE__, __func__, &searchVaribles[0]); + INT_INFO("%d:%s: searchVaribles[1] = %s\n", __LINE__, __func__, &searchVaribles[1]); + INT_INFO("%d:%s: searchVaribles[2] = %s\n", __LINE__, __func__, &searchVaribles[2]); + INT_INFO("%d:%s: searchVaribles[3] = %s\n", __LINE__, __func__, &searchVaribles[4]); + + pthread_mutex_lock(&dsLock); + + void *dllib = dlopen(RDK_DSHAL_NAME, RTLD_LAZY); + if (dllib) { + config->pKConfigs = (dsAudioTypeConfig_t *) dlsym(dllib, searchVaribles[0]); + if (config->pKConfigs) { + INT_INFO("kAudioConfigs is defined and loaded kConfigs1 = %p\r\n", config->pKConfigs); + else { + INT_ERROR("%d:%s: kAudioConfigs is not defined\n", __LINE__, __func__); + } + + config->pKConfigSize = (int *) dlsym(dllib, searchVaribles[2]); + if(config->pKConfigSize) + { + //kConfig_size_local = *pKConSize; + INT_INFO("%d:%s: kAudioConfigs_size is defined and loaded kConfig_size_local = %d\n", __LINE__, __func__, *config->pKConfigSize); + } + else + { + INT_ERROR("%d:%s: kAudioConfigs_size is not defined\n", __LINE__, __func__); + config->pKConfigSize = -1; + } + + config->pKPorts = (dsAudioPortConfig_t *) dlsym(dllib, searchVaribles[1]); + if (config->pKPorts) {; + INT_INFO("%d:%s: kAudioPorts is defined and loaded config->pKPorts = %p\n", __LINE__, __func__, config->pKPorts); + } + else { + INT_ERROR("%d:%s: kAudioPorts is not defined\n", __LINE__, __func__); + } + + config->pKPortSize = (int *) dlsym(dllib, searchVaribles[3]); + if(config->pKPortSize) + { + INT_INFO("%d:%s: kAudioPorts_size is defined and loaded config->pKPortSize = %d\n", __LINE__, __func__, *config->pKPortSize); + } + else + { + INT_ERROR("%d:%s: kAudioPorts_size is not defined\n", __LINE__, __func__); + config->pKPortSize = -1; + } + dlclose(dllib); + } + else { + INT_ERROR("%d:%s: Opening libds-hal.so failed\n", __LINE__, __func__); + } + pthread_mutex_unlock(&dsLock); +#if DEBUG + INT_INFO("\n\n=========================================================================================================================\n\n"); + INT_INFO("\n%d:%s print configs using extern\n", __LINE__, __func__); + //printf("%d:%s: size of(kConfig_audio) = %d size of(kPort_audio) = %d\n", __LINE__, __func__, kConfig_size, kPort_size); + //kConfig_size_local = kConfig_size; + //kPort_size_local = kPort_size; + + if(config->pKConfigs != NULL && *(config->pKConfigSize) != -1) + { + for (size_t i = 0; i < *(config->pKConfigSize); i++) { + const dsAudioTypeConfig_t *typeCfg = &config->pKConfigs[i]; + //AudioOutputPortType &aPortType = AudioOutputPortType::getInstance(typeCfg->typeId); + //aPortType.enable(); + INT_INFO("%d:%s: typeCfg->typeId = %d\n", __LINE__, __func__, typeCfg->typeId); + INT_INFO("%d:%s: typeCfg->name = %s\n", __LINE__, __func__, typeCfg->name); + INT_INFO("%d:%s: typeCfg->numSupportedEncodings = %zu\n", __LINE__, __func__, typeCfg->numSupportedEncodings); + INT_INFO("%d:%s: typeCfg->numSupportedCompressions = %zu\n", __LINE__, __func__, typeCfg->numSupportedCompressions); + INT_INFO("%d:%s: typeCfg->numSupportedStereoModes = %zu\n", __LINE__, __func__, typeCfg->numSupportedStereoModes); + } + } + else + { + INT_ERROR("%d:%s: kAudioConfigs is NULL and kConfig_size_local is -1\n", __LINE__, __func__); + } + if(configuration->pKPorts != NULL && *(configuration->pKPortSize) != -1) + { + /* + * set up ports based on kPorts[] + */ + for (size_t i = 0; i < *(configuration->pKPortSize); i++) { + const dsAudioPortConfig_t *port = &configuration->pKPorts[i]; + INT_INFO("%d:%s: port->id.type = %d\n", __LINE__, __func__, port->id.type); + INT_INFO("%d:%s: port->id.index = %d\n", __LINE__, __func__, port->id.index); + } + } + else + { + INT_ERROR("%d:%s: kAudioPorts is NULL and kPort_size_local is -1\n", __LINE__, __func__); + } + INT_INFO("\n\n=========================================================================================================================\n\n"); +#endif + if(kConfigs1 == NULL || kConfig_size_local == -1 || kPorts1 == NULL || kPort_size_local == -1) + { + printf("Either kAudioConfigs or kAudioPorts is NULL and kConfig_size_local is -1, kPort_size_local is -1\n"); + return false; + } + else + { + printf("Both kAudioConfigs and kAudioPorts, kConfig_size_local, kPort_size_local are valid\n"); + return true; + } +} + +#if 0 bool searchConfigs() { pthread_mutex_lock(&dsLock); @@ -169,8 +282,7 @@ bool searchConfigs() dlclose(dllib); } else { - INT_ERROR("Opening libdshalsrv.so failed\r\n"); - INT_ERROR("%d:%s: Opening libdshalsrv.so failed\n", __LINE__, __func__); + INT_ERROR("%d:%s: Opening libds-hal.so failed\n", __LINE__, __func__); } pthread_mutex_unlock(&dsLock); #if DEBUG @@ -226,10 +338,17 @@ bool searchConfigs() } //return (kConfigs1 && kPorts1); } - +#endif void AudioOutputPortConfig::load() { + dsAudioTypeConfig_t *pKConfigs = NULL; + dsAudioPortConfig_t *pKPorts = NULL; + int *pKConfigSize, *pKPortSize; + Configs_t configuration = {0}; + char searchVaribles[][30] = { "kAudioConfigs", "kAudioPorts", "kAudioConfigs_size", "kAudioPorts_size" }; + bool ret; + //static int kConfig_size_local = -1, kPort_size_local = -1; try { /* * Load Constants First. @@ -253,6 +372,51 @@ void AudioOutputPortConfig::load() } + ret = searchConfigs(&configuration, searchVaribles); + if (ret == true) + { + INT_INFO("Both kAudioConfigs and kAudioPorts, kConfig_size_local, kPort_size_local are valid\n"); + } + else + { + INT_ERROR("Invalid kAudioConfigs or kAudioPorts, kConfig_size_local, kPort_size_local\n"); + config.pKConfigs = kConfigs; + config.pKConfigSize = dsUTL_DIM(kConfigs); + config.pKPorts = kPorts; + config.pKPortSize = dsUTL_DIM(kPorts); + } + /* + * Initialize Audio portTypes (encodings, compressions etc.) + * and its port instances (db, level etc) + */ + for (size_t i = 0; i < configuration->pKConfigSize; i++) { + const dsAudioTypeConfig_t *typeCfg = &(configuration->pKConfigs[i]); + AudioOutputPortType &aPortType = AudioOutputPortType::getInstance(typeCfg->typeId); + aPortType.enable(); + for (size_t j = 0; j < typeCfg->numSupportedEncodings; j++) { + aPortType.addEncoding(AudioEncoding::getInstance(typeCfg->encodings[j])); + _aEncodings.at(typeCfg->encodings[j]).enable(); + } + for (size_t j = 0; j < typeCfg->numSupportedCompressions; j++) { + aPortType.addCompression(typeCfg->compressions[j]); + _aCompressions.at(typeCfg->compressions[j]).enable(); + } + for (size_t j = 0; j < typeCfg->numSupportedStereoModes; j++) { + aPortType.addStereoMode(typeCfg->stereoModes[j]); + _aStereoModes.at(typeCfg->stereoModes[j]).enable(); + } + } + + /* + * set up ports based on kPorts[] + */ + for (size_t i = 0; i < configuration->pKPortSize; i++) { + const dsAudioPortConfig_t *port = &configuration->pKPorts[i]; + _aPorts.push_back(AudioOutputPort((port->id.type), port->id.index, i)); + _aPortTypes.at(port->id.type).addPort(_aPorts.at(i)); + } + +#if 0 if(searchConfigs() == true) { /* @@ -327,6 +491,7 @@ void AudioOutputPortConfig::load() _aPortTypes.at(port->id.type).addPort(_aPorts.at(i)); } } + #endif } catch(const Exception &e) { From ade5a61c62cb030b5709730f86384ca2a6b77523 Mon Sep 17 00:00:00 2001 From: grandhi_santoshkumar Date: Wed, 5 Nov 2025 09:52:33 +0000 Subject: [PATCH 06/39] fix build issue --- ds/audioOutputPortConfig.cpp | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/ds/audioOutputPortConfig.cpp b/ds/audioOutputPortConfig.cpp index ba9fda68..09dc337a 100644 --- a/ds/audioOutputPortConfig.cpp +++ b/ds/audioOutputPortConfig.cpp @@ -121,7 +121,7 @@ List AudioOutputPortConfig::getSupportedTypes() return supportedTypes; } -bool searchConfigs(Configs_t *config, char *searchVaribles) +bool searchConfigs(Configs_t *config, const char *searchVaribles[]) { INT_INFO("%d:%s: Entering function\n", __LINE__, __func__); INT_INFO("%d:%s: searchVaribles[0] = %s\n", __LINE__, __func__, &searchVaribles[0]); @@ -136,6 +136,7 @@ bool searchConfigs(Configs_t *config, char *searchVaribles) config->pKConfigs = (dsAudioTypeConfig_t *) dlsym(dllib, searchVaribles[0]); if (config->pKConfigs) { INT_INFO("kAudioConfigs is defined and loaded kConfigs1 = %p\r\n", config->pKConfigs); + } else { INT_ERROR("%d:%s: kAudioConfigs is not defined\n", __LINE__, __func__); } @@ -149,11 +150,11 @@ bool searchConfigs(Configs_t *config, char *searchVaribles) else { INT_ERROR("%d:%s: kAudioConfigs_size is not defined\n", __LINE__, __func__); - config->pKConfigSize = -1; + *(config->pKConfigSize) = -1; } config->pKPorts = (dsAudioPortConfig_t *) dlsym(dllib, searchVaribles[1]); - if (config->pKPorts) {; + if (config->pKPorts) { INT_INFO("%d:%s: kAudioPorts is defined and loaded config->pKPorts = %p\n", __LINE__, __func__, config->pKPorts); } else { @@ -168,7 +169,7 @@ bool searchConfigs(Configs_t *config, char *searchVaribles) else { INT_ERROR("%d:%s: kAudioPorts_size is not defined\n", __LINE__, __func__); - config->pKPortSize = -1; + *(config->pKPortSize) = -1; } dlclose(dllib); } @@ -200,13 +201,13 @@ bool searchConfigs(Configs_t *config, char *searchVaribles) { INT_ERROR("%d:%s: kAudioConfigs is NULL and kConfig_size_local is -1\n", __LINE__, __func__); } - if(configuration->pKPorts != NULL && *(configuration->pKPortSize) != -1) + if(config->pKPorts != NULL && *(config->pKPortSize) != -1) { /* * set up ports based on kPorts[] */ - for (size_t i = 0; i < *(configuration->pKPortSize); i++) { - const dsAudioPortConfig_t *port = &configuration->pKPorts[i]; + for (size_t i = 0; i < *(config->pKPortSize); i++) { + const dsAudioPortConfig_t *port = &(config->pKPorts[i]); INT_INFO("%d:%s: port->id.type = %d\n", __LINE__, __func__, port->id.type); INT_INFO("%d:%s: port->id.index = %d\n", __LINE__, __func__, port->id.index); } @@ -217,14 +218,14 @@ bool searchConfigs(Configs_t *config, char *searchVaribles) } INT_INFO("\n\n=========================================================================================================================\n\n"); #endif - if(kConfigs1 == NULL || kConfig_size_local == -1 || kPorts1 == NULL || kPort_size_local == -1) + if(config->pKConfigs == NULL || config->pKConfigSize == -1 || config->pKPorts == NULL || config->pKPortSize == -1) { - printf("Either kAudioConfigs or kAudioPorts is NULL and kConfig_size_local is -1, kPort_size_local is -1\n"); + printf("Either kAudioConfigs or kAudioPorts is NULL and pKConfigSize is -1, pKPortSize is -1\n"); return false; } else { - printf("Both kAudioConfigs and kAudioPorts, kConfig_size_local, kPort_size_local are valid\n"); + printf("Both kAudioConfigs and kAudioPorts, pKConfigSize, pKPortSize are valid\n"); return true; } } @@ -389,8 +390,8 @@ void AudioOutputPortConfig::load() * Initialize Audio portTypes (encodings, compressions etc.) * and its port instances (db, level etc) */ - for (size_t i = 0; i < configuration->pKConfigSize; i++) { - const dsAudioTypeConfig_t *typeCfg = &(configuration->pKConfigs[i]); + for (size_t i = 0; i < configuration.pKConfigSize; i++) { + const dsAudioTypeConfig_t *typeCfg = &(configuration.pKConfigs[i]); AudioOutputPortType &aPortType = AudioOutputPortType::getInstance(typeCfg->typeId); aPortType.enable(); for (size_t j = 0; j < typeCfg->numSupportedEncodings; j++) { @@ -410,8 +411,8 @@ void AudioOutputPortConfig::load() /* * set up ports based on kPorts[] */ - for (size_t i = 0; i < configuration->pKPortSize; i++) { - const dsAudioPortConfig_t *port = &configuration->pKPorts[i]; + for (size_t i = 0; i < configuration.pKPortSize; i++) { + const dsAudioPortConfig_t *port = &configuration.pKPorts[i]; _aPorts.push_back(AudioOutputPort((port->id.type), port->id.index, i)); _aPortTypes.at(port->id.type).addPort(_aPorts.at(i)); } From 6ac6e5000127a71b4c958f894c4eb4d8139e99b7 Mon Sep 17 00:00:00 2001 From: grandhi_santoshkumar Date: Wed, 5 Nov 2025 10:01:47 +0000 Subject: [PATCH 07/39] fix build issue --- ds/audioOutputPortConfig.cpp | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/ds/audioOutputPortConfig.cpp b/ds/audioOutputPortConfig.cpp index 09dc337a..3398f862 100644 --- a/ds/audioOutputPortConfig.cpp +++ b/ds/audioOutputPortConfig.cpp @@ -218,7 +218,7 @@ bool searchConfigs(Configs_t *config, const char *searchVaribles[]) } INT_INFO("\n\n=========================================================================================================================\n\n"); #endif - if(config->pKConfigs == NULL || config->pKConfigSize == -1 || config->pKPorts == NULL || config->pKPortSize == -1) + if(config->pKConfigs == NULL || *(config->pKConfigSize) == -1 || config->pKPorts == NULL || *(config->pKPortSize) == -1) { printf("Either kAudioConfigs or kAudioPorts is NULL and pKConfigSize is -1, pKPortSize is -1\n"); return false; @@ -381,16 +381,17 @@ void AudioOutputPortConfig::load() else { INT_ERROR("Invalid kAudioConfigs or kAudioPorts, kConfig_size_local, kPort_size_local\n"); - config.pKConfigs = kConfigs; - config.pKConfigSize = dsUTL_DIM(kConfigs); - config.pKPorts = kPorts; - config.pKPortSize = dsUTL_DIM(kPorts); + configuration.pKConfigs = kConfigs; + *(configuration.pKConfigSize) = dsUTL_DIM(kConfigs); + configuration.pKPorts = kPorts; + *(configuration.pKPortSize) = dsUTL_DIM(kPorts); } + INT_INFO("configuration.pKConfigs =%p, configuration.pKPorts =%p, *(configuration.pKConfigSize) = %d, *(configuration.pKPortSize) = %d\n", configuration.pKConfigs, configuration.pKPorts, *(configuration.pKConfigSize), *(configuration.pKPortSize)); /* * Initialize Audio portTypes (encodings, compressions etc.) * and its port instances (db, level etc) */ - for (size_t i = 0; i < configuration.pKConfigSize; i++) { + for (size_t i = 0; i < *(configuration.pKConfigSize); i++) { const dsAudioTypeConfig_t *typeCfg = &(configuration.pKConfigs[i]); AudioOutputPortType &aPortType = AudioOutputPortType::getInstance(typeCfg->typeId); aPortType.enable(); @@ -411,7 +412,7 @@ void AudioOutputPortConfig::load() /* * set up ports based on kPorts[] */ - for (size_t i = 0; i < configuration.pKPortSize; i++) { + for (size_t i = 0; i < *(configuration.pKPortSize); i++) { const dsAudioPortConfig_t *port = &configuration.pKPorts[i]; _aPorts.push_back(AudioOutputPort((port->id.type), port->id.index, i)); _aPortTypes.at(port->id.type).addPort(_aPorts.at(i)); From 2dc944b2417c477ce3c9c8f9d34cfdfcda172164 Mon Sep 17 00:00:00 2001 From: grandhi_santoshkumar Date: Wed, 5 Nov 2025 10:28:49 +0000 Subject: [PATCH 08/39] fix build issue --- ds/audioOutputPortConfig.cpp | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/ds/audioOutputPortConfig.cpp b/ds/audioOutputPortConfig.cpp index 3398f862..20f24e45 100644 --- a/ds/audioOutputPortConfig.cpp +++ b/ds/audioOutputPortConfig.cpp @@ -42,8 +42,8 @@ static pthread_mutex_t dsLock = PTHREAD_MUTEX_INITIALIZER; typedef struct Configs { - dsAudioTypeConfig_t *pKConfigs; - dsAudioPortConfig_t *pKPorts; + const dsAudioTypeConfig_t *pKConfigs; + const dsAudioPortConfig_t *pKPorts; int *pKConfigSize; int *pKPortSize; }Configs_t; @@ -187,7 +187,7 @@ bool searchConfigs(Configs_t *config, const char *searchVaribles[]) if(config->pKConfigs != NULL && *(config->pKConfigSize) != -1) { for (size_t i = 0; i < *(config->pKConfigSize); i++) { - const dsAudioTypeConfig_t *typeCfg = &config->pKConfigs[i]; + const dsAudioTypeConfig_t *typeCfg = &(config->pKConfigs[i]); //AudioOutputPortType &aPortType = AudioOutputPortType::getInstance(typeCfg->typeId); //aPortType.enable(); INT_INFO("%d:%s: typeCfg->typeId = %d\n", __LINE__, __func__, typeCfg->typeId); @@ -347,9 +347,12 @@ void AudioOutputPortConfig::load() dsAudioPortConfig_t *pKPorts = NULL; int *pKConfigSize, *pKPortSize; Configs_t configuration = {0}; - char searchVaribles[][30] = { "kAudioConfigs", "kAudioPorts", "kAudioConfigs_size", "kAudioPorts_size" }; - bool ret; - //static int kConfig_size_local = -1, kPort_size_local = -1; + const char* searchVaribles[] = { + "kAudioConfigs", + "kAudioPorts", + "kAudioConfigs_size", + "kAudioPorts_size" + }; try { /* * Load Constants First. @@ -385,9 +388,9 @@ void AudioOutputPortConfig::load() *(configuration.pKConfigSize) = dsUTL_DIM(kConfigs); configuration.pKPorts = kPorts; *(configuration.pKPortSize) = dsUTL_DIM(kPorts); + INT_INFO("configuration.pKConfigs =%p, configuration.pKPorts =%p, *(configuration.pKConfigSize) = %d, *(configuration.pKPortSize) = %d\n", configuration.pKConfigs, configuration.pKPorts, *(configuration.pKConfigSize), *(configuration.pKPortSize)); } - INT_INFO("configuration.pKConfigs =%p, configuration.pKPorts =%p, *(configuration.pKConfigSize) = %d, *(configuration.pKPortSize) = %d\n", configuration.pKConfigs, configuration.pKPorts, *(configuration.pKConfigSize), *(configuration.pKPortSize)); - /* + /* * Initialize Audio portTypes (encodings, compressions etc.) * and its port instances (db, level etc) */ From f6f3d48c0d83024282574fce79114e95114c3585 Mon Sep 17 00:00:00 2001 From: grandhi_santoshkumar Date: Wed, 5 Nov 2025 11:10:04 +0000 Subject: [PATCH 09/39] fix build issue --- ds/audioOutputPortConfig.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ds/audioOutputPortConfig.cpp b/ds/audioOutputPortConfig.cpp index 20f24e45..5005ff4c 100644 --- a/ds/audioOutputPortConfig.cpp +++ b/ds/audioOutputPortConfig.cpp @@ -353,6 +353,8 @@ void AudioOutputPortConfig::load() "kAudioConfigs_size", "kAudioPorts_size" }; + bool ret = false; + try { /* * Load Constants First. From 441361bc18ce501eee3c4c430457983609b96d83 Mon Sep 17 00:00:00 2001 From: grandhi_santoshkumar Date: Wed, 5 Nov 2025 13:05:35 +0000 Subject: [PATCH 10/39] fix build issue --- ds/audioOutputPortConfig.cpp | 128 +++-------------------------------- 1 file changed, 9 insertions(+), 119 deletions(-) diff --git a/ds/audioOutputPortConfig.cpp b/ds/audioOutputPortConfig.cpp index 5005ff4c..478b6e8b 100644 --- a/ds/audioOutputPortConfig.cpp +++ b/ds/audioOutputPortConfig.cpp @@ -124,10 +124,11 @@ List AudioOutputPortConfig::getSupportedTypes() bool searchConfigs(Configs_t *config, const char *searchVaribles[]) { INT_INFO("%d:%s: Entering function\n", __LINE__, __func__); - INT_INFO("%d:%s: searchVaribles[0] = %s\n", __LINE__, __func__, &searchVaribles[0]); - INT_INFO("%d:%s: searchVaribles[1] = %s\n", __LINE__, __func__, &searchVaribles[1]); - INT_INFO("%d:%s: searchVaribles[2] = %s\n", __LINE__, __func__, &searchVaribles[2]); - INT_INFO("%d:%s: searchVaribles[3] = %s\n", __LINE__, __func__, &searchVaribles[4]); + INT_INFO("%d:%s: searchVaribles[0] = %s\n", __LINE__, __func__, searchVaribles[0]); + INT_INFO("%d:%s: searchVaribles[1] = %s\n", __LINE__, __func__, searchVaribles[1]); + INT_INFO("%d:%s: searchVaribles[2] = %s\n", __LINE__, __func__, searchVaribles[2]); + INT_INFO("%d:%s: searchVaribles[3] = %s\n", __LINE__, __func__, searchVaribles[4]); + static int invalidsize = -1; pthread_mutex_lock(&dsLock); @@ -149,8 +150,8 @@ bool searchConfigs(Configs_t *config, const char *searchVaribles[]) } else { - INT_ERROR("%d:%s: kAudioConfigs_size is not defined\n", __LINE__, __func__); - *(config->pKConfigSize) = -1; + config->pKConfigSize = &invalidsize; + INT_ERROR("%d:%s: kAudioConfigs_size is not defined *(config->pKConfigSize)= %d\n", __LINE__, __func__, *config->pKConfigSize); } config->pKPorts = (dsAudioPortConfig_t *) dlsym(dllib, searchVaribles[1]); @@ -168,8 +169,8 @@ bool searchConfigs(Configs_t *config, const char *searchVaribles[]) } else { - INT_ERROR("%d:%s: kAudioPorts_size is not defined\n", __LINE__, __func__); - *(config->pKPortSize) = -1; + config->pKPortSize = &invalidsize; + INT_ERROR("%d:%s: kAudioPorts_size is not defined *(config->pKPortSize)= %d\n", __LINE__, __func__, *config->pKPortSize); } dlclose(dllib); } @@ -230,117 +231,6 @@ bool searchConfigs(Configs_t *config, const char *searchVaribles[]) } } -#if 0 -bool searchConfigs() -{ - pthread_mutex_lock(&dsLock); - - void *dllib = dlopen(RDK_DSHAL_NAME, RTLD_LAZY); - if (dllib) { - kConfigs1 = (dsAudioTypeConfig_t *) dlsym(dllib, "kAudioConfigs"); - if (kConfigs1) { - INT_INFO("kAudioConfigs is defined and loaded kConfigs1 = %p\r\n", kConfigs1); - printf("%d:%s: kAudioConfigs is defined and loaded kConfigs1 = %p\n", __LINE__, __func__, kConfigs1); - } - else { - INT_ERROR("kAudioConfigs is not defined\r\n"); - INT_ERROR("%d:%s: kAudioConfigs is not defined\n", __LINE__, __func__); - } - - pKConSize = (int *) dlsym(dllib, "kAudioConfigs_size"); - if(pKConSize) - { - kConfig_size_local = *pKConSize; - INT_INFO("%d:%s: kAudioConfigs_size is defined and loaded kConfig_size_local = %d\n", __LINE__, __func__, kConfig_size_local); - } - else - { - INT_ERROR("%d:%s: kAudioConfigs_size is not defined\n", __LINE__, __func__); - kConfig_size_local = -1; - } - - kPorts1 = (dsAudioPortConfig_t *) dlsym(dllib, "kAudioPorts"); - if (kPorts1) { - INT_INFO("kAudioPorts is defined and loaded kPorts1 = %p\r\n", kPorts1); - INT_INFO("%d:%s: kAudioPorts is defined and loaded kPorts1 = %p\n", __LINE__, __func__, kPorts1); - } - else { - INT_ERROR("kAudioPorts is not defined\r\n"); - INT_ERROR("%d:%s: kAudioPorts is not defined\n", __LINE__, __func__); - } - - pKPortSize = (int *) dlsym(dllib, "kAudioPorts_size"); - if(pKPortSize) - { - kPort_size_local = *pKPortSize; - INT_INFO("%d:%s: kAudioPorts_size is defined and loaded kPort_size_local = %d\n", __LINE__, __func__, kPort_size_local); - } - else - { - INT_ERROR("%d:%s: kAudioPorts_size is not defined\n", __LINE__, __func__); - kPort_size_local = -1; - } - dlclose(dllib); - } - else { - INT_ERROR("%d:%s: Opening libds-hal.so failed\n", __LINE__, __func__); - } - pthread_mutex_unlock(&dsLock); -#if DEBUG - INT_INFO("\n\n=========================================================================================================================\n\n"); - INT_INFO("\n%d:%s print configs using extern\n", __LINE__, __func__); - //printf("%d:%s: size of(kConfig_audio) = %d size of(kPort_audio) = %d\n", __LINE__, __func__, kConfig_size, kPort_size); - //kConfig_size_local = kConfig_size; - //kPort_size_local = kPort_size; - - if(kConfigs1 != NULL && kConfig_size_local != -1) - { - for (size_t i = 0; i < kConfig_size_local; i++) { - const dsAudioTypeConfig_t *typeCfg = &kConfigs1[i]; - //AudioOutputPortType &aPortType = AudioOutputPortType::getInstance(typeCfg->typeId); - //aPortType.enable(); - INT_INFO("%d:%s: typeCfg->typeId = %d\n", __LINE__, __func__, typeCfg->typeId); - INT_INFO("%d:%s: typeCfg->name = %s\n", __LINE__, __func__, typeCfg->name); - INT_INFO("%d:%s: typeCfg->numSupportedEncodings = %zu\n", __LINE__, __func__, typeCfg->numSupportedEncodings); - INT_INFO("%d:%s: typeCfg->numSupportedCompressions = %zu\n", __LINE__, __func__, typeCfg->numSupportedCompressions); - INT_INFO("%d:%s: typeCfg->numSupportedStereoModes = %zu\n", __LINE__, __func__, typeCfg->numSupportedStereoModes); - } - } - else - { - INT_ERROR("%d:%s: kAudioConfigs is NULL and kConfig_size_local is -1\n", __LINE__, __func__); - } - if(kPorts1 != NULL && kPort_size_local != -1) - { - /* - * set up ports based on kPorts[] - */ - for (size_t i = 0; i < kPort_size_local; i++) { - const dsAudioPortConfig_t *port = &kPorts1[i]; - INT_INFO("%d:%s: port->id.type = %d\n", __LINE__, __func__, port->id.type); - INT_INFO("%d:%s: port->id.index = %d\n", __LINE__, __func__, port->id.index); - } - } - else - { - INT_ERROR("%d:%s: kAudioPorts is NULL and kPort_size_local is -1\n", __LINE__, __func__); - } - INT_INFO("\n\n=========================================================================================================================\n\n"); -#endif - if(kConfigs1 == NULL || kConfig_size_local == -1 || kPorts1 == NULL || kPort_size_local == -1) - { - printf("Either kAudioConfigs or kAudioPorts is NULL and kConfig_size_local is -1, kPort_size_local is -1\n"); - return false; - } - else - { - printf("Both kAudioConfigs and kAudioPorts, kConfig_size_local, kPort_size_local are valid\n"); - return true; - } - //return (kConfigs1 && kPorts1); -} -#endif - void AudioOutputPortConfig::load() { dsAudioTypeConfig_t *pKConfigs = NULL; From 8d36de9ddaf279be0440fbb4851ef7e310c4b34e Mon Sep 17 00:00:00 2001 From: grandhi_santoshkumar Date: Wed, 5 Nov 2025 13:26:27 +0000 Subject: [PATCH 11/39] fix coverity issue and removed unwanted code. --- ds/audioOutputPortConfig.cpp | 127 +++++++---------------------------- 1 file changed, 26 insertions(+), 101 deletions(-) diff --git a/ds/audioOutputPortConfig.cpp b/ds/audioOutputPortConfig.cpp index 478b6e8b..c26a20cf 100644 --- a/ds/audioOutputPortConfig.cpp +++ b/ds/audioOutputPortConfig.cpp @@ -127,7 +127,7 @@ bool searchConfigs(Configs_t *config, const char *searchVaribles[]) INT_INFO("%d:%s: searchVaribles[0] = %s\n", __LINE__, __func__, searchVaribles[0]); INT_INFO("%d:%s: searchVaribles[1] = %s\n", __LINE__, __func__, searchVaribles[1]); INT_INFO("%d:%s: searchVaribles[2] = %s\n", __LINE__, __func__, searchVaribles[2]); - INT_INFO("%d:%s: searchVaribles[3] = %s\n", __LINE__, __func__, searchVaribles[4]); + INT_INFO("%d:%s: searchVaribles[3] = %s\n", __LINE__, __func__, searchVaribles[3]); static int invalidsize = -1; pthread_mutex_lock(&dsLock); @@ -233,9 +233,9 @@ bool searchConfigs(Configs_t *config, const char *searchVaribles[]) void AudioOutputPortConfig::load() { - dsAudioTypeConfig_t *pKConfigs = NULL; - dsAudioPortConfig_t *pKPorts = NULL; - int *pKConfigSize, *pKPortSize; + //dsAudioTypeConfig_t *pKConfigs = NULL; + //dsAudioPortConfig_t *pKPorts = NULL; + int configSize, portSize; Configs_t configuration = {0}; const char* searchVaribles[] = { "kAudioConfigs", @@ -268,99 +268,28 @@ void AudioOutputPortConfig::load() } - ret = searchConfigs(&configuration, searchVaribles); - if (ret == true) - { - INT_INFO("Both kAudioConfigs and kAudioPorts, kConfig_size_local, kPort_size_local are valid\n"); - } - else - { - INT_ERROR("Invalid kAudioConfigs or kAudioPorts, kConfig_size_local, kPort_size_local\n"); - configuration.pKConfigs = kConfigs; - *(configuration.pKConfigSize) = dsUTL_DIM(kConfigs); - configuration.pKPorts = kPorts; - *(configuration.pKPortSize) = dsUTL_DIM(kPorts); - INT_INFO("configuration.pKConfigs =%p, configuration.pKPorts =%p, *(configuration.pKConfigSize) = %d, *(configuration.pKPortSize) = %d\n", configuration.pKConfigs, configuration.pKPorts, *(configuration.pKConfigSize), *(configuration.pKPortSize)); - } - /* - * Initialize Audio portTypes (encodings, compressions etc.) - * and its port instances (db, level etc) - */ - for (size_t i = 0; i < *(configuration.pKConfigSize); i++) { - const dsAudioTypeConfig_t *typeCfg = &(configuration.pKConfigs[i]); - AudioOutputPortType &aPortType = AudioOutputPortType::getInstance(typeCfg->typeId); - aPortType.enable(); - for (size_t j = 0; j < typeCfg->numSupportedEncodings; j++) { - aPortType.addEncoding(AudioEncoding::getInstance(typeCfg->encodings[j])); - _aEncodings.at(typeCfg->encodings[j]).enable(); - } - for (size_t j = 0; j < typeCfg->numSupportedCompressions; j++) { - aPortType.addCompression(typeCfg->compressions[j]); - _aCompressions.at(typeCfg->compressions[j]).enable(); - } - for (size_t j = 0; j < typeCfg->numSupportedStereoModes; j++) { - aPortType.addStereoMode(typeCfg->stereoModes[j]); - _aStereoModes.at(typeCfg->stereoModes[j]).enable(); + ret = searchConfigs(&configuration, searchVaribles); + if (ret == true) + { + INT_INFO("Both kAudioConfigs and kAudioPorts, kConfig_size_local, kPort_size_local are valid\n"); } - } - - /* - * set up ports based on kPorts[] - */ - for (size_t i = 0; i < *(configuration.pKPortSize); i++) { - const dsAudioPortConfig_t *port = &configuration.pKPorts[i]; - _aPorts.push_back(AudioOutputPort((port->id.type), port->id.index, i)); - _aPortTypes.at(port->id.type).addPort(_aPorts.at(i)); - } - -#if 0 - if(searchConfigs() == true) + else { - /* - * Initialize Audio portTypes (encodings, compressions etc.) - * and its port instances (db, level etc) - */ - if(kConfigs1 != NULL) - { - for (size_t i = 0; i < kConfig_size_local; i++) { - const dsAudioTypeConfig_t *typeCfg = &kConfigs1[i]; - AudioOutputPortType &aPortType = AudioOutputPortType::getInstance(typeCfg->typeId); - aPortType.enable(); - for (size_t j = 0; j < typeCfg->numSupportedEncodings; j++) { - aPortType.addEncoding(AudioEncoding::getInstance(typeCfg->encodings[j])); - _aEncodings.at(typeCfg->encodings[j]).enable(); - } - for (size_t j = 0; j < typeCfg->numSupportedCompressions; j++) { - aPortType.addCompression(typeCfg->compressions[j]); - _aCompressions.at(typeCfg->compressions[j]).enable(); - } - for (size_t j = 0; j < typeCfg->numSupportedStereoModes; j++) { - aPortType.addStereoMode(typeCfg->stereoModes[j]); - _aStereoModes.at(typeCfg->stereoModes[j]).enable(); - } - } - - /* - * set up ports based on kPorts[] - */ - if(kPorts1 != NULL) - { - for (size_t i = 0; i < kPort_size_local; i++) { - const dsAudioPortConfig_t *port = &kPorts1[i]; - _aPorts.push_back(AudioOutputPort((port->id.type), port->id.index, i)); - _aPortTypes.at(port->id.type).addPort(_aPorts.at(i)); - } - } - } - + INT_ERROR("Invalid kAudioConfigs or kAudioPorts, kConfig_size_local, kPort_size_local\n"); + configuration.pKConfigs = kConfigs; + configSize = dsUTL_DIM(kConfigs); + *(configuration.pKConfigSize) = &configSize; + configuration.pKPorts = kPorts; + portSize = dsUTL_DIM(kPorts); + *(configuration.pKPortSize) = &portSize; + INT_INFO("configuration.pKConfigs =%p, configuration.pKPorts =%p, *(configuration.pKConfigSize) = %d, *(configuration.pKPortSize) = %d\n", configuration.pKConfigs, configuration.pKPorts, *(configuration.pKConfigSize), *(configuration.pKPortSize)); } - else{ /* - * Initialize Audio portTypes (encodings, compressions etc.) - * and its port instances (db, level etc) - */ - for (size_t i = 0; i < dsUTL_DIM(kConfigs); i++) { - const dsAudioTypeConfig_t *typeCfg = &kConfigs[i]; + * Initialize Audio portTypes (encodings, compressions etc.) + * and its port instances (db, level etc) + */ + for (size_t i = 0; i < *(configuration.pKConfigSize); i++) { + const dsAudioTypeConfig_t *typeCfg = &(configuration.pKConfigs[i]); AudioOutputPortType &aPortType = AudioOutputPortType::getInstance(typeCfg->typeId); aPortType.enable(); for (size_t j = 0; j < typeCfg->numSupportedEncodings; j++) { @@ -370,25 +299,21 @@ void AudioOutputPortConfig::load() for (size_t j = 0; j < typeCfg->numSupportedCompressions; j++) { aPortType.addCompression(typeCfg->compressions[j]); _aCompressions.at(typeCfg->compressions[j]).enable(); - } for (size_t j = 0; j < typeCfg->numSupportedStereoModes; j++) { aPortType.addStereoMode(typeCfg->stereoModes[j]); _aStereoModes.at(typeCfg->stereoModes[j]).enable(); - } } /* - * set up ports based on kPorts[] - */ - for (size_t i = 0; i < dsUTL_DIM(kPorts); i++) { - const dsAudioPortConfig_t *port = &kPorts[i]; + * set up ports based on kPorts[] + */ + for (size_t i = 0; i < *(configuration.pKPortSize); i++) { + const dsAudioPortConfig_t *port = &configuration.pKPorts[i]; _aPorts.push_back(AudioOutputPort((port->id.type), port->id.index, i)); _aPortTypes.at(port->id.type).addPort(_aPorts.at(i)); } - } - #endif } catch(const Exception &e) { From c676229dad9eb3e13cd7a8e0af0b4d56c30ae0f6 Mon Sep 17 00:00:00 2001 From: grandhi_santoshkumar Date: Wed, 5 Nov 2025 13:32:41 +0000 Subject: [PATCH 12/39] Fix build issue. --- ds/audioOutputPortConfig.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ds/audioOutputPortConfig.cpp b/ds/audioOutputPortConfig.cpp index c26a20cf..98d51c7b 100644 --- a/ds/audioOutputPortConfig.cpp +++ b/ds/audioOutputPortConfig.cpp @@ -278,10 +278,10 @@ void AudioOutputPortConfig::load() INT_ERROR("Invalid kAudioConfigs or kAudioPorts, kConfig_size_local, kPort_size_local\n"); configuration.pKConfigs = kConfigs; configSize = dsUTL_DIM(kConfigs); - *(configuration.pKConfigSize) = &configSize; + configuration.pKConfigSize = &configSize; configuration.pKPorts = kPorts; portSize = dsUTL_DIM(kPorts); - *(configuration.pKPortSize) = &portSize; + configuration.pKPortSize = &portSize; INT_INFO("configuration.pKConfigs =%p, configuration.pKPorts =%p, *(configuration.pKConfigSize) = %d, *(configuration.pKPortSize) = %d\n", configuration.pKConfigs, configuration.pKPorts, *(configuration.pKConfigSize), *(configuration.pKPortSize)); } /* From 968901dd4effe3ba0afe37e100620ceff52490aa Mon Sep 17 00:00:00 2001 From: grandhi_santoshkumar Date: Thu, 6 Nov 2025 11:47:11 +0000 Subject: [PATCH 13/39] Addressed review comments. --- ds/audioOutputPortConfig.cpp | 116 ++++++++++++++++++++++++++++++++++- 1 file changed, 115 insertions(+), 1 deletion(-) diff --git a/ds/audioOutputPortConfig.cpp b/ds/audioOutputPortConfig.cpp index 98d51c7b..e87dabbc 100644 --- a/ds/audioOutputPortConfig.cpp +++ b/ds/audioOutputPortConfig.cpp @@ -121,6 +121,80 @@ List AudioOutputPortConfig::getSupportedTypes() return supportedTypes; } +bool searchConfigs(void *pConfigVar, char *searchConfigStr) +{ + INT_INFO("%d:%s: Entering function\n", __LINE__, __func__); + INT_INFO("%d:%s: searchConfigStr = %s\n", __LINE__, __func__, searchConfigStr); + + static int invalidsize = -1; + + pthread_mutex_lock(&dsLock); + + void *dllib = dlopen(RDK_DSHAL_NAME, RTLD_LAZY); + if (dllib) { + pConfigVar = (void *) dlsym(dllib, searchConfigStr); + if (pConfigVar != NULL) { + INT_INFO("%s is defined and loaded pConfigVar= %p\r\n", searchConfigStr, pConfigVar); + } + else { + INT_ERROR("%d:%s: %s is not defined\n", __LINE__, __func__, searchConfigStr); + } + + dlclose(dllib); + } + else { + INT_ERROR("%d:%s: Open %s failed\n", __LINE__, __func__, RDK_DSHAL_NAME); + } + pthread_mutex_unlock(&dsLock); + INT_INFO("%d:%s: Exit function\n", __LINE__, __func__); +} + +void dumpconfig(Configs_t *config) +{ + INT_INFO("%d:%s: Entering function\n", __LINE__, __func__); + INT_INFO("%d:%s: pKConfigs = %p\n", __LINE__, __func__, config->pKConfigs); + INT_INFO("%d:%s: pKPorts = %p\n", __LINE__, __func__, config->pKPorts); + INT_INFO("%d:%s: pKConfigSize = %p\n", __LINE__, __func__, config->pKConfigSize); + INT_INFO("%d:%s: pKPortSize = %p\n", __LINE__, __func__, config->pKPortSize); + + INT_INFO("\n\n=========================================================================================================================\n\n"); + if(config->pKConfigs != NULL && *(config->pKConfigSize) != -1) + { + for (size_t i = 0; i < *(config->pKConfigSize); i++) { + const dsAudioTypeConfig_t *typeCfg = &(config->pKConfigs[i]); + //AudioOutputPortType &aPortType = AudioOutputPortType::getInstance(typeCfg->typeId); + //aPortType.enable(); + INT_INFO("%d:%s: typeCfg->typeId = %d\n", __LINE__, __func__, typeCfg->typeId); + INT_INFO("%d:%s: typeCfg->name = %s\n", __LINE__, __func__, typeCfg->name); + INT_INFO("%d:%s: typeCfg->numSupportedEncodings = %zu\n", __LINE__, __func__, typeCfg->numSupportedEncodings); + INT_INFO("%d:%s: typeCfg->numSupportedCompressions = %zu\n", __LINE__, __func__, typeCfg->numSupportedCompressions); + INT_INFO("%d:%s: typeCfg->numSupportedStereoModes = %zu\n", __LINE__, __func__, typeCfg->numSupportedStereoModes); + } + } + else + { + INT_ERROR("%d:%s: kAudioConfigs is NULL and kConfig_size_local is -1\n", __LINE__, __func__); + } + if(config->pKPorts != NULL && *(config->pKPortSize) != -1) + { + /* + * set up ports based on kPorts[] + */ + for (size_t i = 0; i < *(config->pKPortSize); i++) { + const dsAudioPortConfig_t *port = &(config->pKPorts[i]); + INT_INFO("%d:%s: port->id.type = %d\n", __LINE__, __func__, port->id.type); + INT_INFO("%d:%s: port->id.index = %d\n", __LINE__, __func__, port->id.index); + } + } + else + { + INT_ERROR("%d:%s: kAudioPorts is NULL and kPort_size_local is -1\n", __LINE__, __func__); + } + INT_INFO("\n\n=========================================================================================================================\n\n"); + INT_INFO("%d:%s: Exit function\n", __LINE__, __func__); +} + +#if 0 bool searchConfigs(Configs_t *config, const char *searchVaribles[]) { INT_INFO("%d:%s: Entering function\n", __LINE__, __func__); @@ -230,6 +304,7 @@ bool searchConfigs(Configs_t *config, const char *searchVaribles[]) return true; } } +#endif void AudioOutputPortConfig::load() { @@ -267,7 +342,7 @@ void AudioOutputPortConfig::load() _aPortTypes.push_back(AudioOutputPortType(i)); } - +#if 0 ret = searchConfigs(&configuration, searchVaribles); if (ret == true) { @@ -284,6 +359,45 @@ void AudioOutputPortConfig::load() configuration.pKPortSize = &portSize; INT_INFO("configuration.pKConfigs =%p, configuration.pKPorts =%p, *(configuration.pKConfigSize) = %d, *(configuration.pKPortSize) = %d\n", configuration.pKConfigs, configuration.pKPorts, *(configuration.pKConfigSize), *(configuration.pKPortSize)); } +#endif + INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[0]); + ret = searchConfigs(configuration.pKConfigs, searchVaribles[0]); + if(ret == true) + { + INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[2]); + ret = searchConfigs(configuration.pKConfigSize, (char *)searchVaribles[2]); + if(ret == false) + { + INT_ERROR("%s is not defined\n", searchVaribles[2]); + } + INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[1]); + ret = searchConfigs(configuration.pKPorts, searchVaribles[1]); + if(ret == false) + { + INT_ERROR("%s is not defined\n", searchVaribles[1]); + } + INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[3]); + ret = searchConfigs((void *)configuration.pKPortSize, (char *)searchVaribles[3]); + if(ret == false) + { + INT_ERROR("%s is not defined\n", searchVaribles[3]); + } + } + else + { + INT_ERROR("Invalid kAudioConfigs or kAudioPorts, pKConfigSize, pKPortSize\n"); + configuration.pKConfigs = kConfigs; + configSize = dsUTL_DIM(kConfigs); + configuration.pKConfigSize = &configSize; + configuration.pKPorts = kPorts; + portSize = dsUTL_DIM(kPorts); + configuration.pKPortSize = &portSize; + INT_INFO("configuration.pKConfigs =%p, configuration.pKPorts =%p, *(configuration.pKConfigSize) = %d, *(configuration.pKPortSize) = %d\n", configuration.pKConfigs, configuration.pKPorts, *(configuration.pKConfigSize), *(configuration.pKPortSize)); + } + #if DEBUG + dumpconfig(&configuration); + #endif + /* * Initialize Audio portTypes (encodings, compressions etc.) * and its port instances (db, level etc) From 513b3c74c4a35e488c40f2d80b3574c0543a60cf Mon Sep 17 00:00:00 2001 From: grandhi_santoshkumar Date: Thu, 6 Nov 2025 12:43:46 +0000 Subject: [PATCH 14/39] Addressed review comments. --- ds/audioOutputPortConfig.cpp | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/ds/audioOutputPortConfig.cpp b/ds/audioOutputPortConfig.cpp index e87dabbc..2aa7ad9c 100644 --- a/ds/audioOutputPortConfig.cpp +++ b/ds/audioOutputPortConfig.cpp @@ -121,7 +121,7 @@ List AudioOutputPortConfig::getSupportedTypes() return supportedTypes; } -bool searchConfigs(void *pConfigVar, char *searchConfigStr) +bool searchConfigs(void **pConfigVar, const char *searchConfigStr) { INT_INFO("%d:%s: Entering function\n", __LINE__, __func__); INT_INFO("%d:%s: searchConfigStr = %s\n", __LINE__, __func__, searchConfigStr); @@ -132,9 +132,9 @@ bool searchConfigs(void *pConfigVar, char *searchConfigStr) void *dllib = dlopen(RDK_DSHAL_NAME, RTLD_LAZY); if (dllib) { - pConfigVar = (void *) dlsym(dllib, searchConfigStr); - if (pConfigVar != NULL) { - INT_INFO("%s is defined and loaded pConfigVar= %p\r\n", searchConfigStr, pConfigVar); + *pConfigVar = (void *) dlsym(dllib, searchConfigStr); + if (*pConfigVar != NULL) { + INT_INFO("%s is defined and loaded pConfigVar= %p\r\n", searchConfigStr, *pConfigVar); } else { INT_ERROR("%d:%s: %s is not defined\n", __LINE__, __func__, searchConfigStr); @@ -145,8 +145,9 @@ bool searchConfigs(void *pConfigVar, char *searchConfigStr) else { INT_ERROR("%d:%s: Open %s failed\n", __LINE__, __func__, RDK_DSHAL_NAME); } - pthread_mutex_unlock(&dsLock); + pthread_mutex_unlock(&dsLock); INT_INFO("%d:%s: Exit function\n", __LINE__, __func__); + return (*pConfigVar != NULL); } void dumpconfig(Configs_t *config) @@ -312,7 +313,7 @@ void AudioOutputPortConfig::load() //dsAudioPortConfig_t *pKPorts = NULL; int configSize, portSize; Configs_t configuration = {0}; - const char* searchVaribles[] = { + const char* searchVaribles[] = { "kAudioConfigs", "kAudioPorts", "kAudioConfigs_size", @@ -361,23 +362,23 @@ void AudioOutputPortConfig::load() } #endif INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[0]); - ret = searchConfigs(configuration.pKConfigs, searchVaribles[0]); + ret = searchConfigs((void **)&configuration.pKConfigs, searchVaribles[0]); if(ret == true) { INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[2]); - ret = searchConfigs(configuration.pKConfigSize, (char *)searchVaribles[2]); + ret = searchConfigs((void **)&configuration.pKConfigSize, (char *)searchVaribles[2]); if(ret == false) { INT_ERROR("%s is not defined\n", searchVaribles[2]); } INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[1]); - ret = searchConfigs(configuration.pKPorts, searchVaribles[1]); + ret = searchConfigs((void **)&configuration.pKPorts, searchVaribles[1]); if(ret == false) { INT_ERROR("%s is not defined\n", searchVaribles[1]); } INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[3]); - ret = searchConfigs((void *)configuration.pKPortSize, (char *)searchVaribles[3]); + ret = searchConfigs((void **)&configuration.pKPortSize, (char *)searchVaribles[3]); if(ret == false) { INT_ERROR("%s is not defined\n", searchVaribles[3]); From fb4785de74e505e09aa7f64255f221e96a95c734 Mon Sep 17 00:00:00 2001 From: grandhi_santoshkumar Date: Mon, 10 Nov 2025 14:11:02 +0000 Subject: [PATCH 15/39] addressed review comments. --- ds/audioOutputPortConfig.cpp | 154 ++------------------------- ds/include/manager.hpp | 2 + ds/manager.cpp | 36 +++++++ ds/videoDeviceConfig.cpp | 64 ++++++++++- ds/videoOutputPortConfig.cpp | 198 +++++++++++++++++++++++++++++++++-- 5 files changed, 299 insertions(+), 155 deletions(-) diff --git a/ds/audioOutputPortConfig.cpp b/ds/audioOutputPortConfig.cpp index 2aa7ad9c..d01e78b6 100644 --- a/ds/audioOutputPortConfig.cpp +++ b/ds/audioOutputPortConfig.cpp @@ -35,18 +35,18 @@ #include "stdlib.h" #include "dslogger.h" #include +#include "manager.hpp" -#define DEBUG 1 -static pthread_mutex_t dsLock = PTHREAD_MUTEX_INITIALIZER; +#define DEBUG 1 // Using for dumpconfig -typedef struct Configs +typedef struct audioConfigs { const dsAudioTypeConfig_t *pKConfigs; const dsAudioPortConfig_t *pKPorts; int *pKConfigSize; int *pKPortSize; -}Configs_t; +}audioConfigs_t; namespace device { @@ -121,6 +121,7 @@ List AudioOutputPortConfig::getSupportedTypes() return supportedTypes; } +#if 0 bool searchConfigs(void **pConfigVar, const char *searchConfigStr) { INT_INFO("%d:%s: Entering function\n", __LINE__, __func__); @@ -149,8 +150,8 @@ bool searchConfigs(void **pConfigVar, const char *searchConfigStr) INT_INFO("%d:%s: Exit function\n", __LINE__, __func__); return (*pConfigVar != NULL); } - -void dumpconfig(Configs_t *config) +#endif +void dumpconfig(audioConfigs_t *config) { INT_INFO("%d:%s: Entering function\n", __LINE__, __func__); INT_INFO("%d:%s: pKConfigs = %p\n", __LINE__, __func__, config->pKConfigs); @@ -163,8 +164,6 @@ void dumpconfig(Configs_t *config) { for (size_t i = 0; i < *(config->pKConfigSize); i++) { const dsAudioTypeConfig_t *typeCfg = &(config->pKConfigs[i]); - //AudioOutputPortType &aPortType = AudioOutputPortType::getInstance(typeCfg->typeId); - //aPortType.enable(); INT_INFO("%d:%s: typeCfg->typeId = %d\n", __LINE__, __func__, typeCfg->typeId); INT_INFO("%d:%s: typeCfg->name = %s\n", __LINE__, __func__, typeCfg->name); INT_INFO("%d:%s: typeCfg->numSupportedEncodings = %zu\n", __LINE__, __func__, typeCfg->numSupportedEncodings); @@ -178,9 +177,6 @@ void dumpconfig(Configs_t *config) } if(config->pKPorts != NULL && *(config->pKPortSize) != -1) { - /* - * set up ports based on kPorts[] - */ for (size_t i = 0; i < *(config->pKPortSize); i++) { const dsAudioPortConfig_t *port = &(config->pKPorts[i]); INT_INFO("%d:%s: port->id.type = %d\n", __LINE__, __func__, port->id.type); @@ -195,124 +191,11 @@ void dumpconfig(Configs_t *config) INT_INFO("%d:%s: Exit function\n", __LINE__, __func__); } -#if 0 -bool searchConfigs(Configs_t *config, const char *searchVaribles[]) -{ - INT_INFO("%d:%s: Entering function\n", __LINE__, __func__); - INT_INFO("%d:%s: searchVaribles[0] = %s\n", __LINE__, __func__, searchVaribles[0]); - INT_INFO("%d:%s: searchVaribles[1] = %s\n", __LINE__, __func__, searchVaribles[1]); - INT_INFO("%d:%s: searchVaribles[2] = %s\n", __LINE__, __func__, searchVaribles[2]); - INT_INFO("%d:%s: searchVaribles[3] = %s\n", __LINE__, __func__, searchVaribles[3]); - static int invalidsize = -1; - - pthread_mutex_lock(&dsLock); - - void *dllib = dlopen(RDK_DSHAL_NAME, RTLD_LAZY); - if (dllib) { - config->pKConfigs = (dsAudioTypeConfig_t *) dlsym(dllib, searchVaribles[0]); - if (config->pKConfigs) { - INT_INFO("kAudioConfigs is defined and loaded kConfigs1 = %p\r\n", config->pKConfigs); - } - else { - INT_ERROR("%d:%s: kAudioConfigs is not defined\n", __LINE__, __func__); - } - - config->pKConfigSize = (int *) dlsym(dllib, searchVaribles[2]); - if(config->pKConfigSize) - { - //kConfig_size_local = *pKConSize; - INT_INFO("%d:%s: kAudioConfigs_size is defined and loaded kConfig_size_local = %d\n", __LINE__, __func__, *config->pKConfigSize); - } - else - { - config->pKConfigSize = &invalidsize; - INT_ERROR("%d:%s: kAudioConfigs_size is not defined *(config->pKConfigSize)= %d\n", __LINE__, __func__, *config->pKConfigSize); - } - - config->pKPorts = (dsAudioPortConfig_t *) dlsym(dllib, searchVaribles[1]); - if (config->pKPorts) { - INT_INFO("%d:%s: kAudioPorts is defined and loaded config->pKPorts = %p\n", __LINE__, __func__, config->pKPorts); - } - else { - INT_ERROR("%d:%s: kAudioPorts is not defined\n", __LINE__, __func__); - } - - config->pKPortSize = (int *) dlsym(dllib, searchVaribles[3]); - if(config->pKPortSize) - { - INT_INFO("%d:%s: kAudioPorts_size is defined and loaded config->pKPortSize = %d\n", __LINE__, __func__, *config->pKPortSize); - } - else - { - config->pKPortSize = &invalidsize; - INT_ERROR("%d:%s: kAudioPorts_size is not defined *(config->pKPortSize)= %d\n", __LINE__, __func__, *config->pKPortSize); - } - dlclose(dllib); - } - else { - INT_ERROR("%d:%s: Opening libds-hal.so failed\n", __LINE__, __func__); - } - pthread_mutex_unlock(&dsLock); -#if DEBUG - INT_INFO("\n\n=========================================================================================================================\n\n"); - INT_INFO("\n%d:%s print configs using extern\n", __LINE__, __func__); - //printf("%d:%s: size of(kConfig_audio) = %d size of(kPort_audio) = %d\n", __LINE__, __func__, kConfig_size, kPort_size); - //kConfig_size_local = kConfig_size; - //kPort_size_local = kPort_size; - - if(config->pKConfigs != NULL && *(config->pKConfigSize) != -1) - { - for (size_t i = 0; i < *(config->pKConfigSize); i++) { - const dsAudioTypeConfig_t *typeCfg = &(config->pKConfigs[i]); - //AudioOutputPortType &aPortType = AudioOutputPortType::getInstance(typeCfg->typeId); - //aPortType.enable(); - INT_INFO("%d:%s: typeCfg->typeId = %d\n", __LINE__, __func__, typeCfg->typeId); - INT_INFO("%d:%s: typeCfg->name = %s\n", __LINE__, __func__, typeCfg->name); - INT_INFO("%d:%s: typeCfg->numSupportedEncodings = %zu\n", __LINE__, __func__, typeCfg->numSupportedEncodings); - INT_INFO("%d:%s: typeCfg->numSupportedCompressions = %zu\n", __LINE__, __func__, typeCfg->numSupportedCompressions); - INT_INFO("%d:%s: typeCfg->numSupportedStereoModes = %zu\n", __LINE__, __func__, typeCfg->numSupportedStereoModes); - } - } - else - { - INT_ERROR("%d:%s: kAudioConfigs is NULL and kConfig_size_local is -1\n", __LINE__, __func__); - } - if(config->pKPorts != NULL && *(config->pKPortSize) != -1) - { - /* - * set up ports based on kPorts[] - */ - for (size_t i = 0; i < *(config->pKPortSize); i++) { - const dsAudioPortConfig_t *port = &(config->pKPorts[i]); - INT_INFO("%d:%s: port->id.type = %d\n", __LINE__, __func__, port->id.type); - INT_INFO("%d:%s: port->id.index = %d\n", __LINE__, __func__, port->id.index); - } - } - else - { - INT_ERROR("%d:%s: kAudioPorts is NULL and kPort_size_local is -1\n", __LINE__, __func__); - } - INT_INFO("\n\n=========================================================================================================================\n\n"); -#endif - if(config->pKConfigs == NULL || *(config->pKConfigSize) == -1 || config->pKPorts == NULL || *(config->pKPortSize) == -1) - { - printf("Either kAudioConfigs or kAudioPorts is NULL and pKConfigSize is -1, pKPortSize is -1\n"); - return false; - } - else - { - printf("Both kAudioConfigs and kAudioPorts, pKConfigSize, pKPortSize are valid\n"); - return true; - } -} -#endif void AudioOutputPortConfig::load() { - //dsAudioTypeConfig_t *pKConfigs = NULL; - //dsAudioPortConfig_t *pKPorts = NULL; int configSize, portSize; - Configs_t configuration = {0}; + audioConfigs_t configuration = {0}; const char* searchVaribles[] = { "kAudioConfigs", "kAudioPorts", @@ -343,24 +226,7 @@ void AudioOutputPortConfig::load() _aPortTypes.push_back(AudioOutputPortType(i)); } -#if 0 - ret = searchConfigs(&configuration, searchVaribles); - if (ret == true) - { - INT_INFO("Both kAudioConfigs and kAudioPorts, kConfig_size_local, kPort_size_local are valid\n"); - } - else - { - INT_ERROR("Invalid kAudioConfigs or kAudioPorts, kConfig_size_local, kPort_size_local\n"); - configuration.pKConfigs = kConfigs; - configSize = dsUTL_DIM(kConfigs); - configuration.pKConfigSize = &configSize; - configuration.pKPorts = kPorts; - portSize = dsUTL_DIM(kPorts); - configuration.pKPortSize = &portSize; - INT_INFO("configuration.pKConfigs =%p, configuration.pKPorts =%p, *(configuration.pKConfigSize) = %d, *(configuration.pKPortSize) = %d\n", configuration.pKConfigs, configuration.pKPorts, *(configuration.pKConfigSize), *(configuration.pKPortSize)); - } -#endif + INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[0]); ret = searchConfigs((void **)&configuration.pKConfigs, searchVaribles[0]); if(ret == true) @@ -386,7 +252,7 @@ void AudioOutputPortConfig::load() } else { - INT_ERROR("Invalid kAudioConfigs or kAudioPorts, pKConfigSize, pKPortSize\n"); + INT_ERROR("Read Old Configs\n"); configuration.pKConfigs = kConfigs; configSize = dsUTL_DIM(kConfigs); configuration.pKConfigSize = &configSize; diff --git a/ds/include/manager.hpp b/ds/include/manager.hpp index 2539569a..089e0e49 100644 --- a/ds/include/manager.hpp +++ b/ds/include/manager.hpp @@ -156,6 +156,8 @@ */ namespace device { +// Forward declaration for searchConfigs function +bool searchConfigs(void **pConfigVar, const char *searchConfigStr); /** * @class Manager diff --git a/ds/manager.cpp b/ds/manager.cpp index eedcd8b2..2fc92ad2 100644 --- a/ds/manager.cpp +++ b/ds/manager.cpp @@ -43,6 +43,12 @@ #include "exception.hpp" #include #include +#include +#include "dsHALConfig.h" + + +static pthread_mutex_t dsLock = PTHREAD_MUTEX_INITIALIZER; + /** * @file manager.cpp @@ -154,6 +160,36 @@ void Manager::load() printf("%d:%s load completed\n", __LINE__, __FUNCTION__); } +bool searchConfigs(void **pConfigVar, const char *searchConfigStr) +{ + INT_INFO("%d:%s: Entering function\n", __LINE__, __func__); + INT_INFO("%d:%s: searchConfigStr = %s\n", __LINE__, __func__, searchConfigStr); + + static int invalidsize = -1; + + pthread_mutex_lock(&dsLock); + + void *dllib = dlopen(RDK_DSHAL_NAME, RTLD_LAZY); + if (dllib) { + *pConfigVar = (void *) dlsym(dllib, searchConfigStr); + if (*pConfigVar != NULL) { + INT_INFO("%s is defined and loaded pConfigVar= %p\r\n", searchConfigStr, *pConfigVar); + } + else { + INT_ERROR("%d:%s: %s is not defined\n", __LINE__, __func__, searchConfigStr); + } + + dlclose(dllib); + } + else { + INT_ERROR("%d:%s: Open %s failed\n", __LINE__, __func__, RDK_DSHAL_NAME); + } + pthread_mutex_unlock(&dsLock); + INT_INFO("%d:%s: Exit function\n", __LINE__, __func__); + return (*pConfigVar != NULL); +} + + /** * @fn void Manager::DeInitialize() * @brief This API is used to deinitialize the device settings module. diff --git a/ds/videoDeviceConfig.cpp b/ds/videoDeviceConfig.cpp index 0a25b478..c612e125 100644 --- a/ds/videoDeviceConfig.cpp +++ b/ds/videoDeviceConfig.cpp @@ -33,7 +33,9 @@ #include "videoDFC.hpp" #include #include "dslogger.h" +#include "manager.hpp" +#define DEBUG 1 // Using for dumpconfig namespace device { @@ -86,8 +88,42 @@ VideoDFC & VideoDeviceConfig::getDefaultDFC() return _vDFCs.back(); } +void dumpconfig(dsVideoConfig_t *pKVideoDeviceConfigs, int videoDeviceConfigs_size) +{ + INT_INFO("%d:%s: Entering function\n", __LINE__, __func__); + INT_INFO("%d:%s: pKVideoDeviceConfigs = %p\n", __LINE__, __func__, pKVideoDeviceConfigs); + INT_INFO("%d:%s: videoDeviceConfigs_size = %d\n", __LINE__, __func__, videoDeviceConfigs_size); + + INT_INFO("\n\n=========================================================================================================================\n\n"); + if(pKVideoDeviceConfigs != NULL && videoDeviceConfigs_size != -1) + { + for (size_t i = 0; i < videoDeviceConfigs_size; i++) { + INT_INFO("pKVideoDeviceConfigs[%d].numSupportedDFCs = %d\n ", i, pKVideoDeviceConfigs[i]->numSupportedDFCs); + for (size_t j = 0; j < pKVideoDeviceConfigs[i]->numSupportedDFCs; j++) { + INT_INFO(" Address of pKVideoDeviceConfigs[%d].supportedDFCs[%d] = %d", i, j, pKVideoDeviceConfigs[i]->supportedDFCs[j]); + } + } + } + else + { + INT_ERROR("%d:%s: kVideoDeviceConfigs is NULL and videoDeviceConfigs_size is -1\n", __LINE__, __func__); + } + + INT_INFO("\n\n=========================================================================================================================\n\n"); + INT_INFO("%d:%s: Exit function\n", __LINE__, __func__); +} + void VideoDeviceConfig::load() { + int configSize, portSize, invalid_size = -1; + dsVideoConfig_t *pKVideoDeviceConfigs = NULL; + int *pKVideoDeviceConfigs_size = NULL; + const char* searchVaribles[] = { + "kVideoDeviceConfigs", + "kVideoDeviceConfigs_size", + }; + bool ret = false; + /* * Load Constants First. */ @@ -95,16 +131,38 @@ void VideoDeviceConfig::load() _vDFCs.push_back(VideoDFC(i)); } + INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[0]); + ret = searchConfigs((void **)&pKVideoDeviceConfigs, searchVaribles[0]); + if(ret == true) + { + INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[1]); + ret = searchConfigs((void **)&pKVideoDeviceConfigs_size, (char *)searchVaribles[1]); + if(ret == false) + { + INT_ERROR("%s is not defined\n", searchVaribles[1]); + } + } + else + { + pKVideoDeviceConfigs = (dsVideoConfig_t *)kConfigs; + *pKVideoDeviceConfigs_size = dsUTL_DIM(kConfigs); + } + #if DEBUG + dumpconfig(pKVideoDeviceConfigs, *pKVideoDeviceConfigs_size); + #endif + /* * Initialize Video Devices (supported DFCs etc.) */ - for (size_t i = 0; i < dsUTL_DIM(kConfigs); i++) { + for (size_t i = 0; i < *pKVideoDeviceConfigs_size; i++) { _vDevices.push_back(VideoDevice(i)); - for (size_t j = 0; j < kConfigs[i].numSupportedDFCs; j++) { - _vDevices.at(i).addDFC(VideoDFC::getInstance(kConfigs[i].supportedDFCs[j])); + for (size_t j = 0; j < pKVideoDeviceConfigs[i].numSupportedDFCs; j++) { + _vDevices.at(i).addDFC(VideoDFC::getInstance(pKVideoDeviceConfigs[i].supportedDFCs[j])); } } + + } void VideoDeviceConfig::release() diff --git a/ds/videoOutputPortConfig.cpp b/ds/videoOutputPortConfig.cpp index 8f1e475c..55482f80 100644 --- a/ds/videoOutputPortConfig.cpp +++ b/ds/videoOutputPortConfig.cpp @@ -50,6 +50,18 @@ #include using namespace std; +#define DEBUG 1 // Using for dumpconfig + +typedef struct videoPortConfigs +{ + const dsVideoPortTypeConfig_t *pKConfigs; + int *pKVideoPortConfigs_size; + const kVideoPortPorts *pKPorts; + int *pKVideoPortPorts_size; + const dsVideoPortResolution_t *pKResolutionsSettings; + int *pKResolutionsSettings_size; +}videoPortConfigs_t; + namespace device { static VideoResolution* defaultVideoResolution; @@ -263,10 +275,124 @@ List VideoOutputPortConfig::getSupportedResolutions(bool isIgn return supportedResolutions; } +typedef struct videoPortConfigs +{ + const dsVideoPortTypeConfig_t *pKConfigs; + int *pKVideoPortConfigs_size; + const kVideoPortPorts *pKPorts; + int *pKVideoPortPorts_size; + const dsVideoPortResolution_t *pKResolutionsSettings; + int *pKResolutionsSettings_size; +}videoPortConfigs_t; + +void dumpconfig(videoPortConfigs_t *config) +{ + INT_INFO("%d:%s: Entering function\n", __LINE__, __func__); + INT_INFO("%d:%s: pKConfigs = %p\n", __LINE__, __func__, config->pKConfigs); + INT_INFO("%d:%s: pKConfigSize pointer %p = %d\n", __LINE__, __func__, config->pKVideoPortConfigs_size, *(config->pKVideoPortConfigs_size)); + INT_INFO("%d:%s: pKPorts = %p\n", __LINE__, __func__, config->pKPorts); + INT_INFO("%d:%s: pKPortSize pointer %p = %d\n", __LINE__, __func__, config->pKVideoPortPorts_size, *(config->pKVideoPortPorts_size)); + INT_INFO("%d:%s: pKResolutionsSettings = %p\n", __LINE__, __func__, config->pKResolutionsSettings); + INT_INFO("%d:%s: pKResolutionsSettingsSize pointer %p = %d\n", __LINE__, __func__, config->pKResolutionsSettings_size, *(config->pKResolutionsSettings_size)); + + INT_INFO("\n\n=========================================================================================================================\n\n"); + if(config->pKConfigs != NULL && *(config->pKVideoPortConfigs_size) != -1 && + config->pKPorts != NULL && *(config->pKVideoPortPorts_size) != -1 && + config->pKResolutionsSettings != NULL && *(config->pKResolutionsSettings_size) != -1 ) + { + INT_INFO("\n\n####################################################################### \n\n"); + INT_INFO("%d:%s: Dumping Resolutions Settings\n", __LINE__, __func__); + for (size_t i = 0; i < *(config->pKResolutionsSettings_size); i++) { + dsVideoPortResolution_t *resolution = &(config->pKResolutionsSettings[i]); + INT_INFO("%d:%s: resolution->name = %s\n", __LINE__, __func__, resolution->name); + INT_INFO("%d:%s: resolution->pixelResolution= %d\n", __LINE__, __func__, resolution->pixelResolution); + INT_INFO("%d:%s: resolution->aspectRatio= %d\n", __LINE__, __func__, resolution->aspectRatio); + INT_INFO("%d:%s: resolution->stereoScopicMode= %d\n", __LINE__, __func__, resolution->stereoScopicMode); + INT_INFO("%d:%s: resolution->frameRate= %d\n", __LINE__, __func__, resolution->frameRate); + INT_INFO("%d:%s: resolution->interlaced= %d\n", __LINE__, __func__, resolution->interlaced); + } + INT_INFO("\n\n####################################################################### \n\n"); + #if 0 + /*.typeId = */ dsVIDEOPORT_TYPE_INTERNAL, + /*.name = */ "INTERNAL", + /*.dtcpSupported = */ false, + /*.hdcpSupported = */ true, + /*.restrictedResollution = */ -1, + /*.numSupportedResolutions = */ dsUTL_DIM(kResolutions), // 0 means "Info available at runtime" + /*.supportedResolutons = */ kResolutions, + #endif + INT_INFO("\n\n####################################################################### \n\n"); + INT_INFO("%d:%s: Dumping Video Port Configurations\n", __LINE__, __func__); + for (size_t i = 0; i < *(config->pKVideoPortConfigs_size); i++) + { + const dsVideoPortTypeConfig_t *typeCfg = &(config->pKConfigs[i]); + INT_INFO("%d:%s: typeCfg->typeId = %d\n", __LINE__, __func__, typeCfg->typeId); + INT_INFO("%d:%s: typeCfg->name = %s\n", __LINE__, __func__, typeCfg->name); + INT_INFO("%d:%s: typeCfg->dtcpSupported= %d\n", __LINE__, __func__, typeCfg->dtcpSupported); + INT_INFO("%d:%s: typeCfg->hdcpSupported = %d\n", __LINE__, __func__, typeCfg->hdcpSupported); + INT_INFO("%d:%s: typeCfg->restrictedResollution = %d\n", __LINE__, __func__, typeCfg->restrictedResollution); + INT_INFO("%d:%s: typeCfg->numSupportedResolutions= %d\n", __LINE__, __func__, typeCfg->numSupportedResolutions); + #if 0 + typedef struct _dsVideoPortResolution_t { + char name[32]; ///< Name the resolution + dsVideoResolution_t pixelResolution; ///< The resolution associated with the name + dsVideoAspectRatio_t aspectRatio; ///< The associated aspect ratio + dsVideoStereoScopicMode_t stereoScopicMode; ///< The associated stereoscopic mode + dsVideoFrameRate_t frameRate; ///< The associated frame rate + bool interlaced; ///< The associated scan mode( @a true if interlaced, @a false if progressive ) + }dsVideoPortResolution_t; + #endif + INT_INFO("%d:%s: typeCfg->supportedResolutons = %p\n", __LINE__, __func__, typeCfg->supportedResolutons); + INT_INFO("%d:%s: typeCfg->supportedResolutons->name = %s\n", __LINE__, __func__, typeCfg->supportedResolutons->name); + INT_INFO("%d:%s: typeCfg->supportedResolutons->pixelResolution= %d\n", __LINE__, __func__, typeCfg->supportedResolutons->pixelResolution); + INT_INFO("%d:%s: typeCfg->supportedResolutons->aspectRatio= %d\n", __LINE__, __func__, typeCfg->supportedResolutons->aspectRatio); + INT_INFO("%d:%s: typeCfg->supportedResolutons->stereoScopicMode= %d\n", __LINE__, __func__, typeCfg->supportedResolutons->stereoScopicMode); + INT_INFO("%d:%s: typeCfg->supportedResolutons->frameRate= %d\n", __LINE__, __func__, typeCfg->supportedResolutons->frameRate); + INT_INFO("%d:%s: typeCfg->supportedResolutons->interlaced= %d\n", __LINE__, __func__, typeCfg->supportedResolutons->interlaced); + } + INT_INFO("\n\n####################################################################### \n\n"); + #if 0 + { + /*.typeId = */ {dsVIDEOPORT_TYPE_INTERNAL, 0}, + /* connectedAOP */ {dsAUDIOPORT_TYPE_SPEAKER, 0}, + /*.defaultResolution = */ "1080i50" + } + #endif + INT_INFO("\n\n####################################################################### \n\n"); + INT_INFO("%d:%s: Dumping Video Port Connections\n", __LINE__, __func__); + for (size_t i = 0; i < *(configuration.pKVideoPortPorts_size); i++) { + const dsVideoPortPortConfig_t *port = &(configuration.pKPorts[i]); + INT_INFO("%d:%s: port->id.type = %d\n", __LINE__, __func__, port->id.type); + INT_INFO("%d:%s: port->id.index = %d\n", __LINE__, __func__, port->id.index); + INT_INFO("%d:%s: port->connectedAOP.type = %d\n", __LINE__, __func__, port->connectedAOP.type); + INT_INFO("%d:%s: port->connectedAOP.index = %d\n", __LINE__, __func__, port->connectedAOP.index); + INT_INFO("%d:%s: port->defaultResolution = %s\n", __LINE__, __func__, port->defaultResolution); + } + INT_INFO("\n\n####################################################################### \n\n"); + } + else + { + INT_ERROR("%d:%s: pKConfigs or pKPorts or pKResolutionsSettings is NULL, and pKVideoPortConfigs_size or pKVideoPortPorts_size or pKResolutionsSettings_size is -1\n", __LINE__, __func__); + } + INT_INFO("\n\n=========================================================================================================================\n\n"); + INT_INFO("%d:%s: Exit function\n", __LINE__, __func__); +} void VideoOutputPortConfig::load() { + int configSize, portSize, resolutionSize; + videoPortConfigs_t configuration = {0}; + const char* searchVaribles[] = { + "kVideoPortConfigs", + "kVideoPortConfigs_size", + "kVideoPortPorts", + "kVideoPortPorts_size", + "kResolutionsSettings", + "kResolutionsSettings_size" + }; + bool ret = false; + try { /* * Load Constants First. @@ -288,12 +414,68 @@ void VideoOutputPortConfig::load() _vPortTypes.push_back(VideoOutputPortType((int)i)); } + INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[0]); + ret = searchConfigs((void **)&configuration.pKConfigs, searchVaribles[0]); + if(ret == true) + { + INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[1]); + ret = searchConfigs((void **)&configuration.pKConfigSize, (char *)searchVaribles[1]); + if(ret == false) + { + INT_ERROR("%s is not defined\n", searchVaribles[1]); + } + INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[2]); + ret = searchConfigs((void **)&configuration.pKPorts, searchVaribles[2]); + if(ret == false) + { + INT_ERROR("%s is not defined\n", searchVaribles[2]); + } + INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[3]); + ret = searchConfigs((void **)&configuration.pKPortSize, (char *)searchVaribles[3]); + if(ret == false) + { + INT_ERROR("%s is not defined\n", searchVaribles[3]); + } + // Resolutions + ret = searchConfigs((void **)&configuration.pKResolutionsSettings, searchVaribles[4]); + if(ret == false) + { + INT_ERROR("%s is not defined\n", searchVaribles[4]); + } + INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[5]); + ret = searchConfigs((void **)&configuration.pKResolutionsSettings_size, (char *)searchVaribles[5]); + if(ret == false) + { + INT_ERROR("%s is not defined\n", searchVaribles[5]); + } + } + else + { + INT_ERROR("Read Old Configs\n"); + configuration.pKConfigs = kConfigs; + configSize = dsUTL_DIM(kConfigs); + configuration.pKConfigSize = &configSize; + configuration.pKPorts = kPorts; + portSize = dsUTL_DIM(kPorts); + configuration.pKPortSize = &portSize; + configuration.pKResolutionsSettings = kResolutions; + resolutionSize = dsUTL_DIM(kResolutions); + configuration.pKResolutionsSettings_size = &resolutionSize; + INT_INFO("configuration.pKConfigs =%p, *(configuration.pKConfigSize) = %d\n", configuration.pKConfigs, *(configuration.pKConfigSize)); + INT_INFO("configuration.pKPorts =%p, *(configuration.pKPortSize) = %d\n", configuration.pKPorts, *(configuration.pKPortSize)); + INT_INFO("configuration.pKResolutionsSettings =%p, *(configuration.pKResolutionsSettings_size) = %d\n", configuration.pKResolutionsSettings, *(configuration.pKResolutionsSettings_size)); + } + #if DEBUG + dumpconfig(&configuration); + #endif + + /* Initialize a set of supported resolutions * */ - size_t numResolutions = dsUTL_DIM(kResolutions); - for (size_t i = 0; i < numResolutions; i++) { - dsVideoPortResolution_t *resolution = &kResolutions[i]; + //size_t numResolutions = dsUTL_DIM(kResolutions); + for (size_t i = 0; i < *(configuration.pKResolutionsSettings_size); i++) { + dsVideoPortResolution_t *resolution = &(configuration.pKResolutionsSettings[i]); {std::lock_guard lock(gSupportedResolutionsMutex); _supportedResolutions.push_back( VideoResolution( @@ -312,9 +494,9 @@ void VideoOutputPortConfig::load() * Initialize Video portTypes (Only Enable POrts) * and its port instances (curr resolution) */ - for (size_t i = 0; i < dsUTL_DIM(kConfigs); i++) + for (size_t i = 0; i < *(configuration.pKVideoPortConfigs_size); i++) { - const dsVideoPortTypeConfig_t *typeCfg = &kConfigs[i]; + const dsVideoPortTypeConfig_t *typeCfg = &()configuration.pKConfigs[i]; VideoOutputPortType &vPortType = VideoOutputPortType::getInstance(typeCfg->typeId); vPortType.enable(); vPortType.setRestrictedResolution(typeCfg->restrictedResollution); @@ -323,12 +505,12 @@ void VideoOutputPortConfig::load() /* * set up ports based on kPorts[] */ - for (size_t i = 0; i < dsUTL_DIM(kPorts); i++) { - const dsVideoPortPortConfig_t *port = &kPorts[i]; + for (size_t i = 0; i < *(configuration.pKVideoPortPorts_size); i++) { + const dsVideoPortPortConfig_t *port = &(configuration.pKPorts[i]); _vPorts.push_back( VideoOutputPort((port->id.type), port->id.index, i, - AudioOutputPortType::getInstance(kPorts[i].connectedAOP.type).getPort(kPorts[i].connectedAOP.index).getId(), + AudioOutputPortType::getInstance(configuration.pKPorts[i].connectedAOP.type).getPort(configuration.pKPorts[i].connectedAOP.index).getId(), std::string(port->defaultResolution))); _vPortTypes.at(port->id.type).addPort(_vPorts.at(i)); From 35661b4d646fc30e3a90aaea6ed01c597c071aad Mon Sep 17 00:00:00 2001 From: grandhi_santoshkumar Date: Tue, 11 Nov 2025 15:27:31 +0000 Subject: [PATCH 16/39] RDKEMW-8587: consume the config variables using dlsym() in MW. Reason for change: consume the config variables using dlsym() in MW. Test Procedure: refer RDKEMW-8587 Risks: High Signed-off-by:gsanto722 --- ds/videoDeviceConfig.cpp | 14 +++++++-- ds/videoOutputPortConfig.cpp | 57 +++++++++++++++++++----------------- 2 files changed, 41 insertions(+), 30 deletions(-) diff --git a/ds/videoDeviceConfig.cpp b/ds/videoDeviceConfig.cpp index c612e125..965aecf2 100644 --- a/ds/videoDeviceConfig.cpp +++ b/ds/videoDeviceConfig.cpp @@ -88,19 +88,27 @@ VideoDFC & VideoDeviceConfig::getDefaultDFC() return _vDFCs.back(); } + void dumpconfig(dsVideoConfig_t *pKVideoDeviceConfigs, int videoDeviceConfigs_size) { INT_INFO("%d:%s: Entering function\n", __LINE__, __func__); INT_INFO("%d:%s: pKVideoDeviceConfigs = %p\n", __LINE__, __func__, pKVideoDeviceConfigs); INT_INFO("%d:%s: videoDeviceConfigs_size = %d\n", __LINE__, __func__, videoDeviceConfigs_size); + #if 0 + typedef struct _dsVideoConfig_t { + size_t numSupportedDFCs; /*!< Number of zoom modes supported */ + const dsVideoZoom_t *supportedDFCs; /*!< List of zoom modes supported */ + dsVideoZoom_t defaultDFC; /*!< The default zoom mode */ + } dsVideoConfig_t; + #endif INT_INFO("\n\n=========================================================================================================================\n\n"); if(pKVideoDeviceConfigs != NULL && videoDeviceConfigs_size != -1) { for (size_t i = 0; i < videoDeviceConfigs_size; i++) { - INT_INFO("pKVideoDeviceConfigs[%d].numSupportedDFCs = %d\n ", i, pKVideoDeviceConfigs[i]->numSupportedDFCs); - for (size_t j = 0; j < pKVideoDeviceConfigs[i]->numSupportedDFCs; j++) { - INT_INFO(" Address of pKVideoDeviceConfigs[%d].supportedDFCs[%d] = %d", i, j, pKVideoDeviceConfigs[i]->supportedDFCs[j]); + INT_INFO("pKVideoDeviceConfigs[%d].numSupportedDFCs = %d\n ", i, pKVideoDeviceConfigs[i].numSupportedDFCs); + for (size_t j = 0; j < pKVideoDeviceConfigs[i].numSupportedDFCs; j++) { + INT_INFO(" Address of pKVideoDeviceConfigs[%d].supportedDFCs[%d] = %d", i, j, pKVideoDeviceConfigs[i].supportedDFCs[j]); } } } diff --git a/ds/videoOutputPortConfig.cpp b/ds/videoOutputPortConfig.cpp index 55482f80..9fbe7637 100644 --- a/ds/videoOutputPortConfig.cpp +++ b/ds/videoOutputPortConfig.cpp @@ -42,6 +42,7 @@ #include "videoResolution.hpp" #include "dslogger.h" #include "host.hpp" +#include "manager.hpp" #include @@ -56,9 +57,9 @@ typedef struct videoPortConfigs { const dsVideoPortTypeConfig_t *pKConfigs; int *pKVideoPortConfigs_size; - const kVideoPortPorts *pKPorts; + const dsVideoPortPortConfig_t *pKPorts; int *pKVideoPortPorts_size; - const dsVideoPortResolution_t *pKResolutionsSettings; + dsVideoPortResolution_t *pKResolutionsSettings; int *pKResolutionsSettings_size; }videoPortConfigs_t; @@ -275,15 +276,6 @@ List VideoOutputPortConfig::getSupportedResolutions(bool isIgn return supportedResolutions; } -typedef struct videoPortConfigs -{ - const dsVideoPortTypeConfig_t *pKConfigs; - int *pKVideoPortConfigs_size; - const kVideoPortPorts *pKPorts; - int *pKVideoPortPorts_size; - const dsVideoPortResolution_t *pKResolutionsSettings; - int *pKResolutionsSettings_size; -}videoPortConfigs_t; void dumpconfig(videoPortConfigs_t *config) { @@ -327,6 +319,17 @@ void dumpconfig(videoPortConfigs_t *config) for (size_t i = 0; i < *(config->pKVideoPortConfigs_size); i++) { const dsVideoPortTypeConfig_t *typeCfg = &(config->pKConfigs[i]); + #if 0 + typedef struct _dsVideoPortTypeConfig_t { + dsVideoPortType_t typeId; ///< The video output type + const char *name; ///< Name of the video output port + bool dtcpSupported; ///< Is DTCP supported? + bool hdcpSupported; ///< Is HDCP supported? + int32_t restrictedResollution; ///< Any restricted resolution; -1 if no. + size_t numSupportedResolutions; ///< Number of supported resolutions + dsVideoPortResolution_t *supportedResolutions; ///< List of supported resolutions + } dsVideoPortTypeConfig_t; + #endif INT_INFO("%d:%s: typeCfg->typeId = %d\n", __LINE__, __func__, typeCfg->typeId); INT_INFO("%d:%s: typeCfg->name = %s\n", __LINE__, __func__, typeCfg->name); INT_INFO("%d:%s: typeCfg->dtcpSupported= %d\n", __LINE__, __func__, typeCfg->dtcpSupported); @@ -343,13 +346,13 @@ void dumpconfig(videoPortConfigs_t *config) bool interlaced; ///< The associated scan mode( @a true if interlaced, @a false if progressive ) }dsVideoPortResolution_t; #endif - INT_INFO("%d:%s: typeCfg->supportedResolutons = %p\n", __LINE__, __func__, typeCfg->supportedResolutons); - INT_INFO("%d:%s: typeCfg->supportedResolutons->name = %s\n", __LINE__, __func__, typeCfg->supportedResolutons->name); - INT_INFO("%d:%s: typeCfg->supportedResolutons->pixelResolution= %d\n", __LINE__, __func__, typeCfg->supportedResolutons->pixelResolution); - INT_INFO("%d:%s: typeCfg->supportedResolutons->aspectRatio= %d\n", __LINE__, __func__, typeCfg->supportedResolutons->aspectRatio); - INT_INFO("%d:%s: typeCfg->supportedResolutons->stereoScopicMode= %d\n", __LINE__, __func__, typeCfg->supportedResolutons->stereoScopicMode); - INT_INFO("%d:%s: typeCfg->supportedResolutons->frameRate= %d\n", __LINE__, __func__, typeCfg->supportedResolutons->frameRate); - INT_INFO("%d:%s: typeCfg->supportedResolutons->interlaced= %d\n", __LINE__, __func__, typeCfg->supportedResolutons->interlaced); + INT_INFO("%d:%s: typeCfg->supportedResolutions = %p\n", __LINE__, __func__, typeCfg->supportedResolutions); + INT_INFO("%d:%s: typeCfg->supportedResolutions->name = %s\n", __LINE__, __func__, typeCfg->supportedResolutions->name); + INT_INFO("%d:%s: typeCfg->supportedResolutions->pixelResolution= %d\n", __LINE__, __func__, typeCfg->supportedResolutions->pixelResolution); + INT_INFO("%d:%s: typeCfg->supportedResolutions->aspectRatio= %d\n", __LINE__, __func__, typeCfg->supportedResolutions->aspectRatio); + INT_INFO("%d:%s: typeCfg->supportedResolutions->stereoScopicMode= %d\n", __LINE__, __func__, typeCfg->supportedResolutions->stereoScopicMode); + INT_INFO("%d:%s: typeCfg->supportedResolutions->frameRate= %d\n", __LINE__, __func__, typeCfg->supportedResolutions->frameRate); + INT_INFO("%d:%s: typeCfg->supportedResolutions->interlaced= %d\n", __LINE__, __func__, typeCfg->supportedResolutions->interlaced); } INT_INFO("\n\n####################################################################### \n\n"); #if 0 @@ -361,8 +364,8 @@ void dumpconfig(videoPortConfigs_t *config) #endif INT_INFO("\n\n####################################################################### \n\n"); INT_INFO("%d:%s: Dumping Video Port Connections\n", __LINE__, __func__); - for (size_t i = 0; i < *(configuration.pKVideoPortPorts_size); i++) { - const dsVideoPortPortConfig_t *port = &(configuration.pKPorts[i]); + for (size_t i = 0; i < *(config->pKVideoPortPorts_size); i++) { + const dsVideoPortPortConfig_t *port = &(config->pKPorts[i]); INT_INFO("%d:%s: port->id.type = %d\n", __LINE__, __func__, port->id.type); INT_INFO("%d:%s: port->id.index = %d\n", __LINE__, __func__, port->id.index); INT_INFO("%d:%s: port->connectedAOP.type = %d\n", __LINE__, __func__, port->connectedAOP.type); @@ -419,7 +422,7 @@ void VideoOutputPortConfig::load() if(ret == true) { INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[1]); - ret = searchConfigs((void **)&configuration.pKConfigSize, (char *)searchVaribles[1]); + ret = searchConfigs((void **)&configuration.pKVideoPortConfigs_size, (char *)searchVaribles[1]); if(ret == false) { INT_ERROR("%s is not defined\n", searchVaribles[1]); @@ -431,7 +434,7 @@ void VideoOutputPortConfig::load() INT_ERROR("%s is not defined\n", searchVaribles[2]); } INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[3]); - ret = searchConfigs((void **)&configuration.pKPortSize, (char *)searchVaribles[3]); + ret = searchConfigs((void **)&configuration.pKVideoPortPorts_size, (char *)searchVaribles[3]); if(ret == false) { INT_ERROR("%s is not defined\n", searchVaribles[3]); @@ -454,15 +457,15 @@ void VideoOutputPortConfig::load() INT_ERROR("Read Old Configs\n"); configuration.pKConfigs = kConfigs; configSize = dsUTL_DIM(kConfigs); - configuration.pKConfigSize = &configSize; + configuration.pKVideoPortConfigs_size = &configSize; configuration.pKPorts = kPorts; portSize = dsUTL_DIM(kPorts); - configuration.pKPortSize = &portSize; + configuration.pKVideoPortPorts_size = &portSize; configuration.pKResolutionsSettings = kResolutions; resolutionSize = dsUTL_DIM(kResolutions); configuration.pKResolutionsSettings_size = &resolutionSize; - INT_INFO("configuration.pKConfigs =%p, *(configuration.pKConfigSize) = %d\n", configuration.pKConfigs, *(configuration.pKConfigSize)); - INT_INFO("configuration.pKPorts =%p, *(configuration.pKPortSize) = %d\n", configuration.pKPorts, *(configuration.pKPortSize)); + INT_INFO("configuration.pKConfigs =%p, *(configuration.pKConfigSize) = %d\n", configuration.pKConfigs, *(configuration.pKVideoPortConfigs_size)); + INT_INFO("configuration.pKPorts =%p, *(configuration.pKPortSize) = %d\n", configuration.pKPorts, *(configuration.pKVideoPortPorts_size)); INT_INFO("configuration.pKResolutionsSettings =%p, *(configuration.pKResolutionsSettings_size) = %d\n", configuration.pKResolutionsSettings, *(configuration.pKResolutionsSettings_size)); } #if DEBUG @@ -496,7 +499,7 @@ void VideoOutputPortConfig::load() */ for (size_t i = 0; i < *(configuration.pKVideoPortConfigs_size); i++) { - const dsVideoPortTypeConfig_t *typeCfg = &()configuration.pKConfigs[i]; + const dsVideoPortTypeConfig_t *typeCfg = &(configuration.pKConfigs[i]); VideoOutputPortType &vPortType = VideoOutputPortType::getInstance(typeCfg->typeId); vPortType.enable(); vPortType.setRestrictedResolution(typeCfg->restrictedResollution); From 4c52eebc34c6b8d6b08f096fc51cb0ddbe0922ae Mon Sep 17 00:00:00 2001 From: grandhi_santoshkumar Date: Wed, 12 Nov 2025 10:46:22 +0000 Subject: [PATCH 17/39] RDKEMW-8587: consume the config variables using dlsym() in MW. Reason for change: consume the config variables using dlsym() in MW. Test Procedure: refer RDKEMW-8587 Risks: High Signed-off-by:gsanto722 --- ds/frontPanelConfig.cpp | 99 ++++++++++++++++++++++++++++++++++++---- ds/videoDeviceConfig.cpp | 35 +++++++++----- 2 files changed, 115 insertions(+), 19 deletions(-) diff --git a/ds/frontPanelConfig.cpp b/ds/frontPanelConfig.cpp index e8c932b2..2a1a6ee0 100644 --- a/ds/frontPanelConfig.cpp +++ b/ds/frontPanelConfig.cpp @@ -41,9 +41,18 @@ #include "frontPanelSettings.hpp" #include "illegalArgumentException.hpp" #include "dslogger.h" +#include "manager.hpp" using namespace std; +typedef struct fpdConfigs +{ + const dsFPDColorConfig_t *pKFPDIndicatorColors; + const dsFPDIndicatorConfig_t *pKIndicators; + int *pKFPDIndicatorColors_size; + int *pKIndicators_size; +}fpdConfigs_t; + namespace device { /** @@ -337,6 +346,27 @@ List FrontPanelConfig::getTextDisplays() return rTexts; } +void dumpconfig(fpdConfigs_t *configuration) +{ + // Dump the configuration details + printf("Dumping Front Panel Configuration Details:\n"); + printf("Indicator Colors:\n"); + for (size_t i = 0; i < *(configuration->pKFPDIndicatorColors_size); i++) { + printf(" Color ID: %d, Name: %s\n", + configuration->pKFPDIndicatorColors[i].id, + configuration->pKFPDIndicatorColors[i].name); + } + + printf("Indicators:\n"); + for (size_t i = 0; i < *(configuration->pKIndicators_size); i++) { + printf(" Indicator ID: %d, Max Brightness: %d, Max Cycle Rate: %d, Levels: %d, Color Mode: %d\n", + configuration->pKIndicators[i].id, + configuration->pKIndicators[i].maxBrightness, + configuration->pKIndicators[i].maxCycleRate, + configuration->pKIndicators[i].levels, + configuration->pKIndicators[i].colorMode); + } +} /** * @fn FrontPanelConfig::load() @@ -352,18 +382,71 @@ void FrontPanelConfig::load() * 1. Create Supported Colors. * 2. Create Indicators. */ + int indicatorSize, indicatorColorSize, invalid_size = -1; + fpdConfigs_t configuration = {0}; + + const char* searchVaribles[] = { + "kFPDIndicatorColors", + "kFPDIndicatorColors_size", + "kIndicators", + "kIndicators_size" + }; + bool ret = false; + + INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[0]); + ret = searchConfigs((void **)&configuration.pKFPDIndicatorColors, searchVaribles[0]); + if(ret == true) + { + INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[1]); + ret = searchConfigs((void **)&configuration.pKFPDIndicatorColors_size, (char *)searchVaribles[1]); + if(ret == false) + { + INT_ERROR("%s is not defined\n", searchVaribles[1]); + configuration.pKFPDIndicatorColors_size = &invalid_size; + } + INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[2]); + ret = searchConfigs((void **)&configuration.pKIndicators, searchVaribles[2]); + if(ret == false) + { + INT_ERROR("%s is not defined\n", searchVaribles[2]); + } + INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[3]); + ret = searchConfigs((void **)&configuration.pKIndicators_size, (char *)searchVaribles[3]); + if(ret == false) + { + INT_ERROR("%s is not defined\n", searchVaribles[3]); + configuration.pKIndicators_size = &invalid_size; + } + } + else + { + INT_ERROR("Read Old Configs\n"); + configuration.pKFPDIndicatorColors = kIndicatorColors; + indicatorColorSize = dsUTL_DIM(kIndicatorColors); + configuration.pKFPDIndicatorColors_size = &indicatorColorSize; + configuration.pKIndicators = kIndicators; + indicatorSize = dsUTL_DIM(kIndicators); + configuration.pKIndicators_size = &indicatorSize; + + INT_INFO("configuration.pKFPDIndicatorColors =%p, *(configuration.pKFPDIndicatorColors_size) = %d\n", configuration.pKFPDIndicatorColors, *(configuration.pKFPDIndicatorColors_size)); + INT_INFO("configuration.pKIndicators =%p, *(configuration.pKIndicators_size) = %d\n", configuration.pKIndicators, *(configuration.pKIndicators_size)); + } + #if DEBUG + //dumpconfig(&configuration); + #endif + { - for (size_t i = 0; i < dsUTL_DIM(kIndicatorColors); i++) { - _colors.push_back(FrontPanelIndicator::Color(kIndicatorColors[i].id)); + for (size_t i = 0; i < *(configuration.pKFPDIndicatorColors_size); i++) { + _colors.push_back(FrontPanelIndicator::Color(configuration.pKFPDIndicatorColors[i].id)); } - for (size_t i = 0; i < dsUTL_DIM(kIndicators); i++) { + for (size_t i = 0; i < *(configuration.pKIndicators_size); i++) { /* All indicators support a same set of colors */ - _indicators.push_back(FrontPanelIndicator(kIndicators[i].id, - kIndicators[i].maxBrightness, - kIndicators[i].maxCycleRate, - kIndicators[i].levels, - kIndicators[i].colorMode)); + _indicators.push_back(FrontPanelIndicator(configuration.pKIndicators[i].id, + configuration.pKIndicators[i].maxBrightness, + configuration.pKIndicators[i].maxCycleRate, + configuration.pKIndicators[i].levels, + configuration.pKIndicators[i].colorMode)); } } diff --git a/ds/videoDeviceConfig.cpp b/ds/videoDeviceConfig.cpp index 965aecf2..3c69e421 100644 --- a/ds/videoDeviceConfig.cpp +++ b/ds/videoDeviceConfig.cpp @@ -121,11 +121,18 @@ void dumpconfig(dsVideoConfig_t *pKVideoDeviceConfigs, int videoDeviceConfigs_si INT_INFO("%d:%s: Exit function\n", __LINE__, __func__); } +typedef struct videoDeviceConfig +{ + dsVideoConfig_t *pKVideoDeviceConfigs; + int *pKVideoDeviceConfigs_size; +}videoDeviceConfig_t; + void VideoDeviceConfig::load() { - int configSize, portSize, invalid_size = -1; - dsVideoConfig_t *pKVideoDeviceConfigs = NULL; - int *pKVideoDeviceConfigs_size = NULL; + int configSize, invalid_size = -1; + //dsVideoConfig_t *pKVideoDeviceConfigs = NULL; + //int *pKVideoDeviceConfigs_size = NULL; + videoDeviceConfig_t videoDeviceConfig = {0}; const char* searchVaribles[] = { "kVideoDeviceConfigs", "kVideoDeviceConfigs_size", @@ -140,33 +147,39 @@ void VideoDeviceConfig::load() } INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[0]); - ret = searchConfigs((void **)&pKVideoDeviceConfigs, searchVaribles[0]); + //ret = searchConfigs((void **)&pKVideoDeviceConfigs, searchVaribles[0]); + ret = searchConfigs((void **)&(videoDeviceConfig.pKVideoDeviceConfigs), searchVaribles[0]); if(ret == true) { INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[1]); - ret = searchConfigs((void **)&pKVideoDeviceConfigs_size, (char *)searchVaribles[1]); + ret = searchConfigs((void **)&(videoDeviceConfig.pKVideoDeviceConfigs_size), (char *)searchVaribles[1]); if(ret == false) { INT_ERROR("%s is not defined\n", searchVaribles[1]); + videoDeviceConfig.pKVideoDeviceConfigs_size = &invalid_size; } } else { - pKVideoDeviceConfigs = (dsVideoConfig_t *)kConfigs; - *pKVideoDeviceConfigs_size = dsUTL_DIM(kConfigs); + //pKVideoDeviceConfigs = (dsVideoConfig_t *)kConfigs; + //*pKVideoDeviceConfigs_size = dsUTL_DIM(kConfigs); + INT_INFO("Read Old Configs\n"); + videoDeviceConfig.pKVideoDeviceConfigs = (dsVideoConfig_t *)kConfigs; + configSize = dsUTL_DIM(kConfigs); + videoDeviceConfig.pKVideoDeviceConfigs_size = &configSize; } #if DEBUG - dumpconfig(pKVideoDeviceConfigs, *pKVideoDeviceConfigs_size); + dumpconfig(videoDeviceConfig.pKVideoDeviceConfigs, *(videoDeviceConfig.pKVideoDeviceConfigs_size)); #endif /* * Initialize Video Devices (supported DFCs etc.) */ - for (size_t i = 0; i < *pKVideoDeviceConfigs_size; i++) { + for (size_t i = 0; i < *(videoDeviceConfig.pKVideoDeviceConfigs_size); i++) { _vDevices.push_back(VideoDevice(i)); - for (size_t j = 0; j < pKVideoDeviceConfigs[i].numSupportedDFCs; j++) { - _vDevices.at(i).addDFC(VideoDFC::getInstance(pKVideoDeviceConfigs[i].supportedDFCs[j])); + for (size_t j = 0; j < videoDeviceConfig.pKVideoDeviceConfigs[i].numSupportedDFCs; j++) { + _vDevices.at(i).addDFC(VideoDFC::getInstance(videoDeviceConfig.pKVideoDeviceConfigs[i].supportedDFCs[j])); } } From e6456851f5d162e01158f52d06ed7496e40d2e98 Mon Sep 17 00:00:00 2001 From: grandhi_santoshkumar Date: Wed, 12 Nov 2025 12:23:41 +0000 Subject: [PATCH 18/39] fix build issue --- ds/frontPanelConfig.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ds/frontPanelConfig.cpp b/ds/frontPanelConfig.cpp index 2a1a6ee0..6b439c42 100644 --- a/ds/frontPanelConfig.cpp +++ b/ds/frontPanelConfig.cpp @@ -352,9 +352,9 @@ void dumpconfig(fpdConfigs_t *configuration) printf("Dumping Front Panel Configuration Details:\n"); printf("Indicator Colors:\n"); for (size_t i = 0; i < *(configuration->pKFPDIndicatorColors_size); i++) { - printf(" Color ID: %d, Name: %s\n", + printf(" Color ID: %d, color: %d\n", configuration->pKFPDIndicatorColors[i].id, - configuration->pKFPDIndicatorColors[i].name); + configuration->pKFPDIndicatorColors[i].color); } printf("Indicators:\n"); From db4fa61d02adb64416f7109e823d3b9b5a4c295a Mon Sep 17 00:00:00 2001 From: grandhi_santoshkumar Date: Thu, 13 Nov 2025 06:40:11 +0000 Subject: [PATCH 19/39] RDKEMW-8587: consume the config variables using dlsym() in MW. Reason for change: consume the config variables using dlsym() in MW. Test Procedure: refer RDKEMW-8587 Risks: High Signed-off-by:gsanto722 --- ds/frontPanelConfig.cpp | 75 ++++++++++++++++++++++++++++++++--------- 1 file changed, 59 insertions(+), 16 deletions(-) diff --git a/ds/frontPanelConfig.cpp b/ds/frontPanelConfig.cpp index 6b439c42..fc3be5b3 100644 --- a/ds/frontPanelConfig.cpp +++ b/ds/frontPanelConfig.cpp @@ -43,14 +43,18 @@ #include "dslogger.h" #include "manager.hpp" +#define DEBUG 1 // Using for dumpconfig + using namespace std; typedef struct fpdConfigs { const dsFPDColorConfig_t *pKFPDIndicatorColors; const dsFPDIndicatorConfig_t *pKIndicators; + const dsFPDTextDisplayConfig_t *pKTextDisplays; int *pKFPDIndicatorColors_size; int *pKIndicators_size; + int *pKTextDisplays_size; }fpdConfigs_t; namespace device { @@ -349,23 +353,43 @@ List FrontPanelConfig::getTextDisplays() void dumpconfig(fpdConfigs_t *configuration) { // Dump the configuration details - printf("Dumping Front Panel Configuration Details:\n"); - printf("Indicator Colors:\n"); + INT_INFO("\n\n===========================================================================\n\n"); + INT_INFO("Start of Front Panel Configuration Details:\n"); + INT_INFO("configuration->pKFPDIndicatorColors_size: %d\n", *(configuration->pKFPDIndicatorColors_size)); + INT_INFO("configuration->pKIndicators_size: %d\n", *(configuration->pKIndicators_size)); + INT_INFO("configuration->pKTextDisplays_size: %d\n", *(configuration->pKTextDisplays_size)); + INT_INFO("Dumping Front Panel Configuration Details:\n"); + INT_INFO("Indicator Colors:\n"); for (size_t i = 0; i < *(configuration->pKFPDIndicatorColors_size); i++) { - printf(" Color ID: %d, color: %d\n", + INT_INFO(" Color ID: %d, color: %d\n", configuration->pKFPDIndicatorColors[i].id, configuration->pKFPDIndicatorColors[i].color); } - printf("Indicators:\n"); + INT_INFO("Indicators:\n"); for (size_t i = 0; i < *(configuration->pKIndicators_size); i++) { - printf(" Indicator ID: %d, Max Brightness: %d, Max Cycle Rate: %d, Levels: %d, Color Mode: %d\n", + INT_INFO(" Indicator ID: %d, Max Brightness: %d, Max Cycle Rate: %d, Levels: %d, Color Mode: %d\n", configuration->pKIndicators[i].id, configuration->pKIndicators[i].maxBrightness, configuration->pKIndicators[i].maxCycleRate, configuration->pKIndicators[i].levels, configuration->pKIndicators[i].colorMode); } + INT_INFO("Text Displays:\n"); + + for (size_t i = 0; i < *(configuration->pKTextDisplays_size); i++) { + INT_INFO(" Text Display ID: %d, Max Brightness: %d, Max Cycle Rate: %d, Levels: %d, Max Horizontal Iterations: %d, Max Vertical Iterations: %d, Supported Characters: %d, Color Mode: %d\n", + configuration->pKTextDisplays[i].id, + configuration->pKTextDisplays[i].maxBrightness, + configuration->pKTextDisplays[i].maxCycleRate, + configuration->pKTextDisplays[i].levels, + configuration->pKTextDisplays[i].maxHorizontalIterations, + configuration->pKTextDisplays[i].maxVerticalIterations, + configuration->pKTextDisplays[i].supportedCharacters, + configuration->pKTextDisplays[i].colorMode); + } + INT_INFO("End of Front Panel Configuration Details.\n"); + INT_INFO("\n\n===========================================================================\n\n"); } /** @@ -389,7 +413,9 @@ void FrontPanelConfig::load() "kFPDIndicatorColors", "kFPDIndicatorColors_size", "kIndicators", - "kIndicators_size" + "kIndicators_size", + "kTextDisplays", + "kTextDisplays_size" }; bool ret = false; @@ -417,6 +443,19 @@ void FrontPanelConfig::load() INT_ERROR("%s is not defined\n", searchVaribles[3]); configuration.pKIndicators_size = &invalid_size; } + INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[4]); + ret = searchConfigs((void **)&configuration.pKTextDisplays, searchVaribles[4]); + if(ret == false) + { + INT_ERROR("%s is not defined\n", searchVaribles[4]); + } + INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[5]); + ret = searchConfigs((void **)&configuration.pKTextDisplays_size, (char *)searchVaribles[5]); + if(ret == false) + { + INT_ERROR("%s is not defined\n", searchVaribles[5]); + configuration.pKTextDisplays_size = &invalid_size; + } } else { @@ -427,12 +466,16 @@ void FrontPanelConfig::load() configuration.pKIndicators = kIndicators; indicatorSize = dsUTL_DIM(kIndicators); configuration.pKIndicators_size = &indicatorSize; + configuration.pKTextDisplays = kTextDisplays; + indicatorSize = dsUTL_DIM(kTextDisplays); + configuration.pKTextDisplays_size = &indicatorSize; INT_INFO("configuration.pKFPDIndicatorColors =%p, *(configuration.pKFPDIndicatorColors_size) = %d\n", configuration.pKFPDIndicatorColors, *(configuration.pKFPDIndicatorColors_size)); INT_INFO("configuration.pKIndicators =%p, *(configuration.pKIndicators_size) = %d\n", configuration.pKIndicators, *(configuration.pKIndicators_size)); + INT_INFO("configuration.pKTextDisplays =%p, *(configuration.pKTextDisplays_size) = %d\n", configuration.pKTextDisplays, *(configuration.pKTextDisplays_size)); } #if DEBUG - //dumpconfig(&configuration); + dumpconfig(&configuration); #endif { @@ -457,16 +500,16 @@ void FrontPanelConfig::load() * 1. Use Supported Colors created for indicators. * 2. Create Text Displays. */ - for (size_t i = 0; i < dsUTL_DIM(kTextDisplays); i++) { + for (size_t i = 0; i < *(configuration.pKTextDisplays_size); i++) { _textDisplays.push_back( - FrontPanelTextDisplay(kTextDisplays[i].id, - kTextDisplays[i].maxBrightness, - kTextDisplays[i].maxCycleRate, - kTextDisplays[i].levels, - kTextDisplays[i].maxHorizontalIterations, - kTextDisplays[i].maxVerticalIterations, - kTextDisplays[i].supportedCharacters, - kTextDisplays[i].colorMode)); + FrontPanelTextDisplay(configuration.pKTextDisplays[i].id, + configuration.pKTextDisplays[i].maxBrightness, + configuration.pKTextDisplays[i].maxCycleRate, + configuration.pKTextDisplays[i].levels, + configuration.pKTextDisplays[i].maxHorizontalIterations, + configuration.pKTextDisplays[i].maxVerticalIterations, + configuration.pKTextDisplays[i].supportedCharacters, + configuration.pKTextDisplays[i].colorMode)); } } } From f5838f430ad3f659a2c1f29e5f9c58cf16247689 Mon Sep 17 00:00:00 2001 From: grandhi_santoshkumar Date: Fri, 14 Nov 2025 11:29:45 +0000 Subject: [PATCH 20/39] RDKEMW-8587: consume the config variables using dlsym() in MW. Reason for change: consume the config variables using dlsym() in MW. Test Procedure: refer RDKEMW-8587 Risks: High Signed-off-by:gsanto722 --- ds/audioOutputPortConfig.cpp | 104 ++++++++++++++--------------------- ds/frontPanelConfig.cpp | 2 +- ds/videoDeviceConfig.cpp | 18 +----- ds/videoOutputPortConfig.cpp | 42 ++------------ 4 files changed, 49 insertions(+), 117 deletions(-) diff --git a/ds/audioOutputPortConfig.cpp b/ds/audioOutputPortConfig.cpp index d01e78b6..38fd672e 100644 --- a/ds/audioOutputPortConfig.cpp +++ b/ds/audioOutputPortConfig.cpp @@ -121,44 +121,14 @@ List AudioOutputPortConfig::getSupportedTypes() return supportedTypes; } -#if 0 -bool searchConfigs(void **pConfigVar, const char *searchConfigStr) -{ - INT_INFO("%d:%s: Entering function\n", __LINE__, __func__); - INT_INFO("%d:%s: searchConfigStr = %s\n", __LINE__, __func__, searchConfigStr); - - static int invalidsize = -1; - - pthread_mutex_lock(&dsLock); - - void *dllib = dlopen(RDK_DSHAL_NAME, RTLD_LAZY); - if (dllib) { - *pConfigVar = (void *) dlsym(dllib, searchConfigStr); - if (*pConfigVar != NULL) { - INT_INFO("%s is defined and loaded pConfigVar= %p\r\n", searchConfigStr, *pConfigVar); - } - else { - INT_ERROR("%d:%s: %s is not defined\n", __LINE__, __func__, searchConfigStr); - } - - dlclose(dllib); - } - else { - INT_ERROR("%d:%s: Open %s failed\n", __LINE__, __func__, RDK_DSHAL_NAME); - } - pthread_mutex_unlock(&dsLock); - INT_INFO("%d:%s: Exit function\n", __LINE__, __func__); - return (*pConfigVar != NULL); -} -#endif void dumpconfig(audioConfigs_t *config) { INT_INFO("%d:%s: Entering function\n", __LINE__, __func__); INT_INFO("%d:%s: pKConfigs = %p\n", __LINE__, __func__, config->pKConfigs); INT_INFO("%d:%s: pKPorts = %p\n", __LINE__, __func__, config->pKPorts); - INT_INFO("%d:%s: pKConfigSize = %p\n", __LINE__, __func__, config->pKConfigSize); - INT_INFO("%d:%s: pKPortSize = %p\n", __LINE__, __func__, config->pKPortSize); - + INT_INFO("%d:%s: pKConfigSize %p = %d \n", __LINE__, __func__, config->pKConfigSize, *(config->pKConfigSize)); + INT_INFO("%d:%s: pKPortSize %p = %d \n", __LINE__, __func__, config->pKPortSize, *(config->pKPortSize)); + INT_INFO("\n\n=========================================================================================================================\n\n"); if(config->pKConfigs != NULL && *(config->pKConfigSize) != -1) { @@ -261,41 +231,49 @@ void AudioOutputPortConfig::load() configuration.pKPortSize = &portSize; INT_INFO("configuration.pKConfigs =%p, configuration.pKPorts =%p, *(configuration.pKConfigSize) = %d, *(configuration.pKPortSize) = %d\n", configuration.pKConfigs, configuration.pKPorts, *(configuration.pKConfigSize), *(configuration.pKPortSize)); } - #if DEBUG - dumpconfig(&configuration); - #endif - /* - * Initialize Audio portTypes (encodings, compressions etc.) - * and its port instances (db, level etc) - */ - for (size_t i = 0; i < *(configuration.pKConfigSize); i++) { - const dsAudioTypeConfig_t *typeCfg = &(configuration.pKConfigs[i]); - AudioOutputPortType &aPortType = AudioOutputPortType::getInstance(typeCfg->typeId); - aPortType.enable(); - for (size_t j = 0; j < typeCfg->numSupportedEncodings; j++) { - aPortType.addEncoding(AudioEncoding::getInstance(typeCfg->encodings[j])); - _aEncodings.at(typeCfg->encodings[j]).enable(); - } - for (size_t j = 0; j < typeCfg->numSupportedCompressions; j++) { - aPortType.addCompression(typeCfg->compressions[j]); - _aCompressions.at(typeCfg->compressions[j]).enable(); + * Check if configs are loaded properly + */ + if ( configuration.pKConfigs != NULL || configuration.pKPorts != NULL || + configuration.pKConfigSize != NULL || configuration.pKPortSize != NULL) { + #if DEBUG + dumpconfig(&configuration); + #endif + INT_INFO("%d:%s: Audio Configs loaded successfully\n", __LINE__, __func__); + /* + * Initialize Audio portTypes (encodings, compressions etc.) + * and its port instances (db, level etc) + */ + for (size_t i = 0; i < *(configuration.pKConfigSize); i++) { + const dsAudioTypeConfig_t *typeCfg = &(configuration.pKConfigs[i]); + AudioOutputPortType &aPortType = AudioOutputPortType::getInstance(typeCfg->typeId); + aPortType.enable(); + for (size_t j = 0; j < typeCfg->numSupportedEncodings; j++) { + aPortType.addEncoding(AudioEncoding::getInstance(typeCfg->encodings[j])); + _aEncodings.at(typeCfg->encodings[j]).enable(); + } + for (size_t j = 0; j < typeCfg->numSupportedCompressions; j++) { + aPortType.addCompression(typeCfg->compressions[j]); + _aCompressions.at(typeCfg->compressions[j]).enable(); + } + for (size_t j = 0; j < typeCfg->numSupportedStereoModes; j++) { + aPortType.addStereoMode(typeCfg->stereoModes[j]); + _aStereoModes.at(typeCfg->stereoModes[j]).enable(); + } } - for (size_t j = 0; j < typeCfg->numSupportedStereoModes; j++) { - aPortType.addStereoMode(typeCfg->stereoModes[j]); - _aStereoModes.at(typeCfg->stereoModes[j]).enable(); + + /* + * set up ports based on kPorts[] + */ + for (size_t i = 0; i < *(configuration.pKPortSize); i++) { + const dsAudioPortConfig_t *port = &configuration.pKPorts[i]; + _aPorts.push_back(AudioOutputPort((port->id.type), port->id.index, i)); + _aPortTypes.at(port->id.type).addPort(_aPorts.at(i)); } } - - /* - * set up ports based on kPorts[] - */ - for (size_t i = 0; i < *(configuration.pKPortSize); i++) { - const dsAudioPortConfig_t *port = &configuration.pKPorts[i]; - _aPorts.push_back(AudioOutputPort((port->id.type), port->id.index, i)); - _aPortTypes.at(port->id.type).addPort(_aPorts.at(i)); + else { + INT_ERROR("%d:%s: Audio Configs loading failed\n", __LINE__, __func__); } - } catch(const Exception &e) { throw e; diff --git a/ds/frontPanelConfig.cpp b/ds/frontPanelConfig.cpp index fc3be5b3..186949ac 100644 --- a/ds/frontPanelConfig.cpp +++ b/ds/frontPanelConfig.cpp @@ -378,7 +378,7 @@ void dumpconfig(fpdConfigs_t *configuration) INT_INFO("Text Displays:\n"); for (size_t i = 0; i < *(configuration->pKTextDisplays_size); i++) { - INT_INFO(" Text Display ID: %d, Max Brightness: %d, Max Cycle Rate: %d, Levels: %d, Max Horizontal Iterations: %d, Max Vertical Iterations: %d, Supported Characters: %d, Color Mode: %d\n", + INT_INFO(" Text Display ID: %d, Max Brightness: %d, Max Cycle Rate: %d, Levels: %d, Max Horizontal Iterations: %d, Max Vertical Iterations: %d, Supported Characters: %s, Color Mode: %d\n", configuration->pKTextDisplays[i].id, configuration->pKTextDisplays[i].maxBrightness, configuration->pKTextDisplays[i].maxCycleRate, diff --git a/ds/videoDeviceConfig.cpp b/ds/videoDeviceConfig.cpp index 3c69e421..ca154b6e 100644 --- a/ds/videoDeviceConfig.cpp +++ b/ds/videoDeviceConfig.cpp @@ -95,19 +95,12 @@ void dumpconfig(dsVideoConfig_t *pKVideoDeviceConfigs, int videoDeviceConfigs_si INT_INFO("%d:%s: pKVideoDeviceConfigs = %p\n", __LINE__, __func__, pKVideoDeviceConfigs); INT_INFO("%d:%s: videoDeviceConfigs_size = %d\n", __LINE__, __func__, videoDeviceConfigs_size); - #if 0 - typedef struct _dsVideoConfig_t { - size_t numSupportedDFCs; /*!< Number of zoom modes supported */ - const dsVideoZoom_t *supportedDFCs; /*!< List of zoom modes supported */ - dsVideoZoom_t defaultDFC; /*!< The default zoom mode */ - } dsVideoConfig_t; - #endif INT_INFO("\n\n=========================================================================================================================\n\n"); if(pKVideoDeviceConfigs != NULL && videoDeviceConfigs_size != -1) { - for (size_t i = 0; i < videoDeviceConfigs_size; i++) { - INT_INFO("pKVideoDeviceConfigs[%d].numSupportedDFCs = %d\n ", i, pKVideoDeviceConfigs[i].numSupportedDFCs); - for (size_t j = 0; j < pKVideoDeviceConfigs[i].numSupportedDFCs; j++) { + for (int i = 0; i < videoDeviceConfigs_size; i++) { + INT_INFO("pKVideoDeviceConfigs[%d].numSupportedDFCs = %lu\n ", i, pKVideoDeviceConfigs[i].numSupportedDFCs); + for (int j = 0; j < pKVideoDeviceConfigs[i].numSupportedDFCs; j++) { INT_INFO(" Address of pKVideoDeviceConfigs[%d].supportedDFCs[%d] = %d", i, j, pKVideoDeviceConfigs[i].supportedDFCs[j]); } } @@ -130,8 +123,6 @@ typedef struct videoDeviceConfig void VideoDeviceConfig::load() { int configSize, invalid_size = -1; - //dsVideoConfig_t *pKVideoDeviceConfigs = NULL; - //int *pKVideoDeviceConfigs_size = NULL; videoDeviceConfig_t videoDeviceConfig = {0}; const char* searchVaribles[] = { "kVideoDeviceConfigs", @@ -147,7 +138,6 @@ void VideoDeviceConfig::load() } INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[0]); - //ret = searchConfigs((void **)&pKVideoDeviceConfigs, searchVaribles[0]); ret = searchConfigs((void **)&(videoDeviceConfig.pKVideoDeviceConfigs), searchVaribles[0]); if(ret == true) { @@ -161,8 +151,6 @@ void VideoDeviceConfig::load() } else { - //pKVideoDeviceConfigs = (dsVideoConfig_t *)kConfigs; - //*pKVideoDeviceConfigs_size = dsUTL_DIM(kConfigs); INT_INFO("Read Old Configs\n"); videoDeviceConfig.pKVideoDeviceConfigs = (dsVideoConfig_t *)kConfigs; configSize = dsUTL_DIM(kConfigs); diff --git a/ds/videoOutputPortConfig.cpp b/ds/videoOutputPortConfig.cpp index 9fbe7637..8e43e593 100644 --- a/ds/videoOutputPortConfig.cpp +++ b/ds/videoOutputPortConfig.cpp @@ -305,47 +305,19 @@ void dumpconfig(videoPortConfigs_t *config) } INT_INFO("\n\n####################################################################### \n\n"); - #if 0 - /*.typeId = */ dsVIDEOPORT_TYPE_INTERNAL, - /*.name = */ "INTERNAL", - /*.dtcpSupported = */ false, - /*.hdcpSupported = */ true, - /*.restrictedResollution = */ -1, - /*.numSupportedResolutions = */ dsUTL_DIM(kResolutions), // 0 means "Info available at runtime" - /*.supportedResolutons = */ kResolutions, - #endif INT_INFO("\n\n####################################################################### \n\n"); INT_INFO("%d:%s: Dumping Video Port Configurations\n", __LINE__, __func__); for (size_t i = 0; i < *(config->pKVideoPortConfigs_size); i++) { const dsVideoPortTypeConfig_t *typeCfg = &(config->pKConfigs[i]); - #if 0 - typedef struct _dsVideoPortTypeConfig_t { - dsVideoPortType_t typeId; ///< The video output type - const char *name; ///< Name of the video output port - bool dtcpSupported; ///< Is DTCP supported? - bool hdcpSupported; ///< Is HDCP supported? - int32_t restrictedResollution; ///< Any restricted resolution; -1 if no. - size_t numSupportedResolutions; ///< Number of supported resolutions - dsVideoPortResolution_t *supportedResolutions; ///< List of supported resolutions - } dsVideoPortTypeConfig_t; - #endif + INT_INFO("%d:%s: typeCfg->typeId = %d\n", __LINE__, __func__, typeCfg->typeId); INT_INFO("%d:%s: typeCfg->name = %s\n", __LINE__, __func__, typeCfg->name); INT_INFO("%d:%s: typeCfg->dtcpSupported= %d\n", __LINE__, __func__, typeCfg->dtcpSupported); INT_INFO("%d:%s: typeCfg->hdcpSupported = %d\n", __LINE__, __func__, typeCfg->hdcpSupported); INT_INFO("%d:%s: typeCfg->restrictedResollution = %d\n", __LINE__, __func__, typeCfg->restrictedResollution); - INT_INFO("%d:%s: typeCfg->numSupportedResolutions= %d\n", __LINE__, __func__, typeCfg->numSupportedResolutions); - #if 0 - typedef struct _dsVideoPortResolution_t { - char name[32]; ///< Name the resolution - dsVideoResolution_t pixelResolution; ///< The resolution associated with the name - dsVideoAspectRatio_t aspectRatio; ///< The associated aspect ratio - dsVideoStereoScopicMode_t stereoScopicMode; ///< The associated stereoscopic mode - dsVideoFrameRate_t frameRate; ///< The associated frame rate - bool interlaced; ///< The associated scan mode( @a true if interlaced, @a false if progressive ) - }dsVideoPortResolution_t; - #endif + INT_INFO("%d:%s: typeCfg->numSupportedResolutions= %lu\n", __LINE__, __func__, typeCfg->numSupportedResolutions); + INT_INFO("%d:%s: typeCfg->supportedResolutions = %p\n", __LINE__, __func__, typeCfg->supportedResolutions); INT_INFO("%d:%s: typeCfg->supportedResolutions->name = %s\n", __LINE__, __func__, typeCfg->supportedResolutions->name); INT_INFO("%d:%s: typeCfg->supportedResolutions->pixelResolution= %d\n", __LINE__, __func__, typeCfg->supportedResolutions->pixelResolution); @@ -355,13 +327,7 @@ void dumpconfig(videoPortConfigs_t *config) INT_INFO("%d:%s: typeCfg->supportedResolutions->interlaced= %d\n", __LINE__, __func__, typeCfg->supportedResolutions->interlaced); } INT_INFO("\n\n####################################################################### \n\n"); - #if 0 - { - /*.typeId = */ {dsVIDEOPORT_TYPE_INTERNAL, 0}, - /* connectedAOP */ {dsAUDIOPORT_TYPE_SPEAKER, 0}, - /*.defaultResolution = */ "1080i50" - } - #endif + INT_INFO("\n\n####################################################################### \n\n"); INT_INFO("%d:%s: Dumping Video Port Connections\n", __LINE__, __func__); for (size_t i = 0; i < *(config->pKVideoPortPorts_size); i++) { From 82e1bf40d22b34777e916297762a0a6028e02902 Mon Sep 17 00:00:00 2001 From: grandhi_santoshkumar Date: Mon, 17 Nov 2025 07:25:05 +0000 Subject: [PATCH 21/39] RDKEMW-8587: consume the config variables using dlsym() in MW. Reason for change: consume the config variables using dlsym() in MW. Test Procedure: refer RDKEMW-8587 Risks: High Signed-off-by: grandhi_santoshkumar --- ds/audioOutputPortConfig.cpp | 24 ++++++++++++------------ ds/frontPanelConfig.cpp | 25 +++++++++++++++++-------- ds/include/manager.hpp | 2 +- ds/manager.cpp | 2 +- ds/videoDeviceConfig.cpp | 30 ++++++++++++++++++------------ ds/videoOutputPortConfig.cpp | 24 ++++++++++++++++++------ 6 files changed, 67 insertions(+), 40 deletions(-) diff --git a/ds/audioOutputPortConfig.cpp b/ds/audioOutputPortConfig.cpp index 38fd672e..7baecbda 100644 --- a/ds/audioOutputPortConfig.cpp +++ b/ds/audioOutputPortConfig.cpp @@ -38,8 +38,6 @@ #include "manager.hpp" -#define DEBUG 1 // Using for dumpconfig - typedef struct audioConfigs { const dsAudioTypeConfig_t *pKConfigs; @@ -164,7 +162,7 @@ void dumpconfig(audioConfigs_t *config) void AudioOutputPortConfig::load() { - int configSize, portSize; + static int configSize, portSize, invalidSize = -1; audioConfigs_t configuration = {0}; const char* searchVaribles[] = { "kAudioConfigs", @@ -198,26 +196,28 @@ void AudioOutputPortConfig::load() } INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[0]); - ret = searchConfigs((void **)&configuration.pKConfigs, searchVaribles[0]); + ret = searchConfigs(searchVaribles[0], (void **)&configuration.pKConfigs); if(ret == true) { INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[2]); - ret = searchConfigs((void **)&configuration.pKConfigSize, (char *)searchVaribles[2]); + ret = searchConfigs(searchVaribles[2], (void **)&configuration.pKConfigSize); if(ret == false) { INT_ERROR("%s is not defined\n", searchVaribles[2]); + configuration.pKConfigSize = &invalidSize; } INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[1]); - ret = searchConfigs((void **)&configuration.pKPorts, searchVaribles[1]); + ret = searchConfigs(searchVaribles[1], (void **)&configuration.pKPorts); if(ret == false) { INT_ERROR("%s is not defined\n", searchVaribles[1]); } INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[3]); - ret = searchConfigs((void **)&configuration.pKPortSize, (char *)searchVaribles[3]); + ret = searchConfigs(searchVaribles[3], (void **)&configuration.pKPortSize); if(ret == false) { INT_ERROR("%s is not defined\n", searchVaribles[3]); + configuration.pKPortSize = &invalidSize; } } else @@ -234,12 +234,11 @@ void AudioOutputPortConfig::load() /* * Check if configs are loaded properly */ - if ( configuration.pKConfigs != NULL || configuration.pKPorts != NULL || - configuration.pKConfigSize != NULL || configuration.pKPortSize != NULL) { - #if DEBUG + if ( configuration.pKConfigs != NULL && configuration.pKPorts != NULL && + configuration.pKConfigSize != NULL && (*(configuration.pKConfigSize) > 0 ) && + configuration.pKPortSize != NULL && (*(configuration.pKPortSize) > 0 )) + { dumpconfig(&configuration); - #endif - INT_INFO("%d:%s: Audio Configs loaded successfully\n", __LINE__, __func__); /* * Initialize Audio portTypes (encodings, compressions etc.) * and its port instances (db, level etc) @@ -270,6 +269,7 @@ void AudioOutputPortConfig::load() _aPorts.push_back(AudioOutputPort((port->id.type), port->id.index, i)); _aPortTypes.at(port->id.type).addPort(_aPorts.at(i)); } + INT_INFO("%d:%s: Audio Configs loaded successfully\n", __LINE__, __func__); } else { INT_ERROR("%d:%s: Audio Configs loading failed\n", __LINE__, __func__); diff --git a/ds/frontPanelConfig.cpp b/ds/frontPanelConfig.cpp index 186949ac..d56f25f9 100644 --- a/ds/frontPanelConfig.cpp +++ b/ds/frontPanelConfig.cpp @@ -406,7 +406,7 @@ void FrontPanelConfig::load() * 1. Create Supported Colors. * 2. Create Indicators. */ - int indicatorSize, indicatorColorSize, invalid_size = -1; + static int indicatorSize, indicatorColorSize, invalid_size = -1; fpdConfigs_t configuration = {0}; const char* searchVaribles[] = { @@ -420,37 +420,37 @@ void FrontPanelConfig::load() bool ret = false; INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[0]); - ret = searchConfigs((void **)&configuration.pKFPDIndicatorColors, searchVaribles[0]); + ret = searchConfigs(searchVaribles[0], (void **)&configuration.pKFPDIndicatorColors ); if(ret == true) { INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[1]); - ret = searchConfigs((void **)&configuration.pKFPDIndicatorColors_size, (char *)searchVaribles[1]); + ret = searchConfigs(searchVaribles[1], (void **)&configuration.pKFPDIndicatorColors_size); if(ret == false) { INT_ERROR("%s is not defined\n", searchVaribles[1]); configuration.pKFPDIndicatorColors_size = &invalid_size; } INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[2]); - ret = searchConfigs((void **)&configuration.pKIndicators, searchVaribles[2]); + ret = searchConfigs(searchVaribles[2], (void **)&configuration.pKIndicators); if(ret == false) { INT_ERROR("%s is not defined\n", searchVaribles[2]); } INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[3]); - ret = searchConfigs((void **)&configuration.pKIndicators_size, (char *)searchVaribles[3]); + ret = searchConfigs(searchVaribles[3], (void **)&configuration.pKIndicators_size); if(ret == false) { INT_ERROR("%s is not defined\n", searchVaribles[3]); configuration.pKIndicators_size = &invalid_size; } INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[4]); - ret = searchConfigs((void **)&configuration.pKTextDisplays, searchVaribles[4]); + ret = searchConfigs(searchVaribles[4], (void **)&configuration.pKTextDisplays); if(ret == false) { INT_ERROR("%s is not defined\n", searchVaribles[4]); } INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[5]); - ret = searchConfigs((void **)&configuration.pKTextDisplays_size, (char *)searchVaribles[5]); + ret = searchConfigs(searchVaribles[5], (void **)&configuration.pKTextDisplays_size); if(ret == false) { INT_ERROR("%s is not defined\n", searchVaribles[5]); @@ -474,6 +474,11 @@ void FrontPanelConfig::load() INT_INFO("configuration.pKIndicators =%p, *(configuration.pKIndicators_size) = %d\n", configuration.pKIndicators, *(configuration.pKIndicators_size)); INT_INFO("configuration.pKTextDisplays =%p, *(configuration.pKTextDisplays_size) = %d\n", configuration.pKTextDisplays, *(configuration.pKTextDisplays_size)); } + if (configuration.pKFPDIndicatorColors != NULL && configuration.pKFPDIndicatorColors_size != NULL && + *(configuration.pKFPDIndicatorColors_size) > 0 && + configuration.pKIndicators != NULL && configuration.pKIndicators_size != NULL && + *(configuration.pKIndicators_size) > 0) + { #if DEBUG dumpconfig(&configuration); #endif @@ -494,6 +499,8 @@ void FrontPanelConfig::load() } + if(configuration.pKTextDisplays != NULL && configuration.pKTextDisplays_size != NULL && + *(configuration.pKTextDisplays_size) > 0) { /* * Create TextDisplays @@ -512,10 +519,12 @@ void FrontPanelConfig::load() configuration.pKTextDisplays[i].colorMode)); } } + } else { + INT_ERROR("No valid front panel configuration found\n"); + } } } - /** @} */ /** @} */ diff --git a/ds/include/manager.hpp b/ds/include/manager.hpp index 089e0e49..0b9408d7 100644 --- a/ds/include/manager.hpp +++ b/ds/include/manager.hpp @@ -157,7 +157,7 @@ namespace device { // Forward declaration for searchConfigs function -bool searchConfigs(void **pConfigVar, const char *searchConfigStr); +bool searchConfigs(const char *searchConfigStr, void **pConfigVar); /** * @class Manager diff --git a/ds/manager.cpp b/ds/manager.cpp index 2fc92ad2..e6b4dcc8 100644 --- a/ds/manager.cpp +++ b/ds/manager.cpp @@ -160,7 +160,7 @@ void Manager::load() printf("%d:%s load completed\n", __LINE__, __FUNCTION__); } -bool searchConfigs(void **pConfigVar, const char *searchConfigStr) +bool searchConfigs(const char *searchConfigStr, void **pConfigVar) { INT_INFO("%d:%s: Entering function\n", __LINE__, __func__); INT_INFO("%d:%s: searchConfigStr = %s\n", __LINE__, __func__, searchConfigStr); diff --git a/ds/videoDeviceConfig.cpp b/ds/videoDeviceConfig.cpp index ca154b6e..aa931224 100644 --- a/ds/videoDeviceConfig.cpp +++ b/ds/videoDeviceConfig.cpp @@ -138,11 +138,11 @@ void VideoDeviceConfig::load() } INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[0]); - ret = searchConfigs((void **)&(videoDeviceConfig.pKVideoDeviceConfigs), searchVaribles[0]); + ret = searchConfigs(searchVaribles[0], (void **)&(videoDeviceConfig.pKVideoDeviceConfigs)); if(ret == true) { INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[1]); - ret = searchConfigs((void **)&(videoDeviceConfig.pKVideoDeviceConfigs_size), (char *)searchVaribles[1]); + ret = searchConfigs(searchVaribles[1], (void **)&(videoDeviceConfig.pKVideoDeviceConfigs_size)); if(ret == false) { INT_ERROR("%s is not defined\n", searchVaribles[1]); @@ -156,22 +156,28 @@ void VideoDeviceConfig::load() configSize = dsUTL_DIM(kConfigs); videoDeviceConfig.pKVideoDeviceConfigs_size = &configSize; } - #if DEBUG - dumpconfig(videoDeviceConfig.pKVideoDeviceConfigs, *(videoDeviceConfig.pKVideoDeviceConfigs_size)); - #endif /* * Initialize Video Devices (supported DFCs etc.) */ - for (size_t i = 0; i < *(videoDeviceConfig.pKVideoDeviceConfigs_size); i++) { - _vDevices.push_back(VideoDevice(i)); - - for (size_t j = 0; j < videoDeviceConfig.pKVideoDeviceConfigs[i].numSupportedDFCs; j++) { - _vDevices.at(i).addDFC(VideoDFC::getInstance(videoDeviceConfig.pKVideoDeviceConfigs[i].supportedDFCs[j])); + if (videoDeviceConfig.pKVideoDeviceConfigs != NULL && videoDeviceConfig.pKVideoDeviceConfigs_size != NULL && + *(videoDeviceConfig.pKVideoDeviceConfigs_size) > 0) + { + #if DEBUG + dumpconfig(videoDeviceConfig.pKVideoDeviceConfigs, *(videoDeviceConfig.pKVideoDeviceConfigs_size)); + #endif + for (size_t i = 0; i < *(videoDeviceConfig.pKVideoDeviceConfigs_size); i++) { + _vDevices.push_back(VideoDevice(i)); + + for (size_t j = 0; j < videoDeviceConfig.pKVideoDeviceConfigs[i].numSupportedDFCs; j++) { + _vDevices.at(i).addDFC(VideoDFC::getInstance(videoDeviceConfig.pKVideoDeviceConfigs[i].supportedDFCs[j])); + } } } - - + else + { + INT_ERROR("%d:%s: Congigs are NULL and config size are -1\n", __LINE__, __func__); + } } void VideoDeviceConfig::release() diff --git a/ds/videoOutputPortConfig.cpp b/ds/videoOutputPortConfig.cpp index 8e43e593..97cf9f91 100644 --- a/ds/videoOutputPortConfig.cpp +++ b/ds/videoOutputPortConfig.cpp @@ -384,35 +384,35 @@ void VideoOutputPortConfig::load() } INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[0]); - ret = searchConfigs((void **)&configuration.pKConfigs, searchVaribles[0]); + ret = searchConfigs(searchVaribles[0], (void **)&configuration.pKConfigs); if(ret == true) { INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[1]); - ret = searchConfigs((void **)&configuration.pKVideoPortConfigs_size, (char *)searchVaribles[1]); + ret = searchConfigs(searchVaribles[1], (void **)&configuration.pKVideoPortConfigs_size); if(ret == false) { INT_ERROR("%s is not defined\n", searchVaribles[1]); } INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[2]); - ret = searchConfigs((void **)&configuration.pKPorts, searchVaribles[2]); + ret = searchConfigs(searchVaribles[2], (void **)&configuration.pKPorts); if(ret == false) { INT_ERROR("%s is not defined\n", searchVaribles[2]); } INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[3]); - ret = searchConfigs((void **)&configuration.pKVideoPortPorts_size, (char *)searchVaribles[3]); + ret = searchConfigs(searchVaribles[3], (void **)&configuration.pKVideoPortPorts_size); if(ret == false) { INT_ERROR("%s is not defined\n", searchVaribles[3]); } // Resolutions - ret = searchConfigs((void **)&configuration.pKResolutionsSettings, searchVaribles[4]); + ret = searchConfigs(searchVaribles[4], (void **)&configuration.pKResolutionsSettings); if(ret == false) { INT_ERROR("%s is not defined\n", searchVaribles[4]); } INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[5]); - ret = searchConfigs((void **)&configuration.pKResolutionsSettings_size, (char *)searchVaribles[5]); + ret = searchConfigs(searchVaribles[5], (void **)&configuration.pKResolutionsSettings_size); if(ret == false) { INT_ERROR("%s is not defined\n", searchVaribles[5]); @@ -434,6 +434,12 @@ void VideoOutputPortConfig::load() INT_INFO("configuration.pKPorts =%p, *(configuration.pKPortSize) = %d\n", configuration.pKPorts, *(configuration.pKVideoPortPorts_size)); INT_INFO("configuration.pKResolutionsSettings =%p, *(configuration.pKResolutionsSettings_size) = %d\n", configuration.pKResolutionsSettings, *(configuration.pKResolutionsSettings_size)); } + + if(configuration.pKConfigs == NULL && configuration.pKVideoPortConfigs_size == NULL && + configuration.pKPorts == NULL && configuration.pKVideoPortPorts_size == NULL && + configuration.pKResolutionsSettings == NULL && configuration.pKResolutionsSettings_size == NULL) + { + #if DEBUG dumpconfig(&configuration); #endif @@ -485,7 +491,13 @@ void VideoOutputPortConfig::load() _vPortTypes.at(port->id.type).addPort(_vPorts.at(i)); } + } + else + { + cout << "Video Outport Configs or Ports or Resolutions is NULL. ..."< Date: Mon, 17 Nov 2025 10:14:29 +0000 Subject: [PATCH 22/39] RDKEMW-8587: consume the config variables using dlsym() in MW. Reason for change: consume the config variables using dlsym() in MW. Test Procedure: refer RDKEMW-8587 Risks: High Signed-off-by:gsanto722 --- ds/frontPanelConfig.cpp | 6 +-- ds/manager.cpp | 2 - ds/videoOutputPortConfig.cpp | 90 ++++++++++++++++++------------------ 3 files changed, 48 insertions(+), 50 deletions(-) diff --git a/ds/frontPanelConfig.cpp b/ds/frontPanelConfig.cpp index d56f25f9..bf83d49a 100644 --- a/ds/frontPanelConfig.cpp +++ b/ds/frontPanelConfig.cpp @@ -406,7 +406,7 @@ void FrontPanelConfig::load() * 1. Create Supported Colors. * 2. Create Indicators. */ - static int indicatorSize, indicatorColorSize, invalid_size = -1; + static int indicatorSize, indicatorColorSize, textDisplaySize, invalid_size = -1; fpdConfigs_t configuration = {0}; const char* searchVaribles[] = { @@ -467,8 +467,8 @@ void FrontPanelConfig::load() indicatorSize = dsUTL_DIM(kIndicators); configuration.pKIndicators_size = &indicatorSize; configuration.pKTextDisplays = kTextDisplays; - indicatorSize = dsUTL_DIM(kTextDisplays); - configuration.pKTextDisplays_size = &indicatorSize; + textDisplaySize = dsUTL_DIM(kTextDisplays); + configuration.pKTextDisplays_size = &textDisplaySize; INT_INFO("configuration.pKFPDIndicatorColors =%p, *(configuration.pKFPDIndicatorColors_size) = %d\n", configuration.pKFPDIndicatorColors, *(configuration.pKFPDIndicatorColors_size)); INT_INFO("configuration.pKIndicators =%p, *(configuration.pKIndicators_size) = %d\n", configuration.pKIndicators, *(configuration.pKIndicators_size)); diff --git a/ds/manager.cpp b/ds/manager.cpp index e6b4dcc8..dd9aaa58 100644 --- a/ds/manager.cpp +++ b/ds/manager.cpp @@ -165,8 +165,6 @@ bool searchConfigs(const char *searchConfigStr, void **pConfigVar) INT_INFO("%d:%s: Entering function\n", __LINE__, __func__); INT_INFO("%d:%s: searchConfigStr = %s\n", __LINE__, __func__, searchConfigStr); - static int invalidsize = -1; - pthread_mutex_lock(&dsLock); void *dllib = dlopen(RDK_DSHAL_NAME, RTLD_LAZY); diff --git a/ds/videoOutputPortConfig.cpp b/ds/videoOutputPortConfig.cpp index 97cf9f91..4e37c5ea 100644 --- a/ds/videoOutputPortConfig.cpp +++ b/ds/videoOutputPortConfig.cpp @@ -350,7 +350,7 @@ void dumpconfig(videoPortConfigs_t *config) void VideoOutputPortConfig::load() { - int configSize, portSize, resolutionSize; + static int configSize, portSize, resolutionSize, invalid_size = -1; videoPortConfigs_t configuration = {0}; const char* searchVaribles[] = { "kVideoPortConfigs", @@ -392,6 +392,7 @@ void VideoOutputPortConfig::load() if(ret == false) { INT_ERROR("%s is not defined\n", searchVaribles[1]); + configuration.pKVideoPortConfigs_size = &invalid_size; } INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[2]); ret = searchConfigs(searchVaribles[2], (void **)&configuration.pKPorts); @@ -404,6 +405,7 @@ void VideoOutputPortConfig::load() if(ret == false) { INT_ERROR("%s is not defined\n", searchVaribles[3]); + configuration.pKVideoPortPorts_size = &invalid_size; } // Resolutions ret = searchConfigs(searchVaribles[4], (void **)&configuration.pKResolutionsSettings); @@ -416,6 +418,7 @@ void VideoOutputPortConfig::load() if(ret == false) { INT_ERROR("%s is not defined\n", searchVaribles[5]); + configuration.pKResolutionsSettings_size = &invalid_size; } } else @@ -440,57 +443,54 @@ void VideoOutputPortConfig::load() configuration.pKResolutionsSettings == NULL && configuration.pKResolutionsSettings_size == NULL) { - #if DEBUG - dumpconfig(&configuration); - #endif - - - /* Initialize a set of supported resolutions - * - */ - //size_t numResolutions = dsUTL_DIM(kResolutions); - for (size_t i = 0; i < *(configuration.pKResolutionsSettings_size); i++) { - dsVideoPortResolution_t *resolution = &(configuration.pKResolutionsSettings[i]); - {std::lock_guard lock(gSupportedResolutionsMutex); - _supportedResolutions.push_back( - VideoResolution( - i, /* id */ - std::string(resolution->name), - resolution->pixelResolution, - resolution->aspectRatio, - resolution->stereoScopicMode, - resolution->frameRate, - resolution->interlaced)); + #if DEBUG + dumpconfig(&configuration); + #endif + /* Initialize a set of supported resolutions + * + */ + for (size_t i = 0; i < *(configuration.pKResolutionsSettings_size); i++) { + dsVideoPortResolution_t *resolution = &(configuration.pKResolutionsSettings[i]); + {std::lock_guard lock(gSupportedResolutionsMutex); + _supportedResolutions.push_back( + VideoResolution( + i, /* id */ + std::string(resolution->name), + resolution->pixelResolution, + resolution->aspectRatio, + resolution->stereoScopicMode, + resolution->frameRate, + resolution->interlaced)); + } } - } - /* - * Initialize Video portTypes (Only Enable POrts) - * and its port instances (curr resolution) - */ - for (size_t i = 0; i < *(configuration.pKVideoPortConfigs_size); i++) - { - const dsVideoPortTypeConfig_t *typeCfg = &(configuration.pKConfigs[i]); - VideoOutputPortType &vPortType = VideoOutputPortType::getInstance(typeCfg->typeId); - vPortType.enable(); - vPortType.setRestrictedResolution(typeCfg->restrictedResollution); - } + /* + * Initialize Video portTypes (Only Enable POrts) + * and its port instances (curr resolution) + */ + for (size_t i = 0; i < *(configuration.pKVideoPortConfigs_size); i++) + { + const dsVideoPortTypeConfig_t *typeCfg = &(configuration.pKConfigs[i]); + VideoOutputPortType &vPortType = VideoOutputPortType::getInstance(typeCfg->typeId); + vPortType.enable(); + vPortType.setRestrictedResolution(typeCfg->restrictedResollution); + } - /* - * set up ports based on kPorts[] - */ - for (size_t i = 0; i < *(configuration.pKVideoPortPorts_size); i++) { - const dsVideoPortPortConfig_t *port = &(configuration.pKPorts[i]); + /* + * set up ports based on kPorts[] + */ + for (size_t i = 0; i < *(configuration.pKVideoPortPorts_size); i++) { + const dsVideoPortPortConfig_t *port = &(configuration.pKPorts[i]); - _vPorts.push_back( - VideoOutputPort((port->id.type), port->id.index, i, - AudioOutputPortType::getInstance(configuration.pKPorts[i].connectedAOP.type).getPort(configuration.pKPorts[i].connectedAOP.index).getId(), - std::string(port->defaultResolution))); + _vPorts.push_back( + VideoOutputPort((port->id.type), port->id.index, i, + AudioOutputPortType::getInstance(configuration.pKPorts[i].connectedAOP.type).getPort(configuration.pKPorts[i].connectedAOP.index).getId(), + std::string(port->defaultResolution))); - _vPortTypes.at(port->id.type).addPort(_vPorts.at(i)); + _vPortTypes.at(port->id.type).addPort(_vPorts.at(i)); - } + } } else { From f68259bdd4306553fa77b1411f8e884de914ca64 Mon Sep 17 00:00:00 2001 From: grandhi_santoshkumar Date: Mon, 17 Nov 2025 12:52:23 +0000 Subject: [PATCH 23/39] RDKEMW-8587: consume the config variables using dlsym() in MW. Reason for change: consume the config variables using dlsym() in MW. Test Procedure: refer RDKEMW-8587 Risks: High Signed-off-by:gsanto722 --- ds/videoOutputPortConfig.cpp | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/ds/videoOutputPortConfig.cpp b/ds/videoOutputPortConfig.cpp index 4e37c5ea..8496b3a5 100644 --- a/ds/videoOutputPortConfig.cpp +++ b/ds/videoOutputPortConfig.cpp @@ -433,14 +433,14 @@ void VideoOutputPortConfig::load() configuration.pKResolutionsSettings = kResolutions; resolutionSize = dsUTL_DIM(kResolutions); configuration.pKResolutionsSettings_size = &resolutionSize; - INT_INFO("configuration.pKConfigs =%p, *(configuration.pKConfigSize) = %d\n", configuration.pKConfigs, *(configuration.pKVideoPortConfigs_size)); - INT_INFO("configuration.pKPorts =%p, *(configuration.pKPortSize) = %d\n", configuration.pKPorts, *(configuration.pKVideoPortPorts_size)); + INT_INFO("configuration.pKConfigs =%p, *(configuration.pKVideoPortConfigs_size) = %d\n", configuration.pKConfigs, *(configuration.pKVideoPortConfigs_size)); + INT_INFO("configuration.pKPorts =%p, *(configuration.pKVideoPortPorts_size) = %d\n", configuration.pKPorts, *(configuration.pKVideoPortPorts_size)); INT_INFO("configuration.pKResolutionsSettings =%p, *(configuration.pKResolutionsSettings_size) = %d\n", configuration.pKResolutionsSettings, *(configuration.pKResolutionsSettings_size)); } - if(configuration.pKConfigs == NULL && configuration.pKVideoPortConfigs_size == NULL && - configuration.pKPorts == NULL && configuration.pKVideoPortPorts_size == NULL && - configuration.pKResolutionsSettings == NULL && configuration.pKResolutionsSettings_size == NULL) + if((configuration.pKConfigs != NULL) && (configuration.pKVideoPortConfigs_size != NULL) && + (configuration.pKPorts != NULL) && (configuration.pKVideoPortPorts_size != NULL) && + (configuration.pKResolutionsSettings != NULL) && (configuration.pKResolutionsSettings_size != NULL)) { #if DEBUG @@ -491,13 +491,12 @@ void VideoOutputPortConfig::load() _vPortTypes.at(port->id.type).addPort(_vPorts.at(i)); } - } - else - { - cout << "Video Outport Configs or Ports or Resolutions is NULL. ..."< Date: Thu, 20 Nov 2025 06:39:16 +0000 Subject: [PATCH 24/39] RDKEMW-8587: consume the config variables using dlsym() in MW. Reason for change: consume the config variables using dlsym() in MW. Test Procedure: refer RDKEMW-8587 Risks: High Signed-off-by:gsanto722 --- ds/frontPanelConfig.cpp | 104 ++++++++++++++++++++++------------------ 1 file changed, 58 insertions(+), 46 deletions(-) diff --git a/ds/frontPanelConfig.cpp b/ds/frontPanelConfig.cpp index bf83d49a..c898c401 100644 --- a/ds/frontPanelConfig.cpp +++ b/ds/frontPanelConfig.cpp @@ -375,18 +375,24 @@ void dumpconfig(fpdConfigs_t *configuration) configuration->pKIndicators[i].levels, configuration->pKIndicators[i].colorMode); } - INT_INFO("Text Displays:\n"); - - for (size_t i = 0; i < *(configuration->pKTextDisplays_size); i++) { - INT_INFO(" Text Display ID: %d, Max Brightness: %d, Max Cycle Rate: %d, Levels: %d, Max Horizontal Iterations: %d, Max Vertical Iterations: %d, Supported Characters: %s, Color Mode: %d\n", - configuration->pKTextDisplays[i].id, - configuration->pKTextDisplays[i].maxBrightness, - configuration->pKTextDisplays[i].maxCycleRate, - configuration->pKTextDisplays[i].levels, - configuration->pKTextDisplays[i].maxHorizontalIterations, - configuration->pKTextDisplays[i].maxVerticalIterations, - configuration->pKTextDisplays[i].supportedCharacters, - configuration->pKTextDisplays[i].colorMode); + + if(configuration->pKTextDisplays == NULL && configuration->pKTextDisplays_size == NULL && *(configuration->pKTextDisplays_size) > 0){ + INT_INFO("Text Displays:\n"); + + for (size_t i = 0; i < *(configuration->pKTextDisplays_size); i++) { + INT_INFO(" Text Display ID: %d, Max Brightness: %d, Max Cycle Rate: %d, Levels: %d, Max Horizontal Iterations: %d, Max Vertical Iterations: %d, Supported Characters: %s, Color Mode: %d\n", + configuration->pKTextDisplays[i].id, + configuration->pKTextDisplays[i].maxBrightness, + configuration->pKTextDisplays[i].maxCycleRate, + configuration->pKTextDisplays[i].levels, + configuration->pKTextDisplays[i].maxHorizontalIterations, + configuration->pKTextDisplays[i].maxVerticalIterations, + configuration->pKTextDisplays[i].supportedCharacters, + configuration->pKTextDisplays[i].colorMode); + } + } + else { + INT_INFO(" No Text Displays configured.\n"); } INT_INFO("End of Front Panel Configuration Details.\n"); INT_INFO("\n\n===========================================================================\n\n"); @@ -414,8 +420,8 @@ void FrontPanelConfig::load() "kFPDIndicatorColors_size", "kIndicators", "kIndicators_size", - "kTextDisplays", - "kTextDisplays_size" + "kFPDTextDisplays", + "kFPDTextDisplays_size" }; bool ret = false; @@ -483,43 +489,49 @@ void FrontPanelConfig::load() dumpconfig(&configuration); #endif - { - for (size_t i = 0; i < *(configuration.pKFPDIndicatorColors_size); i++) { - _colors.push_back(FrontPanelIndicator::Color(configuration.pKFPDIndicatorColors[i].id)); - } + { + for (size_t i = 0; i < *(configuration.pKFPDIndicatorColors_size); i++) { + _colors.push_back(FrontPanelIndicator::Color(configuration.pKFPDIndicatorColors[i].id)); + } - for (size_t i = 0; i < *(configuration.pKIndicators_size); i++) { - /* All indicators support a same set of colors */ - _indicators.push_back(FrontPanelIndicator(configuration.pKIndicators[i].id, - configuration.pKIndicators[i].maxBrightness, - configuration.pKIndicators[i].maxCycleRate, - configuration.pKIndicators[i].levels, - configuration.pKIndicators[i].colorMode)); + for (size_t i = 0; i < *(configuration.pKIndicators_size); i++) { + /* All indicators support a same set of colors */ + _indicators.push_back(FrontPanelIndicator(configuration.pKIndicators[i].id, + configuration.pKIndicators[i].maxBrightness, + configuration.pKIndicators[i].maxCycleRate, + configuration.pKIndicators[i].levels, + configuration.pKIndicators[i].colorMode)); + } } - } - - if(configuration.pKTextDisplays != NULL && configuration.pKTextDisplays_size != NULL && - *(configuration.pKTextDisplays_size) > 0) - { - /* - * Create TextDisplays - * 1. Use Supported Colors created for indicators. - * 2. Create Text Displays. - */ - for (size_t i = 0; i < *(configuration.pKTextDisplays_size); i++) { - _textDisplays.push_back( - FrontPanelTextDisplay(configuration.pKTextDisplays[i].id, - configuration.pKTextDisplays[i].maxBrightness, - configuration.pKTextDisplays[i].maxCycleRate, - configuration.pKTextDisplays[i].levels, - configuration.pKTextDisplays[i].maxHorizontalIterations, - configuration.pKTextDisplays[i].maxVerticalIterations, - configuration.pKTextDisplays[i].supportedCharacters, - configuration.pKTextDisplays[i].colorMode)); + if(configuration.pKTextDisplays != NULL && configuration.pKTextDisplays_size != NULL && + *(configuration.pKTextDisplays_size) > 0) + { + /* + * Create TextDisplays + * 1. Use Supported Colors created for indicators. + * 2. Create Text Displays. + */ + INT_DEBUG("Text Displays \n"); + for (size_t i = 0; i < *(configuration.pKTextDisplays_size); i++) { + _textDisplays.push_back( + FrontPanelTextDisplay(configuration.pKTextDisplays[i].id, + configuration.pKTextDisplays[i].maxBrightness, + configuration.pKTextDisplays[i].maxCycleRate, + configuration.pKTextDisplays[i].levels, + configuration.pKTextDisplays[i].maxHorizontalIterations, + configuration.pKTextDisplays[i].maxVerticalIterations, + configuration.pKTextDisplays[i].supportedCharacters, + configuration.pKTextDisplays[i].colorMode)); + } } + else + { + INT_ERROR("No valid text display configuration found\n"); + } } - } else { + else + { INT_ERROR("No valid front panel configuration found\n"); } } From 43ad5adc9d71e429cc863b49d88e0cd5c900d34e Mon Sep 17 00:00:00 2001 From: grandhi_santoshkumar Date: Thu, 20 Nov 2025 07:10:44 +0000 Subject: [PATCH 25/39] RDKEMW-8587: consume the config variables using dlsym() in MW. Reason for change: consume the config variables using dlsym() in MW. Test Procedure: refer RDKEMW-8587 Risks: High Signed-off-by:gsanto722 --- ds/audioOutputPortConfig.cpp | 3 +-- ds/frontPanelConfig.cpp | 9 ++++----- ds/videoDeviceConfig.cpp | 3 +-- 3 files changed, 6 insertions(+), 9 deletions(-) diff --git a/ds/audioOutputPortConfig.cpp b/ds/audioOutputPortConfig.cpp index 7baecbda..113e4f41 100644 --- a/ds/audioOutputPortConfig.cpp +++ b/ds/audioOutputPortConfig.cpp @@ -235,8 +235,7 @@ void AudioOutputPortConfig::load() * Check if configs are loaded properly */ if ( configuration.pKConfigs != NULL && configuration.pKPorts != NULL && - configuration.pKConfigSize != NULL && (*(configuration.pKConfigSize) > 0 ) && - configuration.pKPortSize != NULL && (*(configuration.pKPortSize) > 0 )) + configuration.pKConfigSize != NULL && configuration.pKPortSize != NULL) { dumpconfig(&configuration); /* diff --git a/ds/frontPanelConfig.cpp b/ds/frontPanelConfig.cpp index c898c401..6637b685 100644 --- a/ds/frontPanelConfig.cpp +++ b/ds/frontPanelConfig.cpp @@ -357,7 +357,7 @@ void dumpconfig(fpdConfigs_t *configuration) INT_INFO("Start of Front Panel Configuration Details:\n"); INT_INFO("configuration->pKFPDIndicatorColors_size: %d\n", *(configuration->pKFPDIndicatorColors_size)); INT_INFO("configuration->pKIndicators_size: %d\n", *(configuration->pKIndicators_size)); - INT_INFO("configuration->pKTextDisplays_size: %d\n", *(configuration->pKTextDisplays_size)); + INT_INFO("configuration->pKTextDisplays_size: %p\n", configuration->pKTextDisplays_size); INT_INFO("Dumping Front Panel Configuration Details:\n"); INT_INFO("Indicator Colors:\n"); for (size_t i = 0; i < *(configuration->pKFPDIndicatorColors_size); i++) { @@ -376,8 +376,8 @@ void dumpconfig(fpdConfigs_t *configuration) configuration->pKIndicators[i].colorMode); } - if(configuration->pKTextDisplays == NULL && configuration->pKTextDisplays_size == NULL && *(configuration->pKTextDisplays_size) > 0){ - INT_INFO("Text Displays:\n"); + if(configuration->pKTextDisplays == NULL && configuration->pKTextDisplays_size == NULL){ + INT_INFO("Text Displays:*(configuration->pKTextDisplays_size) =%d\n", *(configuration->pKTextDisplays_size)); for (size_t i = 0; i < *(configuration->pKTextDisplays_size); i++) { INT_INFO(" Text Display ID: %d, Max Brightness: %d, Max Cycle Rate: %d, Levels: %d, Max Horizontal Iterations: %d, Max Vertical Iterations: %d, Supported Characters: %s, Color Mode: %d\n", @@ -504,8 +504,7 @@ void FrontPanelConfig::load() } } - if(configuration.pKTextDisplays != NULL && configuration.pKTextDisplays_size != NULL && - *(configuration.pKTextDisplays_size) > 0) + if(configuration.pKTextDisplays != NULL && configuration.pKTextDisplays_size != NULL) { /* * Create TextDisplays diff --git a/ds/videoDeviceConfig.cpp b/ds/videoDeviceConfig.cpp index aa931224..5f514c52 100644 --- a/ds/videoDeviceConfig.cpp +++ b/ds/videoDeviceConfig.cpp @@ -160,8 +160,7 @@ void VideoDeviceConfig::load() /* * Initialize Video Devices (supported DFCs etc.) */ - if (videoDeviceConfig.pKVideoDeviceConfigs != NULL && videoDeviceConfig.pKVideoDeviceConfigs_size != NULL && - *(videoDeviceConfig.pKVideoDeviceConfigs_size) > 0) + if (videoDeviceConfig.pKVideoDeviceConfigs != NULL && videoDeviceConfig.pKVideoDeviceConfigs_size != NULL) { #if DEBUG dumpconfig(videoDeviceConfig.pKVideoDeviceConfigs, *(videoDeviceConfig.pKVideoDeviceConfigs_size)); From de32c1b68655deb323f0c4e2c135b1d1d37e6aad Mon Sep 17 00:00:00 2001 From: grandhi_santoshkumar Date: Thu, 20 Nov 2025 07:32:50 +0000 Subject: [PATCH 26/39] RDKEMW-8587: consume the config variables using dlsym() in MW. Reason for change: consume the config variables using dlsym() in MW. Test Procedure: refer RDKEMW-8587 Risks: High Signed-off-by:gsanto722 --- ds/frontPanelConfig.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ds/frontPanelConfig.cpp b/ds/frontPanelConfig.cpp index 6637b685..54b60f2b 100644 --- a/ds/frontPanelConfig.cpp +++ b/ds/frontPanelConfig.cpp @@ -376,7 +376,7 @@ void dumpconfig(fpdConfigs_t *configuration) configuration->pKIndicators[i].colorMode); } - if(configuration->pKTextDisplays == NULL && configuration->pKTextDisplays_size == NULL){ + if(configuration->pKTextDisplays != NULL && configuration->pKTextDisplays_size != NULL){ INT_INFO("Text Displays:*(configuration->pKTextDisplays_size) =%d\n", *(configuration->pKTextDisplays_size)); for (size_t i = 0; i < *(configuration->pKTextDisplays_size); i++) { From efe2f4347b542fbcf02d764304fd198812db9d42 Mon Sep 17 00:00:00 2001 From: grandhi_santoshkumar Date: Tue, 9 Dec 2025 17:57:17 +0000 Subject: [PATCH 27/39] debug. disable dumpconfig and add logs --- ds/audioOutputPortConfig.cpp | 7 +++++-- ds/frontPanelConfig.cpp | 9 ++++++--- ds/videoDeviceConfig.cpp | 7 +++++-- ds/videoOutputPortConfig.cpp | 7 +++++-- 4 files changed, 21 insertions(+), 9 deletions(-) diff --git a/ds/audioOutputPortConfig.cpp b/ds/audioOutputPortConfig.cpp index 113e4f41..b2071401 100644 --- a/ds/audioOutputPortConfig.cpp +++ b/ds/audioOutputPortConfig.cpp @@ -163,7 +163,7 @@ void dumpconfig(audioConfigs_t *config) void AudioOutputPortConfig::load() { static int configSize, portSize, invalidSize = -1; - audioConfigs_t configuration = {0}; + static audioConfigs_t configuration = {0}; const char* searchVaribles[] = { "kAudioConfigs", "kAudioPorts", @@ -172,6 +172,7 @@ void AudioOutputPortConfig::load() }; bool ret = false; + INT_INFO("Enter function\n"); try { /* * Load Constants First. @@ -237,7 +238,8 @@ void AudioOutputPortConfig::load() if ( configuration.pKConfigs != NULL && configuration.pKPorts != NULL && configuration.pKConfigSize != NULL && configuration.pKPortSize != NULL) { - dumpconfig(&configuration); + //dumpconfig(&configuration); + INT_INFO("disable the dumpconfig()\n"); /* * Initialize Audio portTypes (encodings, compressions etc.) * and its port instances (db, level etc) @@ -277,6 +279,7 @@ void AudioOutputPortConfig::load() catch(const Exception &e) { throw e; } + INT_INFO("Exit funcation\n"); } void AudioOutputPortConfig::release() diff --git a/ds/frontPanelConfig.cpp b/ds/frontPanelConfig.cpp index 54b60f2b..9d85e537 100644 --- a/ds/frontPanelConfig.cpp +++ b/ds/frontPanelConfig.cpp @@ -413,7 +413,7 @@ void FrontPanelConfig::load() * 2. Create Indicators. */ static int indicatorSize, indicatorColorSize, textDisplaySize, invalid_size = -1; - fpdConfigs_t configuration = {0}; + static fpdConfigs_t configuration = {0}; const char* searchVaribles[] = { "kFPDIndicatorColors", @@ -424,7 +424,8 @@ void FrontPanelConfig::load() "kFPDTextDisplays_size" }; bool ret = false; - + + INT_INFO("Enter function\n"); INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[0]); ret = searchConfigs(searchVaribles[0], (void **)&configuration.pKFPDIndicatorColors ); if(ret == true) @@ -486,7 +487,8 @@ void FrontPanelConfig::load() *(configuration.pKIndicators_size) > 0) { #if DEBUG - dumpconfig(&configuration); + //dumpconfig(&configuration); + INT_INFO("disable the dumpconfig()\n"); #endif { @@ -533,6 +535,7 @@ void FrontPanelConfig::load() { INT_ERROR("No valid front panel configuration found\n"); } + INT_INFO("Exit function\n"); } } diff --git a/ds/videoDeviceConfig.cpp b/ds/videoDeviceConfig.cpp index 5f514c52..e51c3ba5 100644 --- a/ds/videoDeviceConfig.cpp +++ b/ds/videoDeviceConfig.cpp @@ -123,13 +123,14 @@ typedef struct videoDeviceConfig void VideoDeviceConfig::load() { int configSize, invalid_size = -1; - videoDeviceConfig_t videoDeviceConfig = {0}; + static videoDeviceConfig_t videoDeviceConfig = {0}; const char* searchVaribles[] = { "kVideoDeviceConfigs", "kVideoDeviceConfigs_size", }; bool ret = false; + INT_INFO("Enter function\n"); /* * Load Constants First. */ @@ -163,7 +164,8 @@ void VideoDeviceConfig::load() if (videoDeviceConfig.pKVideoDeviceConfigs != NULL && videoDeviceConfig.pKVideoDeviceConfigs_size != NULL) { #if DEBUG - dumpconfig(videoDeviceConfig.pKVideoDeviceConfigs, *(videoDeviceConfig.pKVideoDeviceConfigs_size)); + //dumpconfig(videoDeviceConfig.pKVideoDeviceConfigs, *(videoDeviceConfig.pKVideoDeviceConfigs_size)); + INT_INFO("disable the dumpconfig()\n"); #endif for (size_t i = 0; i < *(videoDeviceConfig.pKVideoDeviceConfigs_size); i++) { _vDevices.push_back(VideoDevice(i)); @@ -177,6 +179,7 @@ void VideoDeviceConfig::load() { INT_ERROR("%d:%s: Congigs are NULL and config size are -1\n", __LINE__, __func__); } + INT_INFO("Exit function\n"); } void VideoDeviceConfig::release() diff --git a/ds/videoOutputPortConfig.cpp b/ds/videoOutputPortConfig.cpp index 8496b3a5..ddb4de30 100644 --- a/ds/videoOutputPortConfig.cpp +++ b/ds/videoOutputPortConfig.cpp @@ -351,7 +351,7 @@ void dumpconfig(videoPortConfigs_t *config) void VideoOutputPortConfig::load() { static int configSize, portSize, resolutionSize, invalid_size = -1; - videoPortConfigs_t configuration = {0}; + static videoPortConfigs_t configuration = {0}; const char* searchVaribles[] = { "kVideoPortConfigs", "kVideoPortConfigs_size", @@ -362,6 +362,7 @@ void VideoOutputPortConfig::load() }; bool ret = false; + INT_INFO("Enter function\n"); try { /* * Load Constants First. @@ -444,7 +445,8 @@ void VideoOutputPortConfig::load() { #if DEBUG - dumpconfig(&configuration); + //dumpconfig(&configuration); + INT_INFO("disable the dumpconfig()\n"); #endif /* Initialize a set of supported resolutions * @@ -502,6 +504,7 @@ void VideoOutputPortConfig::load() cout << "VIdeo Outport Exception Thrown. ..."< Date: Wed, 10 Dec 2025 02:10:08 +0000 Subject: [PATCH 28/39] enable debugconfig Signed-off-by: grandhi_santoshkumar --- ds/audioOutputPortConfig.cpp | 14 ++++++++------ ds/frontPanelConfig.cpp | 4 ++-- ds/videoDeviceConfig.cpp | 4 ++-- ds/videoOutputPortConfig.cpp | 4 ++-- 4 files changed, 14 insertions(+), 12 deletions(-) diff --git a/ds/audioOutputPortConfig.cpp b/ds/audioOutputPortConfig.cpp index b2071401..4e40ad5e 100644 --- a/ds/audioOutputPortConfig.cpp +++ b/ds/audioOutputPortConfig.cpp @@ -124,8 +124,10 @@ void dumpconfig(audioConfigs_t *config) INT_INFO("%d:%s: Entering function\n", __LINE__, __func__); INT_INFO("%d:%s: pKConfigs = %p\n", __LINE__, __func__, config->pKConfigs); INT_INFO("%d:%s: pKPorts = %p\n", __LINE__, __func__, config->pKPorts); - INT_INFO("%d:%s: pKConfigSize %p = %d \n", __LINE__, __func__, config->pKConfigSize, *(config->pKConfigSize)); - INT_INFO("%d:%s: pKPortSize %p = %d \n", __LINE__, __func__, config->pKPortSize, *(config->pKPortSize)); + INT_INFO("%d:%s: pKConfigSize addr =%p \n", __LINE__, __func__, config->pKConfigSize); + INT_INFO("%d:%s: pKConfigSize value = %d \n", __LINE__, __func__, *(config->pKConfigSize)); + INT_INFO("%d:%s: pKPortSize addr = %p \n", __LINE__, __func__, config->pKPortSize); + INT_INFO("%d:%s: pKPortSize value = %d \n", __LINE__, __func__, *(config->pKPortSize)); INT_INFO("\n\n=========================================================================================================================\n\n"); if(config->pKConfigs != NULL && *(config->pKConfigSize) != -1) @@ -141,7 +143,7 @@ void dumpconfig(audioConfigs_t *config) } else { - INT_ERROR("%d:%s: kAudioConfigs is NULL and kConfig_size_local is -1\n", __LINE__, __func__); + INT_ERROR("%d:%s: kAudioConfigs is NULL and *(config->pKConfigSize) is -1\n", __LINE__, __func__); } if(config->pKPorts != NULL && *(config->pKPortSize) != -1) { @@ -153,7 +155,7 @@ void dumpconfig(audioConfigs_t *config) } else { - INT_ERROR("%d:%s: kAudioPorts is NULL and kPort_size_local is -1\n", __LINE__, __func__); + INT_ERROR("%d:%s: kAudioPorts is NULL and *(config->pKPortSize) is -1\n", __LINE__, __func__); } INT_INFO("\n\n=========================================================================================================================\n\n"); INT_INFO("%d:%s: Exit function\n", __LINE__, __func__); @@ -238,8 +240,8 @@ void AudioOutputPortConfig::load() if ( configuration.pKConfigs != NULL && configuration.pKPorts != NULL && configuration.pKConfigSize != NULL && configuration.pKPortSize != NULL) { - //dumpconfig(&configuration); - INT_INFO("disable the dumpconfig()\n"); + dumpconfig(&configuration); + //INT_INFO("disable the dumpconfig()\n"); /* * Initialize Audio portTypes (encodings, compressions etc.) * and its port instances (db, level etc) diff --git a/ds/frontPanelConfig.cpp b/ds/frontPanelConfig.cpp index 9d85e537..9edbbdc4 100644 --- a/ds/frontPanelConfig.cpp +++ b/ds/frontPanelConfig.cpp @@ -487,8 +487,8 @@ void FrontPanelConfig::load() *(configuration.pKIndicators_size) > 0) { #if DEBUG - //dumpconfig(&configuration); - INT_INFO("disable the dumpconfig()\n"); + dumpconfig(&configuration); + //INT_INFO("disable the dumpconfig()\n"); #endif { diff --git a/ds/videoDeviceConfig.cpp b/ds/videoDeviceConfig.cpp index e51c3ba5..e95c4dae 100644 --- a/ds/videoDeviceConfig.cpp +++ b/ds/videoDeviceConfig.cpp @@ -164,8 +164,8 @@ void VideoDeviceConfig::load() if (videoDeviceConfig.pKVideoDeviceConfigs != NULL && videoDeviceConfig.pKVideoDeviceConfigs_size != NULL) { #if DEBUG - //dumpconfig(videoDeviceConfig.pKVideoDeviceConfigs, *(videoDeviceConfig.pKVideoDeviceConfigs_size)); - INT_INFO("disable the dumpconfig()\n"); + dumpconfig(videoDeviceConfig.pKVideoDeviceConfigs, *(videoDeviceConfig.pKVideoDeviceConfigs_size)); + //INT_INFO("disable the dumpconfig()\n"); #endif for (size_t i = 0; i < *(videoDeviceConfig.pKVideoDeviceConfigs_size); i++) { _vDevices.push_back(VideoDevice(i)); diff --git a/ds/videoOutputPortConfig.cpp b/ds/videoOutputPortConfig.cpp index ddb4de30..ab0cd3e6 100644 --- a/ds/videoOutputPortConfig.cpp +++ b/ds/videoOutputPortConfig.cpp @@ -445,8 +445,8 @@ void VideoOutputPortConfig::load() { #if DEBUG - //dumpconfig(&configuration); - INT_INFO("disable the dumpconfig()\n"); + dumpconfig(&configuration); + //INT_INFO("disable the dumpconfig()\n"); #endif /* Initialize a set of supported resolutions * From 2b96a083d99e6545604fab94ef7fbd545b7c06d3 Mon Sep 17 00:00:00 2001 From: grandhi_santoshkumar Date: Wed, 10 Dec 2025 03:49:18 +0000 Subject: [PATCH 29/39] move the debug prints within if condtion for all config dumpconfig Signed-off-by: grandhi_santoshkumar --- ds/audioOutputPortConfig.cpp | 7 +++---- ds/frontPanelConfig.cpp | 14 +++++++++----- ds/videoOutputPortConfig.cpp | 14 +++++++------- 3 files changed, 19 insertions(+), 16 deletions(-) diff --git a/ds/audioOutputPortConfig.cpp b/ds/audioOutputPortConfig.cpp index 4e40ad5e..31bf728c 100644 --- a/ds/audioOutputPortConfig.cpp +++ b/ds/audioOutputPortConfig.cpp @@ -121,6 +121,9 @@ List AudioOutputPortConfig::getSupportedTypes() void dumpconfig(audioConfigs_t *config) { + INT_INFO("\n\n=========================================================================================================================\n\n"); + if(config->pKConfigs != NULL && *(config->pKConfigSize) != -1) + { INT_INFO("%d:%s: Entering function\n", __LINE__, __func__); INT_INFO("%d:%s: pKConfigs = %p\n", __LINE__, __func__, config->pKConfigs); INT_INFO("%d:%s: pKPorts = %p\n", __LINE__, __func__, config->pKPorts); @@ -128,10 +131,6 @@ void dumpconfig(audioConfigs_t *config) INT_INFO("%d:%s: pKConfigSize value = %d \n", __LINE__, __func__, *(config->pKConfigSize)); INT_INFO("%d:%s: pKPortSize addr = %p \n", __LINE__, __func__, config->pKPortSize); INT_INFO("%d:%s: pKPortSize value = %d \n", __LINE__, __func__, *(config->pKPortSize)); - - INT_INFO("\n\n=========================================================================================================================\n\n"); - if(config->pKConfigs != NULL && *(config->pKConfigSize) != -1) - { for (size_t i = 0; i < *(config->pKConfigSize); i++) { const dsAudioTypeConfig_t *typeCfg = &(config->pKConfigs[i]); INT_INFO("%d:%s: typeCfg->typeId = %d\n", __LINE__, __func__, typeCfg->typeId); diff --git a/ds/frontPanelConfig.cpp b/ds/frontPanelConfig.cpp index 9edbbdc4..b2eb6406 100644 --- a/ds/frontPanelConfig.cpp +++ b/ds/frontPanelConfig.cpp @@ -355,11 +355,12 @@ void dumpconfig(fpdConfigs_t *configuration) // Dump the configuration details INT_INFO("\n\n===========================================================================\n\n"); INT_INFO("Start of Front Panel Configuration Details:\n"); - INT_INFO("configuration->pKFPDIndicatorColors_size: %d\n", *(configuration->pKFPDIndicatorColors_size)); - INT_INFO("configuration->pKIndicators_size: %d\n", *(configuration->pKIndicators_size)); - INT_INFO("configuration->pKTextDisplays_size: %p\n", configuration->pKTextDisplays_size); - INT_INFO("Dumping Front Panel Configuration Details:\n"); - INT_INFO("Indicator Colors:\n"); + if((configuration->pKFPDIndicatorColors !=NULL) && *(configuration->pKFPDIndicatorColors_size) != -1 && (configuration->pKIndicators != NULL) && *(configuration->pKIndicators_size) != -1) + { + INT_INFO("configuration->pKFPDIndicatorColors_size addr: %p\n", (configuration->pKFPDIndicatorColors_size)); + INT_INFO("configuration->pKFPDIndicatorColors_size data: %d\n", *(configuration->pKFPDIndicatorColors_size)); + INT_INFO("configuration->pKIndicators_size addr: %p\n", (configuration->pKIndicators_size)); + INT_INFO("configuration->pKIndicators_size data: %d\n", *(configuration->pKIndicators_size)); for (size_t i = 0; i < *(configuration->pKFPDIndicatorColors_size); i++) { INT_INFO(" Color ID: %d, color: %d\n", configuration->pKFPDIndicatorColors[i].id, @@ -375,10 +376,13 @@ void dumpconfig(fpdConfigs_t *configuration) configuration->pKIndicators[i].levels, configuration->pKIndicators[i].colorMode); } + } if(configuration->pKTextDisplays != NULL && configuration->pKTextDisplays_size != NULL){ + INT_INFO("configuration->pKTextDisplays_size: %p\n", configuration->pKTextDisplays_size); INT_INFO("Text Displays:*(configuration->pKTextDisplays_size) =%d\n", *(configuration->pKTextDisplays_size)); + for (size_t i = 0; i < *(configuration->pKTextDisplays_size); i++) { INT_INFO(" Text Display ID: %d, Max Brightness: %d, Max Cycle Rate: %d, Levels: %d, Max Horizontal Iterations: %d, Max Vertical Iterations: %d, Supported Characters: %s, Color Mode: %d\n", configuration->pKTextDisplays[i].id, diff --git a/ds/videoOutputPortConfig.cpp b/ds/videoOutputPortConfig.cpp index ab0cd3e6..fcbd45ae 100644 --- a/ds/videoOutputPortConfig.cpp +++ b/ds/videoOutputPortConfig.cpp @@ -280,13 +280,6 @@ List VideoOutputPortConfig::getSupportedResolutions(bool isIgn void dumpconfig(videoPortConfigs_t *config) { INT_INFO("%d:%s: Entering function\n", __LINE__, __func__); - INT_INFO("%d:%s: pKConfigs = %p\n", __LINE__, __func__, config->pKConfigs); - INT_INFO("%d:%s: pKConfigSize pointer %p = %d\n", __LINE__, __func__, config->pKVideoPortConfigs_size, *(config->pKVideoPortConfigs_size)); - INT_INFO("%d:%s: pKPorts = %p\n", __LINE__, __func__, config->pKPorts); - INT_INFO("%d:%s: pKPortSize pointer %p = %d\n", __LINE__, __func__, config->pKVideoPortPorts_size, *(config->pKVideoPortPorts_size)); - INT_INFO("%d:%s: pKResolutionsSettings = %p\n", __LINE__, __func__, config->pKResolutionsSettings); - INT_INFO("%d:%s: pKResolutionsSettingsSize pointer %p = %d\n", __LINE__, __func__, config->pKResolutionsSettings_size, *(config->pKResolutionsSettings_size)); - INT_INFO("\n\n=========================================================================================================================\n\n"); if(config->pKConfigs != NULL && *(config->pKVideoPortConfigs_size) != -1 && config->pKPorts != NULL && *(config->pKVideoPortPorts_size) != -1 && @@ -294,6 +287,13 @@ void dumpconfig(videoPortConfigs_t *config) { INT_INFO("\n\n####################################################################### \n\n"); INT_INFO("%d:%s: Dumping Resolutions Settings\n", __LINE__, __func__); + INT_INFO("%d:%s: pKConfigs = %p\n", __LINE__, __func__, config->pKConfigs); + INT_INFO("%d:%s: pKConfigSize pointer %p = %d\n", __LINE__, __func__, config->pKVideoPortConfigs_size, *(config->pKVideoPortConfigs_size)); + INT_INFO("%d:%s: pKPorts = %p\n", __LINE__, __func__, config->pKPorts); + INT_INFO("%d:%s: pKPortSize pointer %p = %d\n", __LINE__, __func__, config->pKVideoPortPorts_size, *(config->pKVideoPortPorts_size)); + INT_INFO("%d:%s: pKResolutionsSettings = %p\n", __LINE__, __func__, config->pKResolutionsSettings); + INT_INFO("%d:%s: pKResolutionsSettingsSize pointer %p = %d\n", __LINE__, __func__, config->pKResolutionsSettings_size, *(config->pKResolutionsSettings_size)); + for (size_t i = 0; i < *(config->pKResolutionsSettings_size); i++) { dsVideoPortResolution_t *resolution = &(config->pKResolutionsSettings[i]); INT_INFO("%d:%s: resolution->name = %s\n", __LINE__, __func__, resolution->name); From 703701efabfdd91801013bcdaebd0a8805521dcd Mon Sep 17 00:00:00 2001 From: grandhi_santoshkumar Date: Wed, 10 Dec 2025 07:07:20 +0000 Subject: [PATCH 30/39] added few more logs, lock_guard in searchconfig Signed-off-by: grandhi_santoshkumar --- ds/audioOutputPortConfig.cpp | 5 +++-- ds/manager.cpp | 13 +++++++++---- ds/videoDeviceConfig.cpp | 4 ++-- 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/ds/audioOutputPortConfig.cpp b/ds/audioOutputPortConfig.cpp index 31bf728c..f8003e83 100644 --- a/ds/audioOutputPortConfig.cpp +++ b/ds/audioOutputPortConfig.cpp @@ -129,8 +129,7 @@ void dumpconfig(audioConfigs_t *config) INT_INFO("%d:%s: pKPorts = %p\n", __LINE__, __func__, config->pKPorts); INT_INFO("%d:%s: pKConfigSize addr =%p \n", __LINE__, __func__, config->pKConfigSize); INT_INFO("%d:%s: pKConfigSize value = %d \n", __LINE__, __func__, *(config->pKConfigSize)); - INT_INFO("%d:%s: pKPortSize addr = %p \n", __LINE__, __func__, config->pKPortSize); - INT_INFO("%d:%s: pKPortSize value = %d \n", __LINE__, __func__, *(config->pKPortSize)); + for (size_t i = 0; i < *(config->pKConfigSize); i++) { const dsAudioTypeConfig_t *typeCfg = &(config->pKConfigs[i]); INT_INFO("%d:%s: typeCfg->typeId = %d\n", __LINE__, __func__, typeCfg->typeId); @@ -146,6 +145,8 @@ void dumpconfig(audioConfigs_t *config) } if(config->pKPorts != NULL && *(config->pKPortSize) != -1) { + INT_INFO("%d:%s: pKPortSize addr = %p \n", __LINE__, __func__, config->pKPortSize); + INT_INFO("%d:%s: pKPortSize value = %d \n", __LINE__, __func__, *(config->pKPortSize)); for (size_t i = 0; i < *(config->pKPortSize); i++) { const dsAudioPortConfig_t *port = &(config->pKPorts[i]); INT_INFO("%d:%s: port->id.type = %d\n", __LINE__, __func__, port->id.type); diff --git a/ds/manager.cpp b/ds/manager.cpp index dd9aaa58..fda317e1 100644 --- a/ds/manager.cpp +++ b/ds/manager.cpp @@ -68,6 +68,7 @@ namespace device { int Manager::IsInitialized = 0; //!< Indicates the application has initialized with devicettings modules. static std::mutex gManagerInitMutex; +static std::mutex gSearchMutex; Manager::Manager() { // TODO Auto-generated constructor stub @@ -164,9 +165,12 @@ bool searchConfigs(const char *searchConfigStr, void **pConfigVar) { INT_INFO("%d:%s: Entering function\n", __LINE__, __func__); INT_INFO("%d:%s: searchConfigStr = %s\n", __LINE__, __func__, searchConfigStr); + INT_INFO("%d:%s: RDK_DSHAL_NAME = %s\n", __LINE__, __func__, RDK_DSHAL_NAME); - pthread_mutex_lock(&dsLock); - + //pthread_mutex_lock(&dsLock); + std::lock_guard lock(gSearchMutex); + INT_INFO("%d:%s: using lock_guard() instead pthread_mutex_lock \n", __LINE__, __func__); + dlerror(); // clear old error void *dllib = dlopen(RDK_DSHAL_NAME, RTLD_LAZY); if (dllib) { *pConfigVar = (void *) dlsym(dllib, searchConfigStr); @@ -180,9 +184,10 @@ bool searchConfigs(const char *searchConfigStr, void **pConfigVar) dlclose(dllib); } else { - INT_ERROR("%d:%s: Open %s failed\n", __LINE__, __func__, RDK_DSHAL_NAME); + const char* err = dlerror(); + INT_ERROR("%d:%s: Open %s failed with error err= %s\n", __LINE__, __func__, RDK_DSHAL_NAME, err ? err: "unknown"); } - pthread_mutex_unlock(&dsLock); + //pthread_mutex_unlock(&dsLock); INT_INFO("%d:%s: Exit function\n", __LINE__, __func__); return (*pConfigVar != NULL); } diff --git a/ds/videoDeviceConfig.cpp b/ds/videoDeviceConfig.cpp index e95c4dae..bdc74453 100644 --- a/ds/videoDeviceConfig.cpp +++ b/ds/videoDeviceConfig.cpp @@ -92,12 +92,12 @@ VideoDFC & VideoDeviceConfig::getDefaultDFC() void dumpconfig(dsVideoConfig_t *pKVideoDeviceConfigs, int videoDeviceConfigs_size) { INT_INFO("%d:%s: Entering function\n", __LINE__, __func__); - INT_INFO("%d:%s: pKVideoDeviceConfigs = %p\n", __LINE__, __func__, pKVideoDeviceConfigs); - INT_INFO("%d:%s: videoDeviceConfigs_size = %d\n", __LINE__, __func__, videoDeviceConfigs_size); INT_INFO("\n\n=========================================================================================================================\n\n"); if(pKVideoDeviceConfigs != NULL && videoDeviceConfigs_size != -1) { + INT_INFO("%d:%s: pKVideoDeviceConfigs = %p\n", __LINE__, __func__, pKVideoDeviceConfigs); + INT_INFO("%d:%s: videoDeviceConfigs_size = %d\n", __LINE__, __func__, videoDeviceConfigs_size); for (int i = 0; i < videoDeviceConfigs_size; i++) { INT_INFO("pKVideoDeviceConfigs[%d].numSupportedDFCs = %lu\n ", i, pKVideoDeviceConfigs[i].numSupportedDFCs); for (int j = 0; j < pKVideoDeviceConfigs[i].numSupportedDFCs; j++) { From 0ba55bf9d9dced3f85b35ae3ffe5a69e3cb8e6e1 Mon Sep 17 00:00:00 2001 From: grandhi_santoshkumar Date: Wed, 10 Dec 2025 11:42:26 +0000 Subject: [PATCH 31/39] add delay while every load --- ds/include/manager.hpp | 4 +++ ds/manager.cpp | 71 ++++++++++++++++++++++++++++++++++++++++-- sample/dsMgr-test.c | 31 ++++++++++++++++++ 3 files changed, 104 insertions(+), 2 deletions(-) create mode 100644 sample/dsMgr-test.c diff --git a/ds/include/manager.hpp b/ds/include/manager.hpp index 0b9408d7..fab1e96c 100644 --- a/ds/include/manager.hpp +++ b/ds/include/manager.hpp @@ -149,6 +149,9 @@ #ifndef _DS_MANAGER_HPP_ #define _DS_MANAGER_HPP_ +#include + +using namespace std; /** * @file manager.hpp @@ -158,6 +161,7 @@ namespace device { // Forward declaration for searchConfigs function bool searchConfigs(const char *searchConfigStr, void **pConfigVar); +std::string parse_opt_flag( std::string file_name , bool integer_check= false , bool debugStats = true); /** * @class Manager diff --git a/ds/manager.cpp b/ds/manager.cpp index fda317e1..81ac241e 100644 --- a/ds/manager.cpp +++ b/ds/manager.cpp @@ -44,10 +44,11 @@ #include #include #include +#include #include "dsHALConfig.h" -static pthread_mutex_t dsLock = PTHREAD_MUTEX_INITIALIZER; +//static pthread_mutex_t dsLock = PTHREAD_MUTEX_INITIALIZER; /** @@ -86,6 +87,62 @@ Manager::~Manager() { }\ } +std::string parse_opt_flag( std::string file_name , bool integer_check , bool debugStats ) +{ + std::string return_buffer = ""; + std::ifstream parse_opt_flag_file( file_name.c_str()); + + if (!parse_opt_flag_file) + { + if ( debugStats ){ + INT_INFO("Failed to open [%s] file",file_name.c_str()); + } + } + else + { + std::string line = ""; + if (std::getline(parse_opt_flag_file, line)) + { + if ( debugStats ){ + INT_INFO("Content in [%s] is [%s]",file_name.c_str(),line.c_str()); + } + } + else + { + if ( debugStats ){ + INT_INFO("No Content in [%s]",file_name.c_str()); + } + } + parse_opt_flag_file.close(); + + return_buffer = line; + + if (integer_check) + { + if (line.empty()) + { + integer_check = false; + } + else + { + for (char c : line) { + if (!isdigit(c)) + { + integer_check = false; + break; + } + } + } + + if ( false == integer_check ) + { + return_buffer = ""; + } + } + } + return return_buffer; +} + /** * @addtogroup dssettingsmanagerapi * @{ @@ -113,6 +170,8 @@ Manager::~Manager() { void Manager::Initialize() { {std::lock_guard lock(gManagerInitMutex); + + int delay = 1; printf("Entering %s count %d with thread id %lu\n",__FUNCTION__,IsInitialized,pthread_self()); try { @@ -138,9 +197,17 @@ void Manager::Initialize() CHECK_RET_VAL(err); err = dsVideoDeviceInit(); CHECK_RET_VAL(err); + std::string delaystr = parse_opt_flag("/opt/delay", true, true); + if (!delaystr.empty()) + { + INT_INFO("dealy: [%s]", delaystr.c_str()); + delay = std::stoi(delaystr); + } AudioOutputPortConfig::getInstance().load(); + sleep(delay); VideoOutputPortConfig::getInstance().load(); - VideoDeviceConfig::getInstance().load(); + sleep(delay); + VideoDeviceConfig::getInstance().load(); } IsInitialized++; } diff --git a/sample/dsMgr-test.c b/sample/dsMgr-test.c new file mode 100644 index 00000000..467a75ec --- /dev/null +++ b/sample/dsMgr-test.c @@ -0,0 +1,31 @@ + +#include +#include +#include +#include +#include "exception.hpp" +#include "host.hpp" +#include "manager.hpp" + + +int main(int argc, char *argv[]) +{ + printf("%d:%s: enter\n", __LINE__, __func__); + try { + device::Manager::Initialize(); + } catch (const device::Exception& e) { + printf("Exception caught %s", e.what()); + } catch (const std::exception& e) { + printf("Exception caught %s", e.what()); + } catch (...) { + printf("Exception caught unknown"); + } + printf("%d:%s: Exit\n", __LINE__, __func__); + return 0; +} + + + + +/** @} */ +/** @} */ From b69cb639619d9471cd4e706cb8ca430a99c154cb Mon Sep 17 00:00:00 2001 From: yuvaramachandran_gurusamy Date: Thu, 11 Dec 2025 08:14:20 +0000 Subject: [PATCH 32/39] RDKEMW-8587: Fix dl symbol crash issue Signed-off-by: yuvaramachandran_gurusamy --- ds/audioOutputPortConfig.cpp | 65 +++++---- ds/frontPanelConfig.cpp | 249 +++++++++++++++++--------------- ds/include/frontPanelConfig.hpp | 3 +- ds/include/manager.hpp | 3 +- ds/manager.cpp | 155 +++++++------------- ds/videoOutputPortConfig.cpp | 93 ++++++------ ds/videoOutputPortConfig.hpp | 2 +- 7 files changed, 277 insertions(+), 293 deletions(-) diff --git a/ds/audioOutputPortConfig.cpp b/ds/audioOutputPortConfig.cpp index f8003e83..238e9937 100644 --- a/ds/audioOutputPortConfig.cpp +++ b/ds/audioOutputPortConfig.cpp @@ -162,7 +162,7 @@ void dumpconfig(audioConfigs_t *config) } -void AudioOutputPortConfig::load() +void AudioOutputPortConfig::load(void* pDLHandle) { static int configSize, portSize, invalidSize = -1; static audioConfigs_t configuration = {0}; @@ -172,7 +172,7 @@ void AudioOutputPortConfig::load() "kAudioConfigs_size", "kAudioPorts_size" }; - bool ret = false; + bool isDynamicConfigLoad = false; INT_INFO("Enter function\n"); try { @@ -198,34 +198,41 @@ void AudioOutputPortConfig::load() } - INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[0]); - ret = searchConfigs(searchVaribles[0], (void **)&configuration.pKConfigs); - if(ret == true) + if ( nullptr != pDLHandle ) { + bool ret = false; + + INT_INFO("%d:%s: Using dynamic library handle for config loading\n", __LINE__, __func__); + INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[0]); + ret = searchConfigs(pDLHandle, searchVaribles[0], (void **)&configuration.pKConfigs); + if(ret == true) + { + // Considering Dynamic config loading is enabled since 1st symbol got + isDynamicConfigLoad = true; + INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[2]); + ret = searchConfigs(pDLHandle, searchVaribles[2], (void **)&configuration.pKConfigSize); + if(ret == false) + { + INT_ERROR("%s is not defined\n", searchVaribles[2]); + configuration.pKConfigSize = &invalidSize; + } + INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[1]); + ret = searchConfigs(pDLHandle, searchVaribles[1], (void **)&configuration.pKPorts); + if(ret == false) + { + INT_ERROR("%s is not defined\n", searchVaribles[1]); + } + INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[3]); + ret = searchConfigs(pDLHandle, searchVaribles[3], (void **)&configuration.pKPortSize); + if(ret == false) + { + INT_ERROR("%s is not defined\n", searchVaribles[3]); + configuration.pKPortSize = &invalidSize; + } + } + } + if ( false == isDynamicConfigLoad) { - INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[2]); - ret = searchConfigs(searchVaribles[2], (void **)&configuration.pKConfigSize); - if(ret == false) - { - INT_ERROR("%s is not defined\n", searchVaribles[2]); - configuration.pKConfigSize = &invalidSize; - } - INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[1]); - ret = searchConfigs(searchVaribles[1], (void **)&configuration.pKPorts); - if(ret == false) - { - INT_ERROR("%s is not defined\n", searchVaribles[1]); - } - INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[3]); - ret = searchConfigs(searchVaribles[3], (void **)&configuration.pKPortSize); - if(ret == false) - { - INT_ERROR("%s is not defined\n", searchVaribles[3]); - configuration.pKPortSize = &invalidSize; - } - } - else - { - INT_ERROR("Read Old Configs\n"); + INT_INFO("%d:%s: Using OLD config loading\n", __LINE__, __func__); configuration.pKConfigs = kConfigs; configSize = dsUTL_DIM(kConfigs); configuration.pKConfigSize = &configSize; diff --git a/ds/frontPanelConfig.cpp b/ds/frontPanelConfig.cpp index b2eb6406..28bf9c42 100644 --- a/ds/frontPanelConfig.cpp +++ b/ds/frontPanelConfig.cpp @@ -69,6 +69,7 @@ namespace device { FrontPanelConfig::FrontPanelConfig() { m_isFPInitialized = false; + m_isFPConfigLoaded = false; } @@ -82,6 +83,7 @@ FrontPanelConfig::~FrontPanelConfig() { //dsFPTerm(); m_isFPInitialized = false; + m_isFPConfigLoaded = false; } @@ -105,7 +107,6 @@ FrontPanelConfig & FrontPanelConfig::getInstance() errorCode = dsFPInit(); if (dsERR_NONE == errorCode) { - _singleton.load(); _singleton.m_isFPInitialized = true; INT_INFO("dsFPInit success\n"); } @@ -409,7 +410,7 @@ void dumpconfig(fpdConfigs_t *configuration) * * @return None */ -void FrontPanelConfig::load() +void FrontPanelConfig::load(void* pDLHandle) { /* * Create Indicators @@ -418,128 +419,144 @@ void FrontPanelConfig::load() */ static int indicatorSize, indicatorColorSize, textDisplaySize, invalid_size = -1; static fpdConfigs_t configuration = {0}; + bool isDynamicConfigLoad = false; + INT_INFO("Enter function\n"); + if (( false == m_isFPInitialized) || (true == m_isFPConfigLoaded)) { + INT_ERROR("%d:%s: '%s'\n", __LINE__, __func__, (!m_isFPInitialized) ? "Front Panel not initialized" : "Front Panel Config already loaded"); + return; + } - const char* searchVaribles[] = { + if ( false == m_isFPConfigLoaded) { + const char* searchVaribles[] = { "kFPDIndicatorColors", "kFPDIndicatorColors_size", "kIndicators", "kIndicators_size", - "kFPDTextDisplays", - "kFPDTextDisplays_size" + "kFPDTextDisplays", + "kFPDTextDisplays_size" }; - bool ret = false; - - INT_INFO("Enter function\n"); - INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[0]); - ret = searchConfigs(searchVaribles[0], (void **)&configuration.pKFPDIndicatorColors ); - if(ret == true) - { - INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[1]); - ret = searchConfigs(searchVaribles[1], (void **)&configuration.pKFPDIndicatorColors_size); - if(ret == false) - { - INT_ERROR("%s is not defined\n", searchVaribles[1]); - configuration.pKFPDIndicatorColors_size = &invalid_size; - } - INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[2]); - ret = searchConfigs(searchVaribles[2], (void **)&configuration.pKIndicators); - if(ret == false) - { - INT_ERROR("%s is not defined\n", searchVaribles[2]); - } - INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[3]); - ret = searchConfigs(searchVaribles[3], (void **)&configuration.pKIndicators_size); - if(ret == false) - { - INT_ERROR("%s is not defined\n", searchVaribles[3]); - configuration.pKIndicators_size = &invalid_size; - } - INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[4]); - ret = searchConfigs(searchVaribles[4], (void **)&configuration.pKTextDisplays); - if(ret == false) - { - INT_ERROR("%s is not defined\n", searchVaribles[4]); - } - INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[5]); - ret = searchConfigs(searchVaribles[5], (void **)&configuration.pKTextDisplays_size); - if(ret == false) - { - INT_ERROR("%s is not defined\n", searchVaribles[5]); - configuration.pKTextDisplays_size = &invalid_size; - } - } - else - { - INT_ERROR("Read Old Configs\n"); - configuration.pKFPDIndicatorColors = kIndicatorColors; - indicatorColorSize = dsUTL_DIM(kIndicatorColors); - configuration.pKFPDIndicatorColors_size = &indicatorColorSize; - configuration.pKIndicators = kIndicators; - indicatorSize = dsUTL_DIM(kIndicators); - configuration.pKIndicators_size = &indicatorSize; - configuration.pKTextDisplays = kTextDisplays; - textDisplaySize = dsUTL_DIM(kTextDisplays); - configuration.pKTextDisplays_size = &textDisplaySize; - - INT_INFO("configuration.pKFPDIndicatorColors =%p, *(configuration.pKFPDIndicatorColors_size) = %d\n", configuration.pKFPDIndicatorColors, *(configuration.pKFPDIndicatorColors_size)); - INT_INFO("configuration.pKIndicators =%p, *(configuration.pKIndicators_size) = %d\n", configuration.pKIndicators, *(configuration.pKIndicators_size)); - INT_INFO("configuration.pKTextDisplays =%p, *(configuration.pKTextDisplays_size) = %d\n", configuration.pKTextDisplays, *(configuration.pKTextDisplays_size)); - } - if (configuration.pKFPDIndicatorColors != NULL && configuration.pKFPDIndicatorColors_size != NULL && - *(configuration.pKFPDIndicatorColors_size) > 0 && - configuration.pKIndicators != NULL && configuration.pKIndicators_size != NULL && - *(configuration.pKIndicators_size) > 0) - { - #if DEBUG - dumpconfig(&configuration); - //INT_INFO("disable the dumpconfig()\n"); - #endif - - { - for (size_t i = 0; i < *(configuration.pKFPDIndicatorColors_size); i++) { - _colors.push_back(FrontPanelIndicator::Color(configuration.pKFPDIndicatorColors[i].id)); - } - - for (size_t i = 0; i < *(configuration.pKIndicators_size); i++) { - /* All indicators support a same set of colors */ - _indicators.push_back(FrontPanelIndicator(configuration.pKIndicators[i].id, - configuration.pKIndicators[i].maxBrightness, - configuration.pKIndicators[i].maxCycleRate, - configuration.pKIndicators[i].levels, - configuration.pKIndicators[i].colorMode)); - } - } - if(configuration.pKTextDisplays != NULL && configuration.pKTextDisplays_size != NULL) - { - /* - * Create TextDisplays - * 1. Use Supported Colors created for indicators. - * 2. Create Text Displays. - */ - INT_DEBUG("Text Displays \n"); - for (size_t i = 0; i < *(configuration.pKTextDisplays_size); i++) { - _textDisplays.push_back( - FrontPanelTextDisplay(configuration.pKTextDisplays[i].id, - configuration.pKTextDisplays[i].maxBrightness, - configuration.pKTextDisplays[i].maxCycleRate, - configuration.pKTextDisplays[i].levels, - configuration.pKTextDisplays[i].maxHorizontalIterations, - configuration.pKTextDisplays[i].maxVerticalIterations, - configuration.pKTextDisplays[i].supportedCharacters, - configuration.pKTextDisplays[i].colorMode)); - } - } - else - { - INT_ERROR("No valid text display configuration found\n"); - } - } - else - { - INT_ERROR("No valid front panel configuration found\n"); - } + if (pDLHandle) + { + bool ret = false; + INT_INFO("%d:%s: Using dynamic library handle for config loading\n", __LINE__, __func__); + INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[0]); + ret = searchConfigs(pDLHandle, searchVaribles[0], (void **)&configuration.pKFPDIndicatorColors ); + if(ret == true) + { + // Considering Dynamic config loading is enabled since 1st symbol got + isDynamicConfigLoad = true; + INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[1]); + ret = searchConfigs(pDLHandle, searchVaribles[1], (void **)&configuration.pKFPDIndicatorColors_size); + if(ret == false) + { + INT_ERROR("%s is not defined\n", searchVaribles[1]); + configuration.pKFPDIndicatorColors_size = &invalid_size; + } + INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[2]); + ret = searchConfigs(pDLHandle, searchVaribles[2], (void **)&configuration.pKIndicators); + if(ret == false) + { + INT_ERROR("%s is not defined\n", searchVaribles[2]); + } + INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[3]); + ret = searchConfigs(pDLHandle, searchVaribles[3], (void **)&configuration.pKIndicators_size); + if(ret == false) + { + INT_ERROR("%s is not defined\n", searchVaribles[3]); + configuration.pKIndicators_size = &invalid_size; + } + INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[4]); + ret = searchConfigs(pDLHandle, searchVaribles[4], (void **)&configuration.pKTextDisplays); + if(ret == false) + { + INT_ERROR("%s is not defined\n", searchVaribles[4]); + } + INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[5]); + ret = searchConfigs(pDLHandle, searchVaribles[5], (void **)&configuration.pKTextDisplays_size); + if(ret == false) + { + INT_ERROR("%s is not defined\n", searchVaribles[5]); + configuration.pKTextDisplays_size = &invalid_size; + } + } + } + + if ( false == isDynamicConfigLoad) + { + INT_INFO("%d:%s: Using OLD config loading\n", __LINE__, __func__); + configuration.pKFPDIndicatorColors = kIndicatorColors; + indicatorColorSize = dsUTL_DIM(kIndicatorColors); + configuration.pKFPDIndicatorColors_size = &indicatorColorSize; + configuration.pKIndicators = kIndicators; + indicatorSize = dsUTL_DIM(kIndicators); + configuration.pKIndicators_size = &indicatorSize; + configuration.pKTextDisplays = kTextDisplays; + textDisplaySize = dsUTL_DIM(kTextDisplays); + configuration.pKTextDisplays_size = &textDisplaySize; + + INT_INFO("configuration.pKFPDIndicatorColors =%p, *(configuration.pKFPDIndicatorColors_size) = %d\n", configuration.pKFPDIndicatorColors, *(configuration.pKFPDIndicatorColors_size)); + INT_INFO("configuration.pKIndicators =%p, *(configuration.pKIndicators_size) = %d\n", configuration.pKIndicators, *(configuration.pKIndicators_size)); + INT_INFO("configuration.pKTextDisplays =%p, *(configuration.pKTextDisplays_size) = %d\n", configuration.pKTextDisplays, *(configuration.pKTextDisplays_size)); + } + + if (configuration.pKFPDIndicatorColors != NULL && configuration.pKFPDIndicatorColors_size != NULL && + *(configuration.pKFPDIndicatorColors_size) > 0 && + configuration.pKIndicators != NULL && configuration.pKIndicators_size != NULL && + *(configuration.pKIndicators_size) > 0) + { + #if DEBUG + dumpconfig(&configuration); + //INT_INFO("disable the dumpconfig()\n"); + #endif + + { + for (size_t i = 0; i < *(configuration.pKFPDIndicatorColors_size); i++) { + _colors.push_back(FrontPanelIndicator::Color(configuration.pKFPDIndicatorColors[i].id)); + } + + for (size_t i = 0; i < *(configuration.pKIndicators_size); i++) { + /* All indicators support a same set of colors */ + _indicators.push_back(FrontPanelIndicator(configuration.pKIndicators[i].id, + configuration.pKIndicators[i].maxBrightness, + configuration.pKIndicators[i].maxCycleRate, + configuration.pKIndicators[i].levels, + configuration.pKIndicators[i].colorMode)); + } + } + + if(configuration.pKTextDisplays != NULL && configuration.pKTextDisplays_size != NULL) + { + /* + * Create TextDisplays + * 1. Use Supported Colors created for indicators. + * 2. Create Text Displays. + */ + INT_DEBUG("Text Displays \n"); + for (size_t i = 0; i < *(configuration.pKTextDisplays_size); i++) { + _textDisplays.push_back( + FrontPanelTextDisplay(configuration.pKTextDisplays[i].id, + configuration.pKTextDisplays[i].maxBrightness, + configuration.pKTextDisplays[i].maxCycleRate, + configuration.pKTextDisplays[i].levels, + configuration.pKTextDisplays[i].maxHorizontalIterations, + configuration.pKTextDisplays[i].maxVerticalIterations, + configuration.pKTextDisplays[i].supportedCharacters, + configuration.pKTextDisplays[i].colorMode)); + } + } + else + { + INT_ERROR("No valid text display configuration found\n"); + } + } + else + { + INT_ERROR("No valid front panel configuration found\n"); + } + m_isFPConfigLoaded = true; INT_INFO("Exit function\n"); + return; } } diff --git a/ds/include/frontPanelConfig.hpp b/ds/include/frontPanelConfig.hpp index 77c243ba..b22a0fa1 100644 --- a/ds/include/frontPanelConfig.hpp +++ b/ds/include/frontPanelConfig.hpp @@ -59,11 +59,12 @@ class FrontPanelConfig { std::vector _textDisplays; //!< Container to hold all the FrontPanelTextDisplay instances. std::vector _colors; //!< Container to hold all the Color instances. bool m_isFPInitialized; + bool m_isFPConfigLoaded; FrontPanelConfig(); virtual ~FrontPanelConfig(); - void load(); + void load(void* pDLHandle); public: static FrontPanelConfig & getInstance(); diff --git a/ds/include/manager.hpp b/ds/include/manager.hpp index fab1e96c..e65ff68f 100644 --- a/ds/include/manager.hpp +++ b/ds/include/manager.hpp @@ -160,8 +160,7 @@ using namespace std; namespace device { // Forward declaration for searchConfigs function -bool searchConfigs(const char *searchConfigStr, void **pConfigVar); -std::string parse_opt_flag( std::string file_name , bool integer_check= false , bool debugStats = true); +bool searchConfigs(void* pDLHandle, const char *searchConfigStr, void **pConfigVar); /** * @class Manager diff --git a/ds/manager.cpp b/ds/manager.cpp index 81ac241e..9ce77a01 100644 --- a/ds/manager.cpp +++ b/ds/manager.cpp @@ -69,7 +69,8 @@ namespace device { int Manager::IsInitialized = 0; //!< Indicates the application has initialized with devicettings modules. static std::mutex gManagerInitMutex; -static std::mutex gSearchMutex; +static std::mutex gDLMutex; +static void* gDLHandle = nullptr; Manager::Manager() { // TODO Auto-generated constructor stub @@ -87,62 +88,6 @@ Manager::~Manager() { }\ } -std::string parse_opt_flag( std::string file_name , bool integer_check , bool debugStats ) -{ - std::string return_buffer = ""; - std::ifstream parse_opt_flag_file( file_name.c_str()); - - if (!parse_opt_flag_file) - { - if ( debugStats ){ - INT_INFO("Failed to open [%s] file",file_name.c_str()); - } - } - else - { - std::string line = ""; - if (std::getline(parse_opt_flag_file, line)) - { - if ( debugStats ){ - INT_INFO("Content in [%s] is [%s]",file_name.c_str(),line.c_str()); - } - } - else - { - if ( debugStats ){ - INT_INFO("No Content in [%s]",file_name.c_str()); - } - } - parse_opt_flag_file.close(); - - return_buffer = line; - - if (integer_check) - { - if (line.empty()) - { - integer_check = false; - } - else - { - for (char c : line) { - if (!isdigit(c)) - { - integer_check = false; - break; - } - } - } - - if ( false == integer_check ) - { - return_buffer = ""; - } - } - } - return return_buffer; -} - /** * @addtogroup dssettingsmanagerapi * @{ @@ -171,7 +116,6 @@ void Manager::Initialize() { {std::lock_guard lock(gManagerInitMutex); - int delay = 1; printf("Entering %s count %d with thread id %lu\n",__FUNCTION__,IsInitialized,pthread_self()); try { @@ -197,17 +141,14 @@ void Manager::Initialize() CHECK_RET_VAL(err); err = dsVideoDeviceInit(); CHECK_RET_VAL(err); - std::string delaystr = parse_opt_flag("/opt/delay", true, true); - if (!delaystr.empty()) - { - INT_INFO("dealy: [%s]", delaystr.c_str()); - delay = std::stoi(delaystr); - } - AudioOutputPortConfig::getInstance().load(); - sleep(delay); - VideoOutputPortConfig::getInstance().load(); - sleep(delay); - VideoDeviceConfig::getInstance().load(); + void* pDLHandle = getDLInstance(); + AudioOutputPortConfig::getInstance().load(pDLHandle); + VideoOutputPortConfig::getInstance().load(pDLHandle); + VideoDeviceConfig::getInstance().load(pDLHandle); + FrontPanelConfig::getInstance().load(pDLHandle); + if ( nullptr != pDLHandle ) { + releaseDLInstance(); + } } IsInitialized++; } @@ -222,43 +163,59 @@ void Manager::Initialize() void Manager::load() { printf("%d:%s load start\n", __LINE__, __FUNCTION__); - device::AudioOutputPortConfig::getInstance().load(); - device::VideoOutputPortConfig::getInstance().load(); - device::VideoDeviceConfig::getInstance().load(); + void* pDLHandle = getDLInstance(); + device::AudioOutputPortConfig::getInstance().load(pDLHandle); + device::VideoOutputPortConfig::getInstance().load(pDLHandle); + device::VideoDeviceConfig::getInstance().load(pDLHandle); + if ( nullptr != pDLHandle ) { + releaseDLInstance(); + } printf("%d:%s load completed\n", __LINE__, __FUNCTION__); } -bool searchConfigs(const char *searchConfigStr, void **pConfigVar) +void* Manager::getDLInstance() { - INT_INFO("%d:%s: Entering function\n", __LINE__, __func__); - INT_INFO("%d:%s: searchConfigStr = %s\n", __LINE__, __func__, searchConfigStr); - INT_INFO("%d:%s: RDK_DSHAL_NAME = %s\n", __LINE__, __func__, RDK_DSHAL_NAME); - - //pthread_mutex_lock(&dsLock); - std::lock_guard lock(gSearchMutex); - INT_INFO("%d:%s: using lock_guard() instead pthread_mutex_lock \n", __LINE__, __func__); - dlerror(); // clear old error - void *dllib = dlopen(RDK_DSHAL_NAME, RTLD_LAZY); - if (dllib) { - *pConfigVar = (void *) dlsym(dllib, searchConfigStr); - if (*pConfigVar != NULL) { - INT_INFO("%s is defined and loaded pConfigVar= %p\r\n", searchConfigStr, *pConfigVar); - } - else { - INT_ERROR("%d:%s: %s is not defined\n", __LINE__, __func__, searchConfigStr); - } + std::lock_guard lock(gDLMutex); + dlerror(); // clear old error + if (nullptr == gDLHandle){ + gDLHandle = dlopen(RDK_DSHAL_NAME, RTLD_LAZY); + } + INT_INFO("%d:%s: DL Instance '%s'\n", __LINE__, __func__, (nullptr == gDLHandle ? "NULL" : "Valid")); + return gDLHandle; +} - dlclose(dllib); - } - else { - const char* err = dlerror(); - INT_ERROR("%d:%s: Open %s failed with error err= %s\n", __LINE__, __func__, RDK_DSHAL_NAME, err ? err: "unknown"); - } - //pthread_mutex_unlock(&dsLock); - INT_INFO("%d:%s: Exit function\n", __LINE__, __func__); - return (*pConfigVar != NULL); +void Manager::releaseDLInstance() +{ + std::lock_guard lock(gDLMutex); + if (nullptr != gDLHandle) { + dlclose(gDLHandle); + gDLHandle = nullptr; + } } +bool searchConfigs(void* pDLHandle, const char *searchConfigStr, void **pConfigVar) +{ + bool returnValue = false; + INT_INFO("%d:%s: Entering function\n", __LINE__, __func__); + if ((nullptr == searchConfigStr) || (nullptr == pConfigVar) || (nullptr == pDLHandle)) { + INT_ERROR("%d:%s: Invalid parameters passed\n", __LINE__, __func__); + } + else { + INT_INFO("%d:%s: searchConfigStr = %s\n", __LINE__, __func__, searchConfigStr); + INT_INFO("%d:%s: RDK_DSHAL_NAME = %s\n", __LINE__, __func__, RDK_DSHAL_NAME); + + *pConfigVar = (void *) dlsym(pDLHandle, searchConfigStr); + if (*pConfigVar != NULL) { + INT_INFO("%s is defined and loaded pConfigVar= %p\r\n", searchConfigStr, *pConfigVar); + returnValue = true; + } + else { + INT_ERROR("%d:%s: %s is not defined\n", __LINE__, __func__, searchConfigStr); + } + } + INT_INFO("%d:%s: Exit function\n", __LINE__, __func__); + return returnValue; +} /** * @fn void Manager::DeInitialize() diff --git a/ds/videoOutputPortConfig.cpp b/ds/videoOutputPortConfig.cpp index fcbd45ae..702275d0 100644 --- a/ds/videoOutputPortConfig.cpp +++ b/ds/videoOutputPortConfig.cpp @@ -348,7 +348,7 @@ void dumpconfig(videoPortConfigs_t *config) INT_INFO("%d:%s: Exit function\n", __LINE__, __func__); } -void VideoOutputPortConfig::load() +void VideoOutputPortConfig::load(void* pDLHandle) { static int configSize, portSize, resolutionSize, invalid_size = -1; static videoPortConfigs_t configuration = {0}; @@ -360,6 +360,7 @@ void VideoOutputPortConfig::load() "kResolutionsSettings", "kResolutionsSettings_size" }; + bool isDynamicConfigLoad = false; bool ret = false; INT_INFO("Enter function\n"); @@ -384,47 +385,53 @@ void VideoOutputPortConfig::load() _vPortTypes.push_back(VideoOutputPortType((int)i)); } - INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[0]); - ret = searchConfigs(searchVaribles[0], (void **)&configuration.pKConfigs); - if(ret == true) + if (nullptr != pDLHandle) { + INT_INFO("%d:%s: Using dynamic library handle for config loading\n", __LINE__, __func__); + INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[0]); + ret = searchConfigs(pDLHandle, searchVaribles[0], (void **)&configuration.pKConfigs); + if(ret == true) + { + // Considering Dynamic config loading is enabled since 1st symbol got + isDynamicConfigLoad = true; + INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[1]); + ret = searchConfigs(pDLHandle, searchVaribles[1], (void **)&configuration.pKVideoPortConfigs_size); + if(ret == false) + { + INT_ERROR("%s is not defined\n", searchVaribles[1]); + configuration.pKVideoPortConfigs_size = &invalid_size; + } + INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[2]); + ret = searchConfigs(pDLHandle, searchVaribles[2], (void **)&configuration.pKPorts); + if(ret == false) + { + INT_ERROR("%s is not defined\n", searchVaribles[2]); + } + INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[3]); + ret = searchConfigs(pDLHandle, searchVaribles[3], (void **)&configuration.pKVideoPortPorts_size); + if(ret == false) + { + INT_ERROR("%s is not defined\n", searchVaribles[3]); + configuration.pKVideoPortPorts_size = &invalid_size; + } + // Resolutions + ret = searchConfigs(pDLHandle, searchVaribles[4], (void **)&configuration.pKResolutionsSettings); + if(ret == false) + { + INT_ERROR("%s is not defined\n", searchVaribles[4]); + } + INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[5]); + ret = searchConfigs(pDLHandle, searchVaribles[5], (void **)&configuration.pKResolutionsSettings_size); + if(ret == false) + { + INT_ERROR("%s is not defined\n", searchVaribles[5]); + configuration.pKResolutionsSettings_size = &invalid_size; + } + } + } + + if ( false == isDynamicConfigLoad ) { - INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[1]); - ret = searchConfigs(searchVaribles[1], (void **)&configuration.pKVideoPortConfigs_size); - if(ret == false) - { - INT_ERROR("%s is not defined\n", searchVaribles[1]); - configuration.pKVideoPortConfigs_size = &invalid_size; - } - INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[2]); - ret = searchConfigs(searchVaribles[2], (void **)&configuration.pKPorts); - if(ret == false) - { - INT_ERROR("%s is not defined\n", searchVaribles[2]); - } - INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[3]); - ret = searchConfigs(searchVaribles[3], (void **)&configuration.pKVideoPortPorts_size); - if(ret == false) - { - INT_ERROR("%s is not defined\n", searchVaribles[3]); - configuration.pKVideoPortPorts_size = &invalid_size; - } - // Resolutions - ret = searchConfigs(searchVaribles[4], (void **)&configuration.pKResolutionsSettings); - if(ret == false) - { - INT_ERROR("%s is not defined\n", searchVaribles[4]); - } - INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[5]); - ret = searchConfigs(searchVaribles[5], (void **)&configuration.pKResolutionsSettings_size); - if(ret == false) - { - INT_ERROR("%s is not defined\n", searchVaribles[5]); - configuration.pKResolutionsSettings_size = &invalid_size; - } - } - else - { - INT_ERROR("Read Old Configs\n"); + INT_INFO("%d:%s: Using OLD config loading\n", __LINE__, __func__); configuration.pKConfigs = kConfigs; configSize = dsUTL_DIM(kConfigs); configuration.pKVideoPortConfigs_size = &configSize; @@ -443,11 +450,7 @@ void VideoOutputPortConfig::load() (configuration.pKPorts != NULL) && (configuration.pKVideoPortPorts_size != NULL) && (configuration.pKResolutionsSettings != NULL) && (configuration.pKResolutionsSettings_size != NULL)) { - - #if DEBUG dumpconfig(&configuration); - //INT_INFO("disable the dumpconfig()\n"); - #endif /* Initialize a set of supported resolutions * */ diff --git a/ds/videoOutputPortConfig.hpp b/ds/videoOutputPortConfig.hpp index 4b011e02..269656a1 100644 --- a/ds/videoOutputPortConfig.hpp +++ b/ds/videoOutputPortConfig.hpp @@ -74,7 +74,7 @@ class VideoOutputPortConfig { List getSupportedTypes(); List getSupportedResolutions(bool isIgnoreEdid=false); - void load(); + void load(void* pDLHandle); void release(); }; From 0b96ee226477ad9525b277ed0126d7769d789014 Mon Sep 17 00:00:00 2001 From: yuvaramachandran_gurusamy Date: Thu, 11 Dec 2025 08:17:24 +0000 Subject: [PATCH 33/39] RDKEMW-8587: Fix dl symbol crash issue Signed-off-by: yuvaramachandran_gurusamy --- ds/audioOutputPortConfig.hpp | 2 +- ds/videoDeviceConfig.cpp | 36 ++++++++++++++++++++++-------------- ds/videoDeviceConfig.hpp | 2 +- 3 files changed, 24 insertions(+), 16 deletions(-) diff --git a/ds/audioOutputPortConfig.hpp b/ds/audioOutputPortConfig.hpp index 90526b99..6370df40 100644 --- a/ds/audioOutputPortConfig.hpp +++ b/ds/audioOutputPortConfig.hpp @@ -66,7 +66,7 @@ class AudioOutputPortConfig { List getPorts(); List getSupportedTypes(); - void load(); + void load(void* pDLHandle); void release(); }; diff --git a/ds/videoDeviceConfig.cpp b/ds/videoDeviceConfig.cpp index bdc74453..2f6c50f3 100644 --- a/ds/videoDeviceConfig.cpp +++ b/ds/videoDeviceConfig.cpp @@ -120,7 +120,7 @@ typedef struct videoDeviceConfig int *pKVideoDeviceConfigs_size; }videoDeviceConfig_t; -void VideoDeviceConfig::load() +void VideoDeviceConfig::load(void* pDLHandle) { int configSize, invalid_size = -1; static videoDeviceConfig_t videoDeviceConfig = {0}; @@ -128,6 +128,7 @@ void VideoDeviceConfig::load() "kVideoDeviceConfigs", "kVideoDeviceConfigs_size", }; + bool isDynamicConfigLoad = false; bool ret = false; INT_INFO("Enter function\n"); @@ -138,19 +139,26 @@ void VideoDeviceConfig::load() _vDFCs.push_back(VideoDFC(i)); } - INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[0]); - ret = searchConfigs(searchVaribles[0], (void **)&(videoDeviceConfig.pKVideoDeviceConfigs)); - if(ret == true) - { - INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[1]); - ret = searchConfigs(searchVaribles[1], (void **)&(videoDeviceConfig.pKVideoDeviceConfigs_size)); - if(ret == false) - { - INT_ERROR("%s is not defined\n", searchVaribles[1]); - videoDeviceConfig.pKVideoDeviceConfigs_size = &invalid_size; - } - } - else + if ( nullptr != pDLHandle ) + { + INT_INFO("%d:%s: Using dynamic library handle for config loading\n", __LINE__, __func__); + INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[0]); + ret = searchConfigs(searchVaribles[0], (void **)&(videoDeviceConfig.pKVideoDeviceConfigs)); + if(ret == true) + { + // Considering Dynamic config loading is enabled since 1st symbol got + isDynamicConfigLoad = true; + INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[1]); + ret = searchConfigs(searchVaribles[1], (void **)&(videoDeviceConfig.pKVideoDeviceConfigs_size)); + if(ret == false) + { + INT_ERROR("%s is not defined\n", searchVaribles[1]); + videoDeviceConfig.pKVideoDeviceConfigs_size = &invalid_size; + } + } + } + + if ( false == isDynamicConfigLoad) { INT_INFO("Read Old Configs\n"); videoDeviceConfig.pKVideoDeviceConfigs = (dsVideoConfig_t *)kConfigs; diff --git a/ds/videoDeviceConfig.hpp b/ds/videoDeviceConfig.hpp index 65fcf791..0673c9e3 100644 --- a/ds/videoDeviceConfig.hpp +++ b/ds/videoDeviceConfig.hpp @@ -55,7 +55,7 @@ class VideoDeviceConfig { VideoDFC & getDFC(int id); VideoDFC & getDefaultDFC(); - void load(); + void load(void* pDLHandle); void release(); }; From 32d57fbfaf703dd78628154e3b72ee4951f261fd Mon Sep 17 00:00:00 2001 From: yuvaramachandran_gurusamy Date: Thu, 11 Dec 2025 08:19:54 +0000 Subject: [PATCH 34/39] RDKEMW-8587: Fix dl symbol crash issue Signed-off-by: yuvaramachandran_gurusamy --- ds/manager.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ds/manager.cpp b/ds/manager.cpp index 9ce77a01..38ccdd3b 100644 --- a/ds/manager.cpp +++ b/ds/manager.cpp @@ -173,7 +173,7 @@ void Manager::load() printf("%d:%s load completed\n", __LINE__, __FUNCTION__); } -void* Manager::getDLInstance() +void* getDLInstance() { std::lock_guard lock(gDLMutex); dlerror(); // clear old error @@ -184,7 +184,7 @@ void* Manager::getDLInstance() return gDLHandle; } -void Manager::releaseDLInstance() +void releaseDLInstance() { std::lock_guard lock(gDLMutex); if (nullptr != gDLHandle) { From 7ae4eb69c42dd499e750f7e887cee8386e8dc7c6 Mon Sep 17 00:00:00 2001 From: yuvaramachandran_gurusamy Date: Thu, 11 Dec 2025 08:52:13 +0000 Subject: [PATCH 35/39] RDKEMW-8587: Fix build error Signed-off-by: yuvaramachandran_gurusamy --- ds/audioOutputPortConfig.cpp | 12 ++--- ds/frontPanelConfig.cpp | 49 ++++++++---------- ds/include/frontPanelConfig.hpp | 11 ++-- ds/manager.cpp | 90 ++++++++++++++++----------------- ds/videoDeviceConfig.cpp | 15 +++--- ds/videoOutputPortConfig.cpp | 19 +++---- 6 files changed, 96 insertions(+), 100 deletions(-) diff --git a/ds/audioOutputPortConfig.cpp b/ds/audioOutputPortConfig.cpp index 238e9937..fdf6ebe5 100644 --- a/ds/audioOutputPortConfig.cpp +++ b/ds/audioOutputPortConfig.cpp @@ -166,12 +166,6 @@ void AudioOutputPortConfig::load(void* pDLHandle) { static int configSize, portSize, invalidSize = -1; static audioConfigs_t configuration = {0}; - const char* searchVaribles[] = { - "kAudioConfigs", - "kAudioPorts", - "kAudioConfigs_size", - "kAudioPorts_size" - }; bool isDynamicConfigLoad = false; INT_INFO("Enter function\n"); @@ -199,6 +193,12 @@ void AudioOutputPortConfig::load(void* pDLHandle) } if ( nullptr != pDLHandle ) { + const char* searchVaribles[] = { + "kAudioConfigs", + "kAudioPorts", + "kAudioConfigs_size", + "kAudioPorts_size" + }; bool ret = false; INT_INFO("%d:%s: Using dynamic library handle for config loading\n", __LINE__, __func__); diff --git a/ds/frontPanelConfig.cpp b/ds/frontPanelConfig.cpp index 28bf9c42..36bc3c63 100644 --- a/ds/frontPanelConfig.cpp +++ b/ds/frontPanelConfig.cpp @@ -362,28 +362,25 @@ void dumpconfig(fpdConfigs_t *configuration) INT_INFO("configuration->pKFPDIndicatorColors_size data: %d\n", *(configuration->pKFPDIndicatorColors_size)); INT_INFO("configuration->pKIndicators_size addr: %p\n", (configuration->pKIndicators_size)); INT_INFO("configuration->pKIndicators_size data: %d\n", *(configuration->pKIndicators_size)); - for (size_t i = 0; i < *(configuration->pKFPDIndicatorColors_size); i++) { - INT_INFO(" Color ID: %d, color: %d\n", - configuration->pKFPDIndicatorColors[i].id, - configuration->pKFPDIndicatorColors[i].color); - } - - INT_INFO("Indicators:\n"); - for (size_t i = 0; i < *(configuration->pKIndicators_size); i++) { - INT_INFO(" Indicator ID: %d, Max Brightness: %d, Max Cycle Rate: %d, Levels: %d, Color Mode: %d\n", - configuration->pKIndicators[i].id, - configuration->pKIndicators[i].maxBrightness, - configuration->pKIndicators[i].maxCycleRate, - configuration->pKIndicators[i].levels, - configuration->pKIndicators[i].colorMode); - } + for (size_t i = 0; i < *(configuration->pKFPDIndicatorColors_size); i++) { + INT_INFO(" Color ID: %d, color: %d\n", + configuration->pKFPDIndicatorColors[i].id, + configuration->pKFPDIndicatorColors[i].color); + } + INT_INFO("Indicators:\n"); + for (size_t i = 0; i < *(configuration->pKIndicators_size); i++) { + INT_INFO(" Indicator ID: %d, Max Brightness: %d, Max Cycle Rate: %d, Levels: %d, Color Mode: %d\n", + configuration->pKIndicators[i].id, + configuration->pKIndicators[i].maxBrightness, + configuration->pKIndicators[i].maxCycleRate, + configuration->pKIndicators[i].levels, + configuration->pKIndicators[i].colorMode); + } } if(configuration->pKTextDisplays != NULL && configuration->pKTextDisplays_size != NULL){ INT_INFO("configuration->pKTextDisplays_size: %p\n", configuration->pKTextDisplays_size); INT_INFO("Text Displays:*(configuration->pKTextDisplays_size) =%d\n", *(configuration->pKTextDisplays_size)); - - for (size_t i = 0; i < *(configuration->pKTextDisplays_size); i++) { INT_INFO(" Text Display ID: %d, Max Brightness: %d, Max Cycle Rate: %d, Levels: %d, Max Horizontal Iterations: %d, Max Vertical Iterations: %d, Supported Characters: %s, Color Mode: %d\n", configuration->pKTextDisplays[i].id, @@ -426,18 +423,16 @@ void FrontPanelConfig::load(void* pDLHandle) return; } - if ( false == m_isFPConfigLoaded) { - const char* searchVaribles[] = { - "kFPDIndicatorColors", - "kFPDIndicatorColors_size", - "kIndicators", - "kIndicators_size", - "kFPDTextDisplays", - "kFPDTextDisplays_size" - }; - if (pDLHandle) { + const char* searchVaribles[] = { + "kFPDIndicatorColors", + "kFPDIndicatorColors_size", + "kIndicators", + "kIndicators_size", + "kFPDTextDisplays", + "kFPDTextDisplays_size" + }; bool ret = false; INT_INFO("%d:%s: Using dynamic library handle for config loading\n", __LINE__, __func__); INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[0]); diff --git a/ds/include/frontPanelConfig.hpp b/ds/include/frontPanelConfig.hpp index b22a0fa1..be82ae60 100644 --- a/ds/include/frontPanelConfig.hpp +++ b/ds/include/frontPanelConfig.hpp @@ -64,8 +64,6 @@ class FrontPanelConfig { FrontPanelConfig(); virtual ~FrontPanelConfig(); - void load(void* pDLHandle); - public: static FrontPanelConfig & getInstance(); @@ -81,11 +79,12 @@ class FrontPanelConfig { List getIndicators(); List getTextDisplays(); - /* Initialize Front Panel */ - void fPInit(); - /* Terminate Front Panel */ - void fPTerm(); + /* Initialize Front Panel */ + void fPInit(); + /* Terminate Front Panel */ + void fPTerm(); + void load(void* pDLHandle); }; } diff --git a/ds/manager.cpp b/ds/manager.cpp index 38ccdd3b..dcad6adf 100644 --- a/ds/manager.cpp +++ b/ds/manager.cpp @@ -46,7 +46,7 @@ #include #include #include "dsHALConfig.h" - +#include "frontPanelConfig.hpp" //static pthread_mutex_t dsLock = PTHREAD_MUTEX_INITIALIZER; @@ -72,6 +72,50 @@ static std::mutex gManagerInitMutex; static std::mutex gDLMutex; static void* gDLHandle = nullptr; +void* getDLInstance() +{ + std::lock_guard lock(gDLMutex); + dlerror(); // clear old error + if (nullptr == gDLHandle){ + gDLHandle = dlopen(RDK_DSHAL_NAME, RTLD_LAZY); + } + INT_INFO("%d:%s: DL Instance '%s'\n", __LINE__, __func__, (nullptr == gDLHandle ? "NULL" : "Valid")); + return gDLHandle; +} + +void releaseDLInstance() +{ + std::lock_guard lock(gDLMutex); + if (nullptr != gDLHandle) { + dlclose(gDLHandle); + gDLHandle = nullptr; + } +} + +bool searchConfigs(void* pDLHandle, const char *searchConfigStr, void **pConfigVar) +{ + bool returnValue = false; + INT_INFO("%d:%s: Entering function\n", __LINE__, __func__); + if ((nullptr == searchConfigStr) || (nullptr == pConfigVar) || (nullptr == pDLHandle)) { + INT_ERROR("%d:%s: Invalid parameters passed\n", __LINE__, __func__); + } + else { + INT_INFO("%d:%s: searchConfigStr = %s\n", __LINE__, __func__, searchConfigStr); + INT_INFO("%d:%s: RDK_DSHAL_NAME = %s\n", __LINE__, __func__, RDK_DSHAL_NAME); + + *pConfigVar = (void *) dlsym(pDLHandle, searchConfigStr); + if (*pConfigVar != NULL) { + INT_INFO("%s is defined and loaded pConfigVar= %p\r\n", searchConfigStr, *pConfigVar); + returnValue = true; + } + else { + INT_ERROR("%d:%s: %s is not defined\n", __LINE__, __func__, searchConfigStr); + } + } + INT_INFO("%d:%s: Exit function\n", __LINE__, __func__); + return returnValue; +} + Manager::Manager() { // TODO Auto-generated constructor stub @@ -173,50 +217,6 @@ void Manager::load() printf("%d:%s load completed\n", __LINE__, __FUNCTION__); } -void* getDLInstance() -{ - std::lock_guard lock(gDLMutex); - dlerror(); // clear old error - if (nullptr == gDLHandle){ - gDLHandle = dlopen(RDK_DSHAL_NAME, RTLD_LAZY); - } - INT_INFO("%d:%s: DL Instance '%s'\n", __LINE__, __func__, (nullptr == gDLHandle ? "NULL" : "Valid")); - return gDLHandle; -} - -void releaseDLInstance() -{ - std::lock_guard lock(gDLMutex); - if (nullptr != gDLHandle) { - dlclose(gDLHandle); - gDLHandle = nullptr; - } -} - -bool searchConfigs(void* pDLHandle, const char *searchConfigStr, void **pConfigVar) -{ - bool returnValue = false; - INT_INFO("%d:%s: Entering function\n", __LINE__, __func__); - if ((nullptr == searchConfigStr) || (nullptr == pConfigVar) || (nullptr == pDLHandle)) { - INT_ERROR("%d:%s: Invalid parameters passed\n", __LINE__, __func__); - } - else { - INT_INFO("%d:%s: searchConfigStr = %s\n", __LINE__, __func__, searchConfigStr); - INT_INFO("%d:%s: RDK_DSHAL_NAME = %s\n", __LINE__, __func__, RDK_DSHAL_NAME); - - *pConfigVar = (void *) dlsym(pDLHandle, searchConfigStr); - if (*pConfigVar != NULL) { - INT_INFO("%s is defined and loaded pConfigVar= %p\r\n", searchConfigStr, *pConfigVar); - returnValue = true; - } - else { - INT_ERROR("%d:%s: %s is not defined\n", __LINE__, __func__, searchConfigStr); - } - } - INT_INFO("%d:%s: Exit function\n", __LINE__, __func__); - return returnValue; -} - /** * @fn void Manager::DeInitialize() * @brief This API is used to deinitialize the device settings module. diff --git a/ds/videoDeviceConfig.cpp b/ds/videoDeviceConfig.cpp index 2f6c50f3..055ad2a9 100644 --- a/ds/videoDeviceConfig.cpp +++ b/ds/videoDeviceConfig.cpp @@ -124,12 +124,7 @@ void VideoDeviceConfig::load(void* pDLHandle) { int configSize, invalid_size = -1; static videoDeviceConfig_t videoDeviceConfig = {0}; - const char* searchVaribles[] = { - "kVideoDeviceConfigs", - "kVideoDeviceConfigs_size", - }; bool isDynamicConfigLoad = false; - bool ret = false; INT_INFO("Enter function\n"); /* @@ -141,15 +136,21 @@ void VideoDeviceConfig::load(void* pDLHandle) if ( nullptr != pDLHandle ) { + const char* searchVaribles[] = { + "kVideoDeviceConfigs", + "kVideoDeviceConfigs_size", + }; + bool ret = false; + INT_INFO("%d:%s: Using dynamic library handle for config loading\n", __LINE__, __func__); INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[0]); - ret = searchConfigs(searchVaribles[0], (void **)&(videoDeviceConfig.pKVideoDeviceConfigs)); + ret = searchConfigs(pDLHandle, searchVaribles[0], (void **)&(videoDeviceConfig.pKVideoDeviceConfigs)); if(ret == true) { // Considering Dynamic config loading is enabled since 1st symbol got isDynamicConfigLoad = true; INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[1]); - ret = searchConfigs(searchVaribles[1], (void **)&(videoDeviceConfig.pKVideoDeviceConfigs_size)); + ret = searchConfigs(pDLHandle, searchVaribles[1], (void **)&(videoDeviceConfig.pKVideoDeviceConfigs_size)); if(ret == false) { INT_ERROR("%s is not defined\n", searchVaribles[1]); diff --git a/ds/videoOutputPortConfig.cpp b/ds/videoOutputPortConfig.cpp index 702275d0..0010ba63 100644 --- a/ds/videoOutputPortConfig.cpp +++ b/ds/videoOutputPortConfig.cpp @@ -352,16 +352,7 @@ void VideoOutputPortConfig::load(void* pDLHandle) { static int configSize, portSize, resolutionSize, invalid_size = -1; static videoPortConfigs_t configuration = {0}; - const char* searchVaribles[] = { - "kVideoPortConfigs", - "kVideoPortConfigs_size", - "kVideoPortPorts", - "kVideoPortPorts_size", - "kResolutionsSettings", - "kResolutionsSettings_size" - }; bool isDynamicConfigLoad = false; - bool ret = false; INT_INFO("Enter function\n"); try { @@ -386,6 +377,16 @@ void VideoOutputPortConfig::load(void* pDLHandle) } if (nullptr != pDLHandle) { + const char* searchVaribles[] = { + "kVideoPortConfigs", + "kVideoPortConfigs_size", + "kVideoPortPorts", + "kVideoPortPorts_size", + "kResolutionsSettings", + "kResolutionsSettings_size" + }; + bool ret = false; + INT_INFO("%d:%s: Using dynamic library handle for config loading\n", __LINE__, __func__); INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[0]); ret = searchConfigs(pDLHandle, searchVaribles[0], (void **)&configuration.pKConfigs); From cca37835cce3490344d38f4603dc0bee40ff80c2 Mon Sep 17 00:00:00 2001 From: yuvaramachandran_gurusamy Date: Fri, 12 Dec 2025 22:24:52 +0000 Subject: [PATCH 36/39] RDKEMW-8587: Fix FPD std::logical_error crash issue and enhanced the logging format Signed-off-by: yuvaramachandran_gurusamy --- ds/audioOutputPortConfig.cpp | 302 +++++++++++------------ ds/audioOutputPortConfig.hpp | 10 +- ds/dslogger.cpp | 41 ++-- ds/frontPanelConfig.cpp | 293 ++++++++++------------ ds/frontPanelIndicator.cpp | 2 - ds/hdmiIn.cpp | 62 ++--- ds/host.cpp | 2 +- ds/include/dslogger.h | 15 +- ds/include/frontPanelConfig.hpp | 14 +- ds/include/manager.hpp | 23 +- ds/manager.cpp | 169 ++++++++----- ds/videoDeviceConfig.cpp | 113 ++++----- ds/videoDeviceConfig.hpp | 8 +- ds/videoOutputPort.cpp | 14 +- ds/videoOutputPortConfig.cpp | 413 ++++++++++++++------------------ ds/videoOutputPortConfig.hpp | 16 +- sample/dsMgr-test.c | 31 --- 17 files changed, 739 insertions(+), 789 deletions(-) delete mode 100644 sample/dsMgr-test.c diff --git a/ds/audioOutputPortConfig.cpp b/ds/audioOutputPortConfig.cpp index fdf6ebe5..66da8072 100644 --- a/ds/audioOutputPortConfig.cpp +++ b/ds/audioOutputPortConfig.cpp @@ -37,15 +37,6 @@ #include #include "manager.hpp" - -typedef struct audioConfigs -{ - const dsAudioTypeConfig_t *pKConfigs; - const dsAudioPortConfig_t *pKPorts; - int *pKConfigSize; - int *pKPortSize; -}audioConfigs_t; - namespace device { //To Make the instance as thread-safe, using = default, that can request special methods from the compiler. They are Special because only compiler can create them. @@ -121,174 +112,161 @@ List AudioOutputPortConfig::getSupportedTypes() void dumpconfig(audioConfigs_t *config) { - INT_INFO("\n\n=========================================================================================================================\n\n"); - if(config->pKConfigs != NULL && *(config->pKConfigSize) != -1) - { - INT_INFO("%d:%s: Entering function\n", __LINE__, __func__); - INT_INFO("%d:%s: pKConfigs = %p\n", __LINE__, __func__, config->pKConfigs); - INT_INFO("%d:%s: pKPorts = %p\n", __LINE__, __func__, config->pKPorts); - INT_INFO("%d:%s: pKConfigSize addr =%p \n", __LINE__, __func__, config->pKConfigSize); - INT_INFO("%d:%s: pKConfigSize value = %d \n", __LINE__, __func__, *(config->pKConfigSize)); - - for (size_t i = 0; i < *(config->pKConfigSize); i++) { - const dsAudioTypeConfig_t *typeCfg = &(config->pKConfigs[i]); - INT_INFO("%d:%s: typeCfg->typeId = %d\n", __LINE__, __func__, typeCfg->typeId); - INT_INFO("%d:%s: typeCfg->name = %s\n", __LINE__, __func__, typeCfg->name); - INT_INFO("%d:%s: typeCfg->numSupportedEncodings = %zu\n", __LINE__, __func__, typeCfg->numSupportedEncodings); - INT_INFO("%d:%s: typeCfg->numSupportedCompressions = %zu\n", __LINE__, __func__, typeCfg->numSupportedCompressions); - INT_INFO("%d:%s: typeCfg->numSupportedStereoModes = %zu\n", __LINE__, __func__, typeCfg->numSupportedStereoModes); - } - } - else - { - INT_ERROR("%d:%s: kAudioConfigs is NULL and *(config->pKConfigSize) is -1\n", __LINE__, __func__); - } - if(config->pKPorts != NULL && *(config->pKPortSize) != -1) - { - INT_INFO("%d:%s: pKPortSize addr = %p \n", __LINE__, __func__, config->pKPortSize); - INT_INFO("%d:%s: pKPortSize value = %d \n", __LINE__, __func__, *(config->pKPortSize)); - for (size_t i = 0; i < *(config->pKPortSize); i++) { - const dsAudioPortConfig_t *port = &(config->pKPorts[i]); - INT_INFO("%d:%s: port->id.type = %d\n", __LINE__, __func__, port->id.type); - INT_INFO("%d:%s: port->id.index = %d\n", __LINE__, __func__, port->id.index); - } - } - else - { - INT_ERROR("%d:%s: kAudioPorts is NULL and *(config->pKPortSize) is -1\n", __LINE__, __func__); - } - INT_INFO("\n\n=========================================================================================================================\n\n"); - INT_INFO("%d:%s: Exit function\n", __LINE__, __func__); + if (nullptr == config) { + INT_ERROR("Audio config is NULL"); + return; + } + if ( -1 == access("/opt/dsMgrDumpDeviceConfigs", F_OK) ) { + INT_INFO("Dumping of Device configs is disabled"); + return; + } + + int configSize = -1, portSize = -1; + INT_INFO("\n\n=========================================================================================================================\n\n"); + INT_INFO("Starting to Dump Audio Configs"); + if( nullptr != config->pKConfigs ) + { + configSize = (config->pKConfigSize) ? *(config->pKConfigSize) : -1; + INT_INFO("pKConfigs = %p", config->pKConfigs); + INT_INFO("pKPorts = %p", config->pKPorts); + INT_INFO("pKConfigSize addr =%p ", config->pKConfigSize); + INT_INFO("pKConfigSize value = %d ", configSize); + + for (int i = 0; i < configSize; i++) { + const dsAudioTypeConfig_t *typeCfg = &(config->pKConfigs[i]); + INT_INFO("typeCfg->typeId = %d", typeCfg->typeId); + INT_INFO("typeCfg->name = %s", typeCfg->name); + INT_INFO("typeCfg->numSupportedEncodings = %zu", typeCfg->numSupportedEncodings); + INT_INFO("typeCfg->numSupportedCompressions = %zu", typeCfg->numSupportedCompressions); + INT_INFO("typeCfg->numSupportedStereoModes = %zu", typeCfg->numSupportedStereoModes); + } + } + else + { + INT_ERROR("kAudioConfigs is NULL"); + } + + if( nullptr != config->pKPorts ) + { + portSize = (config->pKPortSize) ? *(config->pKPortSize) : -1; + INT_INFO("pKPorts = %p", config->pKPorts); + INT_INFO("pKPortSize addr = %p ", config->pKPortSize); + INT_INFO("pKPortSize value = %d ", portSize); + for (int i = 0; i < portSize; i++) { + const dsAudioPortConfig_t *portCfg = &(config->pKPorts[i]); + INT_INFO("portCfg->id.type = %d", portCfg->id.type); + INT_INFO("portCfg->id.index = %d", portCfg->id.index); + } + } + else + { + INT_ERROR("kAudioPorts is NULL"); + } + INT_INFO("Dump Audio Configs done"); + INT_INFO("\n\n=========================================================================================================================\n\n"); } - -void AudioOutputPortConfig::load(void* pDLHandle) +void AudioOutputPortConfig::load(audioConfigs_t* dynamicAudioConfigs) { - static int configSize, portSize, invalidSize = -1; - static audioConfigs_t configuration = {0}; - bool isDynamicConfigLoad = false; + int configSize = -1, portSize = -1; + audioConfigs_t configuration = {0}; + + INT_INFO("Enter function"); + try { + /* + * Load Constants First. + */ + for (int i = 0; i < dsAUDIO_ENC_MAX; i++) { + _aEncodings.push_back(AudioEncoding(i)); + } - INT_INFO("Enter function\n"); - try { - /* - * Load Constants First. - */ - for (int i = 0; i < dsAUDIO_ENC_MAX; i++) { - _aEncodings.push_back(AudioEncoding(i)); - } + for (int i = 0; i < dsAUDIO_CMP_MAX; i++) { + _aCompressions.push_back(AudioCompression(i)); - for (int i = 0; i < dsAUDIO_CMP_MAX; i++) { - _aCompressions.push_back(AudioCompression(i)); + } - } + for (int i = 0; i < dsAUDIO_STEREO_MAX; i++) { + _aStereoModes.push_back(AudioStereoMode(i)); - for (int i = 0; i < dsAUDIO_STEREO_MAX; i++) { - _aStereoModes.push_back(AudioStereoMode(i)); + } - } + for (int i = 0; i < dsAUDIOPORT_TYPE_MAX; i++) { + _aPortTypes.push_back(AudioOutputPortType(i)); - for (int i = 0; i < dsAUDIOPORT_TYPE_MAX; i++) { - _aPortTypes.push_back(AudioOutputPortType(i)); + } - } + INT_INFO("Using '%s' config", dynamicAudioConfigs ? "dynamic" : "static"); + if ( nullptr != dynamicAudioConfigs ) + { + configuration = *dynamicAudioConfigs; + configSize = (configuration.pKConfigSize) ? *(configuration.pKConfigSize) : -1; + portSize = (configuration.pKPortSize) ? *(configuration.pKPortSize) : -1; + } + else { + configuration.pKConfigs = kConfigs; + configSize = dsUTL_DIM(kConfigs); + configuration.pKConfigSize = &configSize; + configuration.pKPorts = kPorts; + portSize = dsUTL_DIM(kPorts); + configuration.pKPortSize = &portSize; + } - if ( nullptr != pDLHandle ) { - const char* searchVaribles[] = { - "kAudioConfigs", - "kAudioPorts", - "kAudioConfigs_size", - "kAudioPorts_size" - }; - bool ret = false; - - INT_INFO("%d:%s: Using dynamic library handle for config loading\n", __LINE__, __func__); - INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[0]); - ret = searchConfigs(pDLHandle, searchVaribles[0], (void **)&configuration.pKConfigs); - if(ret == true) - { - // Considering Dynamic config loading is enabled since 1st symbol got - isDynamicConfigLoad = true; - INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[2]); - ret = searchConfigs(pDLHandle, searchVaribles[2], (void **)&configuration.pKConfigSize); - if(ret == false) - { - INT_ERROR("%s is not defined\n", searchVaribles[2]); - configuration.pKConfigSize = &invalidSize; + INT_INFO("Audio Config[%p] ConfigSize[%d] Ports[%p] PortSize[%d]", + configuration.pKConfigs, + configSize, + configuration.pKPorts, + portSize); + + dumpconfig(&configuration); + + /* + * Check if configs are loaded properly + */ + if (( nullptr != configuration.pKConfigs ) && ( nullptr != configuration.pKPorts )) + { + /* + * Initialize Audio portTypes (encodings, compressions etc.) + * and its port instances (db, level etc) + */ + for (size_t i = 0; i < configSize; i++) { + const dsAudioTypeConfig_t *typeCfg = &(configuration.pKConfigs[i]); + AudioOutputPortType &aPortType = AudioOutputPortType::getInstance(typeCfg->typeId); + aPortType.enable(); + for (size_t j = 0; j < typeCfg->numSupportedEncodings; j++) { + const dsAudioEncoding_t* encoding = &typeCfg->encodings[j]; + aPortType.addEncoding(AudioEncoding::getInstance(*encoding)); + _aEncodings.at(*encoding).enable(); } - INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[1]); - ret = searchConfigs(pDLHandle, searchVaribles[1], (void **)&configuration.pKPorts); - if(ret == false) - { - INT_ERROR("%s is not defined\n", searchVaribles[1]); + for (size_t j = 0; j < typeCfg->numSupportedCompressions; j++) { + const dsAudioCompression_t* compression = &typeCfg->compressions[j]; + aPortType.addCompression(*compression); + _aCompressions.at(*compression).enable(); } - INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[3]); - ret = searchConfigs(pDLHandle, searchVaribles[3], (void **)&configuration.pKPortSize); - if(ret == false) - { - INT_ERROR("%s is not defined\n", searchVaribles[3]); - configuration.pKPortSize = &invalidSize; + for (size_t j = 0; j < typeCfg->numSupportedStereoModes; j++) { + const dsAudioStereoMode_t *stereoMode = &typeCfg->stereoModes[j]; + aPortType.addStereoMode(*stereoMode); + _aStereoModes.at(*stereoMode).enable(); } - } + } + + /* + * set up ports based on kPorts[] + */ + for (size_t i = 0; i < portSize; i++) { + const dsAudioPortConfig_t *portCfg = &configuration.pKPorts[i]; + _aPorts.push_back(AudioOutputPort((portCfg->id.type), portCfg->id.index, i)); + _aPortTypes.at(portCfg->id.type).addPort(_aPorts.at(i)); + } + INT_INFO("Audio Configs loaded successfully"); } - if ( false == isDynamicConfigLoad) - { - INT_INFO("%d:%s: Using OLD config loading\n", __LINE__, __func__); - configuration.pKConfigs = kConfigs; - configSize = dsUTL_DIM(kConfigs); - configuration.pKConfigSize = &configSize; - configuration.pKPorts = kPorts; - portSize = dsUTL_DIM(kPorts); - configuration.pKPortSize = &portSize; - INT_INFO("configuration.pKConfigs =%p, configuration.pKPorts =%p, *(configuration.pKConfigSize) = %d, *(configuration.pKPortSize) = %d\n", configuration.pKConfigs, configuration.pKPorts, *(configuration.pKConfigSize), *(configuration.pKPortSize)); - } - /* - * Check if configs are loaded properly - */ - if ( configuration.pKConfigs != NULL && configuration.pKPorts != NULL && - configuration.pKConfigSize != NULL && configuration.pKPortSize != NULL) - { - dumpconfig(&configuration); - //INT_INFO("disable the dumpconfig()\n"); - /* - * Initialize Audio portTypes (encodings, compressions etc.) - * and its port instances (db, level etc) - */ - for (size_t i = 0; i < *(configuration.pKConfigSize); i++) { - const dsAudioTypeConfig_t *typeCfg = &(configuration.pKConfigs[i]); - AudioOutputPortType &aPortType = AudioOutputPortType::getInstance(typeCfg->typeId); - aPortType.enable(); - for (size_t j = 0; j < typeCfg->numSupportedEncodings; j++) { - aPortType.addEncoding(AudioEncoding::getInstance(typeCfg->encodings[j])); - _aEncodings.at(typeCfg->encodings[j]).enable(); - } - for (size_t j = 0; j < typeCfg->numSupportedCompressions; j++) { - aPortType.addCompression(typeCfg->compressions[j]); - _aCompressions.at(typeCfg->compressions[j]).enable(); - } - for (size_t j = 0; j < typeCfg->numSupportedStereoModes; j++) { - aPortType.addStereoMode(typeCfg->stereoModes[j]); - _aStereoModes.at(typeCfg->stereoModes[j]).enable(); - } - } - - /* - * set up ports based on kPorts[] - */ - for (size_t i = 0; i < *(configuration.pKPortSize); i++) { - const dsAudioPortConfig_t *port = &configuration.pKPorts[i]; - _aPorts.push_back(AudioOutputPort((port->id.type), port->id.index, i)); - _aPortTypes.at(port->id.type).addPort(_aPorts.at(i)); - } - INT_INFO("%d:%s: Audio Configs loaded successfully\n", __LINE__, __func__); - } - else { - INT_ERROR("%d:%s: Audio Configs loading failed\n", __LINE__, __func__); - } - } - catch(const Exception &e) { - throw e; - } - INT_INFO("Exit funcation\n"); + else { + INT_ERROR("Audio Configs loading failed"); + } + } + catch(const Exception &e) { + throw e; + } + INT_INFO("Exit function"); } void AudioOutputPortConfig::release() diff --git a/ds/audioOutputPortConfig.hpp b/ds/audioOutputPortConfig.hpp index 6370df40..b4a1acb3 100644 --- a/ds/audioOutputPortConfig.hpp +++ b/ds/audioOutputPortConfig.hpp @@ -38,6 +38,14 @@ #include #include +typedef struct audioConfigs +{ + const dsAudioTypeConfig_t *pKConfigs; + const dsAudioPortConfig_t *pKPorts; + int *pKConfigSize; + int *pKPortSize; +}audioConfigs_t; + namespace device { class AudioOutputPortConfig { @@ -66,7 +74,7 @@ class AudioOutputPortConfig { List getPorts(); List getSupportedTypes(); - void load(void* pDLHandle); + void load(audioConfigs_t* pDLHandle); void release(); }; diff --git a/ds/dslogger.cpp b/ds/dslogger.cpp index 2fd2f81e..9cdb7322 100644 --- a/ds/dslogger.cpp +++ b/ds/dslogger.cpp @@ -30,8 +30,12 @@ #include "dslogger.h" +#include // for SYS_gettid +#include // for syscall + #define unlikely(x) (__builtin_expect(!!(x), 0)) -#define MAX_LOG_BUFF 512 +#define MAX_LOG_BUFF 1024 +#define kFormatMessageSize (MAX_LOG_BUFF - 128) DS_LogCb logCb = NULL; @@ -40,29 +44,34 @@ void DS_RegisterForLog(DS_LogCb cb) logCb = cb; } -int ds_log(int priority, const char* fileName, int lineNum, const char *format, ...) +int ds_log(LogLevel priority, const char* fileName, int lineNum, const char *func, const char *format, ...) { - char tmp_buff[MAX_LOG_BUFF] = {'\0'}; - - int offset = snprintf(tmp_buff, MAX_LOG_BUFF, "[%s:%d] ", fileName, lineNum); + char formatted[MAX_LOG_BUFF] = {'\0'}; + enum LogLevel {INFO_LEVEL = 0, WARN_LEVEL, ERROR_LEVEL, DEBUG_LEVEL, TRACE_LEVEL}; + const char *levelMap[] = { "INFO", "WARN", "ERROR", "DEBUG", "TRACE"}; - // formatting error - if (unlikely(offset < 0)) { - offset = 0; - tmp_buff[0] = '\0'; // Ensure buffer is null-terminated if snprintf fails + if (!func || !fileName || !format) + { + return -1; } - va_list args; - va_start(args, format); - vsnprintf(tmp_buff + offset, MAX_LOG_BUFF - offset, format, args); - va_end(args); + va_list argptr; + va_start(argptr, format); + vsnprintf(formatted, kFormatMessageSize, format, argptr); + va_end(argptr); if (nullptr != logCb) { - logCb(priority, tmp_buff); + logCb(priority, formatted); } else { - return printf("%s\n", tmp_buff); + fprintf(stderr, "[DS][%d] %s [%s:%d] %s: %s \n", + (int)syscall(SYS_gettid), + levelMap[static_cast(priority)], + fileName, + lineNum, + func, + formatted); + fflush(stderr); } - return 0; } diff --git a/ds/frontPanelConfig.cpp b/ds/frontPanelConfig.cpp index 36bc3c63..c2feec6a 100644 --- a/ds/frontPanelConfig.cpp +++ b/ds/frontPanelConfig.cpp @@ -47,16 +47,6 @@ using namespace std; -typedef struct fpdConfigs -{ - const dsFPDColorConfig_t *pKFPDIndicatorColors; - const dsFPDIndicatorConfig_t *pKIndicators; - const dsFPDTextDisplayConfig_t *pKTextDisplays; - int *pKFPDIndicatorColors_size; - int *pKIndicators_size; - int *pKTextDisplays_size; -}fpdConfigs_t; - namespace device { /** @@ -353,51 +343,66 @@ List FrontPanelConfig::getTextDisplays() void dumpconfig(fpdConfigs_t *configuration) { - // Dump the configuration details - INT_INFO("\n\n===========================================================================\n\n"); - INT_INFO("Start of Front Panel Configuration Details:\n"); - if((configuration->pKFPDIndicatorColors !=NULL) && *(configuration->pKFPDIndicatorColors_size) != -1 && (configuration->pKIndicators != NULL) && *(configuration->pKIndicators_size) != -1) - { - INT_INFO("configuration->pKFPDIndicatorColors_size addr: %p\n", (configuration->pKFPDIndicatorColors_size)); - INT_INFO("configuration->pKFPDIndicatorColors_size data: %d\n", *(configuration->pKFPDIndicatorColors_size)); - INT_INFO("configuration->pKIndicators_size addr: %p\n", (configuration->pKIndicators_size)); - INT_INFO("configuration->pKIndicators_size data: %d\n", *(configuration->pKIndicators_size)); - for (size_t i = 0; i < *(configuration->pKFPDIndicatorColors_size); i++) { - INT_INFO(" Color ID: %d, color: %d\n", - configuration->pKFPDIndicatorColors[i].id, - configuration->pKFPDIndicatorColors[i].color); + if (nullptr == configuration) { + INT_ERROR("configuration is NULL"); + return; + } + if ( -1 == access("/opt/dsMgrDumpDeviceConfigs", F_OK) ) { + INT_INFO("Dumping of Device configs is disabled"); + return; + } + int indicatorSize = -1; + int indicatorColorSize = -1; + int textDisplaySize = (configuration->pKTextDisplays_size) ? *(configuration->pKTextDisplays_size) : -1; + // Dump the configuration details + INT_INFO("\n\n===========================================================================\n\n"); + INT_INFO("Starting to Dump FrontPanel Configs"); + if (( nullptr != configuration->pKFPDIndicatorColors) && ( nullptr != configuration->pKIndicators)) + { + int indicatorSize = (configuration->pKIndicators_size) ? *(configuration->pKIndicators_size) : -1; + int indicatorColorSize = (configuration->pKFPDIndicatorColors_size) ? *(configuration->pKFPDIndicatorColors_size) : -1; + + INT_INFO("configuration->pKFPDIndicatorColors_size addr: %p", (configuration->pKFPDIndicatorColors_size)); + INT_INFO("configuration->pKFPDIndicatorColors_size data: %d", indicatorColorSize); + INT_INFO("configuration->pKIndicators_size addr: %p", (configuration->pKIndicators_size)); + INT_INFO("configuration->pKIndicators_size data: %d", indicatorSize); + for (int i = 0; i < indicatorColorSize; i++) { + const dsFPDColorConfig_t* fpdColorCfg = &configuration->pKFPDIndicatorColors[i]; + INT_INFO(" Color ID: %d, color: %d", fpdColorCfg->id, fpdColorCfg->color); } - INT_INFO("Indicators:\n"); - for (size_t i = 0; i < *(configuration->pKIndicators_size); i++) { - INT_INFO(" Indicator ID: %d, Max Brightness: %d, Max Cycle Rate: %d, Levels: %d, Color Mode: %d\n", - configuration->pKIndicators[i].id, - configuration->pKIndicators[i].maxBrightness, - configuration->pKIndicators[i].maxCycleRate, - configuration->pKIndicators[i].levels, - configuration->pKIndicators[i].colorMode); + INT_INFO("Indicators:"); + for (int i = 0; i < indicatorSize; i++) { + const dsFPDIndicatorConfig_t* fpdIndicatorCfg = &configuration->pKIndicators[i]; + INT_INFO(" Indicator ID: %d, Max Brightness: %d, Max Cycle Rate: %d, Levels: %d, Color Mode: %d", + fpdIndicatorCfg->id, + fpdIndicatorCfg->maxBrightness, + fpdIndicatorCfg->maxCycleRate, + fpdIndicatorCfg->levels, + fpdIndicatorCfg->colorMode); } - } + } - if(configuration->pKTextDisplays != NULL && configuration->pKTextDisplays_size != NULL){ - INT_INFO("configuration->pKTextDisplays_size: %p\n", configuration->pKTextDisplays_size); - INT_INFO("Text Displays:*(configuration->pKTextDisplays_size) =%d\n", *(configuration->pKTextDisplays_size)); - for (size_t i = 0; i < *(configuration->pKTextDisplays_size); i++) { - INT_INFO(" Text Display ID: %d, Max Brightness: %d, Max Cycle Rate: %d, Levels: %d, Max Horizontal Iterations: %d, Max Vertical Iterations: %d, Supported Characters: %s, Color Mode: %d\n", - configuration->pKTextDisplays[i].id, - configuration->pKTextDisplays[i].maxBrightness, - configuration->pKTextDisplays[i].maxCycleRate, - configuration->pKTextDisplays[i].levels, - configuration->pKTextDisplays[i].maxHorizontalIterations, - configuration->pKTextDisplays[i].maxVerticalIterations, - configuration->pKTextDisplays[i].supportedCharacters, - configuration->pKTextDisplays[i].colorMode); - } - } - else { - INT_INFO(" No Text Displays configured.\n"); - } - INT_INFO("End of Front Panel Configuration Details.\n"); - INT_INFO("\n\n===========================================================================\n\n"); + if ( nullptr != configuration->pKTextDisplays) { + int textDisplaySize = (configuration->pKTextDisplays_size) ? *(configuration->pKTextDisplays_size) : -1; + INT_INFO("Text Displays: textDisplaySize =%d", textDisplaySize); + for (int i = 0; i < textDisplaySize; i++) { + const dsFPDTextDisplayConfig_t* fpdTextDisplayCfg = &configuration->pKTextDisplays[i]; + INT_INFO(" Text Display ID: %d, Max Brightness: %d, Max Cycle Rate: %d, Levels: %d, Max Horizontal Iterations: %d, Max Vertical Iterations: %d, Supported Characters: %s, Color Mode: %d", + fpdTextDisplayCfg->id, + fpdTextDisplayCfg->maxBrightness, + fpdTextDisplayCfg->maxCycleRate, + fpdTextDisplayCfg->levels, + fpdTextDisplayCfg->maxHorizontalIterations, + fpdTextDisplayCfg->maxVerticalIterations, + (fpdTextDisplayCfg->supportedCharacters) ? fpdTextDisplayCfg->supportedCharacters : "NULL", + fpdTextDisplayCfg->colorMode); + } + } + else { + INT_INFO(" No Text Displays configured."); + } + INT_INFO("Dump FrontPanel Configs done"); + INT_INFO("\n\n===========================================================================\n\n"); } /** @@ -407,79 +412,30 @@ void dumpconfig(fpdConfigs_t *configuration) * * @return None */ -void FrontPanelConfig::load(void* pDLHandle) +void FrontPanelConfig::load(fpdConfigs_t* dynamicFPDConfigs) { - /* - * Create Indicators - * 1. Create Supported Colors. - * 2. Create Indicators. - */ - static int indicatorSize, indicatorColorSize, textDisplaySize, invalid_size = -1; - static fpdConfigs_t configuration = {0}; - bool isDynamicConfigLoad = false; - INT_INFO("Enter function\n"); + /* + * Create Indicators + * 1. Create Supported Colors. + * 2. Create Indicators. + */ + int indicatorSize, indicatorColorSize, textDisplaySize; + fpdConfigs_t configuration = {0}; + INT_INFO("Enter function"); if (( false == m_isFPInitialized) || (true == m_isFPConfigLoaded)) { - INT_ERROR("%d:%s: '%s'\n", __LINE__, __func__, (!m_isFPInitialized) ? "Front Panel not initialized" : "Front Panel Config already loaded"); + INT_ERROR("'%s'", (!m_isFPInitialized) ? "Front Panel not initialized" : "Front Panel Config already loaded"); return; } - if (pDLHandle) + INT_INFO("Using '%s' config", dynamicFPDConfigs ? "dynamic" : "static"); + if ( nullptr != dynamicFPDConfigs ) { - const char* searchVaribles[] = { - "kFPDIndicatorColors", - "kFPDIndicatorColors_size", - "kIndicators", - "kIndicators_size", - "kFPDTextDisplays", - "kFPDTextDisplays_size" - }; - bool ret = false; - INT_INFO("%d:%s: Using dynamic library handle for config loading\n", __LINE__, __func__); - INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[0]); - ret = searchConfigs(pDLHandle, searchVaribles[0], (void **)&configuration.pKFPDIndicatorColors ); - if(ret == true) - { - // Considering Dynamic config loading is enabled since 1st symbol got - isDynamicConfigLoad = true; - INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[1]); - ret = searchConfigs(pDLHandle, searchVaribles[1], (void **)&configuration.pKFPDIndicatorColors_size); - if(ret == false) - { - INT_ERROR("%s is not defined\n", searchVaribles[1]); - configuration.pKFPDIndicatorColors_size = &invalid_size; - } - INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[2]); - ret = searchConfigs(pDLHandle, searchVaribles[2], (void **)&configuration.pKIndicators); - if(ret == false) - { - INT_ERROR("%s is not defined\n", searchVaribles[2]); - } - INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[3]); - ret = searchConfigs(pDLHandle, searchVaribles[3], (void **)&configuration.pKIndicators_size); - if(ret == false) - { - INT_ERROR("%s is not defined\n", searchVaribles[3]); - configuration.pKIndicators_size = &invalid_size; - } - INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[4]); - ret = searchConfigs(pDLHandle, searchVaribles[4], (void **)&configuration.pKTextDisplays); - if(ret == false) - { - INT_ERROR("%s is not defined\n", searchVaribles[4]); - } - INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[5]); - ret = searchConfigs(pDLHandle, searchVaribles[5], (void **)&configuration.pKTextDisplays_size); - if(ret == false) - { - INT_ERROR("%s is not defined\n", searchVaribles[5]); - configuration.pKTextDisplays_size = &invalid_size; - } - } + configuration = *dynamicFPDConfigs; + indicatorSize = (configuration.pKIndicators_size) ? *(configuration.pKIndicators_size) : -1; + indicatorColorSize = (configuration.pKFPDIndicatorColors_size) ? *(configuration.pKFPDIndicatorColors_size) : -1; + textDisplaySize = (configuration.pKTextDisplays_size) ? *(configuration.pKTextDisplays_size) : -1; } - - if ( false == isDynamicConfigLoad) - { - INT_INFO("%d:%s: Using OLD config loading\n", __LINE__, __func__); + else { configuration.pKFPDIndicatorColors = kIndicatorColors; indicatorColorSize = dsUTL_DIM(kIndicatorColors); configuration.pKFPDIndicatorColors_size = &indicatorColorSize; @@ -489,68 +445,69 @@ void FrontPanelConfig::load(void* pDLHandle) configuration.pKTextDisplays = kTextDisplays; textDisplaySize = dsUTL_DIM(kTextDisplays); configuration.pKTextDisplays_size = &textDisplaySize; - - INT_INFO("configuration.pKFPDIndicatorColors =%p, *(configuration.pKFPDIndicatorColors_size) = %d\n", configuration.pKFPDIndicatorColors, *(configuration.pKFPDIndicatorColors_size)); - INT_INFO("configuration.pKIndicators =%p, *(configuration.pKIndicators_size) = %d\n", configuration.pKIndicators, *(configuration.pKIndicators_size)); - INT_INFO("configuration.pKTextDisplays =%p, *(configuration.pKTextDisplays_size) = %d\n", configuration.pKTextDisplays, *(configuration.pKTextDisplays_size)); } - if (configuration.pKFPDIndicatorColors != NULL && configuration.pKFPDIndicatorColors_size != NULL && - *(configuration.pKFPDIndicatorColors_size) > 0 && - configuration.pKIndicators != NULL && configuration.pKIndicators_size != NULL && - *(configuration.pKIndicators_size) > 0) - { - #if DEBUG - dumpconfig(&configuration); - //INT_INFO("disable the dumpconfig()\n"); - #endif + INT_INFO("FPD IndicatorColors[%p] IndicatorColors_size[%d] Indicators[%p] Indicators_size[%d] TextDisplays[%p] TextDisplays_size[%d]", + configuration.pKFPDIndicatorColors, + indicatorColorSize, + configuration.pKIndicators, + indicatorSize, + configuration.pKTextDisplays, + textDisplaySize); - { - for (size_t i = 0; i < *(configuration.pKFPDIndicatorColors_size); i++) { - _colors.push_back(FrontPanelIndicator::Color(configuration.pKFPDIndicatorColors[i].id)); - } + dumpconfig(&configuration); - for (size_t i = 0; i < *(configuration.pKIndicators_size); i++) { - /* All indicators support a same set of colors */ - _indicators.push_back(FrontPanelIndicator(configuration.pKIndicators[i].id, - configuration.pKIndicators[i].maxBrightness, - configuration.pKIndicators[i].maxCycleRate, - configuration.pKIndicators[i].levels, - configuration.pKIndicators[i].colorMode)); - } + if (( nullptr != configuration.pKFPDIndicatorColors ) && ( nullptr != configuration.pKIndicators)) + { + for (int i = 0; i < indicatorColorSize; i++) { + const dsFPDColorConfig_t* fpdColorCfg = &configuration.pKFPDIndicatorColors[i]; + _colors.push_back(FrontPanelIndicator::Color(fpdColorCfg->id)); } - if(configuration.pKTextDisplays != NULL && configuration.pKTextDisplays_size != NULL) - { - /* - * Create TextDisplays - * 1. Use Supported Colors created for indicators. - * 2. Create Text Displays. - */ - INT_DEBUG("Text Displays \n"); - for (size_t i = 0; i < *(configuration.pKTextDisplays_size); i++) { - _textDisplays.push_back( - FrontPanelTextDisplay(configuration.pKTextDisplays[i].id, - configuration.pKTextDisplays[i].maxBrightness, - configuration.pKTextDisplays[i].maxCycleRate, - configuration.pKTextDisplays[i].levels, - configuration.pKTextDisplays[i].maxHorizontalIterations, - configuration.pKTextDisplays[i].maxVerticalIterations, - configuration.pKTextDisplays[i].supportedCharacters, - configuration.pKTextDisplays[i].colorMode)); + for (int i = 0; i < indicatorSize; i++) { + const dsFPDIndicatorConfig_t* fpdIndicatorCfg = &configuration.pKIndicators[i]; + /* All indicators support a same set of colors */ + _indicators.push_back(FrontPanelIndicator(fpdIndicatorCfg->id, + fpdIndicatorCfg->maxBrightness, + fpdIndicatorCfg->maxCycleRate, + fpdIndicatorCfg->levels, + fpdIndicatorCfg->colorMode)); + } + } + else { + INT_ERROR("No valid indicator configuration found\n"); + } + + if ( nullptr != configuration.pKTextDisplays ) + { + /* + * Create TextDisplays + * 1. Use Supported Colors created for indicators. + * 2. Create Text Displays. + */ + INT_DEBUG("Text Displays \n"); + for (int i = 0; i < textDisplaySize; i++) { + const dsFPDTextDisplayConfig_t* fpdTextDisplayCfg = &configuration.pKTextDisplays[i]; + if (nullptr == fpdTextDisplayCfg->supportedCharacters) { + INT_ERROR("supportedCharacters is NULL at %d, using '%s' string...", i, DEFAULT_FPD_TEXT_DISPLAY_SUPPORTED_CHARACTERS); } + _textDisplays.push_back( + FrontPanelTextDisplay(fpdTextDisplayCfg->id, + fpdTextDisplayCfg->maxBrightness, + fpdTextDisplayCfg->maxCycleRate, + fpdTextDisplayCfg->levels, + fpdTextDisplayCfg->maxHorizontalIterations, + fpdTextDisplayCfg->maxVerticalIterations, + (fpdTextDisplayCfg->supportedCharacters) ? std::string(fpdTextDisplayCfg->supportedCharacters) : std::string(DEFAULT_FPD_TEXT_DISPLAY_SUPPORTED_CHARACTERS), + fpdTextDisplayCfg->colorMode)); } - else - { - INT_ERROR("No valid text display configuration found\n"); - } } - else + else { - INT_ERROR("No valid front panel configuration found\n"); + INT_ERROR("No valid text display configuration found\n"); } m_isFPConfigLoaded = true; - INT_INFO("Exit function\n"); + INT_INFO("Exit function"); return; } diff --git a/ds/frontPanelIndicator.cpp b/ds/frontPanelIndicator.cpp index 7a4d0202..68bae9a9 100644 --- a/ds/frontPanelIndicator.cpp +++ b/ds/frontPanelIndicator.cpp @@ -67,7 +67,6 @@ int stringToNumber (std::string text) return number; } - namespace { const char *_colorNames[] = { "Blue", @@ -100,7 +99,6 @@ namespace { }; - inline bool isIndicatorValid(int id) { return dsFPDIndicator_isValid(id); } diff --git a/ds/hdmiIn.cpp b/ds/hdmiIn.cpp index 514cff14..2e518a14 100755 --- a/ds/hdmiIn.cpp +++ b/ds/hdmiIn.cpp @@ -341,7 +341,7 @@ static std::string getResolutionStr (dsVideoResolution_t resolution) break; } - printf ("%s:%d - ResolutionStr: %s\n", __PRETTY_FUNCTION__,__LINE__, resolutionStr.c_str()); + INT_INFO("ResolutionStr: %s", resolutionStr.c_str()); return resolutionStr; } @@ -412,20 +412,20 @@ static std::string getFrameRateStr (dsVideoFrameRate_t frameRate) break; } - printf ("%s:%d - FrameRateStr: %s\n", __PRETTY_FUNCTION__,__LINE__, FrameRateStr.c_str()); + INT_INFO("FrameRateStr: %s", FrameRateStr.c_str()); return FrameRateStr; } static std::string getInterlacedStr (bool interlaced) { std::string InterlacedStr = (interlaced) ? "i" : "p"; - printf ("%s:%d - InterlacedStr: %s\n", __PRETTY_FUNCTION__,__LINE__, InterlacedStr.c_str()); + INT_INFO("InterlacedStr: %s", InterlacedStr.c_str()); return InterlacedStr; } static std::string CreateResolutionStr (const dsVideoPortResolution_t &resolution) { - printf("%s ---> \n", __PRETTY_FUNCTION__); + INT_INFO("--->"); std::string resolutionStr = getResolutionStr(resolution.pixelResolution); if(resolutionStr.compare("unknown") != 0){ @@ -433,7 +433,7 @@ static std::string CreateResolutionStr (const dsVideoPortResolution_t &resolutio getInterlacedStr(resolution.interlaced) + getFrameRateStr(resolution.frameRate); } - printf ("%s <--- %s\n", __PRETTY_FUNCTION__, resolutionStr.c_str()); + INT_INFO("<--- %s", resolutionStr.c_str()); return resolutionStr; } @@ -461,7 +461,7 @@ std::string HdmiInput::getCurrentVideoMode () const } std::string resolutionStr = CreateResolutionStr (resolution); - printf("%s:%d - Resolution =%s\n", __PRETTY_FUNCTION__,__LINE__, resolutionStr.c_str()); + INT_INFO("Resolution =%s", resolutionStr.c_str()); return resolutionStr; } @@ -478,13 +478,13 @@ void HdmiInput::getCurrentVideoModeObj (dsVideoPortResolution_t& resolution) throw Exception(eError); } - printf("%s:%d - pixelResolution =%d interlaced:%d frameRate:%d\n", __PRETTY_FUNCTION__, __LINE__, resolution.pixelResolution, resolution.interlaced, resolution.frameRate); + INT_INFO("pixelResolution =%d interlaced:%d frameRate:%d", resolution.pixelResolution, resolution.interlaced, resolution.frameRate); } void HdmiInput::getEDIDBytesInfo (int iHdmiPort, std::vector &edidArg) const { - printf("HdmiInput::getEDIDBytesInfo \r\n"); + INT_INFO("HdmiInput::getEDIDBytesInfo"); dsError_t ret = dsERR_NONE; int length = 0; @@ -493,10 +493,10 @@ void HdmiInput::getEDIDBytesInfo (int iHdmiPort, std::vector &edidArg) const char* exceptionstr = ""; ret = dsGetEDIDBytesInfo (static_cast(iHdmiPort), edid, &length); - printf("HdmiInput::getEDIDBytesInfo has ret %d\r\n", ret); + INT_INFO("HdmiInput::getEDIDBytesInfo has ret %d", ret); if (ret == dsERR_NONE) { if (length <= MAX_EDID_BYTES_LEN) { - printf("HdmiInput::getEDIDBytesInfo has %d bytes\r\n", length); + INT_INFO("HdmiInput::getEDIDBytesInfo has %d bytes", length); if (edid_parser::EDID_STATUS_OK == edid_parser::EDID_Verify(edid, length)) { edidArg.clear(); edidArg.insert(edidArg.begin(), edid, edid + length); @@ -518,17 +518,17 @@ void HdmiInput::getEDIDBytesInfo (int iHdmiPort, std::vector &edidArg) } void HdmiInput::getHDMISPDInfo (int iHdmiPort, std::vector &data) { - printf("HdmiInput::getHDMISPDInfo \r\n"); + INT_INFO("HdmiInput::getHDMISPDInfo"); unsigned char spdinfo[sizeof(struct dsSpd_infoframe_st)] = {0}; const char* exceptionstr = ""; dsError_t ret = dsGetHDMISPDInfo (static_cast(iHdmiPort), spdinfo); - printf("HdmiInput::getHDMISPDInfo has ret %d\r\n", ret); + INT_INFO("HdmiInput::getHDMISPDInfo has ret %d", ret); data.clear(); if (ret == dsERR_NONE) { if (sizeof(spdinfo) <= sizeof(struct dsSpd_infoframe_st)) { - printf("HdmiInput::getHDMISPDInfo has %d bytes\r\n", sizeof(spdinfo)); + INT_INFO("HdmiInput::getHDMISPDInfo has %d bytes", sizeof(spdinfo)); data.insert(data.begin(), spdinfo, spdinfo + sizeof(struct dsSpd_infoframe_st)); } else { ret = dsERR_OPERATION_NOT_SUPPORTED; @@ -537,11 +537,11 @@ void HdmiInput::getHDMISPDInfo (int iHdmiPort, std::vector &data) { } else { exceptionstr = "getHDMISPDInfo failed"; } - printf("HdmiInput::getHDMISPDInfo data: \r\n"); + INT_INFO("HdmiInput::getHDMISPDInfo data:"); for (int itr = 0; itr < data.size(); itr++) { printf("%02X ", data[itr]); } - printf("\n"); + INT_INFO(""); if (ret != dsERR_NONE) { throw Exception(ret, exceptionstr); @@ -550,17 +550,17 @@ void HdmiInput::getHDMISPDInfo (int iHdmiPort, std::vector &data) { } void HdmiInput::setEdidVersion (int iHdmiPort, int iEdidVersion) { - printf ("HdmiInput::setEdidVersion \r\n"); + INT_INFO("HdmiInput::setEdidVersion"); dsError_t ret = dsSetEdidVersion (static_cast(iHdmiPort), static_cast(iEdidVersion)); if (ret != dsERR_NONE) { throw Exception(ret); } - printf ("%s:%d - Set EDID Version = %d\n", __PRETTY_FUNCTION__, __LINE__, iEdidVersion); + INT_INFO("Set EDID Version = %d", iEdidVersion); } void HdmiInput::getEdidVersion (int iHdmiPort, int *iEdidVersion) { - printf ("HdmiInput::getEdidVersion \r\n"); + INT_INFO("HdmiInput::getEdidVersion"); tv_hdmi_edid_version_t EdidVersion; dsError_t ret = dsGetEdidVersion (static_cast(iHdmiPort), &EdidVersion); if (ret != dsERR_NONE) @@ -569,7 +569,7 @@ void HdmiInput::getEdidVersion (int iHdmiPort, int *iEdidVersion) { } int tmp = static_cast(EdidVersion); *iEdidVersion = tmp; - printf ("%s:%d - EDID Version = %d\n", __PRETTY_FUNCTION__, __LINE__, *iEdidVersion); + INT_INFO("EDID Version = %d", *iEdidVersion); } void HdmiInput::setVRRSupport(int iHdmiPort, bool vrrSupport) @@ -579,7 +579,7 @@ void HdmiInput::setVRRSupport(int iHdmiPort, bool vrrSupport) { throw Exception(ret); } - printf ("%s:%d - Set VRR Support = %d\n", __PRETTY_FUNCTION__, __LINE__, vrrSupport); + INT_INFO("Set VRR Support = %d", vrrSupport); } void HdmiInput::getVRRSupport (int iHdmiPort, bool *vrrSupport) { @@ -588,7 +588,7 @@ void HdmiInput::getVRRSupport (int iHdmiPort, bool *vrrSupport) { { throw Exception(ret); } - printf ("%s:%d - EDID VRR Support = %d\n", __PRETTY_FUNCTION__, __LINE__, *vrrSupport); + INT_INFO("EDID VRR Support = %d", *vrrSupport); } void HdmiInput::getVRRStatus (int iHdmiPort, dsHdmiInVrrStatus_t *vrrStatus) { @@ -597,17 +597,17 @@ void HdmiInput::getVRRStatus (int iHdmiPort, dsHdmiInVrrStatus_t *vrrStatus) { { throw Exception(ret); } - printf ("%s:%d - VRR Type = %d , VRR FrameRate = %f\n", __FUNCTION__, __LINE__, vrrStatus->vrrType,vrrStatus->vrrAmdfreesyncFramerate_Hz); + INT_INFO("VRR Type = %d , VRR FrameRate = %f", vrrStatus->vrrType,vrrStatus->vrrAmdfreesyncFramerate_Hz); } void HdmiInput::getHdmiALLMStatus (int iHdmiPort, bool *allmStatus) { - printf ("HdmiInput::getHdmiALLMStatus \r\n"); + INT_INFO("HdmiInput::getHdmiALLMStatus"); dsError_t ret = dsGetAllmStatus (static_cast(iHdmiPort), allmStatus); if (ret != dsERR_NONE) { throw Exception(ret); } - printf ("%s:%d - ALLM Status = %d\n", __FUNCTION__, __LINE__, *allmStatus); + INT_INFO("ALLM Status = %d", *allmStatus); } void HdmiInput::getSupportedGameFeatures (std::vector &featureList) { @@ -629,7 +629,7 @@ void HdmiInput::getSupportedGameFeatures (std::vector &featureList) } if(featureList.size() != feList.gameFeatureCount){ - printf ("%s:%d - Number of Supported Game Features in list doesn't match with count from HAL", __FUNCTION__, __LINE__); + INT_ERROR("Number of Supported Game Features in list doesn't match with count from HAL"); throw Exception(dsERR_GENERAL); } } @@ -637,7 +637,7 @@ void HdmiInput::getSupportedGameFeatures (std::vector &featureList) void HdmiInput::getAVLatency (int *audio_output_delay,int *video_latency) { dsError_t ret = dsGetAVLatency (audio_output_delay,video_latency); - printf ("HdmiInput::getHdmiDAL_ - VideoLatency: %d , Audio Latency: %d \r\n",*video_latency,*audio_output_delay); + INT_INFO("VideoLatency: %d , Audio Latency: %d",*video_latency,*audio_output_delay); if (ret != dsERR_NONE) { throw Exception(ret); @@ -646,24 +646,24 @@ void HdmiInput::getAVLatency (int *audio_output_delay,int *video_latency) { void HdmiInput::setEdid2AllmSupport(int iHdmiPort,bool allmSupport) { - printf ("HdmiInput::setEdid2AllmSupport \r\n"); + INT_INFO("HdmiInput::setEdid2AllmSupport"); dsError_t ret = dsSetEdid2AllmSupport (static_cast(iHdmiPort), allmSupport); if (ret != dsERR_NONE) { throw Exception(ret); } - printf ("%s:%d - Set EDID Allm Support = %d\n", __PRETTY_FUNCTION__, __LINE__, allmSupport); + INT_INFO("Set EDID Allm Support = %d", allmSupport); } void HdmiInput::getEdid2AllmSupport (int iHdmiPort, bool *allmSupport) { - printf ("HdmiInput::getEdid2AllmSupport \r\n"); + INT_INFO("HdmiInput::getEdid2AllmSupport"); dsError_t ret = dsGetEdid2AllmSupport (static_cast(iHdmiPort), allmSupport); if (ret != dsERR_NONE) { throw Exception(ret); } - printf ("%s:%d - EDID allm Support = %d\n", __PRETTY_FUNCTION__, __LINE__, *allmSupport); + INT_INFO("EDID allm Support = %d", *allmSupport); } void HdmiInput::getHdmiVersion (int iHdmiPort, dsHdmiMaxCapabilityVersion_t *capversion) { @@ -675,7 +675,7 @@ void HdmiInput::getHdmiVersion (int iHdmiPort, dsHdmiMaxCapabilityVersion_t *cap throw Exception(ret); } - printf ("%s:%d - HDMI Compatibility Version = %d\n", __PRETTY_FUNCTION__, __LINE__, *capversion); + INT_INFO("HDMI Compatibility Version = %d", *capversion); } dsError_t HdmiInput::getHDMIARCPortId(int &portId) { diff --git a/ds/host.cpp b/ds/host.cpp index e2475e14..98d0a071 100644 --- a/ds/host.cpp +++ b/ds/host.cpp @@ -758,7 +758,7 @@ Host::~Host() { throw Exception(ret); } - printf ("%s:%d - Set Audio Mixer levels for audio input: %d with volume = %d\n", __PRETTY_FUNCTION__, __LINE__,aInput, volume); + INT_INFO("Set Audio Mixer levels for audio input: %d with volume = %d",aInput, volume); } DefaultImpl& Host::impl() diff --git a/ds/include/dslogger.h b/ds/include/dslogger.h index e356979d..de8fb822 100644 --- a/ds/include/dslogger.h +++ b/ds/include/dslogger.h @@ -33,12 +33,9 @@ #include "dsregisterlog.h" -int ds_log(int priority, const char* fileName, int lineNum, const char *format, ...); +enum LogLevel {INFO_LEVEL = 0, WARN_LEVEL, ERROR_LEVEL, DEBUG_LEVEL, TRACE_LEVEL}; -#define INFO_LEVEL 0 -#define WARN_LEVEL 1 -#define ERROR_LEVEL 2 -#define DEBUG_LEVEL 3 +int ds_log(LogLevel level, const char* fileName, int lineNum, const char *func, const char *format, ...); // Helper to extract filename from full path // E.g. "/path/to/file.cpp" -> "file.cpp" @@ -52,13 +49,13 @@ static inline const char* fileName(const char* path) { #define DS_LOG_LEVEL ERROR_LEVEL #endif -#define INT_INFO(FORMAT, ...) ds_log(INFO_LEVEL, fileName(__FILE__), __LINE__, FORMAT, ##__VA_ARGS__ ) -#define INT_WARN(FORMAT, ...) ds_log(WARN_LEVEL, fileName(__FILE__), __LINE__, FORMAT, ##__VA_ARGS__ ) -#define INT_ERROR(FORMAT, ...) ds_log(ERROR_LEVEL, fileName(__FILE__), __LINE__, FORMAT, ##__VA_ARGS__ ) +#define INT_INFO(FORMAT, ...) ds_log(INFO_LEVEL, fileName(__FILE__), __LINE__, __FUNCTION__, FORMAT, ##__VA_ARGS__ ) +#define INT_WARN(FORMAT, ...) ds_log(WARN_LEVEL, fileName(__FILE__), __LINE__, __FUNCTION__, FORMAT, ##__VA_ARGS__ ) +#define INT_ERROR(FORMAT, ...) ds_log(ERROR_LEVEL, fileName(__FILE__), __LINE__, __FUNCTION__, FORMAT, ##__VA_ARGS__ ) // conditionally enable debug logs, based on DS_LOG_LEVEL #if DS_LOG_LEVEL >= DEBUG_LEVEL -#define INT_DEBUG(FORMAT, ...) ds_log(DEBUG_LEVEL, fileName(__FILE__), __LINE__, FORMAT, ##__VA_ARGS__ ) +#define INT_DEBUG(FORMAT, ...) ds_log(DEBUG_LEVEL, fileName(__FILE__), __LINE__, __FUNCTION__, FORMAT, ##__VA_ARGS__ ) #else #define INT_DEBUG(FORMAT, ...) ((void)0) #endif diff --git a/ds/include/frontPanelConfig.hpp b/ds/include/frontPanelConfig.hpp index be82ae60..74df3b32 100644 --- a/ds/include/frontPanelConfig.hpp +++ b/ds/include/frontPanelConfig.hpp @@ -44,6 +44,18 @@ */ using namespace std; +typedef struct fpdConfigs +{ + const dsFPDColorConfig_t *pKFPDIndicatorColors; + const dsFPDIndicatorConfig_t *pKIndicators; + const dsFPDTextDisplayConfig_t *pKTextDisplays; + int *pKFPDIndicatorColors_size; + int *pKIndicators_size; + int *pKTextDisplays_size; +}fpdConfigs_t; + +#define DEFAULT_FPD_TEXT_DISPLAY_SUPPORTED_CHARACTERS "ABCEDFG" + namespace device { @@ -84,7 +96,7 @@ class FrontPanelConfig { /* Terminate Front Panel */ void fPTerm(); - void load(void* pDLHandle); + void load(fpdConfigs_t* pDLHandle); }; } diff --git a/ds/include/manager.hpp b/ds/include/manager.hpp index e65ff68f..bcf53014 100644 --- a/ds/include/manager.hpp +++ b/ds/include/manager.hpp @@ -150,6 +150,7 @@ #define _DS_MANAGER_HPP_ #include +#include // for access API using namespace std; @@ -159,8 +160,24 @@ using namespace std; */ namespace device { -// Forward declaration for searchConfigs function -bool searchConfigs(void* pDLHandle, const char *searchConfigStr, void **pConfigVar); +typedef enum DeviceCapabilityTypes { + DEVICE_CAPABILITY_INVALID = 0x00000000, + DEVICE_CAPABILITY_AUDIO_PORT = 0x00000001, + DEVICE_CAPABILITY_VIDEO_PORT = 0x00000002, + DEVICE_CAPABILITY_VIDEO_DEVICE = 0x00000004, + DEVICE_CAPABILITY_FRONT_PANEL = 0x00000008, + DEVICE_CAPABILITY_MAX = 0xFFFFFFFF +} +DeviceCapabilityTypes; + +typedef struct dlSymbolLookup { + const char* name; + void** dataptr; +} +dlSymbolLookup; + +bool LoadDLSymbols(void* pDLHandle, const dlSymbolLookup* symbols, int numberOfSymbols); +void loadDeviceCapabilities(unsigned int capabilityType); /** * @class Manager @@ -174,7 +191,7 @@ class Manager { static void Initialize(); static void DeInitialize(); static void load(); //!< This function is being used for loading configure in-process DSMgr. - static int IsInitialized; //!< Indicates the application has initialized with devicettings modules. + static int IsInitialized; //!< Indicates the application has initialized with devicettings modules. }; } diff --git a/ds/manager.cpp b/ds/manager.cpp index dcad6adf..a5ac1216 100644 --- a/ds/manager.cpp +++ b/ds/manager.cpp @@ -69,51 +69,118 @@ namespace device { int Manager::IsInitialized = 0; //!< Indicates the application has initialized with devicettings modules. static std::mutex gManagerInitMutex; -static std::mutex gDLMutex; -static void* gDLHandle = nullptr; -void* getDLInstance() +bool LoadDLSymbols(void* pDLHandle, const dlSymbolLookup* symbols, int numberOfSymbols) { - std::lock_guard lock(gDLMutex); - dlerror(); // clear old error - if (nullptr == gDLHandle){ - gDLHandle = dlopen(RDK_DSHAL_NAME, RTLD_LAZY); + int currentSymbols = 0; + bool isAllSymbolsLoaded = false; + if ((nullptr == pDLHandle) || (nullptr == symbols)) { + INT_ERROR("Invalid DL Handle or symbolsPtr"); + } + else { + INT_INFO("numberOfSymbols = %d",numberOfSymbols); + for (int i = 0; i < numberOfSymbols; i++) { + if (( nullptr == symbols[i].dataptr) || ( nullptr == symbols[i].name)) { + INT_ERROR("Invalid symbol entry at index [%d]", i); + continue; + } + *(symbols[i].dataptr) = dlsym(pDLHandle, symbols[i].name); + if (nullptr == *(symbols[i].dataptr)) { + INT_ERROR("[%s] is not defined", symbols[i].name); + } + else { + currentSymbols++; + INT_INFO("[%s] is defined and loaded, data[%p]", symbols[i].name, *(symbols[i].dataptr)); + } + } + isAllSymbolsLoaded = (numberOfSymbols) ? (currentSymbols == numberOfSymbols) : false; } - INT_INFO("%d:%s: DL Instance '%s'\n", __LINE__, __func__, (nullptr == gDLHandle ? "NULL" : "Valid")); - return gDLHandle; + return isAllSymbolsLoaded; } -void releaseDLInstance() +void loadDeviceCapabilities(unsigned int capabilityType) { - std::lock_guard lock(gDLMutex); - if (nullptr != gDLHandle) { - dlclose(gDLHandle); - gDLHandle = nullptr; + void* pDLHandle = nullptr; + bool isSymbolsLoaded = false; + + INT_INFO("Entering capabilityType = 0x%08X", capabilityType); + dlerror(); // clear old error + pDLHandle = dlopen(RDK_DSHAL_NAME, RTLD_LAZY); + INT_INFO("DL Instance '%s'", (nullptr == pDLHandle ? "NULL" : "Valid")); + + // Audio Port Config + if (DEVICE_CAPABILITY_AUDIO_PORT & capabilityType) { + audioConfigs_t dynamicAudioConfigs = {0 }; + dlSymbolLookup audioConfigSymbols[] = { + {"kAudioConfigs", (void**)&dynamicAudioConfigs.pKConfigs}, + {"kAudioPorts", (void**)&dynamicAudioConfigs.pKPorts}, + {"kAudioConfigs_size", (void**)&dynamicAudioConfigs.pKConfigSize}, + {"kAudioPorts_size", (void**)&dynamicAudioConfigs.pKPortSize} + }; + + isSymbolsLoaded = false; + if (nullptr != pDLHandle) { + isSymbolsLoaded = LoadDLSymbols(pDLHandle, audioConfigSymbols, sizeof(audioConfigSymbols)/sizeof(dlSymbolLookup)); + } + AudioOutputPortConfig::getInstance().load(isSymbolsLoaded ? &dynamicAudioConfigs : nullptr); } -} -bool searchConfigs(void* pDLHandle, const char *searchConfigStr, void **pConfigVar) -{ - bool returnValue = false; - INT_INFO("%d:%s: Entering function\n", __LINE__, __func__); - if ((nullptr == searchConfigStr) || (nullptr == pConfigVar) || (nullptr == pDLHandle)) { - INT_ERROR("%d:%s: Invalid parameters passed\n", __LINE__, __func__); + // Video Port Config + if (DEVICE_CAPABILITY_VIDEO_PORT & capabilityType) { + videoPortConfigs_t dynamicVideoPortConfigs = {0}; + dlSymbolLookup videoPortConfigSymbols[] = { + {"kVideoPortConfigs", (void**)&dynamicVideoPortConfigs.pKConfigs}, + {"kVideoPortConfigs_size", (void**)&dynamicVideoPortConfigs.pKVideoPortConfigs_size}, + {"kVideoPortPorts", (void**)&dynamicVideoPortConfigs.pKPorts}, + {"kVideoPortPorts_size", (void**)&dynamicVideoPortConfigs.pKVideoPortPorts_size}, + {"kResolutionsSettings", (void**)&dynamicVideoPortConfigs.pKResolutionsSettings}, + {"kResolutionsSettings_size", (void**)&dynamicVideoPortConfigs.pKResolutionsSettings_size} + }; + + isSymbolsLoaded = false; + if (nullptr != pDLHandle) { + isSymbolsLoaded = LoadDLSymbols(pDLHandle, videoPortConfigSymbols, sizeof(videoPortConfigSymbols)/sizeof(dlSymbolLookup)); + } + VideoOutputPortConfig::getInstance().load(isSymbolsLoaded ? &dynamicVideoPortConfigs : nullptr); } - else { - INT_INFO("%d:%s: searchConfigStr = %s\n", __LINE__, __func__, searchConfigStr); - INT_INFO("%d:%s: RDK_DSHAL_NAME = %s\n", __LINE__, __func__, RDK_DSHAL_NAME); - *pConfigVar = (void *) dlsym(pDLHandle, searchConfigStr); - if (*pConfigVar != NULL) { - INT_INFO("%s is defined and loaded pConfigVar= %p\r\n", searchConfigStr, *pConfigVar); - returnValue = true; + // Video Device Config + if (DEVICE_CAPABILITY_VIDEO_DEVICE & capabilityType) { + videoDeviceConfig_t dynamicVideoDeviceConfigs = {0}; + dlSymbolLookup videoDeviceConfigSymbols[] = { + {"kVideoDeviceConfigs", (void**)&dynamicVideoDeviceConfigs.pKVideoDeviceConfigs}, + {"kVideoDeviceConfigs_size", (void**)&dynamicVideoDeviceConfigs.pKVideoDeviceConfigs_size} + }; + isSymbolsLoaded = false; + if (nullptr != pDLHandle) { + isSymbolsLoaded = LoadDLSymbols(pDLHandle, videoDeviceConfigSymbols, sizeof(videoDeviceConfigSymbols)/sizeof(dlSymbolLookup)); } - else { - INT_ERROR("%d:%s: %s is not defined\n", __LINE__, __func__, searchConfigStr); + VideoDeviceConfig::getInstance().load(isSymbolsLoaded ? &dynamicVideoDeviceConfigs : nullptr); + } + + // Front Panel Config + if (DEVICE_CAPABILITY_FRONT_PANEL & capabilityType) { + fpdConfigs_t dynamicFPDConfigs = {0}; + dlSymbolLookup fpdConfigSymbols[] = { + {"kFPDIndicatorColors", (void**)&dynamicFPDConfigs.pKFPDIndicatorColors}, + {"kFPDIndicatorColors_size", (void**)&dynamicFPDConfigs.pKFPDIndicatorColors_size}, + {"kIndicators", (void**)&dynamicFPDConfigs.pKIndicators}, + {"kIndicators_size", (void**)&dynamicFPDConfigs.pKIndicators_size}, + {"kFPDTextDisplays", (void**)&dynamicFPDConfigs.pKTextDisplays}, + {"kFPDTextDisplays_size", (void**)&dynamicFPDConfigs.pKTextDisplays_size} + }; + isSymbolsLoaded = false; + if (nullptr != pDLHandle) { + isSymbolsLoaded = LoadDLSymbols(pDLHandle, fpdConfigSymbols, sizeof(fpdConfigSymbols)/sizeof(dlSymbolLookup)); } + FrontPanelConfig::getInstance().load(isSymbolsLoaded ? &dynamicFPDConfigs : nullptr); } - INT_INFO("%d:%s: Exit function\n", __LINE__, __func__); - return returnValue; + + if (nullptr != pDLHandle) { + dlclose(pDLHandle); + pDLHandle = nullptr; + } + INT_INFO("Exiting ..."); } Manager::Manager() { @@ -160,7 +227,7 @@ void Manager::Initialize() { {std::lock_guard lock(gManagerInitMutex); - printf("Entering %s count %d with thread id %lu\n",__FUNCTION__,IsInitialized,pthread_self()); + INT_INFO("Entering ... count %d with thread id %lu\n",IsInitialized,pthread_self()); try { if (0 == IsInitialized) { @@ -174,7 +241,7 @@ void Manager::Initialize() // That's why the retry logic is applied only for dsDisplayInit. do { err = dsDisplayInit(); - printf ("Manager::Initialize: result :%d retryCount :%d\n", err, retryCount); + INT_INFO("dsDisplayInit returned %d, retryCount %d", err, retryCount); if (dsERR_NONE == err) break; usleep(100000); } while(( dsERR_INVALID_STATE == err) && (retryCount++ < 25)); @@ -185,14 +252,11 @@ void Manager::Initialize() CHECK_RET_VAL(err); err = dsVideoDeviceInit(); CHECK_RET_VAL(err); - void* pDLHandle = getDLInstance(); - AudioOutputPortConfig::getInstance().load(pDLHandle); - VideoOutputPortConfig::getInstance().load(pDLHandle); - VideoDeviceConfig::getInstance().load(pDLHandle); - FrontPanelConfig::getInstance().load(pDLHandle); - if ( nullptr != pDLHandle ) { - releaseDLInstance(); - } + + loadDeviceCapabilities(device::DEVICE_CAPABILITY_VIDEO_PORT | + device::DEVICE_CAPABILITY_AUDIO_PORT | + device::DEVICE_CAPABILITY_VIDEO_DEVICE | + device::DEVICE_CAPABILITY_FRONT_PANEL); } IsInitialized++; } @@ -201,20 +265,16 @@ void Manager::Initialize() throw e; } } - printf("Exiting %s with thread %lu\n",__FUNCTION__,pthread_self()); + INT_INFO("Exiting ... with thread id %lu",pthread_self()); } void Manager::load() { - printf("%d:%s load start\n", __LINE__, __FUNCTION__); - void* pDLHandle = getDLInstance(); - device::AudioOutputPortConfig::getInstance().load(pDLHandle); - device::VideoOutputPortConfig::getInstance().load(pDLHandle); - device::VideoDeviceConfig::getInstance().load(pDLHandle); - if ( nullptr != pDLHandle ) { - releaseDLInstance(); - } - printf("%d:%s load completed\n", __LINE__, __FUNCTION__); + INT_INFO("Enter function"); + loadDeviceCapabilities( device::DEVICE_CAPABILITY_VIDEO_PORT | + device::DEVICE_CAPABILITY_AUDIO_PORT | + device::DEVICE_CAPABILITY_VIDEO_DEVICE); + INT_INFO("Exit function"); } /** @@ -239,7 +299,7 @@ void Manager::load() void Manager::DeInitialize() { {std::lock_guard lock(gManagerInitMutex); - printf("Entering %s count %d with thread id: %lu\n",__FUNCTION__,IsInitialized,pthread_self()); + INT_INFO("Entering ... count %d with thread id %lu",IsInitialized,pthread_self()); if(IsInitialized>0)IsInitialized--; if (0 == IsInitialized) { @@ -253,8 +313,7 @@ void Manager::DeInitialize() dsDisplayTerm(); } } - printf("Exiting %s with thread %lu\n",__FUNCTION__,pthread_self()); - + INT_INFO("Exiting ... with thread %lu",pthread_self()); } } diff --git a/ds/videoDeviceConfig.cpp b/ds/videoDeviceConfig.cpp index 055ad2a9..102e805b 100644 --- a/ds/videoDeviceConfig.cpp +++ b/ds/videoDeviceConfig.cpp @@ -88,45 +88,46 @@ VideoDFC & VideoDeviceConfig::getDefaultDFC() return _vDFCs.back(); } - -void dumpconfig(dsVideoConfig_t *pKVideoDeviceConfigs, int videoDeviceConfigs_size) +void dumpconfig(videoDeviceConfig_t *config) { - INT_INFO("%d:%s: Entering function\n", __LINE__, __func__); + if (nullptr == config) { + INT_ERROR("Video config is NULL"); + return; + } + if ( -1 == access("/opt/dsMgrDumpDeviceConfigs", F_OK) ) { + INT_INFO("Dumping of Device configs is disabled"); + return; + } - INT_INFO("\n\n=========================================================================================================================\n\n"); - if(pKVideoDeviceConfigs != NULL && videoDeviceConfigs_size != -1) + INT_INFO("\n\n=========================================================================================================================\n\n"); + INT_INFO("Starting to Dump VideoDevice Configs"); + if( nullptr != config->pKVideoDeviceConfigs ) { - INT_INFO("%d:%s: pKVideoDeviceConfigs = %p\n", __LINE__, __func__, pKVideoDeviceConfigs); - INT_INFO("%d:%s: videoDeviceConfigs_size = %d\n", __LINE__, __func__, videoDeviceConfigs_size); - for (int i = 0; i < videoDeviceConfigs_size; i++) { - INT_INFO("pKVideoDeviceConfigs[%d].numSupportedDFCs = %lu\n ", i, pKVideoDeviceConfigs[i].numSupportedDFCs); - for (int j = 0; j < pKVideoDeviceConfigs[i].numSupportedDFCs; j++) { - INT_INFO(" Address of pKVideoDeviceConfigs[%d].supportedDFCs[%d] = %d", i, j, pKVideoDeviceConfigs[i].supportedDFCs[j]); + int configSize = (config->pKVideoDeviceConfigs_size) ? *(config->pKVideoDeviceConfigs_size) : -1; + INT_INFO("pKVideoDeviceConfigs = %p", config->pKVideoDeviceConfigs); + INT_INFO("videoDeviceConfigs_size = %d", configSize); + for (int i = 0; i < configSize; i++) { + dsVideoConfig_t* videoDeviceConfig = &config->pKVideoDeviceConfigs[i]; + INT_INFO("pKVideoDeviceConfigs[%d].numSupportedDFCs = %lu ", i, videoDeviceConfig->numSupportedDFCs); + for (int j = 0; j < videoDeviceConfig->numSupportedDFCs; j++) { + INT_INFO(" Address of pKVideoDeviceConfigs[%d].supportedDFCs[%d] = %d", i, j, videoDeviceConfig->supportedDFCs[j]); } } } else { - INT_ERROR("%d:%s: kVideoDeviceConfigs is NULL and videoDeviceConfigs_size is -1\n", __LINE__, __func__); + INT_ERROR(" kVideoDeviceConfigs is NULL"); } - + INT_INFO("Dump VideoDevice Configs done"); INT_INFO("\n\n=========================================================================================================================\n\n"); - INT_INFO("%d:%s: Exit function\n", __LINE__, __func__); } -typedef struct videoDeviceConfig -{ - dsVideoConfig_t *pKVideoDeviceConfigs; - int *pKVideoDeviceConfigs_size; -}videoDeviceConfig_t; - -void VideoDeviceConfig::load(void* pDLHandle) +void VideoDeviceConfig::load(videoDeviceConfig_t* dynamicVideoDeviceConfigs) { - int configSize, invalid_size = -1; - static videoDeviceConfig_t videoDeviceConfig = {0}; - bool isDynamicConfigLoad = false; + int configSize = -1; + videoDeviceConfig_t configuration = {0}; - INT_INFO("Enter function\n"); + INT_INFO("Enter function"); /* * Load Constants First. */ @@ -134,61 +135,41 @@ void VideoDeviceConfig::load(void* pDLHandle) _vDFCs.push_back(VideoDFC(i)); } - if ( nullptr != pDLHandle ) + INT_INFO("Using '%s' config", dynamicVideoDeviceConfigs ? "dynamic" : "static"); + if ( nullptr != dynamicVideoDeviceConfigs ) { - const char* searchVaribles[] = { - "kVideoDeviceConfigs", - "kVideoDeviceConfigs_size", - }; - bool ret = false; - - INT_INFO("%d:%s: Using dynamic library handle for config loading\n", __LINE__, __func__); - INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[0]); - ret = searchConfigs(pDLHandle, searchVaribles[0], (void **)&(videoDeviceConfig.pKVideoDeviceConfigs)); - if(ret == true) - { - // Considering Dynamic config loading is enabled since 1st symbol got - isDynamicConfigLoad = true; - INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[1]); - ret = searchConfigs(pDLHandle, searchVaribles[1], (void **)&(videoDeviceConfig.pKVideoDeviceConfigs_size)); - if(ret == false) - { - INT_ERROR("%s is not defined\n", searchVaribles[1]); - videoDeviceConfig.pKVideoDeviceConfigs_size = &invalid_size; - } - } + configuration = *dynamicVideoDeviceConfigs; + configSize = (configuration.pKVideoDeviceConfigs_size) ? *(configuration.pKVideoDeviceConfigs_size) : -1; } - - if ( false == isDynamicConfigLoad) - { - INT_INFO("Read Old Configs\n"); - videoDeviceConfig.pKVideoDeviceConfigs = (dsVideoConfig_t *)kConfigs; + else { + configuration.pKVideoDeviceConfigs = (dsVideoConfig_t *)kConfigs; configSize = dsUTL_DIM(kConfigs); - videoDeviceConfig.pKVideoDeviceConfigs_size = &configSize; - } + configuration.pKVideoDeviceConfigs_size = &configSize; + } + + INT_INFO("VideoDevice Config[%p] ConfigSize[%d]", configuration.pKVideoDeviceConfigs, configSize); + + dumpconfig(&configuration); /* * Initialize Video Devices (supported DFCs etc.) */ - if (videoDeviceConfig.pKVideoDeviceConfigs != NULL && videoDeviceConfig.pKVideoDeviceConfigs_size != NULL) + if ( nullptr != configuration.pKVideoDeviceConfigs ) { - #if DEBUG - dumpconfig(videoDeviceConfig.pKVideoDeviceConfigs, *(videoDeviceConfig.pKVideoDeviceConfigs_size)); - //INT_INFO("disable the dumpconfig()\n"); - #endif - for (size_t i = 0; i < *(videoDeviceConfig.pKVideoDeviceConfigs_size); i++) { - _vDevices.push_back(VideoDevice(i)); - - for (size_t j = 0; j < videoDeviceConfig.pKVideoDeviceConfigs[i].numSupportedDFCs; j++) { - _vDevices.at(i).addDFC(VideoDFC::getInstance(videoDeviceConfig.pKVideoDeviceConfigs[i].supportedDFCs[j])); + for (size_t i = 0; i < configSize; i++) { + dsVideoConfig_t* videoDeviceCfg = &configuration.pKVideoDeviceConfigs[i]; + _vDevices.push_back(VideoDevice(i)); + + for (size_t j = 0; j < videoDeviceCfg->numSupportedDFCs; j++) { + _vDevices.at(i).addDFC(VideoDFC::getInstance(videoDeviceCfg->supportedDFCs[j])); } } } else { - INT_ERROR("%d:%s: Congigs are NULL and config size are -1\n", __LINE__, __func__); + INT_ERROR(" Configs are NULL and config size are -1"); } - INT_INFO("Exit function\n"); + INT_INFO("Exit function"); } void VideoDeviceConfig::release() diff --git a/ds/videoDeviceConfig.hpp b/ds/videoDeviceConfig.hpp index 0673c9e3..71a42a96 100644 --- a/ds/videoDeviceConfig.hpp +++ b/ds/videoDeviceConfig.hpp @@ -35,6 +35,12 @@ #include "videoDevice.hpp" #include +typedef struct videoDeviceConfig +{ + dsVideoConfig_t *pKVideoDeviceConfigs; + int *pKVideoDeviceConfigs_size; +}videoDeviceConfig_t; + namespace device { class VideoDeviceConfig { @@ -55,7 +61,7 @@ class VideoDeviceConfig { VideoDFC & getDFC(int id); VideoDFC & getDefaultDFC(); - void load(void* pDLHandle); + void load(videoDeviceConfig_t* pDLHandle); void release(); }; diff --git a/ds/videoOutputPort.cpp b/ds/videoOutputPort.cpp index c77aa5c4..a5b29674 100644 --- a/ds/videoOutputPort.cpp +++ b/ds/videoOutputPort.cpp @@ -128,7 +128,7 @@ VideoOutputPort::VideoOutputPort(const int type, const int index, const int id, _resolution(resolution), _display(*this) { - dsError_t ret = dsGetVideoPort((dsVideoPortType_t)_type, _index, &_handle); + dsError_t ret = dsGetVideoPort((dsVideoPortType_t)_type, _index, &_handle); { std::stringstream out; @@ -138,25 +138,25 @@ VideoOutputPort::VideoOutputPort(const int type, const int index, const int id, if (ret == dsERR_NONE) { bool enabled = false; - ret = dsIsVideoPortEnabled(_handle, &enabled); + ret = dsIsVideoPortEnabled(_handle, &enabled); if (ret == dsERR_NONE) { _enabled = enabled; _contentProtected = false; bool connected = false; - ret = dsIsDisplayConnected(_handle, &connected); + ret = dsIsDisplayConnected(_handle, &connected); if (ret == dsERR_NONE) { - _displayConnected = connected; + _displayConnected = connected; } else { - throw IllegalArgumentException(); + throw IllegalArgumentException(); } } else { } } else { - throw IllegalArgumentException(); + throw IllegalArgumentException(); } } @@ -465,7 +465,7 @@ bool VideoOutputPort::isDynamicResolutionSupported() const */ void VideoOutputPort::setResolution(const std::string &resolutionName, bool persist/* = true*/, bool isIgnoreEdid/* = false*/) { - printf("ResOverride VideoOutputPort::setResolution resolutionName:%s persist:%d isIgnoreEdid:%d line:%d\r\n", resolutionName.c_str(), persist, isIgnoreEdid, __LINE__); + INT_INFO("ResOverride VideoOutputPort::setResolution resolutionName:%s persist:%d isIgnoreEdid:%d", resolutionName.c_str(), persist, isIgnoreEdid); if (0 && resolutionName.compare(_resolution) == 0) { return; } diff --git a/ds/videoOutputPortConfig.cpp b/ds/videoOutputPortConfig.cpp index 0010ba63..12cb54a8 100644 --- a/ds/videoOutputPortConfig.cpp +++ b/ds/videoOutputPortConfig.cpp @@ -53,16 +53,6 @@ using namespace std; #define DEBUG 1 // Using for dumpconfig -typedef struct videoPortConfigs -{ - const dsVideoPortTypeConfig_t *pKConfigs; - int *pKVideoPortConfigs_size; - const dsVideoPortPortConfig_t *pKPorts; - int *pKVideoPortPorts_size; - dsVideoPortResolution_t *pKResolutionsSettings; - int *pKResolutionsSettings_size; -}videoPortConfigs_t; - namespace device { static VideoResolution* defaultVideoResolution; @@ -279,237 +269,200 @@ List VideoOutputPortConfig::getSupportedResolutions(bool isIgn void dumpconfig(videoPortConfigs_t *config) { - INT_INFO("%d:%s: Entering function\n", __LINE__, __func__); - INT_INFO("\n\n=========================================================================================================================\n\n"); - if(config->pKConfigs != NULL && *(config->pKVideoPortConfigs_size) != -1 && - config->pKPorts != NULL && *(config->pKVideoPortPorts_size) != -1 && - config->pKResolutionsSettings != NULL && *(config->pKResolutionsSettings_size) != -1 ) - { - INT_INFO("\n\n####################################################################### \n\n"); - INT_INFO("%d:%s: Dumping Resolutions Settings\n", __LINE__, __func__); - INT_INFO("%d:%s: pKConfigs = %p\n", __LINE__, __func__, config->pKConfigs); - INT_INFO("%d:%s: pKConfigSize pointer %p = %d\n", __LINE__, __func__, config->pKVideoPortConfigs_size, *(config->pKVideoPortConfigs_size)); - INT_INFO("%d:%s: pKPorts = %p\n", __LINE__, __func__, config->pKPorts); - INT_INFO("%d:%s: pKPortSize pointer %p = %d\n", __LINE__, __func__, config->pKVideoPortPorts_size, *(config->pKVideoPortPorts_size)); - INT_INFO("%d:%s: pKResolutionsSettings = %p\n", __LINE__, __func__, config->pKResolutionsSettings); - INT_INFO("%d:%s: pKResolutionsSettingsSize pointer %p = %d\n", __LINE__, __func__, config->pKResolutionsSettings_size, *(config->pKResolutionsSettings_size)); - - for (size_t i = 0; i < *(config->pKResolutionsSettings_size); i++) { - dsVideoPortResolution_t *resolution = &(config->pKResolutionsSettings[i]); - INT_INFO("%d:%s: resolution->name = %s\n", __LINE__, __func__, resolution->name); - INT_INFO("%d:%s: resolution->pixelResolution= %d\n", __LINE__, __func__, resolution->pixelResolution); - INT_INFO("%d:%s: resolution->aspectRatio= %d\n", __LINE__, __func__, resolution->aspectRatio); - INT_INFO("%d:%s: resolution->stereoScopicMode= %d\n", __LINE__, __func__, resolution->stereoScopicMode); - INT_INFO("%d:%s: resolution->frameRate= %d\n", __LINE__, __func__, resolution->frameRate); - INT_INFO("%d:%s: resolution->interlaced= %d\n", __LINE__, __func__, resolution->interlaced); - - } - INT_INFO("\n\n####################################################################### \n\n"); - INT_INFO("\n\n####################################################################### \n\n"); - INT_INFO("%d:%s: Dumping Video Port Configurations\n", __LINE__, __func__); - for (size_t i = 0; i < *(config->pKVideoPortConfigs_size); i++) - { - const dsVideoPortTypeConfig_t *typeCfg = &(config->pKConfigs[i]); - - INT_INFO("%d:%s: typeCfg->typeId = %d\n", __LINE__, __func__, typeCfg->typeId); - INT_INFO("%d:%s: typeCfg->name = %s\n", __LINE__, __func__, typeCfg->name); - INT_INFO("%d:%s: typeCfg->dtcpSupported= %d\n", __LINE__, __func__, typeCfg->dtcpSupported); - INT_INFO("%d:%s: typeCfg->hdcpSupported = %d\n", __LINE__, __func__, typeCfg->hdcpSupported); - INT_INFO("%d:%s: typeCfg->restrictedResollution = %d\n", __LINE__, __func__, typeCfg->restrictedResollution); - INT_INFO("%d:%s: typeCfg->numSupportedResolutions= %lu\n", __LINE__, __func__, typeCfg->numSupportedResolutions); - - INT_INFO("%d:%s: typeCfg->supportedResolutions = %p\n", __LINE__, __func__, typeCfg->supportedResolutions); - INT_INFO("%d:%s: typeCfg->supportedResolutions->name = %s\n", __LINE__, __func__, typeCfg->supportedResolutions->name); - INT_INFO("%d:%s: typeCfg->supportedResolutions->pixelResolution= %d\n", __LINE__, __func__, typeCfg->supportedResolutions->pixelResolution); - INT_INFO("%d:%s: typeCfg->supportedResolutions->aspectRatio= %d\n", __LINE__, __func__, typeCfg->supportedResolutions->aspectRatio); - INT_INFO("%d:%s: typeCfg->supportedResolutions->stereoScopicMode= %d\n", __LINE__, __func__, typeCfg->supportedResolutions->stereoScopicMode); - INT_INFO("%d:%s: typeCfg->supportedResolutions->frameRate= %d\n", __LINE__, __func__, typeCfg->supportedResolutions->frameRate); - INT_INFO("%d:%s: typeCfg->supportedResolutions->interlaced= %d\n", __LINE__, __func__, typeCfg->supportedResolutions->interlaced); - } - INT_INFO("\n\n####################################################################### \n\n"); - - INT_INFO("\n\n####################################################################### \n\n"); - INT_INFO("%d:%s: Dumping Video Port Connections\n", __LINE__, __func__); - for (size_t i = 0; i < *(config->pKVideoPortPorts_size); i++) { - const dsVideoPortPortConfig_t *port = &(config->pKPorts[i]); - INT_INFO("%d:%s: port->id.type = %d\n", __LINE__, __func__, port->id.type); - INT_INFO("%d:%s: port->id.index = %d\n", __LINE__, __func__, port->id.index); - INT_INFO("%d:%s: port->connectedAOP.type = %d\n", __LINE__, __func__, port->connectedAOP.type); - INT_INFO("%d:%s: port->connectedAOP.index = %d\n", __LINE__, __func__, port->connectedAOP.index); - INT_INFO("%d:%s: port->defaultResolution = %s\n", __LINE__, __func__, port->defaultResolution); - } - INT_INFO("\n\n####################################################################### \n\n"); - } - else - { - INT_ERROR("%d:%s: pKConfigs or pKPorts or pKResolutionsSettings is NULL, and pKVideoPortConfigs_size or pKVideoPortPorts_size or pKResolutionsSettings_size is -1\n", __LINE__, __func__); - } - INT_INFO("\n\n=========================================================================================================================\n\n"); - INT_INFO("%d:%s: Exit function\n", __LINE__, __func__); + if (nullptr == config) { + INT_ERROR("Video config is NULL"); + return; + } + if ( -1 == access("/opt/dsMgrDumpDeviceConfigs", F_OK) ) { + INT_INFO("Dumping of Device configs is disabled"); + return; + } + INT_INFO("\n\n=========================================================================================================================\n\n"); + INT_INFO("Starting to Dump VideoPort Configs"); + int configSize = -1, portSize = -1, resolutionSize = -1; + if (( nullptr != config->pKConfigs ) && ( nullptr != config->pKPorts ) && ( nullptr != config->pKResolutionsSettings )) + { + configSize = (config->pKVideoPortConfigs_size) ? *(config->pKVideoPortConfigs_size) : -1; + portSize = (config->pKVideoPortPorts_size) ? *(config->pKVideoPortPorts_size) : -1; + resolutionSize = (config->pKResolutionsSettings_size) ? *(config->pKResolutionsSettings_size) : -1; + INT_INFO("pKConfigs = %p", config->pKConfigs); + INT_INFO("pKConfigSize pointer %p = %d", config->pKVideoPortConfigs_size, configSize); + INT_INFO("pKPorts = %p", config->pKPorts); + INT_INFO("pKPortSize pointer %p = %d", config->pKVideoPortPorts_size, portSize); + INT_INFO("pKResolutionsSettings = %p", config->pKResolutionsSettings); + INT_INFO("pKResolutionsSettingsSize pointer %p = %d", config->pKResolutionsSettings_size, resolutionSize); + + INT_INFO("\n\n####################################################################### \n\n"); + INT_INFO("Dumping Video Resolutions Settings"); + for (size_t i = 0; i < resolutionSize; i++) { + dsVideoPortResolution_t *resolution = &(config->pKResolutionsSettings[i]); + INT_INFO("resolution->name = %s", (resolution->name) ? resolution->name : "NULL"); + INT_INFO("resolution->pixelResolution= %d", resolution->pixelResolution); + INT_INFO("resolution->aspectRatio= %d", resolution->aspectRatio); + INT_INFO("resolution->stereoScopicMode= %d", resolution->stereoScopicMode); + INT_INFO("resolution->frameRate= %d", resolution->frameRate); + INT_INFO("resolution->interlaced= %d", resolution->interlaced); + } + INT_INFO("\n\n####################################################################### \n\n"); + INT_INFO("\n\n####################################################################### \n\n"); + INT_INFO("Dumping Video Port Configurations"); + for (size_t i = 0; i < configSize; i++) + { + const dsVideoPortTypeConfig_t *typeCfg = &(config->pKConfigs[i]); + INT_INFO("typeCfg->typeId = %d", typeCfg->typeId); + INT_INFO("typeCfg->name = %s", (typeCfg->name) ? typeCfg->name : "NULL"); + INT_INFO("typeCfg->dtcpSupported= %d", typeCfg->dtcpSupported); + INT_INFO("typeCfg->hdcpSupported = %d", typeCfg->hdcpSupported); + INT_INFO("typeCfg->restrictedResollution = %d", typeCfg->restrictedResollution); + INT_INFO("typeCfg->numSupportedResolutions= %lu", typeCfg->numSupportedResolutions); + + INT_INFO("typeCfg->supportedResolutions = %p", typeCfg->supportedResolutions); + INT_INFO("typeCfg->supportedResolutions->name = %s", (typeCfg->supportedResolutions->name) ? typeCfg->supportedResolutions->name : "NULL"); + INT_INFO("typeCfg->supportedResolutions->pixelResolution= %d", typeCfg->supportedResolutions->pixelResolution); + INT_INFO("typeCfg->supportedResolutions->aspectRatio= %d", typeCfg->supportedResolutions->aspectRatio); + INT_INFO("typeCfg->supportedResolutions->stereoScopicMode= %d", typeCfg->supportedResolutions->stereoScopicMode); + INT_INFO("typeCfg->supportedResolutions->frameRate= %d", typeCfg->supportedResolutions->frameRate); + INT_INFO("typeCfg->supportedResolutions->interlaced= %d", typeCfg->supportedResolutions->interlaced); + } + INT_INFO("\n\n####################################################################### \n\n"); + + INT_INFO("\n\n####################################################################### \n\n"); + INT_INFO("Dumping Video Port Connections"); + for (size_t i = 0; i < portSize; i++) { + const dsVideoPortPortConfig_t *portCfg = &(config->pKPorts[i]); + INT_INFO("portCfg->id.type = %d", portCfg->id.type); + INT_INFO("portCfg->id.index = %d", portCfg->id.index); + INT_INFO("portCfg->connectedAOP.type = %d", portCfg->connectedAOP.type); + INT_INFO("portCfg->connectedAOP.index = %d", portCfg->connectedAOP.index); + INT_INFO("portCfg->defaultResolution = %s", (portCfg->defaultResolution) ? portCfg->defaultResolution : "NULL"); + } + INT_INFO("\n\n####################################################################### \n\n"); + } + else + { + INT_ERROR("pKConfigs or pKPorts or pKResolutionsSettings is NULL"); + } + INT_INFO("Dump VideoPort Configs done"); + INT_INFO("\n\n=========================================================================================================================\n\n"); + INT_INFO("Exit function"); } -void VideoOutputPortConfig::load(void* pDLHandle) +void VideoOutputPortConfig::load(videoPortConfigs_t* dynamicVideoPortConfigs) { - static int configSize, portSize, resolutionSize, invalid_size = -1; - static videoPortConfigs_t configuration = {0}; - bool isDynamicConfigLoad = false; + int configSize, portSize, resolutionSize; + videoPortConfigs_t configuration = {0}; + + INT_INFO("Enter function"); + try { + /* + * Load Constants First. + */ + for (size_t i = 0; i < dsVIDEO_PIXELRES_MAX; i++) { + _vPixelResolutions.push_back(PixelResolution(i)); + } + for (size_t i = 0; i < dsVIDEO_ASPECT_RATIO_MAX; i++) { + _vAspectRatios.push_back(AspectRatio(i)); + } + for (size_t i = 0; i < dsVIDEO_SSMODE_MAX; i++) { + _vStereoScopieModes.push_back(StereoScopicMode(i)); + } + for (size_t i = 0; i < dsVIDEO_FRAMERATE_MAX; i++) { + _vFrameRates.push_back(FrameRate((int)i)); + } - INT_INFO("Enter function\n"); - try { - /* - * Load Constants First. - */ - for (size_t i = 0; i < dsVIDEO_PIXELRES_MAX; i++) { - _vPixelResolutions.push_back(PixelResolution(i)); - } - for (size_t i = 0; i < dsVIDEO_ASPECT_RATIO_MAX; i++) { - _vAspectRatios.push_back(AspectRatio(i)); - } - for (size_t i = 0; i < dsVIDEO_SSMODE_MAX; i++) { - _vStereoScopieModes.push_back(StereoScopicMode(i)); - } - for (size_t i = 0; i < dsVIDEO_FRAMERATE_MAX; i++) { - _vFrameRates.push_back(FrameRate((int)i)); - } + for (size_t i = 0; i < dsVIDEOPORT_TYPE_MAX; i++) { + _vPortTypes.push_back(VideoOutputPortType((int)i)); + } - for (size_t i = 0; i < dsVIDEOPORT_TYPE_MAX; i++) { - _vPortTypes.push_back(VideoOutputPortType((int)i)); - } + INT_INFO("Using '%s' config", dynamicVideoPortConfigs ? "dynamic" : "static"); + if ( nullptr != dynamicVideoPortConfigs ) + { + configuration = *dynamicVideoPortConfigs; + configSize = (configuration.pKVideoPortConfigs_size) ? *(configuration.pKVideoPortConfigs_size) : -1; + portSize = (configuration.pKVideoPortPorts_size) ? *(configuration.pKVideoPortPorts_size) : -1; + resolutionSize = (configuration.pKResolutionsSettings_size) ? *(configuration.pKResolutionsSettings_size) : -1; + } + else { + configuration.pKConfigs = kConfigs; + configSize = dsUTL_DIM(kConfigs); + configuration.pKVideoPortConfigs_size = &configSize; + configuration.pKPorts = kPorts; + portSize = dsUTL_DIM(kPorts); + configuration.pKVideoPortPorts_size = &portSize; + configuration.pKResolutionsSettings = kResolutions; + resolutionSize = dsUTL_DIM(kResolutions); + configuration.pKResolutionsSettings_size = &resolutionSize; + } - if (nullptr != pDLHandle) { - const char* searchVaribles[] = { - "kVideoPortConfigs", - "kVideoPortConfigs_size", - "kVideoPortPorts", - "kVideoPortPorts_size", - "kResolutionsSettings", - "kResolutionsSettings_size" - }; - bool ret = false; - - INT_INFO("%d:%s: Using dynamic library handle for config loading\n", __LINE__, __func__); - INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[0]); - ret = searchConfigs(pDLHandle, searchVaribles[0], (void **)&configuration.pKConfigs); - if(ret == true) - { - // Considering Dynamic config loading is enabled since 1st symbol got - isDynamicConfigLoad = true; - INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[1]); - ret = searchConfigs(pDLHandle, searchVaribles[1], (void **)&configuration.pKVideoPortConfigs_size); - if(ret == false) - { - INT_ERROR("%s is not defined\n", searchVaribles[1]); - configuration.pKVideoPortConfigs_size = &invalid_size; - } - INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[2]); - ret = searchConfigs(pDLHandle, searchVaribles[2], (void **)&configuration.pKPorts); - if(ret == false) - { - INT_ERROR("%s is not defined\n", searchVaribles[2]); - } - INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[3]); - ret = searchConfigs(pDLHandle, searchVaribles[3], (void **)&configuration.pKVideoPortPorts_size); - if(ret == false) - { - INT_ERROR("%s is not defined\n", searchVaribles[3]); - configuration.pKVideoPortPorts_size = &invalid_size; - } - // Resolutions - ret = searchConfigs(pDLHandle, searchVaribles[4], (void **)&configuration.pKResolutionsSettings); - if(ret == false) - { - INT_ERROR("%s is not defined\n", searchVaribles[4]); - } - INT_INFO("%d:%s: Calling searchConfigs( %s)\n", __LINE__, __func__, searchVaribles[5]); - ret = searchConfigs(pDLHandle, searchVaribles[5], (void **)&configuration.pKResolutionsSettings_size); - if(ret == false) - { - INT_ERROR("%s is not defined\n", searchVaribles[5]); - configuration.pKResolutionsSettings_size = &invalid_size; + INT_INFO("VideoPort Config[%p] ConfigSize[%d] Port[%p] PortSize[%d] Resolutions[%p] ResolutionsSize[%d]", + configuration.pKConfigs, + configSize, + configuration.pKPorts, + portSize, + configuration.pKResolutionsSettings, + resolutionSize); + + dumpconfig(&configuration); + + if (( nullptr != configuration.pKConfigs ) && ( nullptr != configuration.pKPorts) && ( nullptr != configuration.pKResolutionsSettings)) + { + /* Initialize a set of supported resolutions */ + for (int i = 0; i < resolutionSize; i++) { + dsVideoPortResolution_t *resolution = &(configuration.pKResolutionsSettings[i]); + {std::lock_guard lock(gSupportedResolutionsMutex); + if (nullptr == resolution->name) { + INT_ERROR("resolution name is NULL at %d, using empty string...", i); + } + _supportedResolutions.push_back( + VideoResolution( + i, /* id */ + (resolution->name) ? std::string(resolution->name) : std::string(""), + resolution->pixelResolution, + resolution->aspectRatio, + resolution->stereoScopicMode, + resolution->frameRate, + resolution->interlaced)); } } - } - - if ( false == isDynamicConfigLoad ) - { - INT_INFO("%d:%s: Using OLD config loading\n", __LINE__, __func__); - configuration.pKConfigs = kConfigs; - configSize = dsUTL_DIM(kConfigs); - configuration.pKVideoPortConfigs_size = &configSize; - configuration.pKPorts = kPorts; - portSize = dsUTL_DIM(kPorts); - configuration.pKVideoPortPorts_size = &portSize; - configuration.pKResolutionsSettings = kResolutions; - resolutionSize = dsUTL_DIM(kResolutions); - configuration.pKResolutionsSettings_size = &resolutionSize; - INT_INFO("configuration.pKConfigs =%p, *(configuration.pKVideoPortConfigs_size) = %d\n", configuration.pKConfigs, *(configuration.pKVideoPortConfigs_size)); - INT_INFO("configuration.pKPorts =%p, *(configuration.pKVideoPortPorts_size) = %d\n", configuration.pKPorts, *(configuration.pKVideoPortPorts_size)); - INT_INFO("configuration.pKResolutionsSettings =%p, *(configuration.pKResolutionsSettings_size) = %d\n", configuration.pKResolutionsSettings, *(configuration.pKResolutionsSettings_size)); - } - - if((configuration.pKConfigs != NULL) && (configuration.pKVideoPortConfigs_size != NULL) && - (configuration.pKPorts != NULL) && (configuration.pKVideoPortPorts_size != NULL) && - (configuration.pKResolutionsSettings != NULL) && (configuration.pKResolutionsSettings_size != NULL)) - { - dumpconfig(&configuration); - /* Initialize a set of supported resolutions - * - */ - for (size_t i = 0; i < *(configuration.pKResolutionsSettings_size); i++) { - dsVideoPortResolution_t *resolution = &(configuration.pKResolutionsSettings[i]); - {std::lock_guard lock(gSupportedResolutionsMutex); - _supportedResolutions.push_back( - VideoResolution( - i, /* id */ - std::string(resolution->name), - resolution->pixelResolution, - resolution->aspectRatio, - resolution->stereoScopicMode, - resolution->frameRate, - resolution->interlaced)); - } - } - - - /* - * Initialize Video portTypes (Only Enable POrts) - * and its port instances (curr resolution) - */ - for (size_t i = 0; i < *(configuration.pKVideoPortConfigs_size); i++) - { - const dsVideoPortTypeConfig_t *typeCfg = &(configuration.pKConfigs[i]); - VideoOutputPortType &vPortType = VideoOutputPortType::getInstance(typeCfg->typeId); - vPortType.enable(); - vPortType.setRestrictedResolution(typeCfg->restrictedResollution); - } - - /* - * set up ports based on kPorts[] - */ - for (size_t i = 0; i < *(configuration.pKVideoPortPorts_size); i++) { - const dsVideoPortPortConfig_t *port = &(configuration.pKPorts[i]); - _vPorts.push_back( - VideoOutputPort((port->id.type), port->id.index, i, - AudioOutputPortType::getInstance(configuration.pKPorts[i].connectedAOP.type).getPort(configuration.pKPorts[i].connectedAOP.index).getId(), - std::string(port->defaultResolution))); - - _vPortTypes.at(port->id.type).addPort(_vPorts.at(i)); + /* + * Initialize Video portTypes (Only Enable POrts) + * and its port instances (curr resolution) + */ + for (int i = 0; i < configSize; i++) + { + const dsVideoPortTypeConfig_t *typeCfg = &(configuration.pKConfigs[i]); + VideoOutputPortType &vPortType = VideoOutputPortType::getInstance(typeCfg->typeId); + vPortType.enable(); + vPortType.setRestrictedResolution(typeCfg->restrictedResollution); + } - } - } - else - { - cout << "Video Outport Configs or Ports or Resolutions is NULL. ..."<defaultResolution) { + INT_ERROR("defaultResolution is NULL at %d, using empty string...", i); + } + _vPorts.push_back( + VideoOutputPort((portCfg->id.type), portCfg->id.index, i, + AudioOutputPortType::getInstance(portCfg->connectedAOP.type).getPort(portCfg->connectedAOP.index).getId(), + (portCfg->defaultResolution) ? std::string(portCfg->defaultResolution) : std::string(""))); + _vPortTypes.at(portCfg->id.type).addPort(_vPorts.at(i)); + } + } + else + { + cout << "Video Outport Configs or Ports or Resolutions is NULL. ..."< #include +typedef struct videoPortConfigs +{ + const dsVideoPortTypeConfig_t *pKConfigs; + int *pKVideoPortConfigs_size; + const dsVideoPortPortConfig_t *pKPorts; + int *pKVideoPortPorts_size; + dsVideoPortResolution_t *pKResolutionsSettings; + int *pKResolutionsSettings_size; +}videoPortConfigs_t; + namespace device { class VideoOutputPortConfig { @@ -74,7 +80,7 @@ class VideoOutputPortConfig { List getSupportedTypes(); List getSupportedResolutions(bool isIgnoreEdid=false); - void load(void* pDLHandle); + void load(videoPortConfigs_t* pDLHandle); void release(); }; diff --git a/sample/dsMgr-test.c b/sample/dsMgr-test.c deleted file mode 100644 index 467a75ec..00000000 --- a/sample/dsMgr-test.c +++ /dev/null @@ -1,31 +0,0 @@ - -#include -#include -#include -#include -#include "exception.hpp" -#include "host.hpp" -#include "manager.hpp" - - -int main(int argc, char *argv[]) -{ - printf("%d:%s: enter\n", __LINE__, __func__); - try { - device::Manager::Initialize(); - } catch (const device::Exception& e) { - printf("Exception caught %s", e.what()); - } catch (const std::exception& e) { - printf("Exception caught %s", e.what()); - } catch (...) { - printf("Exception caught unknown"); - } - printf("%d:%s: Exit\n", __LINE__, __func__); - return 0; -} - - - - -/** @} */ -/** @} */ From 01776ad723ae8d894cca5fb5b831b37b8d08e154 Mon Sep 17 00:00:00 2001 From: yuvaramachandran_gurusamy Date: Fri, 12 Dec 2025 22:57:34 +0000 Subject: [PATCH 37/39] RDKEMW-8587: Fixed the coverity issues Signed-off-by: yuvaramachandran_gurusamy --- ds/audioOutputPortConfig.cpp | 10 +++++----- ds/videoDeviceConfig.cpp | 4 ++-- ds/videoOutputPortConfig.cpp | 16 ++++++---------- 3 files changed, 13 insertions(+), 17 deletions(-) diff --git a/ds/audioOutputPortConfig.cpp b/ds/audioOutputPortConfig.cpp index 66da8072..cac37ac4 100644 --- a/ds/audioOutputPortConfig.cpp +++ b/ds/audioOutputPortConfig.cpp @@ -228,21 +228,21 @@ void AudioOutputPortConfig::load(audioConfigs_t* dynamicAudioConfigs) * Initialize Audio portTypes (encodings, compressions etc.) * and its port instances (db, level etc) */ - for (size_t i = 0; i < configSize; i++) { + for (int i = 0; i < configSize; i++) { const dsAudioTypeConfig_t *typeCfg = &(configuration.pKConfigs[i]); AudioOutputPortType &aPortType = AudioOutputPortType::getInstance(typeCfg->typeId); aPortType.enable(); - for (size_t j = 0; j < typeCfg->numSupportedEncodings; j++) { + for (int j = 0; j < typeCfg->numSupportedEncodings; j++) { const dsAudioEncoding_t* encoding = &typeCfg->encodings[j]; aPortType.addEncoding(AudioEncoding::getInstance(*encoding)); _aEncodings.at(*encoding).enable(); } - for (size_t j = 0; j < typeCfg->numSupportedCompressions; j++) { + for (int j = 0; j < typeCfg->numSupportedCompressions; j++) { const dsAudioCompression_t* compression = &typeCfg->compressions[j]; aPortType.addCompression(*compression); _aCompressions.at(*compression).enable(); } - for (size_t j = 0; j < typeCfg->numSupportedStereoModes; j++) { + for (int j = 0; j < typeCfg->numSupportedStereoModes; j++) { const dsAudioStereoMode_t *stereoMode = &typeCfg->stereoModes[j]; aPortType.addStereoMode(*stereoMode); _aStereoModes.at(*stereoMode).enable(); @@ -252,7 +252,7 @@ void AudioOutputPortConfig::load(audioConfigs_t* dynamicAudioConfigs) /* * set up ports based on kPorts[] */ - for (size_t i = 0; i < portSize; i++) { + for (int i = 0; i < portSize; i++) { const dsAudioPortConfig_t *portCfg = &configuration.pKPorts[i]; _aPorts.push_back(AudioOutputPort((portCfg->id.type), portCfg->id.index, i)); _aPortTypes.at(portCfg->id.type).addPort(_aPorts.at(i)); diff --git a/ds/videoDeviceConfig.cpp b/ds/videoDeviceConfig.cpp index 102e805b..290aa6cb 100644 --- a/ds/videoDeviceConfig.cpp +++ b/ds/videoDeviceConfig.cpp @@ -156,11 +156,11 @@ void VideoDeviceConfig::load(videoDeviceConfig_t* dynamicVideoDeviceConfigs) */ if ( nullptr != configuration.pKVideoDeviceConfigs ) { - for (size_t i = 0; i < configSize; i++) { + for (int i = 0; i < configSize; i++) { dsVideoConfig_t* videoDeviceCfg = &configuration.pKVideoDeviceConfigs[i]; _vDevices.push_back(VideoDevice(i)); - for (size_t j = 0; j < videoDeviceCfg->numSupportedDFCs; j++) { + for (int j = 0; j < videoDeviceCfg->numSupportedDFCs; j++) { _vDevices.at(i).addDFC(VideoDFC::getInstance(videoDeviceCfg->supportedDFCs[j])); } } diff --git a/ds/videoOutputPortConfig.cpp b/ds/videoOutputPortConfig.cpp index 12cb54a8..9d27bd33 100644 --- a/ds/videoOutputPortConfig.cpp +++ b/ds/videoOutputPortConfig.cpp @@ -294,9 +294,9 @@ void dumpconfig(videoPortConfigs_t *config) INT_INFO("\n\n####################################################################### \n\n"); INT_INFO("Dumping Video Resolutions Settings"); - for (size_t i = 0; i < resolutionSize; i++) { + for (int i = 0; i < resolutionSize; i++) { dsVideoPortResolution_t *resolution = &(config->pKResolutionsSettings[i]); - INT_INFO("resolution->name = %s", (resolution->name) ? resolution->name : "NULL"); + INT_INFO("resolution->name = %s", resolution->name); INT_INFO("resolution->pixelResolution= %d", resolution->pixelResolution); INT_INFO("resolution->aspectRatio= %d", resolution->aspectRatio); INT_INFO("resolution->stereoScopicMode= %d", resolution->stereoScopicMode); @@ -306,7 +306,7 @@ void dumpconfig(videoPortConfigs_t *config) INT_INFO("\n\n####################################################################### \n\n"); INT_INFO("\n\n####################################################################### \n\n"); INT_INFO("Dumping Video Port Configurations"); - for (size_t i = 0; i < configSize; i++) + for (int i = 0; i < configSize; i++) { const dsVideoPortTypeConfig_t *typeCfg = &(config->pKConfigs[i]); INT_INFO("typeCfg->typeId = %d", typeCfg->typeId); @@ -328,7 +328,7 @@ void dumpconfig(videoPortConfigs_t *config) INT_INFO("\n\n####################################################################### \n\n"); INT_INFO("Dumping Video Port Connections"); - for (size_t i = 0; i < portSize; i++) { + for (int i = 0; i < portSize; i++) { const dsVideoPortPortConfig_t *portCfg = &(config->pKPorts[i]); INT_INFO("portCfg->id.type = %d", portCfg->id.type); INT_INFO("portCfg->id.index = %d", portCfg->id.index); @@ -369,7 +369,6 @@ void VideoOutputPortConfig::load(videoPortConfigs_t* dynamicVideoPortConfigs) for (size_t i = 0; i < dsVIDEO_FRAMERATE_MAX; i++) { _vFrameRates.push_back(FrameRate((int)i)); } - for (size_t i = 0; i < dsVIDEOPORT_TYPE_MAX; i++) { _vPortTypes.push_back(VideoOutputPortType((int)i)); } @@ -410,13 +409,10 @@ void VideoOutputPortConfig::load(videoPortConfigs_t* dynamicVideoPortConfigs) for (int i = 0; i < resolutionSize; i++) { dsVideoPortResolution_t *resolution = &(configuration.pKResolutionsSettings[i]); {std::lock_guard lock(gSupportedResolutionsMutex); - if (nullptr == resolution->name) { - INT_ERROR("resolution name is NULL at %d, using empty string...", i); - } _supportedResolutions.push_back( VideoResolution( i, /* id */ - (resolution->name) ? std::string(resolution->name) : std::string(""), + std::string(resolution->name), resolution->pixelResolution, resolution->aspectRatio, resolution->stereoScopicMode, @@ -440,7 +436,7 @@ void VideoOutputPortConfig::load(videoPortConfigs_t* dynamicVideoPortConfigs) /* * set up ports based on kPorts[] */ - for (size_t i = 0; i < portSize; i++) { + for (int i = 0; i < portSize; i++) { const dsVideoPortPortConfig_t *portCfg = &(configuration.pKPorts[i]); if (nullptr == portCfg->defaultResolution) { INT_ERROR("defaultResolution is NULL at %d, using empty string...", i); From 17564c6ae5d706496b14a50618ec4111543c164a Mon Sep 17 00:00:00 2001 From: grandhi_santoshkumar Date: Tue, 16 Dec 2025 11:48:58 +0000 Subject: [PATCH 38/39] RDKEMW-8587: consume the config variables using dlsym() in MW. Reason for change: Address review comments. Test Procedure: refer RDKEMW-8587 Risks: High Signed-off-by:gsanto722 --- ds/audioOutputPortConfig.cpp | 9 ++++----- ds/frontPanelConfig.cpp | 15 ++++++--------- ds/manager.cpp | 3 ++- ds/videoDeviceConfig.cpp | 10 +++++----- ds/videoOutputPortConfig.cpp | 21 ++++++++++----------- 5 files changed, 27 insertions(+), 31 deletions(-) diff --git a/ds/audioOutputPortConfig.cpp b/ds/audioOutputPortConfig.cpp index cac37ac4..d163e43b 100644 --- a/ds/audioOutputPortConfig.cpp +++ b/ds/audioOutputPortConfig.cpp @@ -122,8 +122,7 @@ void dumpconfig(audioConfigs_t *config) } int configSize = -1, portSize = -1; - INT_INFO("\n\n=========================================================================================================================\n\n"); - INT_INFO("Starting to Dump Audio Configs"); + INT_INFO("\n\n====================================== Starting to Dump Audio Configs ===================================================================================\n\n"); if( nullptr != config->pKConfigs ) { configSize = (config->pKConfigSize) ? *(config->pKConfigSize) : -1; @@ -162,13 +161,13 @@ void dumpconfig(audioConfigs_t *config) { INT_ERROR("kAudioPorts is NULL"); } - INT_INFO("Dump Audio Configs done"); - INT_INFO("\n\n=========================================================================================================================\n\n"); + + INT_INFO("\n\n=================================================== Dump Audio Configs done ======================================================================\n\n"); } void AudioOutputPortConfig::load(audioConfigs_t* dynamicAudioConfigs) { - int configSize = -1, portSize = -1; + static int configSize = -1, portSize = -1; audioConfigs_t configuration = {0}; INT_INFO("Enter function"); diff --git a/ds/frontPanelConfig.cpp b/ds/frontPanelConfig.cpp index c2feec6a..dcff37ee 100644 --- a/ds/frontPanelConfig.cpp +++ b/ds/frontPanelConfig.cpp @@ -43,8 +43,6 @@ #include "dslogger.h" #include "manager.hpp" -#define DEBUG 1 // Using for dumpconfig - using namespace std; namespace device { @@ -353,10 +351,10 @@ void dumpconfig(fpdConfigs_t *configuration) } int indicatorSize = -1; int indicatorColorSize = -1; - int textDisplaySize = (configuration->pKTextDisplays_size) ? *(configuration->pKTextDisplays_size) : -1; + // Dump the configuration details - INT_INFO("\n\n===========================================================================\n\n"); - INT_INFO("Starting to Dump FrontPanel Configs"); + INT_INFO("\n\n================================== Starting to Dump FrontPanel Configs =========================================\n\n"); + if (( nullptr != configuration->pKFPDIndicatorColors) && ( nullptr != configuration->pKIndicators)) { int indicatorSize = (configuration->pKIndicators_size) ? *(configuration->pKIndicators_size) : -1; @@ -394,15 +392,14 @@ void dumpconfig(fpdConfigs_t *configuration) fpdTextDisplayCfg->levels, fpdTextDisplayCfg->maxHorizontalIterations, fpdTextDisplayCfg->maxVerticalIterations, - (fpdTextDisplayCfg->supportedCharacters) ? fpdTextDisplayCfg->supportedCharacters : "NULL", + (fpdTextDisplayCfg->supportedCharacters) ? fpdTextDisplayCfg->supportedCharacters : DEFAULT_FPD_TEXT_DISPLAY_SUPPORTED_CHARACTERS, fpdTextDisplayCfg->colorMode); } } else { INT_INFO(" No Text Displays configured."); } - INT_INFO("Dump FrontPanel Configs done"); - INT_INFO("\n\n===========================================================================\n\n"); + INT_INFO("\n\n================================== Dump FrontPanel Configs done =========================================\n\n"); } /** @@ -419,7 +416,7 @@ void FrontPanelConfig::load(fpdConfigs_t* dynamicFPDConfigs) * 1. Create Supported Colors. * 2. Create Indicators. */ - int indicatorSize, indicatorColorSize, textDisplaySize; + static int indicatorSize, indicatorColorSize, textDisplaySize; fpdConfigs_t configuration = {0}; INT_INFO("Enter function"); if (( false == m_isFPInitialized) || (true == m_isFPConfigLoaded)) { diff --git a/ds/manager.cpp b/ds/manager.cpp index a5ac1216..d8ecc85f 100644 --- a/ds/manager.cpp +++ b/ds/manager.cpp @@ -273,7 +273,8 @@ void Manager::load() INT_INFO("Enter function"); loadDeviceCapabilities( device::DEVICE_CAPABILITY_VIDEO_PORT | device::DEVICE_CAPABILITY_AUDIO_PORT | - device::DEVICE_CAPABILITY_VIDEO_DEVICE); + device::DEVICE_CAPABILITY_VIDEO_DEVICE | + device::DEVICE_CAPABILITY_FRONT_PANEL); INT_INFO("Exit function"); } diff --git a/ds/videoDeviceConfig.cpp b/ds/videoDeviceConfig.cpp index 290aa6cb..4a36dba1 100644 --- a/ds/videoDeviceConfig.cpp +++ b/ds/videoDeviceConfig.cpp @@ -99,8 +99,8 @@ void dumpconfig(videoDeviceConfig_t *config) return; } - INT_INFO("\n\n=========================================================================================================================\n\n"); - INT_INFO("Starting to Dump VideoDevice Configs"); + INT_INFO("\n\n============================================== Starting to Dump VideoDevice Configs ===========================================================================\n\n"); + if( nullptr != config->pKVideoDeviceConfigs ) { int configSize = (config->pKVideoDeviceConfigs_size) ? *(config->pKVideoDeviceConfigs_size) : -1; @@ -118,13 +118,13 @@ void dumpconfig(videoDeviceConfig_t *config) { INT_ERROR(" kVideoDeviceConfigs is NULL"); } - INT_INFO("Dump VideoDevice Configs done"); - INT_INFO("\n\n=========================================================================================================================\n\n"); + + INT_INFO("\n\n===================================== Dump VideoDevice Configs done ====================================================================================\n\n"); } void VideoDeviceConfig::load(videoDeviceConfig_t* dynamicVideoDeviceConfigs) { - int configSize = -1; + static int configSize = -1; videoDeviceConfig_t configuration = {0}; INT_INFO("Enter function"); diff --git a/ds/videoOutputPortConfig.cpp b/ds/videoOutputPortConfig.cpp index 9d27bd33..4c35b1e5 100644 --- a/ds/videoOutputPortConfig.cpp +++ b/ds/videoOutputPortConfig.cpp @@ -277,8 +277,8 @@ void dumpconfig(videoPortConfigs_t *config) INT_INFO("Dumping of Device configs is disabled"); return; } - INT_INFO("\n\n=========================================================================================================================\n\n"); - INT_INFO("Starting to Dump VideoPort Configs"); + INT_INFO("\n\n============================================== Starting to Dump VideoPort Configs ===========================================================================\n\n"); + int configSize = -1, portSize = -1, resolutionSize = -1; if (( nullptr != config->pKConfigs ) && ( nullptr != config->pKPorts ) && ( nullptr != config->pKResolutionsSettings )) { @@ -292,8 +292,8 @@ void dumpconfig(videoPortConfigs_t *config) INT_INFO("pKResolutionsSettings = %p", config->pKResolutionsSettings); INT_INFO("pKResolutionsSettingsSize pointer %p = %d", config->pKResolutionsSettings_size, resolutionSize); - INT_INFO("\n\n####################################################################### \n\n"); - INT_INFO("Dumping Video Resolutions Settings"); + INT_INFO("\n\n################################# Dumping Video Resolutions Settings ###################################### \n\n"); + for (int i = 0; i < resolutionSize; i++) { dsVideoPortResolution_t *resolution = &(config->pKResolutionsSettings[i]); INT_INFO("resolution->name = %s", resolution->name); @@ -304,8 +304,8 @@ void dumpconfig(videoPortConfigs_t *config) INT_INFO("resolution->interlaced= %d", resolution->interlaced); } INT_INFO("\n\n####################################################################### \n\n"); - INT_INFO("\n\n####################################################################### \n\n"); - INT_INFO("Dumping Video Port Configurations"); + INT_INFO("\n\n################################ Dumping Video Port Configurations ####################################### \n\n"); + for (int i = 0; i < configSize; i++) { const dsVideoPortTypeConfig_t *typeCfg = &(config->pKConfigs[i]); @@ -326,8 +326,8 @@ void dumpconfig(videoPortConfigs_t *config) } INT_INFO("\n\n####################################################################### \n\n"); - INT_INFO("\n\n####################################################################### \n\n"); - INT_INFO("Dumping Video Port Connections"); + INT_INFO("\n\n################################## Dumping Video Port Connections ##################################### \n\n"); + for (int i = 0; i < portSize; i++) { const dsVideoPortPortConfig_t *portCfg = &(config->pKPorts[i]); INT_INFO("portCfg->id.type = %d", portCfg->id.type); @@ -342,14 +342,13 @@ void dumpconfig(videoPortConfigs_t *config) { INT_ERROR("pKConfigs or pKPorts or pKResolutionsSettings is NULL"); } - INT_INFO("Dump VideoPort Configs done"); - INT_INFO("\n\n=========================================================================================================================\n\n"); + INT_INFO("\n\n============================================= Dump VideoPort Configs done ============================================================================\n\n"); INT_INFO("Exit function"); } void VideoOutputPortConfig::load(videoPortConfigs_t* dynamicVideoPortConfigs) { - int configSize, portSize, resolutionSize; + static int configSize, portSize, resolutionSize; videoPortConfigs_t configuration = {0}; INT_INFO("Enter function"); From b8cdf9991c6129ebbebf0434836fe6c563d5b257 Mon Sep 17 00:00:00 2001 From: grandhi_santoshkumar Date: Tue, 16 Dec 2025 16:46:06 +0000 Subject: [PATCH 39/39] RDKEMW-8587: consume the config variables using dlsym() in MW. Reason for change: Addressed review comments. Test Procedure: refer RDKEMW-8587 Risks: High Signed-off-by:gsanto722 --- ds/audioOutputPortConfig.cpp | 13 +++---------- ds/audioOutputPortConfig.hpp | 2 +- ds/frontPanelConfig.cpp | 10 +++------- ds/include/frontPanelConfig.hpp | 2 +- ds/manager.cpp | 3 +-- ds/videoDeviceConfig.cpp | 6 +++--- ds/videoDeviceConfig.hpp | 2 +- ds/videoOutputPortConfig.cpp | 19 +++++++------------ ds/videoOutputPortConfig.hpp | 2 +- 9 files changed, 21 insertions(+), 38 deletions(-) diff --git a/ds/audioOutputPortConfig.cpp b/ds/audioOutputPortConfig.cpp index d163e43b..aab6d682 100644 --- a/ds/audioOutputPortConfig.cpp +++ b/ds/audioOutputPortConfig.cpp @@ -122,14 +122,10 @@ void dumpconfig(audioConfigs_t *config) } int configSize = -1, portSize = -1; - INT_INFO("\n\n====================================== Starting to Dump Audio Configs ===================================================================================\n\n"); + INT_INFO("\n=============== Starting to Dump Audio Configs ===============\n"); if( nullptr != config->pKConfigs ) { configSize = (config->pKConfigSize) ? *(config->pKConfigSize) : -1; - INT_INFO("pKConfigs = %p", config->pKConfigs); - INT_INFO("pKPorts = %p", config->pKPorts); - INT_INFO("pKConfigSize addr =%p ", config->pKConfigSize); - INT_INFO("pKConfigSize value = %d ", configSize); for (int i = 0; i < configSize; i++) { const dsAudioTypeConfig_t *typeCfg = &(config->pKConfigs[i]); @@ -148,9 +144,6 @@ void dumpconfig(audioConfigs_t *config) if( nullptr != config->pKPorts ) { portSize = (config->pKPortSize) ? *(config->pKPortSize) : -1; - INT_INFO("pKPorts = %p", config->pKPorts); - INT_INFO("pKPortSize addr = %p ", config->pKPortSize); - INT_INFO("pKPortSize value = %d ", portSize); for (int i = 0; i < portSize; i++) { const dsAudioPortConfig_t *portCfg = &(config->pKPorts[i]); INT_INFO("portCfg->id.type = %d", portCfg->id.type); @@ -162,12 +155,12 @@ void dumpconfig(audioConfigs_t *config) INT_ERROR("kAudioPorts is NULL"); } - INT_INFO("\n\n=================================================== Dump Audio Configs done ======================================================================\n\n"); + INT_INFO("\n=============== Dump Audio Configs done ===============\n"); } void AudioOutputPortConfig::load(audioConfigs_t* dynamicAudioConfigs) { - static int configSize = -1, portSize = -1; + int configSize = -1, portSize = -1; audioConfigs_t configuration = {0}; INT_INFO("Enter function"); diff --git a/ds/audioOutputPortConfig.hpp b/ds/audioOutputPortConfig.hpp index b4a1acb3..54db385a 100644 --- a/ds/audioOutputPortConfig.hpp +++ b/ds/audioOutputPortConfig.hpp @@ -74,7 +74,7 @@ class AudioOutputPortConfig { List getPorts(); List getSupportedTypes(); - void load(audioConfigs_t* pDLHandle); + void load(audioConfigs_t* dynamicAudioConfigs); void release(); }; diff --git a/ds/frontPanelConfig.cpp b/ds/frontPanelConfig.cpp index dcff37ee..5d4d1030 100644 --- a/ds/frontPanelConfig.cpp +++ b/ds/frontPanelConfig.cpp @@ -353,17 +353,13 @@ void dumpconfig(fpdConfigs_t *configuration) int indicatorColorSize = -1; // Dump the configuration details - INT_INFO("\n\n================================== Starting to Dump FrontPanel Configs =========================================\n\n"); + INT_INFO("\n=============== Starting to Dump FrontPanel Configs ===============\n"); if (( nullptr != configuration->pKFPDIndicatorColors) && ( nullptr != configuration->pKIndicators)) { int indicatorSize = (configuration->pKIndicators_size) ? *(configuration->pKIndicators_size) : -1; int indicatorColorSize = (configuration->pKFPDIndicatorColors_size) ? *(configuration->pKFPDIndicatorColors_size) : -1; - INT_INFO("configuration->pKFPDIndicatorColors_size addr: %p", (configuration->pKFPDIndicatorColors_size)); - INT_INFO("configuration->pKFPDIndicatorColors_size data: %d", indicatorColorSize); - INT_INFO("configuration->pKIndicators_size addr: %p", (configuration->pKIndicators_size)); - INT_INFO("configuration->pKIndicators_size data: %d", indicatorSize); for (int i = 0; i < indicatorColorSize; i++) { const dsFPDColorConfig_t* fpdColorCfg = &configuration->pKFPDIndicatorColors[i]; INT_INFO(" Color ID: %d, color: %d", fpdColorCfg->id, fpdColorCfg->color); @@ -399,7 +395,7 @@ void dumpconfig(fpdConfigs_t *configuration) else { INT_INFO(" No Text Displays configured."); } - INT_INFO("\n\n================================== Dump FrontPanel Configs done =========================================\n\n"); + INT_INFO("\n=============== Dump FrontPanel Configs done ===============\n"); } /** @@ -416,7 +412,7 @@ void FrontPanelConfig::load(fpdConfigs_t* dynamicFPDConfigs) * 1. Create Supported Colors. * 2. Create Indicators. */ - static int indicatorSize, indicatorColorSize, textDisplaySize; + int indicatorSize, indicatorColorSize, textDisplaySize; fpdConfigs_t configuration = {0}; INT_INFO("Enter function"); if (( false == m_isFPInitialized) || (true == m_isFPConfigLoaded)) { diff --git a/ds/include/frontPanelConfig.hpp b/ds/include/frontPanelConfig.hpp index 74df3b32..a85d4c0f 100644 --- a/ds/include/frontPanelConfig.hpp +++ b/ds/include/frontPanelConfig.hpp @@ -96,7 +96,7 @@ class FrontPanelConfig { /* Terminate Front Panel */ void fPTerm(); - void load(fpdConfigs_t* pDLHandle); + void load(fpdConfigs_t* dynamicFPDConfigs); }; } diff --git a/ds/manager.cpp b/ds/manager.cpp index d8ecc85f..a5ac1216 100644 --- a/ds/manager.cpp +++ b/ds/manager.cpp @@ -273,8 +273,7 @@ void Manager::load() INT_INFO("Enter function"); loadDeviceCapabilities( device::DEVICE_CAPABILITY_VIDEO_PORT | device::DEVICE_CAPABILITY_AUDIO_PORT | - device::DEVICE_CAPABILITY_VIDEO_DEVICE | - device::DEVICE_CAPABILITY_FRONT_PANEL); + device::DEVICE_CAPABILITY_VIDEO_DEVICE); INT_INFO("Exit function"); } diff --git a/ds/videoDeviceConfig.cpp b/ds/videoDeviceConfig.cpp index 4a36dba1..fab33f59 100644 --- a/ds/videoDeviceConfig.cpp +++ b/ds/videoDeviceConfig.cpp @@ -99,7 +99,7 @@ void dumpconfig(videoDeviceConfig_t *config) return; } - INT_INFO("\n\n============================================== Starting to Dump VideoDevice Configs ===========================================================================\n\n"); + INT_INFO("\n=============== Starting to Dump VideoDevice Configs ===============\n"); if( nullptr != config->pKVideoDeviceConfigs ) { @@ -119,12 +119,12 @@ void dumpconfig(videoDeviceConfig_t *config) INT_ERROR(" kVideoDeviceConfigs is NULL"); } - INT_INFO("\n\n===================================== Dump VideoDevice Configs done ====================================================================================\n\n"); + INT_INFO("\n=============== Dump VideoDevice Configs done ===============\n"); } void VideoDeviceConfig::load(videoDeviceConfig_t* dynamicVideoDeviceConfigs) { - static int configSize = -1; + int configSize = -1; videoDeviceConfig_t configuration = {0}; INT_INFO("Enter function"); diff --git a/ds/videoDeviceConfig.hpp b/ds/videoDeviceConfig.hpp index 71a42a96..c6b0659d 100644 --- a/ds/videoDeviceConfig.hpp +++ b/ds/videoDeviceConfig.hpp @@ -61,7 +61,7 @@ class VideoDeviceConfig { VideoDFC & getDFC(int id); VideoDFC & getDefaultDFC(); - void load(videoDeviceConfig_t* pDLHandle); + void load(videoDeviceConfig_t* dynamicVideoDeviceConfigs); void release(); }; diff --git a/ds/videoOutputPortConfig.cpp b/ds/videoOutputPortConfig.cpp index 4c35b1e5..64759527 100644 --- a/ds/videoOutputPortConfig.cpp +++ b/ds/videoOutputPortConfig.cpp @@ -51,8 +51,6 @@ #include using namespace std; -#define DEBUG 1 // Using for dumpconfig - namespace device { static VideoResolution* defaultVideoResolution; @@ -277,7 +275,7 @@ void dumpconfig(videoPortConfigs_t *config) INT_INFO("Dumping of Device configs is disabled"); return; } - INT_INFO("\n\n============================================== Starting to Dump VideoPort Configs ===========================================================================\n\n"); + INT_INFO("\n=============== Starting to Dump VideoPort Configs ===============\n"); int configSize = -1, portSize = -1, resolutionSize = -1; if (( nullptr != config->pKConfigs ) && ( nullptr != config->pKPorts ) && ( nullptr != config->pKResolutionsSettings )) @@ -292,7 +290,7 @@ void dumpconfig(videoPortConfigs_t *config) INT_INFO("pKResolutionsSettings = %p", config->pKResolutionsSettings); INT_INFO("pKResolutionsSettingsSize pointer %p = %d", config->pKResolutionsSettings_size, resolutionSize); - INT_INFO("\n\n################################# Dumping Video Resolutions Settings ###################################### \n\n"); + INT_INFO("\n\n############### Dumping Video Resolutions Settings ############### \n\n"); for (int i = 0; i < resolutionSize; i++) { dsVideoPortResolution_t *resolution = &(config->pKResolutionsSettings[i]); @@ -303,8 +301,8 @@ void dumpconfig(videoPortConfigs_t *config) INT_INFO("resolution->frameRate= %d", resolution->frameRate); INT_INFO("resolution->interlaced= %d", resolution->interlaced); } - INT_INFO("\n\n####################################################################### \n\n"); - INT_INFO("\n\n################################ Dumping Video Port Configurations ####################################### \n\n"); + + INT_INFO("\n ############### Dumping Video Port Configurations ############### \n"); for (int i = 0; i < configSize; i++) { @@ -324,9 +322,7 @@ void dumpconfig(videoPortConfigs_t *config) INT_INFO("typeCfg->supportedResolutions->frameRate= %d", typeCfg->supportedResolutions->frameRate); INT_INFO("typeCfg->supportedResolutions->interlaced= %d", typeCfg->supportedResolutions->interlaced); } - INT_INFO("\n\n####################################################################### \n\n"); - - INT_INFO("\n\n################################## Dumping Video Port Connections ##################################### \n\n"); + INT_INFO("\n############### Dumping Video Port Connections ###############\n"); for (int i = 0; i < portSize; i++) { const dsVideoPortPortConfig_t *portCfg = &(config->pKPorts[i]); @@ -336,19 +332,18 @@ void dumpconfig(videoPortConfigs_t *config) INT_INFO("portCfg->connectedAOP.index = %d", portCfg->connectedAOP.index); INT_INFO("portCfg->defaultResolution = %s", (portCfg->defaultResolution) ? portCfg->defaultResolution : "NULL"); } - INT_INFO("\n\n####################################################################### \n\n"); } else { INT_ERROR("pKConfigs or pKPorts or pKResolutionsSettings is NULL"); } - INT_INFO("\n\n============================================= Dump VideoPort Configs done ============================================================================\n\n"); + INT_INFO("\n=============== Dump VideoPort Configs done ===============\n"); INT_INFO("Exit function"); } void VideoOutputPortConfig::load(videoPortConfigs_t* dynamicVideoPortConfigs) { - static int configSize, portSize, resolutionSize; + int configSize, portSize, resolutionSize; videoPortConfigs_t configuration = {0}; INT_INFO("Enter function"); diff --git a/ds/videoOutputPortConfig.hpp b/ds/videoOutputPortConfig.hpp index 435b7b41..b8047c3e 100644 --- a/ds/videoOutputPortConfig.hpp +++ b/ds/videoOutputPortConfig.hpp @@ -80,7 +80,7 @@ class VideoOutputPortConfig { List getSupportedTypes(); List getSupportedResolutions(bool isIgnoreEdid=false); - void load(videoPortConfigs_t* pDLHandle); + void load(videoPortConfigs_t* dynamicVideoPortConfigs); void release(); };