75
75
#define HDMICECSINK_NUMBER_TV_ADDR 2
76
76
#define HDMICECSINK_UPDATE_POWER_STATUS_INTERVA_MS (60 * 1000 )
77
77
#define HDMISINK_ARC_START_STOP_MAX_WAIT_MS 4000
78
- #define HDMICECSINK_UPDATE_AUDIO_STATUS_INTERVAL_MS 500
78
+ #define HDMICECSINK_UPDATE_AUDIO_STATUS_INTERVAL_MS 2000
79
79
80
80
81
81
#define SAD_FMT_CODE_AC3 2
@@ -710,6 +710,7 @@ namespace WPEFramework
710
710
m_isHdmiInConnected = false ;
711
711
hdmiCecAudioDeviceConnected = false ;
712
712
m_isAudioStatusInfoUpdated = false ;
713
+ m_audioStatusRequestedCount = 0 ;
713
714
m_audioStatusReceived = false ;
714
715
m_audioStatusTimerStarted = false ;
715
716
m_audioDevicePowerStatusRequested = false ;
@@ -1161,9 +1162,11 @@ namespace WPEFramework
1161
1162
LOGINFO (" AudioStatus received from the Audio Device and the timer is still active. So stopping the timer!\n " );
1162
1163
m_audioStatusDetectionTimer.stop ();
1163
1164
}
1164
- 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);
1165
+ 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);
1165
1166
}
1166
- 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 ());
1167
+ if (m_audioStatusRequestedCount > 0 )
1168
+ m_audioStatusRequestedCount--;
1169
+ 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 ());
1167
1170
params[" muteStatus" ] = msg.status .getAudioMuteStatus ();
1168
1171
params[" volumeLevel" ] = msg.status .getAudioVolume ();
1169
1172
sendNotify (eventString[HDMICECSINK_EVENT_REPORT_AUDIO_STATUS], params);
@@ -1355,7 +1358,15 @@ namespace WPEFramework
1355
1358
return ;
1356
1359
if (!(_instance->smConnection ))
1357
1360
return ;
1361
+ if (m_audioStatusDetectionTimer.isActive ())
1362
+ {
1363
+ LOGINFO (" Stopping the Audio Status Timer!\n " );
1364
+ m_audioStatusDetectionTimer.stop ();
1365
+ m_audioStatusTimerStarted = false ;
1366
+ LOGINFO (" m_isAudioStatusInfoUpdated :%d, m_audioStatusReceived :%d, m_audioStatusTimerStarted:%d " ,m_isAudioStatusInfoUpdated,m_audioStatusReceived,m_audioStatusTimerStarted);
1367
+ }
1358
1368
LOGINFO (" Send GiveAudioStatus " );
1369
+ m_audioStatusRequestedCount++;
1359
1370
_instance->smConnection ->sendTo (LogicalAddress::AUDIO_SYSTEM,MessageEncoder ().encode (GiveAudioStatus ()), 100 );
1360
1371
1361
1372
}
@@ -2497,10 +2508,11 @@ namespace WPEFramework
2497
2508
m_audioStatusDetectionTimer.stop ();
2498
2509
}
2499
2510
m_isAudioStatusInfoUpdated = false ;
2511
+ m_audioStatusRequestedCount = 0 ;
2500
2512
m_audioStatusReceived = false ;
2501
2513
m_audioStatusTimerStarted = false ;
2502
- LOGINFO (" Audio device removed, reset the audio status info. m_isAudioStatusInfoUpdated :%d, m_audioStatusReceived :%d, m_audioStatusTimerStarted:%d " , m_isAudioStatusInfoUpdated,m_audioStatusReceived,m_audioStatusTimerStarted);
2503
- sendNotify (eventString[HDMICECSINK_EVENT_AUDIO_DEVICE_CONNECTED_STATUS], params);
2514
+ 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);
2515
+ sendNotify (eventString[HDMICECSINK_EVENT_AUDIO_DEVICE_CONNECTED_STATUS], params);
2504
2516
}
2505
2517
2506
2518
_instance->deviceList [logicalAddress].m_isRequestRetry = 0 ;
@@ -3121,10 +3133,10 @@ namespace WPEFramework
3121
3133
m_audioStatusDetectionTimer.stop ();
3122
3134
}
3123
3135
m_isAudioStatusInfoUpdated = false ;
3136
+ m_audioStatusRequestedCount = 0 ;
3124
3137
m_audioStatusReceived = false ;
3125
3138
m_audioStatusTimerStarted = false ;
3126
- LOGINFO (" CEC Disabled, reset the audio status info. m_isAudioStatusInfoUpdated :%d, m_audioStatusReceived :%d, m_audioStatusTimerStarted:%d " , m_isAudioStatusInfoUpdated,m_audioStatusReceived,m_audioStatusTimerStarted);
3127
-
3139
+ 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);
3128
3140
3129
3141
for (int i=0 ; i< 16 ; i++)
3130
3142
{
@@ -3361,6 +3373,8 @@ namespace WPEFramework
3361
3373
keyInfo = _instance->m_SendKeyQueue .front ();
3362
3374
_instance->m_SendKeyQueue .pop ();
3363
3375
3376
+ if ((keyInfo.logicalAddr != 0x5 ) || ((keyInfo.logicalAddr == 0x5 ) && (_instance->hdmiCecAudioDeviceConnected == true )))
3377
+ {
3364
3378
if (keyInfo.UserControl == " sendUserControlPressed" )
3365
3379
{
3366
3380
LOGINFO (" sendUserControlPressed : logical addr:0x%x keyCode: 0x%x queue size :%zu \n " ,keyInfo.logicalAddr ,keyInfo.keyCode ,_instance->m_SendKeyQueue .size ());
@@ -3380,16 +3394,16 @@ namespace WPEFramework
3380
3394
3381
3395
if ((_instance->m_SendKeyQueue .size ()<=1 || (_instance->m_SendKeyQueue .size () % 2 == 0 )) && ((keyInfo.keyCode == VOLUME_UP) || (keyInfo.keyCode == VOLUME_DOWN) || (keyInfo.keyCode == MUTE)) )
3382
3396
{
3397
+ 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 );
3383
3398
if (keyInfo.keyCode == MUTE)
3384
3399
{
3385
3400
_instance->sendGiveAudioStatusMsg ();
3386
3401
}
3387
3402
else
3388
3403
{
3389
- LOGINFO (" m_isAudioStatusInfoUpdated :%d, m_audioStatusReceived :%d, m_audioStatusTimerStarted:%d " ,_instance->m_isAudioStatusInfoUpdated ,_instance->m_audioStatusReceived ,_instance->m_audioStatusTimerStarted );
3390
3404
if (!_instance->m_isAudioStatusInfoUpdated )
3391
3405
{
3392
- if ( !(_instance->m_audioStatusDetectionTimer .isActive ()))
3406
+ if (( !(_instance->m_audioStatusDetectionTimer .isActive ())) && (_instance-> m_audioStatusRequestedCount == 0 ))
3393
3407
{
3394
3408
LOGINFO (" Audio status info not updated. Starting the Timer!" );
3395
3409
_instance->m_audioStatusTimerStarted = true ;
@@ -3404,6 +3418,7 @@ namespace WPEFramework
3404
3418
}
3405
3419
}
3406
3420
}
3421
+ }
3407
3422
}
3408
3423
3409
3424
}// while(!_instance->m_sendKeyEventThreadExit)
0 commit comments