From 684c36d47a9db7b6f5238704dad545abad21afd9 Mon Sep 17 00:00:00 2001 From: yuvaramachandran_gurusamy Date: Mon, 11 Aug 2025 07:24:33 +0000 Subject: [PATCH 1/4] RDKEMW-6339: Exception handling added Signed-off-by: yuvaramachandran_gurusamy --- dsmgr/dsMgrPwrEventListener.c | 79 +++++++++++++++++++++-------------- 1 file changed, 48 insertions(+), 31 deletions(-) diff --git a/dsmgr/dsMgrPwrEventListener.c b/dsmgr/dsMgrPwrEventListener.c index ba8f65a2..75b26d53 100644 --- a/dsmgr/dsMgrPwrEventListener.c +++ b/dsmgr/dsMgrPwrEventListener.c @@ -348,18 +348,27 @@ int _SetAVPortsPowerState(PowerController_PowerState_t powerState) numPorts = dsUTL_DIM(kSupportedPortTypes); for (i = 0; i < numPorts; i++) { - const dsAudioPortType_t *audioPort = &kSupportedPortTypes[i]; - device::AudioOutputPort aPort = device::Host::getInstance().getAudioOutputPort(*audioPort); - memset(&getHandle, 0, sizeof(getHandle)); - getHandle.type = *audioPort; - getHandle.index = 0; - _dsGetAudioPort(&getHandle); - - memset(&setMode, 0, sizeof(setMode)); - setMode.handle = getHandle.handle; - strncpy(setMode.portName, aPort.getName().c_str(), 32); - setMode.enabled = false; - _dsEnableAudioPort(&setMode); + try + { + const dsAudioPortType_t *audioPort = &kSupportedPortTypes[i]; + device::AudioOutputPort aPort = device::Host::getInstance().getAudioOutputPort(*audioPort); + memset(&getHandle, 0, sizeof(getHandle)); + getHandle.type = *audioPort; + getHandle.index = 0; + _dsGetAudioPort(&getHandle); + + INT_DEBUG("[%s] portName[%s] \r\n", __FUNCTION__, aPort.getName().c_str()); + + memset(&setMode, 0, sizeof(setMode)); + setMode.handle = getHandle.handle; + strncpy(setMode.portName, aPort.getName().c_str(), 32); + setMode.enabled = false; + _dsEnableAudioPort(&setMode); + } + catch (...) + { + INT_DEBUG("[%s] Audio port exception at %d \r\n", __FUNCTION__, i); + } } } catch (...) @@ -369,7 +378,6 @@ int _SetAVPortsPowerState(PowerController_PowerState_t powerState) } else { - try { device::List videoPorts = device::Host::getInstance().getVideoOutputPorts(); @@ -386,25 +394,34 @@ int _SetAVPortsPowerState(PowerController_PowerState_t powerState) numPorts = dsUTL_DIM(kSupportedPortTypes); for (i = 0; i < numPorts; i++) { - const dsAudioPortType_t *audioPort = &kSupportedPortTypes[i]; - device::AudioOutputPort aPort = device::Host::getInstance().getAudioOutputPort(*audioPort); - memset(&getHandle, 0, sizeof(getHandle)); - getHandle.type = *audioPort; - getHandle.index = 0; - _dsGetAudioPort(&getHandle); - - memset(&setMode, 0, sizeof(setMode)); - setMode.handle = getHandle.handle; - strncpy(setMode.portName, aPort.getName().c_str(), 32); - setMode.enabled = false; - _dsGetEnablePersist(&setMode); - - if (setMode.enabled == true) + try { - /*Instead of enabling all the audio ports on power transition */ - /*Get the values from persistent storage & update */ - INT_INFO("[%s] Enabling audio ports %d \r\n", __FUNCTION__, powerState); - _dsEnableAudioPort(&setMode); + const dsAudioPortType_t *audioPort = &kSupportedPortTypes[i]; + device::AudioOutputPort aPort = device::Host::getInstance().getAudioOutputPort(*audioPort); + memset(&getHandle, 0, sizeof(getHandle)); + getHandle.type = *audioPort; + getHandle.index = 0; + _dsGetAudioPort(&getHandle); + + INT_DEBUG("[%s] portName[%s] \r\n", __FUNCTION__, aPort.getName().c_str()); + + memset(&setMode, 0, sizeof(setMode)); + setMode.handle = getHandle.handle; + strncpy(setMode.portName, aPort.getName().c_str(), 32); + setMode.enabled = false; + _dsGetEnablePersist(&setMode); + + if (setMode.enabled == true) + { + /*Instead of enabling all the audio ports on power transition */ + /*Get the values from persistent storage & update */ + INT_INFO("[%s] Enabling audio ports %d \r\n", __FUNCTION__, powerState); + _dsEnableAudioPort(&setMode); + } + } + catch (...) + { + INT_DEBUG("[%s] Audio port exception at %d \r\n", __FUNCTION__, i); } } if (isEAS == IARM_BUS_SYS_MODE_EAS) From bfc58ed4ff3c329210e19c30eedcad53c455cce2 Mon Sep 17 00:00:00 2001 From: yuvaramachandran_gurusamy Date: Mon, 11 Aug 2025 14:48:30 +0000 Subject: [PATCH 2/4] RDKEMW-6339: Debug Signed-off-by: yuvaramachandran_gurusamy --- dsmgr/dsMgrPwrEventListener.c | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/dsmgr/dsMgrPwrEventListener.c b/dsmgr/dsMgrPwrEventListener.c index 75b26d53..f3d0dd50 100644 --- a/dsmgr/dsMgrPwrEventListener.c +++ b/dsmgr/dsMgrPwrEventListener.c @@ -346,24 +346,33 @@ int _SetAVPortsPowerState(PowerController_PowerState_t powerState) int numPorts, i = 0; numPorts = dsUTL_DIM(kSupportedPortTypes); + INT_INFO("[%s] numPorts[%d] \r\n", __FUNCTION__, numPorts); for (i = 0; i < numPorts; i++) { try { const dsAudioPortType_t *audioPort = &kSupportedPortTypes[i]; + INT_INFO("[%s] Before audioPort[%d] at [%d]\r\n", __FUNCTION__, *audioPort,i); device::AudioOutputPort aPort = device::Host::getInstance().getAudioOutputPort(*audioPort); + INT_INFO("[%s] After audioPort at [%d]\r\n", __FUNCTION__, i); memset(&getHandle, 0, sizeof(getHandle)); getHandle.type = *audioPort; getHandle.index = 0; + INT_INFO("[%s] Before _dsGetAudioPort at [%d]\r\n", __FUNCTION__, i); _dsGetAudioPort(&getHandle); + INT_INFO("[%s] After _dsGetAudioPort at [%d]\r\n", __FUNCTION__, i); - INT_DEBUG("[%s] portName[%s] \r\n", __FUNCTION__, aPort.getName().c_str()); + INT_INFO("[%s] portName[%s] \r\n", __FUNCTION__, aPort.getName().c_str()); memset(&setMode, 0, sizeof(setMode)); setMode.handle = getHandle.handle; + INT_INFO("[%s] Before strncpy at [%d]\r\n", __FUNCTION__, i); strncpy(setMode.portName, aPort.getName().c_str(), 32); + INT_INFO("[%s] After strncpy at [%d]\r\n", __FUNCTION__, i); setMode.enabled = false; + INT_INFO("[%s] Before _dsEnableAudioPort at [%d]\r\n", __FUNCTION__, i); _dsEnableAudioPort(&setMode); + INT_INFO("[%s] After _dsEnableAudioPort at [%d]\r\n", __FUNCTION__, i); } catch (...) { @@ -392,24 +401,33 @@ int _SetAVPortsPowerState(PowerController_PowerState_t powerState) int numPorts, i = 0; numPorts = dsUTL_DIM(kSupportedPortTypes); + INT_INFO("[%s] numPorts[%d] \r\n", __FUNCTION__, numPorts); for (i = 0; i < numPorts; i++) { try { const dsAudioPortType_t *audioPort = &kSupportedPortTypes[i]; + INT_INFO("[%s] Before audioPort[%d] at [%d]\r\n", __FUNCTION__, *audioPort,i); device::AudioOutputPort aPort = device::Host::getInstance().getAudioOutputPort(*audioPort); + INT_INFO("[%s] After audioPort at [%d]\r\n", __FUNCTION__, i); memset(&getHandle, 0, sizeof(getHandle)); getHandle.type = *audioPort; getHandle.index = 0; + INT_INFO("[%s] Before _dsGetAudioPort at [%d]\r\n", __FUNCTION__, i); _dsGetAudioPort(&getHandle); + INT_INFO("[%s] After _dsGetAudioPort at [%d]\r\n", __FUNCTION__, i); - INT_DEBUG("[%s] portName[%s] \r\n", __FUNCTION__, aPort.getName().c_str()); + INT_INFO("[%s] portName[%s] \r\n", __FUNCTION__, aPort.getName().c_str()); memset(&setMode, 0, sizeof(setMode)); setMode.handle = getHandle.handle; + INT_INFO("[%s] Before strncpy at [%d]\r\n", __FUNCTION__, i); strncpy(setMode.portName, aPort.getName().c_str(), 32); + INT_INFO("[%s] After strncpy at [%d]\r\n", __FUNCTION__, i); setMode.enabled = false; + INT_INFO("[%s] Before _dsGetEnablePersist at [%d]\r\n", __FUNCTION__, i); _dsGetEnablePersist(&setMode); + INT_INFO("[%s] After _dsGetEnablePersist at [%d]\r\n", __FUNCTION__, i); if (setMode.enabled == true) { @@ -417,6 +435,7 @@ int _SetAVPortsPowerState(PowerController_PowerState_t powerState) /*Get the values from persistent storage & update */ INT_INFO("[%s] Enabling audio ports %d \r\n", __FUNCTION__, powerState); _dsEnableAudioPort(&setMode); + INT_INFO("[%s] After _dsEnableAudioPort at [%d]\r\n", __FUNCTION__, i); } } catch (...) From a4e57a5d144a9f9b1cf516a568f13cf8efdc693c Mon Sep 17 00:00:00 2001 From: yuvaramachandran_gurusamy Date: Tue, 12 Aug 2025 13:00:43 +0000 Subject: [PATCH 3/4] RDKEMW-6339: Fixed the Audio Port exception issue Signed-off-by: yuvaramachandran_gurusamy --- dsmgr/dsMgrPwrEventListener.c | 60 ++++++++++++++++++----------------- 1 file changed, 31 insertions(+), 29 deletions(-) diff --git a/dsmgr/dsMgrPwrEventListener.c b/dsmgr/dsMgrPwrEventListener.c index f3d0dd50..3cca52de 100644 --- a/dsmgr/dsMgrPwrEventListener.c +++ b/dsmgr/dsMgrPwrEventListener.c @@ -345,30 +345,31 @@ int _SetAVPortsPowerState(PowerController_PowerState_t powerState) dsAudioPortEnabledParam_t setMode; int numPorts, i = 0; - numPorts = dsUTL_DIM(kSupportedPortTypes); - INT_INFO("[%s] numPorts[%d] \r\n", __FUNCTION__, numPorts); + device::List aPorts = device::Host::getInstance().getAudioOutputPorts(); + numPorts = aPorts.size(); + INT_INFO("[%s] Number of Audio Ports: [%d] \r\n", __FUNCTION__, numPorts); for (i = 0; i < numPorts; i++) { try { - const dsAudioPortType_t *audioPort = &kSupportedPortTypes[i]; - INT_INFO("[%s] Before audioPort[%d] at [%d]\r\n", __FUNCTION__, *audioPort,i); - device::AudioOutputPort aPort = device::Host::getInstance().getAudioOutputPort(*audioPort); - INT_INFO("[%s] After audioPort at [%d]\r\n", __FUNCTION__, i); + int portType; + INT_INFO("[%s] Current Index [%d] \r\n", __FUNCTION__, i); + device::AudioOutputPort aPort = aPorts.at(i); + + INT_INFO("[%s] Audio Port Name: [%s] \r\n", __FUNCTION__, aPort.getName().c_str()); + portType = static_cast(aPort.getType().getId()); + INT_INFO("[%s] Audio Port Type: [%d] \r\n", __FUNCTION__, portType); + memset(&getHandle, 0, sizeof(getHandle)); - getHandle.type = *audioPort; + getHandle.type = static_cast(portType); getHandle.index = 0; INT_INFO("[%s] Before _dsGetAudioPort at [%d]\r\n", __FUNCTION__, i); _dsGetAudioPort(&getHandle); INT_INFO("[%s] After _dsGetAudioPort at [%d]\r\n", __FUNCTION__, i); - INT_INFO("[%s] portName[%s] \r\n", __FUNCTION__, aPort.getName().c_str()); - memset(&setMode, 0, sizeof(setMode)); setMode.handle = getHandle.handle; - INT_INFO("[%s] Before strncpy at [%d]\r\n", __FUNCTION__, i); - strncpy(setMode.portName, aPort.getName().c_str(), 32); - INT_INFO("[%s] After strncpy at [%d]\r\n", __FUNCTION__, i); + strncpy(setMode.portName, aPort.getName().c_str(), 31); setMode.enabled = false; INT_INFO("[%s] Before _dsEnableAudioPort at [%d]\r\n", __FUNCTION__, i); _dsEnableAudioPort(&setMode); @@ -376,7 +377,7 @@ int _SetAVPortsPowerState(PowerController_PowerState_t powerState) } catch (...) { - INT_DEBUG("[%s] Audio port exception at %d \r\n", __FUNCTION__, i); + INT_DEBUG("[%s] audio port exception at %d\r\n", __FUNCTION__,i); } } } @@ -400,31 +401,33 @@ int _SetAVPortsPowerState(PowerController_PowerState_t powerState) int numPorts, i = 0; - numPorts = dsUTL_DIM(kSupportedPortTypes); - INT_INFO("[%s] numPorts[%d] \r\n", __FUNCTION__, numPorts); + device::List aPorts = device::Host::getInstance().getAudioOutputPorts(); + numPorts = aPorts.size(); + INT_INFO("[%s] numPorts [%d] \r\n", __FUNCTION__, numPorts); for (i = 0; i < numPorts; i++) { try { - const dsAudioPortType_t *audioPort = &kSupportedPortTypes[i]; - INT_INFO("[%s] Before audioPort[%d] at [%d]\r\n", __FUNCTION__, *audioPort,i); - device::AudioOutputPort aPort = device::Host::getInstance().getAudioOutputPort(*audioPort); - INT_INFO("[%s] After audioPort at [%d]\r\n", __FUNCTION__, i); + int portType; + INT_INFO("[%s] Current Index [%d] \r\n", __FUNCTION__, i); + device::AudioOutputPort aPort = aPorts.at(i); + INT_INFO("[%s] Audio Port Name: [%s] \r\n", __FUNCTION__, aPort.getName().c_str()); + + portType = aPort.getType().getId(); + INT_INFO("[%s] Audio Port Type: [%d] \r\n", __FUNCTION__, portType); + memset(&getHandle, 0, sizeof(getHandle)); - getHandle.type = *audioPort; + getHandle.type = static_cast(portType); getHandle.index = 0; INT_INFO("[%s] Before _dsGetAudioPort at [%d]\r\n", __FUNCTION__, i); _dsGetAudioPort(&getHandle); INT_INFO("[%s] After _dsGetAudioPort at [%d]\r\n", __FUNCTION__, i); - INT_INFO("[%s] portName[%s] \r\n", __FUNCTION__, aPort.getName().c_str()); - memset(&setMode, 0, sizeof(setMode)); setMode.handle = getHandle.handle; - INT_INFO("[%s] Before strncpy at [%d]\r\n", __FUNCTION__, i); - strncpy(setMode.portName, aPort.getName().c_str(), 32); - INT_INFO("[%s] After strncpy at [%d]\r\n", __FUNCTION__, i); + strncpy(setMode.portName, aPort.getName().c_str(), 31); setMode.enabled = false; + INT_INFO("[%s] Before _dsGetEnablePersist at [%d]\r\n", __FUNCTION__, i); _dsGetEnablePersist(&setMode); INT_INFO("[%s] After _dsGetEnablePersist at [%d]\r\n", __FUNCTION__, i); @@ -435,12 +438,12 @@ int _SetAVPortsPowerState(PowerController_PowerState_t powerState) /*Get the values from persistent storage & update */ INT_INFO("[%s] Enabling audio ports %d \r\n", __FUNCTION__, powerState); _dsEnableAudioPort(&setMode); - INT_INFO("[%s] After _dsEnableAudioPort at [%d]\r\n", __FUNCTION__, i); + INT_INFO("[%s] _dsEnableAudioPort done at [%d]\r\n", __FUNCTION__, i); } } catch (...) { - INT_DEBUG("[%s] Audio port exception at %d \r\n", __FUNCTION__, i); + INT_DEBUG("[%s] Audio port exception at %d \r\n",__FUNCTION__, i); } } if (isEAS == IARM_BUS_SYS_MODE_EAS) @@ -454,7 +457,6 @@ int _SetAVPortsPowerState(PowerController_PowerState_t powerState) { INT_DEBUG("[%s] Audio port exception \r\n",__FUNCTION__); } - } } catch (...) @@ -462,9 +464,9 @@ int _SetAVPortsPowerState(PowerController_PowerState_t powerState) INT_DEBUG("Exception Caught during [%s]\r\n", __FUNCTION__); return 0; } + INT_DEBUG("Exiting [%s]\r\n", __FUNCTION__); return 0; } - static bool get_video_port_standby_setting(const char * port) { INT_INFO("Entering [%s]\r\n", __FUNCTION__); From 3e5c0c54d5d1619e0302def49df0578126b4daee Mon Sep 17 00:00:00 2001 From: yuvaramachandran_gurusamy Date: Tue, 12 Aug 2025 14:00:11 +0000 Subject: [PATCH 4/4] RDKEMW-6339: Optimized the audio Port handling Signed-off-by: yuvaramachandran_gurusamy --- dsmgr/dsMgrPwrEventListener.c | 48 +++++------------------------------ 1 file changed, 6 insertions(+), 42 deletions(-) diff --git a/dsmgr/dsMgrPwrEventListener.c b/dsmgr/dsMgrPwrEventListener.c index 3cca52de..48e2b866 100644 --- a/dsmgr/dsMgrPwrEventListener.c +++ b/dsmgr/dsMgrPwrEventListener.c @@ -352,28 +352,11 @@ int _SetAVPortsPowerState(PowerController_PowerState_t powerState) { try { - int portType; INT_INFO("[%s] Current Index [%d] \r\n", __FUNCTION__, i); device::AudioOutputPort aPort = aPorts.at(i); INT_INFO("[%s] Audio Port Name: [%s] \r\n", __FUNCTION__, aPort.getName().c_str()); - portType = static_cast(aPort.getType().getId()); - INT_INFO("[%s] Audio Port Type: [%d] \r\n", __FUNCTION__, portType); - - memset(&getHandle, 0, sizeof(getHandle)); - getHandle.type = static_cast(portType); - getHandle.index = 0; - INT_INFO("[%s] Before _dsGetAudioPort at [%d]\r\n", __FUNCTION__, i); - _dsGetAudioPort(&getHandle); - INT_INFO("[%s] After _dsGetAudioPort at [%d]\r\n", __FUNCTION__, i); - - memset(&setMode, 0, sizeof(setMode)); - setMode.handle = getHandle.handle; - strncpy(setMode.portName, aPort.getName().c_str(), 31); - setMode.enabled = false; - INT_INFO("[%s] Before _dsEnableAudioPort at [%d]\r\n", __FUNCTION__, i); - _dsEnableAudioPort(&setMode); - INT_INFO("[%s] After _dsEnableAudioPort at [%d]\r\n", __FUNCTION__, i); + aPort.disable(); } catch (...) { @@ -408,37 +391,17 @@ int _SetAVPortsPowerState(PowerController_PowerState_t powerState) { try { - int portType; INT_INFO("[%s] Current Index [%d] \r\n", __FUNCTION__, i); device::AudioOutputPort aPort = aPorts.at(i); - INT_INFO("[%s] Audio Port Name: [%s] \r\n", __FUNCTION__, aPort.getName().c_str()); - - portType = aPort.getType().getId(); - INT_INFO("[%s] Audio Port Type: [%d] \r\n", __FUNCTION__, portType); - - memset(&getHandle, 0, sizeof(getHandle)); - getHandle.type = static_cast(portType); - getHandle.index = 0; - INT_INFO("[%s] Before _dsGetAudioPort at [%d]\r\n", __FUNCTION__, i); - _dsGetAudioPort(&getHandle); - INT_INFO("[%s] After _dsGetAudioPort at [%d]\r\n", __FUNCTION__, i); + bool isEnablePersist = aPort.getEnablePersist(); + INT_INFO("[%s] Audio Port Name: [%s] isEnablePersist[%d]\r\n", __FUNCTION__, aPort.getName().c_str(), isEnablePersist); - memset(&setMode, 0, sizeof(setMode)); - setMode.handle = getHandle.handle; - strncpy(setMode.portName, aPort.getName().c_str(), 31); - setMode.enabled = false; - - INT_INFO("[%s] Before _dsGetEnablePersist at [%d]\r\n", __FUNCTION__, i); - _dsGetEnablePersist(&setMode); - INT_INFO("[%s] After _dsGetEnablePersist at [%d]\r\n", __FUNCTION__, i); - - if (setMode.enabled == true) + if (isEnablePersist) { /*Instead of enabling all the audio ports on power transition */ /*Get the values from persistent storage & update */ INT_INFO("[%s] Enabling audio ports %d \r\n", __FUNCTION__, powerState); - _dsEnableAudioPort(&setMode); - INT_INFO("[%s] _dsEnableAudioPort done at [%d]\r\n", __FUNCTION__, i); + aPort.enable(); } } catch (...) @@ -467,6 +430,7 @@ int _SetAVPortsPowerState(PowerController_PowerState_t powerState) INT_DEBUG("Exiting [%s]\r\n", __FUNCTION__); return 0; } + static bool get_video_port_standby_setting(const char * port) { INT_INFO("Entering [%s]\r\n", __FUNCTION__);