Skip to content

Commit d31262e

Browse files
authored
RDKTV-35677: Delay in Volume Level Status update on the panel (rdkcentral#6319)
* RDKTV-35677: Delay in Volume Level Status update on the panel Reason for change: Increase the Audio Status Timer to 2s and handle the corner cases. Test Procedure: refer the ticket Risks: None Signed-off-by: Neethu A S [email protected] * Update HdmiCecSink.cpp * Update HdmiCecSink.cpp --------- Signed-off-by: Neethu A S [email protected]
1 parent 4d2d9fd commit d31262e

File tree

2 files changed

+25
-10
lines changed

2 files changed

+25
-10
lines changed

HdmiCecSink/HdmiCecSink.cpp

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -78,8 +78,7 @@
7878
#define HDMICECSINK_NUMBER_TV_ADDR 2
7979
#define HDMICECSINK_UPDATE_POWER_STATUS_INTERVA_MS (60 * 1000)
8080
#define HDMISINK_ARC_START_STOP_MAX_WAIT_MS 4000
81-
#define HDMICECSINK_UPDATE_AUDIO_STATUS_INTERVAL_MS 500
82-
81+
#define HDMICECSINK_UPDATE_AUDIO_STATUS_INTERVAL_MS 2000
8382

8483
#define SAD_FMT_CODE_AC3 2
8584
#define SAD_FMT_CODE_ENHANCED_AC3 10
@@ -695,6 +694,7 @@ namespace WPEFramework
695694
m_isHdmiInConnected = false;
696695
hdmiCecAudioDeviceConnected = false;
697696
m_isAudioStatusInfoUpdated = false;
697+
m_audioStatusRequestedCount = 0;
698698
m_audioStatusReceived = false;
699699
m_audioStatusTimerStarted = false;
700700
m_audioDevicePowerStatusRequested = false;
@@ -1223,9 +1223,11 @@ namespace WPEFramework
12231223
LOGINFO("AudioStatus received from the Audio Device and the timer is still active. So stopping the timer!\n");
12241224
m_audioStatusDetectionTimer.stop();
12251225
}
1226-
LOGINFO("AudioStatus received from the Audio Device. Updating the AudioStatus info! m_isAudioStatusInfoUpdated :%d, m_audioStatusReceived :%d, m_audioStatusTimerStarted:%d ", m_isAudioStatusInfoUpdated,m_audioStatusReceived,m_audioStatusTimerStarted);
1226+
LOGINFO("AudioStatus received from the Audio Device. Updating the AudioStatus info! m_isAudioStatusInfoUpdated :%d, m_audioStatusRequestedCount :%d, m_audioStatusReceived :%d, m_audioStatusTimerStarted:%d ", m_isAudioStatusInfoUpdated,m_audioStatusRequestedCount,m_audioStatusReceived,m_audioStatusTimerStarted);
12271227
}
1228-
LOGINFO("Command: ReportAudioStatus %s audio Mute status %d means %s and current Volume level is %d \n",GetOpName(msg.opCode()),msg.status.getAudioMuteStatus(),msg.status.toString().c_str(),msg.status.getAudioVolume());
1228+
if(m_audioStatusRequestedCount > 0)
1229+
m_audioStatusRequestedCount--;
1230+
LOGINFO("Command: ReportAudioStatus %s audio Mute status %d means %s and current Volume level is %d \n",GetOpName(msg.opCode()),msg.status.getAudioMuteStatus(),msg.status.toString().c_str(),msg.status.getAudioVolume());
12291231
params["muteStatus"] = msg.status.getAudioMuteStatus();
12301232
params["volumeLevel"] = msg.status.getAudioVolume();
12311233
sendNotify(eventString[HDMICECSINK_EVENT_REPORT_AUDIO_STATUS], params);
@@ -1417,7 +1419,15 @@ namespace WPEFramework
14171419
return;
14181420
if(!(_instance->smConnection))
14191421
return;
1422+
if (m_audioStatusDetectionTimer.isActive())
1423+
{
1424+
LOGINFO("Stopping the Audio Status Timer!\n");
1425+
m_audioStatusDetectionTimer.stop();
1426+
m_audioStatusTimerStarted = false;
1427+
LOGINFO("m_isAudioStatusInfoUpdated :%d, m_audioStatusReceived :%d, m_audioStatusTimerStarted:%d ",m_isAudioStatusInfoUpdated,m_audioStatusReceived,m_audioStatusTimerStarted);
1428+
}
14201429
LOGINFO(" Send GiveAudioStatus ");
1430+
m_audioStatusRequestedCount++;
14211431
_instance->smConnection->sendTo(LogicalAddress::AUDIO_SYSTEM,MessageEncoder().encode(GiveAudioStatus()), 100);
14221432

14231433
}
@@ -2651,10 +2661,11 @@ namespace WPEFramework
26512661
m_audioStatusDetectionTimer.stop();
26522662
}
26532663
m_isAudioStatusInfoUpdated = false;
2664+
m_audioStatusRequestedCount = 0;
26542665
m_audioStatusReceived = false;
26552666
m_audioStatusTimerStarted = false;
2656-
LOGINFO("Audio device removed, reset the audio status info. m_isAudioStatusInfoUpdated :%d, m_audioStatusReceived :%d, m_audioStatusTimerStarted:%d ", m_isAudioStatusInfoUpdated,m_audioStatusReceived,m_audioStatusTimerStarted);
2657-
sendNotify(eventString[HDMICECSINK_EVENT_AUDIO_DEVICE_CONNECTED_STATUS], params)
2667+
LOGINFO("Audio device removed, reset the audio status info. m_isAudioStatusInfoUpdated :%d, m_audioStatusRequestedCount :%d, m_audioStatusReceived :%d, m_audioStatusTimerStarted:%d", m_isAudioStatusInfoUpdated,m_audioStatusRequestedCount,m_audioStatusReceived,m_audioStatusTimerStarted);
2668+
sendNotify(eventString[HDMICECSINK_EVENT_AUDIO_DEVICE_CONNECTED_STATUS], params)
26582669
}
26592670

26602671
_instance->deviceList[logicalAddress].m_isRequestRetry = 0;
@@ -3287,10 +3298,10 @@ namespace WPEFramework
32873298
m_audioStatusDetectionTimer.stop();
32883299
}
32893300
m_isAudioStatusInfoUpdated = false;
3301+
m_audioStatusRequestedCount = 0;
32903302
m_audioStatusReceived = false;
32913303
m_audioStatusTimerStarted = false;
3292-
LOGINFO("CEC Disabled, reset the audio status info. m_isAudioStatusInfoUpdated :%d, m_audioStatusReceived :%d, m_audioStatusTimerStarted:%d ", m_isAudioStatusInfoUpdated,m_audioStatusReceived,m_audioStatusTimerStarted);
3293-
3304+
LOGINFO("CEC Disabled, reset the audio status info. m_isAudioStatusInfoUpdated :%d, m_audioStatusRequestedCount :%d, m_audioStatusReceived :%d, m_audioStatusTimerStarted:%d ", m_isAudioStatusInfoUpdated,m_audioStatusRequestedCount,m_audioStatusReceived,m_audioStatusTimerStarted);
32943305

32953306
for(int i=0; i< 16; i++)
32963307
{
@@ -3527,6 +3538,8 @@ namespace WPEFramework
35273538
keyInfo = _instance->m_SendKeyQueue.front();
35283539
_instance->m_SendKeyQueue.pop();
35293540

3541+
if((keyInfo.logicalAddr != 0x5) || ((keyInfo.logicalAddr == 0x5) && (_instance->hdmiCecAudioDeviceConnected == true)))
3542+
{
35303543
if(keyInfo.UserControl == "sendUserControlPressed" )
35313544
{
35323545
LOGINFO("sendUserControlPressed : logical addr:0x%x keyCode: 0x%x queue size :%zu \n",keyInfo.logicalAddr,keyInfo.keyCode,_instance->m_SendKeyQueue.size());
@@ -3546,16 +3559,16 @@ namespace WPEFramework
35463559

35473560
if((_instance->m_SendKeyQueue.size()<=1 || (_instance->m_SendKeyQueue.size() % 2 == 0)) && ((keyInfo.keyCode == VOLUME_UP) || (keyInfo.keyCode == VOLUME_DOWN) || (keyInfo.keyCode == MUTE)) )
35483561
{
3562+
LOGINFO("m_isAudioStatusInfoUpdated :%d, m_audioStatusRequestedCount :%d, m_audioStatusReceived :%d, m_audioStatusTimerStarted:%d ",_instance->m_isAudioStatusInfoUpdated,_instance->m_audioStatusRequestedCount,_instance->m_audioStatusReceived,_instance->m_audioStatusTimerStarted);
35493563
if(keyInfo.keyCode == MUTE)
35503564
{
35513565
_instance->sendGiveAudioStatusMsg();
35523566
}
35533567
else
35543568
{
3555-
LOGINFO("m_isAudioStatusInfoUpdated :%d, m_audioStatusReceived :%d, m_audioStatusTimerStarted:%d ",_instance->m_isAudioStatusInfoUpdated,_instance->m_audioStatusReceived,_instance->m_audioStatusTimerStarted);
35563569
if (!_instance->m_isAudioStatusInfoUpdated)
35573570
{
3558-
if ( !(_instance->m_audioStatusDetectionTimer.isActive()))
3571+
if ((!(_instance->m_audioStatusDetectionTimer.isActive())) && (_instance->m_audioStatusRequestedCount == 0))
35593572
{
35603573
LOGINFO("Audio status info not updated. Starting the Timer!");
35613574
_instance->m_audioStatusTimerStarted = true;
@@ -3570,6 +3583,7 @@ namespace WPEFramework
35703583
}
35713584
}
35723585
}
3586+
}
35733587
}
35743588

35753589
}//while(!_instance->m_sendKeyEventThreadExit)

HdmiCecSink/HdmiCecSink.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -634,6 +634,7 @@ namespace WPEFramework {
634634
bool m_isAudioStatusInfoUpdated;
635635
bool m_audioStatusReceived;
636636
bool m_audioStatusTimerStarted;
637+
int m_audioStatusRequestedCount;
637638
std::thread m_sendKeyEventThread;
638639
std::mutex m_sendKeyEventMutex;
639640
std::queue<SendKeyInfo> m_SendKeyQueue;

0 commit comments

Comments
 (0)