@@ -158,6 +158,10 @@ void AVInput::InitializeIARM()
158
158
IARM_BUS_DSMGR_NAME,
159
159
IARM_BUS_DSMGR_EVENT_HDMI_IN_ALLM_STATUS,
160
160
dsAVGameFeatureStatusEventHandler));
161
+ IARM_CHECK (IARM_Bus_RegisterEventHandler (
162
+ IARM_BUS_DSMGR_NAME,
163
+ IARM_BUS_DSMGR_EVENT_HDMI_IN_VRR_STATUS,
164
+ dsAVGameFeatureStatusEventHandler));
161
165
IARM_CHECK (IARM_Bus_RegisterEventHandler (
162
166
IARM_BUS_DSMGR_NAME,
163
167
IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_HOTPLUG,
@@ -200,6 +204,9 @@ void AVInput::DeinitializeIARM()
200
204
IARM_CHECK (IARM_Bus_RemoveEventHandler (
201
205
IARM_BUS_DSMGR_NAME,
202
206
IARM_BUS_DSMGR_EVENT_HDMI_IN_ALLM_STATUS, dsAVGameFeatureStatusEventHandler));
207
+ IARM_CHECK (IARM_Bus_RemoveEventHandler (
208
+ IARM_BUS_DSMGR_NAME,
209
+ IARM_BUS_DSMGR_EVENT_HDMI_IN_VRR_STATUS,dsAVGameFeatureStatusEventHandler));
203
210
IARM_CHECK (IARM_Bus_RemoveEventHandler (
204
211
IARM_BUS_DSMGR_NAME,
205
212
IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_HOTPLUG, dsAVEventHandler));
@@ -1007,6 +1014,28 @@ void AVInput::dsAVGameFeatureStatusEventHandler(const char *owner, IARM_EventId_
1007
1014
1008
1015
AVInput::_instance->AVInputALLMChange (hdmi_in_port, allm_mode);
1009
1016
}
1017
+ if (IARM_BUS_DSMGR_EVENT_HDMI_IN_VRR_STATUS == eventId)
1018
+ {
1019
+ bool vrr_mode = true ;
1020
+ // Hardcoding the values
1021
+ int hdmi_in_port = 0 ;
1022
+ dsVRRType_t vrrType = VRR_HDMI_VRR;
1023
+ //
1024
+ if (!vrrType)
1025
+ {
1026
+ vrr_mode = false
1027
+ AVInput::_instance->AVInputHDMIVRRChange (hdmi_in_port, vrr_mode);
1028
+ AVInput::_instance->AVInputAMDFreeSyncChange (hdmi_in_port, vrr_mode);
1029
+ }
1030
+ elseif (vrrType == VRR_HDMI_VRR)
1031
+ {
1032
+ AVInput::_instance->AVInputHDMIVRRChange (hdmi_in_port, vrr_mode);
1033
+ }
1034
+ elseif (vrrType == VRR_AMD_FREESYNC_PREMIUM)
1035
+ {
1036
+ AVInput::_instance->AVInputAMDFreeSyncChange (hdmi_in_port, vrr_mode);
1037
+ }
1038
+ }
1010
1039
}
1011
1040
1012
1041
void AVInput::AVInputALLMChange ( int port , bool allm_mode)
@@ -1018,6 +1047,25 @@ void AVInput::AVInputALLMChange( int port , bool allm_mode)
1018
1047
1019
1048
sendNotify (AVINPUT_EVENT_ON_GAME_FEATURE_STATUS_CHANGED, params);
1020
1049
}
1050
+ void AVInput::AVInputHDMIVRRChange ( int port , bool vrr_mode)
1051
+ {
1052
+ JsonObject params;
1053
+ params[" id" ] = port;
1054
+ params[" gameFeature" ] = " VRR-HDMI" ;
1055
+ params[" mode" ] = vrr_mode;
1056
+
1057
+ sendNotify (AVINPUT_EVENT_ON_GAME_FEATURE_STATUS_CHANGED, params);
1058
+ }
1059
+
1060
+ void AVInput::AVInputAMDFreeSyncChange ( int port , bool vrr_mode)
1061
+ {
1062
+ JsonObject params;
1063
+ params[" id" ] = port;
1064
+ params[" gameFeature" ] = " VRR-FREESYNC-PREMIUM" ;
1065
+ params[" mode" ] = vrr_mode;
1066
+
1067
+ sendNotify (AVINPUT_EVENT_ON_GAME_FEATURE_STATUS_CHANGED, params);
1068
+ }
1021
1069
1022
1070
uint32_t AVInput::getSupportedGameFeatures (const JsonObject& parameters, JsonObject& response)
1023
1071
{
@@ -1073,15 +1121,29 @@ uint32_t AVInput::getGameFeatureStatusWrapper(const JsonObject& parameters, Json
1073
1121
LOGWARN (" AVInput::getGameFeatureStatusWrapper ALLM MODE:%d" , allm);
1074
1122
response[" mode" ] = allm;
1075
1123
}
1076
- else if (strcmp (sGameFeature .c_str (), " HDMI VRR" ) == 0 )
1124
+ else if (strcmp (sGameFeature .c_str (), " VRR-HDMI " ) == 0 )
1077
1125
{
1078
- bool hdmi_vrr = getVRRStatus (portId);
1126
+ bool hdmi_vrr = false ;
1127
+ dsVRRType_t vrrType = VRR_HDMI_VRR;
1128
+ dsVRRType_t n_vrrType;
1129
+ getVRRStatus (portId, &n_vrrType);
1130
+ if (vrrType == n_vrrType)
1131
+ hdmi_vrr = true ;
1132
+ else
1133
+ hdmi_vrr = false ;
1079
1134
LOGWARN (" AVInput::getGameFeatureStatusWrapper HDMI VRR MODE:%d" , hdmi_vrr);
1080
1135
response[" mode" ] = hdmi_vrr;
1081
1136
}
1082
- else if (strcmp (sGameFeature .c_str (), " AMD FreeSync Premium " ) == 0 )
1137
+ else if (strcmp (sGameFeature .c_str (), " VRR-FREESYNC-PREMIUM " ) == 0 )
1083
1138
{
1084
- bool amd_freesync_premium = getVRRStatus (portId);
1139
+ bool amd_freesync_premium = false ;
1140
+ dsVRRType_t vrrType = VRR_AMD_FREESYNC_PREMIUM;
1141
+ dsVRRType_t n_vrrType;
1142
+ getVRRStatus (portId, &n_vrrType);
1143
+ if (vrrType == n_vrrType)
1144
+ amd_freesync_premium = true ;
1145
+ else
1146
+ amd_freesync_premium = false ;
1085
1147
LOGWARN (" AVInput::getGameFeatureStatusWrapper AMD FreeSync Premium MODE:%d" , amd_freesync_premium);
1086
1148
response[" mode" ] = amd_freesync_premium;
1087
1149
}
@@ -1109,14 +1171,17 @@ bool AVInput::getALLMStatus(int iPort)
1109
1171
return allm;
1110
1172
}
1111
1173
1112
- bool AVInput::getVRRStatus (int iPort)
1174
+ void AVInput::getVRRStatus (int iPort, VRRType_t *vrrType )
1113
1175
{
1114
- bool vrr = true ;
1115
- /*
1116
- to be implemented
1176
+ /* to be implemented
1177
+
1178
+ //device::HdmiInput::getInstance().getVRRStatus (iPort, vrrType);
1179
+
1117
1180
*/
1118
- return vrr;
1181
+ // hardcoding the vrrType to VRR_HDMI_VRR
1182
+ *vrrType = VRR_HDMI_VRR;
1119
1183
}
1184
+
1120
1185
uint32_t AVInput::getRawSPDWrapper (const JsonObject& parameters, JsonObject& response)
1121
1186
{
1122
1187
LOGINFOMETHOD ();
@@ -1394,6 +1459,7 @@ bool getVRRSupport(int portId,bool *vrrSupportValue)
1394
1459
bool ret = true ;
1395
1460
/*
1396
1461
to be implemented
1462
+ device::HdmiInput::getInstance().getVRRSupport (portId, vrrSupportValue);
1397
1463
*/
1398
1464
return ret;
1399
1465
}
@@ -1430,7 +1496,7 @@ bool setVRRSupport(int portId, bool vrrSupport)
1430
1496
{
1431
1497
bool ret = true ;
1432
1498
/*
1433
- to be implemented
1499
+ device::HdmiInput::getInstance().getVRRSupport (portId, vrrSupportValue);
1434
1500
*/
1435
1501
return ret;
1436
1502
}
0 commit comments