From c1f6e4b07099af2543d9b7ff9086c408cff79c5c Mon Sep 17 00:00:00 2001 From: "neethu.arambilsunny@sky.uk" Date: Tue, 2 Sep 2025 13:02:54 +0100 Subject: [PATCH 1/5] Request Audio status upon each Key release event --- HdmiCecSink/HdmiCecSink.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/HdmiCecSink/HdmiCecSink.cpp b/HdmiCecSink/HdmiCecSink.cpp index d8a60b507f..28ff097d37 100644 --- a/HdmiCecSink/HdmiCecSink.cpp +++ b/HdmiCecSink/HdmiCecSink.cpp @@ -3548,6 +3548,10 @@ namespace WPEFramework else if(keyInfo.UserControl == "sendUserControlReleased") { LOGINFO("sendUserControlReleased : logical addr:0x%x queue size :%zu \n",keyInfo.logicalAddr,_instance->m_SendKeyQueue.size()); + if(!_instance->m_isAudioStatusInfoUpdated) + { + _instance->sendGiveAudioStatusMsg(); + } _instance->sendUserControlReleased(keyInfo.logicalAddr); } else From 7c56f21d21e9b498e10dea47588b8a11b353cb8b Mon Sep 17 00:00:00 2001 From: Neethu379 <139531784+Neethu379@users.noreply.github.com> Date: Tue, 9 Sep 2025 11:09:07 +0530 Subject: [PATCH 2/5] Update HdmiCecSink.cpp --- HdmiCecSink/HdmiCecSink.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/HdmiCecSink/HdmiCecSink.cpp b/HdmiCecSink/HdmiCecSink.cpp index 28ff097d37..6d8113bceb 100644 --- a/HdmiCecSink/HdmiCecSink.cpp +++ b/HdmiCecSink/HdmiCecSink.cpp @@ -3548,11 +3548,18 @@ namespace WPEFramework else if(keyInfo.UserControl == "sendUserControlReleased") { LOGINFO("sendUserControlReleased : logical addr:0x%x queue size :%zu \n",keyInfo.logicalAddr,_instance->m_SendKeyQueue.size()); + if (m_audioStatusDetectionTimer.isActive()) + { + LOGINFO("Stopping the Audio Status Timer!\n"); + m_audioStatusDetectionTimer.stop(); + m_audioStatusTimerStarted = false; + LOGINFO("m_isAudioStatusInfoUpdated :%d, m_audioStatusReceived :%d, m_audioStatusTimerStarted:%d ",m_isAudioStatusInfoUpdated,m_audioStatusReceived,m_audioStatusTimerStarted); + } + _instance->sendUserControlReleased(keyInfo.logicalAddr); if(!_instance->m_isAudioStatusInfoUpdated) { _instance->sendGiveAudioStatusMsg(); } - _instance->sendUserControlReleased(keyInfo.logicalAddr); } else { From 1683ddc3e451e831fd14a16231a99637638fbc0d Mon Sep 17 00:00:00 2001 From: Neethu379 <139531784+Neethu379@users.noreply.github.com> Date: Tue, 9 Sep 2025 13:06:06 +0530 Subject: [PATCH 3/5] Update HdmiCecSink.cpp --- HdmiCecSink/HdmiCecSink.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/HdmiCecSink/HdmiCecSink.cpp b/HdmiCecSink/HdmiCecSink.cpp index 6d8113bceb..07b25a3903 100644 --- a/HdmiCecSink/HdmiCecSink.cpp +++ b/HdmiCecSink/HdmiCecSink.cpp @@ -3548,12 +3548,12 @@ namespace WPEFramework else if(keyInfo.UserControl == "sendUserControlReleased") { LOGINFO("sendUserControlReleased : logical addr:0x%x queue size :%zu \n",keyInfo.logicalAddr,_instance->m_SendKeyQueue.size()); - if (m_audioStatusDetectionTimer.isActive()) + if (_instance->m_audioStatusDetectionTimer.isActive()) { LOGINFO("Stopping the Audio Status Timer!\n"); - m_audioStatusDetectionTimer.stop(); - m_audioStatusTimerStarted = false; - LOGINFO("m_isAudioStatusInfoUpdated :%d, m_audioStatusReceived :%d, m_audioStatusTimerStarted:%d ",m_isAudioStatusInfoUpdated,m_audioStatusReceived,m_audioStatusTimerStarted); + _instance->m_audioStatusDetectionTimer.stop(); + _instance->m_audioStatusTimerStarted = false; + LOGINFO("m_isAudioStatusInfoUpdated :%d, m_audioStatusReceived :%d, m_audioStatusTimerStarted:%d ",_instance->m_isAudioStatusInfoUpdated,_instance->m_audioStatusReceived,_instance->m_audioStatusTimerStarted); } _instance->sendUserControlReleased(keyInfo.logicalAddr); if(!_instance->m_isAudioStatusInfoUpdated) From 8712876d4f287daf78dc9eb044e2abfdd44b1062 Mon Sep 17 00:00:00 2001 From: Neethu379 <139531784+Neethu379@users.noreply.github.com> Date: Tue, 9 Sep 2025 13:06:06 +0530 Subject: [PATCH 4/5] Update HdmiCecSink.cpp --- HdmiCecSink/HdmiCecSink.cpp | 5 +++-- HdmiCecSink/HdmiCecSink.h | 2 ++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/HdmiCecSink/HdmiCecSink.cpp b/HdmiCecSink/HdmiCecSink.cpp index 07b25a3903..3418a6eb28 100644 --- a/HdmiCecSink/HdmiCecSink.cpp +++ b/HdmiCecSink/HdmiCecSink.cpp @@ -1213,7 +1213,8 @@ namespace WPEFramework JsonObject params; if(!HdmiCecSink::_instance) return; - if (m_audioStatusTimerStarted) + m_audioDeviceNewVolumeLevel = msg.status.getAudioVolume(); + if (m_audioStatusTimerStarted && (m_audioDeviceNewVolumeLevel != m_audioDevicePrevVolumeLevel)) { m_audioStatusReceived = true; m_isAudioStatusInfoUpdated = true; @@ -1231,7 +1232,7 @@ namespace WPEFramework params["muteStatus"] = msg.status.getAudioMuteStatus(); params["volumeLevel"] = msg.status.getAudioVolume(); sendNotify(eventString[HDMICECSINK_EVENT_REPORT_AUDIO_STATUS], params); - + m_audioDevicePrevVolumeLevel = m_audioDeviceNewVolumeLevel; } void HdmiCecSink::sendKeyPressEvent(const int logicalAddress, int keyCode) { diff --git a/HdmiCecSink/HdmiCecSink.h b/HdmiCecSink/HdmiCecSink.h index 5b7d908175..44d4e7f95b 100644 --- a/HdmiCecSink/HdmiCecSink.h +++ b/HdmiCecSink/HdmiCecSink.h @@ -635,6 +635,8 @@ namespace WPEFramework { bool m_audioStatusReceived; bool m_audioStatusTimerStarted; int m_audioStatusRequestedCount; + int m_audioDeviceNewVolumeLevel; + int m_audioDevicePrevVolumeLevel; std::thread m_sendKeyEventThread; std::mutex m_sendKeyEventMutex; std::queue m_SendKeyQueue; From 51d0df1ec90dfda85190824f864709baf827431d Mon Sep 17 00:00:00 2001 From: Neethu379 <139531784+Neethu379@users.noreply.github.com> Date: Wed, 10 Sep 2025 11:43:00 +0530 Subject: [PATCH 5/5] Update HdmiCecSink.cpp --- HdmiCecSink/HdmiCecSink.cpp | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/HdmiCecSink/HdmiCecSink.cpp b/HdmiCecSink/HdmiCecSink.cpp index 3418a6eb28..707e17ed50 100644 --- a/HdmiCecSink/HdmiCecSink.cpp +++ b/HdmiCecSink/HdmiCecSink.cpp @@ -3549,18 +3549,11 @@ namespace WPEFramework else if(keyInfo.UserControl == "sendUserControlReleased") { LOGINFO("sendUserControlReleased : logical addr:0x%x queue size :%zu \n",keyInfo.logicalAddr,_instance->m_SendKeyQueue.size()); - if (_instance->m_audioStatusDetectionTimer.isActive()) - { - LOGINFO("Stopping the Audio Status Timer!\n"); - _instance->m_audioStatusDetectionTimer.stop(); - _instance->m_audioStatusTimerStarted = false; - LOGINFO("m_isAudioStatusInfoUpdated :%d, m_audioStatusReceived :%d, m_audioStatusTimerStarted:%d ",_instance->m_isAudioStatusInfoUpdated,_instance->m_audioStatusReceived,_instance->m_audioStatusTimerStarted); - } + if(!_instance->m_isAudioStatusInfoUpdated) + { + _instance->sendGiveAudioStatusMsg(); + } _instance->sendUserControlReleased(keyInfo.logicalAddr); - if(!_instance->m_isAudioStatusInfoUpdated) - { - _instance->sendGiveAudioStatusMsg(); - } } else {