Merge "Limit CEC version on version reported by CEC HAL" into sc-dev
This commit is contained in:
@@ -774,8 +774,14 @@ public class HdmiControlService extends SystemService {
|
||||
|
||||
private void initializeCec(int initiatedBy) {
|
||||
mAddressAllocated = false;
|
||||
mCecVersion = getHdmiCecConfig().getIntValue(
|
||||
int settingsCecVersion = getHdmiCecConfig().getIntValue(
|
||||
HdmiControlManager.CEC_SETTING_NAME_HDMI_CEC_VERSION);
|
||||
int supportedCecVersion = mCecController.getVersion();
|
||||
|
||||
// Limit the used CEC version to the highest supported version by HAL and selected
|
||||
// version in settings (but at least v1.4b).
|
||||
mCecVersion = Math.max(HdmiControlManager.HDMI_CEC_VERSION_1_4_B,
|
||||
Math.min(settingsCecVersion, supportedCecVersion));
|
||||
|
||||
mCecController.setOption(OptionKey.SYSTEM_CEC_CONTROL, true);
|
||||
mCecController.setLanguage(mMenuLanguage);
|
||||
@@ -2184,6 +2190,7 @@ public class HdmiControlService extends SystemService {
|
||||
|
||||
pw.println("mProhibitMode: " + mProhibitMode);
|
||||
pw.println("mPowerStatus: " + mPowerStatusController.getPowerStatus());
|
||||
pw.println("mCecVersion: " + mCecVersion);
|
||||
|
||||
// System settings
|
||||
pw.println("System_settings:");
|
||||
|
||||
@@ -58,6 +58,7 @@ final class FakeNativeWrapper implements NativeWrapper {
|
||||
private int mMyPhysicalAddress = 0;
|
||||
private HdmiPortInfo[] mHdmiPortInfo = null;
|
||||
private HdmiCecController.HdmiCecCallback mCallback = null;
|
||||
private int mCecVersion = HdmiControlManager.HDMI_CEC_VERSION_2_0;
|
||||
|
||||
@Override
|
||||
public String nativeInit() {
|
||||
@@ -96,7 +97,7 @@ final class FakeNativeWrapper implements NativeWrapper {
|
||||
|
||||
@Override
|
||||
public int nativeGetVersion() {
|
||||
return HdmiControlManager.HDMI_CEC_VERSION_2_0;
|
||||
return mCecVersion;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -132,6 +133,10 @@ final class FakeNativeWrapper implements NativeWrapper {
|
||||
mPortConnectionStatus.put(port, connected);
|
||||
}
|
||||
|
||||
public void setCecVersion(@HdmiControlManager.HdmiCecVersion int cecVersion) {
|
||||
mCecVersion = cecVersion;
|
||||
}
|
||||
|
||||
public void onCecMessage(HdmiCecMessage hdmiCecMessage) {
|
||||
if (mCallback == null) {
|
||||
return;
|
||||
|
||||
@@ -49,6 +49,7 @@ import androidx.test.InstrumentationRegistry;
|
||||
import androidx.test.filters.SmallTest;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Ignore;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.junit.runners.JUnit4;
|
||||
@@ -622,6 +623,45 @@ public class HdmiControlServiceTest {
|
||||
assertEquals(runnerUid, Binder.getCallingWorkSourceUid());
|
||||
}
|
||||
|
||||
@Ignore("b/180499471")
|
||||
@Test
|
||||
public void initCecVersion_limitToMinimumSupportedVersion() {
|
||||
mHdmiControlService.getHdmiCecConfig().setIntValue(
|
||||
HdmiControlManager.CEC_SETTING_NAME_HDMI_CEC_VERSION,
|
||||
HdmiControlManager.HDMI_CEC_VERSION_2_0);
|
||||
mNativeWrapper.setCecVersion(HdmiControlManager.HDMI_CEC_VERSION_1_4_B);
|
||||
|
||||
mHdmiControlService.initService();
|
||||
assertThat(mHdmiControlService.getCecVersion()).isEqualTo(
|
||||
HdmiControlManager.HDMI_CEC_VERSION_1_4_B);
|
||||
}
|
||||
|
||||
@Ignore("b/180499471")
|
||||
@Test
|
||||
public void initCecVersion_limitToAtLeast1_4() {
|
||||
mHdmiControlService.getHdmiCecConfig().setIntValue(
|
||||
HdmiControlManager.CEC_SETTING_NAME_HDMI_CEC_VERSION,
|
||||
HdmiControlManager.HDMI_CEC_VERSION_2_0);
|
||||
mNativeWrapper.setCecVersion(0x0);
|
||||
|
||||
mHdmiControlService.initService();
|
||||
assertThat(mHdmiControlService.getCecVersion()).isEqualTo(
|
||||
HdmiControlManager.HDMI_CEC_VERSION_1_4_B);
|
||||
}
|
||||
|
||||
@Ignore("b/180499471")
|
||||
@Test
|
||||
public void initCecVersion_useHighestMatchingVersion() {
|
||||
mHdmiControlService.getHdmiCecConfig().setIntValue(
|
||||
HdmiControlManager.CEC_SETTING_NAME_HDMI_CEC_VERSION,
|
||||
HdmiControlManager.HDMI_CEC_VERSION_2_0);
|
||||
mNativeWrapper.setCecVersion(HdmiControlManager.HDMI_CEC_VERSION_2_0);
|
||||
|
||||
mHdmiControlService.initService();
|
||||
assertThat(mHdmiControlService.getCecVersion()).isEqualTo(
|
||||
HdmiControlManager.HDMI_CEC_VERSION_2_0);
|
||||
}
|
||||
|
||||
private static class VolumeControlFeatureCallback extends
|
||||
IHdmiCecVolumeControlFeatureListener.Stub {
|
||||
boolean mCallbackReceived = false;
|
||||
|
||||
Reference in New Issue
Block a user