Loading services/core/java/com/android/server/hdmi/Constants.java +2 −0 Original line number Diff line number Diff line Loading @@ -619,6 +619,8 @@ final class Constants { }) @interface HpdSignalType {} static final String DEVICE_CONFIG_FEATURE_FLAG_SOUNDBAR_MODE = "soundbar_mode"; private Constants() { /* cannot be instantiated */ } Loading services/core/java/com/android/server/hdmi/HdmiControlService.java +42 −10 Original line number Diff line number Diff line Loading @@ -86,6 +86,7 @@ import android.os.ShellCallback; import android.os.SystemClock; import android.os.SystemProperties; import android.os.UserHandle; import android.provider.DeviceConfig; import android.provider.Settings.Global; import android.sysprop.HdmiProperties; import android.text.TextUtils; Loading Loading @@ -449,6 +450,9 @@ public class HdmiControlService extends SystemService { @ServiceThreadOnly private boolean mWakeUpMessageReceived = false; @ServiceThreadOnly private boolean mSoundbarModeFeatureFlagEnabled = false; @ServiceThreadOnly private int mActivePortId = Constants.INVALID_PORT_ID; Loading Loading @@ -763,14 +767,6 @@ public class HdmiControlService extends SystemService { } } }, mServiceThreadExecutor); mHdmiCecConfig.registerChangeListener(HdmiControlManager.CEC_SETTING_NAME_SOUNDBAR_MODE, new HdmiCecConfig.SettingChangeListener() { @Override public void onChange(String setting) { setSoundbarMode(mHdmiCecConfig.getIntValue( HdmiControlManager.CEC_SETTING_NAME_SOUNDBAR_MODE)); } }, mServiceThreadExecutor); mHdmiCecConfig.registerChangeListener( HdmiControlManager.CEC_SETTING_NAME_SYSTEM_AUDIO_CONTROL, new HdmiCecConfig.SettingChangeListener() { Loading Loading @@ -819,9 +815,39 @@ public class HdmiControlService extends SystemService { HdmiControlManager.SETTING_NAME_EARC_ENABLED); setEarcEnabled(enabled); } }, mServiceThreadExecutor); mSoundbarModeFeatureFlagEnabled = DeviceConfig.getBoolean( DeviceConfig.NAMESPACE_HDMI_CONTROL, Constants.DEVICE_CONFIG_FEATURE_FLAG_SOUNDBAR_MODE, false); DeviceConfig.addOnPropertiesChangedListener(DeviceConfig.NAMESPACE_HDMI_CONTROL, getContext().getMainExecutor(), new DeviceConfig.OnPropertiesChangedListener() { @Override public void onPropertiesChanged(DeviceConfig.Properties properties) { mSoundbarModeFeatureFlagEnabled = properties.getBoolean( Constants.DEVICE_CONFIG_FEATURE_FLAG_SOUNDBAR_MODE, false); boolean soundbarModeSetting = mHdmiCecConfig.getIntValue( HdmiControlManager.CEC_SETTING_NAME_SOUNDBAR_MODE) == SOUNDBAR_MODE_ENABLED; setSoundbarMode(soundbarModeSetting && mSoundbarModeFeatureFlagEnabled ? SOUNDBAR_MODE_ENABLED : SOUNDBAR_MODE_DISABLED); } }); mHdmiCecConfig.registerChangeListener(HdmiControlManager.CEC_SETTING_NAME_SOUNDBAR_MODE, new HdmiCecConfig.SettingChangeListener() { @Override public void onChange(String setting) { boolean soundbarModeSetting = mHdmiCecConfig.getIntValue( HdmiControlManager.CEC_SETTING_NAME_SOUNDBAR_MODE) == SOUNDBAR_MODE_ENABLED; setSoundbarMode(soundbarModeSetting && mSoundbarModeFeatureFlagEnabled ? SOUNDBAR_MODE_ENABLED : SOUNDBAR_MODE_DISABLED); } }, mServiceThreadExecutor); } /** Returns true if the device screen is off */ boolean isScreenOff() { return mDisplayManager.getDisplay(Display.DEFAULT_DISPLAY).getState() == Display.STATE_OFF; Loading Loading @@ -937,6 +963,11 @@ public class HdmiControlService extends SystemService { return mPowerManagerInternal; } @VisibleForTesting protected void enableAllFeatureFlags() { mSoundbarModeFeatureFlagEnabled = true; } /** * Triggers the address allocation that states the presence of a local device audio system in * the network. Loading Loading @@ -1151,7 +1182,8 @@ public class HdmiControlService extends SystemService { if (mHdmiCecConfig.getIntValue(HdmiControlManager.CEC_SETTING_NAME_SOUNDBAR_MODE) == SOUNDBAR_MODE_ENABLED && !allLocalDeviceTypes.contains(HdmiDeviceInfo.DEVICE_AUDIO_SYSTEM) && SystemProperties.getBoolean(Constants.PROPERTY_ARC_SUPPORT, true)) { && SystemProperties.getBoolean(Constants.PROPERTY_ARC_SUPPORT, true) && mSoundbarModeFeatureFlagEnabled) { allLocalDeviceTypes.add(HdmiDeviceInfo.DEVICE_AUDIO_SYSTEM); } return allLocalDeviceTypes; Loading services/tests/servicestests/src/com/android/server/hdmi/ActiveSourceActionTest.java +1 −0 Original line number Diff line number Diff line Loading @@ -94,6 +94,7 @@ public class ActiveSourceActionTest { mHdmiControlService.setCecController(hdmiCecController); mHdmiControlService.setHdmiMhlController(HdmiMhlControllerStub.create(mHdmiControlService)); mHdmiControlService.initService(); mHdmiControlService.enableAllFeatureFlags(); mHdmiControlService.onBootPhase(PHASE_SYSTEM_SERVICES_READY); mPowerManager = new FakePowerManagerWrapper(mContextSpy); mHdmiControlService.setPowerManager(mPowerManager); Loading services/tests/servicestests/src/com/android/server/hdmi/ArcInitiationActionFromAvrTest.java +1 −0 Original line number Diff line number Diff line Loading @@ -111,6 +111,7 @@ public class ArcInitiationActionFromAvrTest { hdmiControlService.setCecController(hdmiCecController); hdmiControlService.setHdmiMhlController(HdmiMhlControllerStub.create(hdmiControlService)); hdmiControlService.initService(); hdmiControlService.enableAllFeatureFlags(); mPowerManager = new FakePowerManagerWrapper(mContextSpy); hdmiControlService.setPowerManager(mPowerManager); mAction = new ArcInitiationActionFromAvr(mHdmiCecLocalDeviceAudioSystem); Loading services/tests/servicestests/src/com/android/server/hdmi/ArcTerminationActionFromAvrTest.java +1 −0 Original line number Diff line number Diff line Loading @@ -107,6 +107,7 @@ public class ArcTerminationActionFromAvrTest { hdmiControlService.setCecController(hdmiCecController); hdmiControlService.setHdmiMhlController(HdmiMhlControllerStub.create(hdmiControlService)); hdmiControlService.initService(); hdmiControlService.enableAllFeatureFlags(); mPowerManager = new FakePowerManagerWrapper(mContextSpy); hdmiControlService.setPowerManager(mPowerManager); mHdmiCecLocalDeviceAudioSystem = new HdmiCecLocalDeviceAudioSystem(hdmiControlService) { Loading Loading
services/core/java/com/android/server/hdmi/Constants.java +2 −0 Original line number Diff line number Diff line Loading @@ -619,6 +619,8 @@ final class Constants { }) @interface HpdSignalType {} static final String DEVICE_CONFIG_FEATURE_FLAG_SOUNDBAR_MODE = "soundbar_mode"; private Constants() { /* cannot be instantiated */ } Loading
services/core/java/com/android/server/hdmi/HdmiControlService.java +42 −10 Original line number Diff line number Diff line Loading @@ -86,6 +86,7 @@ import android.os.ShellCallback; import android.os.SystemClock; import android.os.SystemProperties; import android.os.UserHandle; import android.provider.DeviceConfig; import android.provider.Settings.Global; import android.sysprop.HdmiProperties; import android.text.TextUtils; Loading Loading @@ -449,6 +450,9 @@ public class HdmiControlService extends SystemService { @ServiceThreadOnly private boolean mWakeUpMessageReceived = false; @ServiceThreadOnly private boolean mSoundbarModeFeatureFlagEnabled = false; @ServiceThreadOnly private int mActivePortId = Constants.INVALID_PORT_ID; Loading Loading @@ -763,14 +767,6 @@ public class HdmiControlService extends SystemService { } } }, mServiceThreadExecutor); mHdmiCecConfig.registerChangeListener(HdmiControlManager.CEC_SETTING_NAME_SOUNDBAR_MODE, new HdmiCecConfig.SettingChangeListener() { @Override public void onChange(String setting) { setSoundbarMode(mHdmiCecConfig.getIntValue( HdmiControlManager.CEC_SETTING_NAME_SOUNDBAR_MODE)); } }, mServiceThreadExecutor); mHdmiCecConfig.registerChangeListener( HdmiControlManager.CEC_SETTING_NAME_SYSTEM_AUDIO_CONTROL, new HdmiCecConfig.SettingChangeListener() { Loading Loading @@ -819,9 +815,39 @@ public class HdmiControlService extends SystemService { HdmiControlManager.SETTING_NAME_EARC_ENABLED); setEarcEnabled(enabled); } }, mServiceThreadExecutor); mSoundbarModeFeatureFlagEnabled = DeviceConfig.getBoolean( DeviceConfig.NAMESPACE_HDMI_CONTROL, Constants.DEVICE_CONFIG_FEATURE_FLAG_SOUNDBAR_MODE, false); DeviceConfig.addOnPropertiesChangedListener(DeviceConfig.NAMESPACE_HDMI_CONTROL, getContext().getMainExecutor(), new DeviceConfig.OnPropertiesChangedListener() { @Override public void onPropertiesChanged(DeviceConfig.Properties properties) { mSoundbarModeFeatureFlagEnabled = properties.getBoolean( Constants.DEVICE_CONFIG_FEATURE_FLAG_SOUNDBAR_MODE, false); boolean soundbarModeSetting = mHdmiCecConfig.getIntValue( HdmiControlManager.CEC_SETTING_NAME_SOUNDBAR_MODE) == SOUNDBAR_MODE_ENABLED; setSoundbarMode(soundbarModeSetting && mSoundbarModeFeatureFlagEnabled ? SOUNDBAR_MODE_ENABLED : SOUNDBAR_MODE_DISABLED); } }); mHdmiCecConfig.registerChangeListener(HdmiControlManager.CEC_SETTING_NAME_SOUNDBAR_MODE, new HdmiCecConfig.SettingChangeListener() { @Override public void onChange(String setting) { boolean soundbarModeSetting = mHdmiCecConfig.getIntValue( HdmiControlManager.CEC_SETTING_NAME_SOUNDBAR_MODE) == SOUNDBAR_MODE_ENABLED; setSoundbarMode(soundbarModeSetting && mSoundbarModeFeatureFlagEnabled ? SOUNDBAR_MODE_ENABLED : SOUNDBAR_MODE_DISABLED); } }, mServiceThreadExecutor); } /** Returns true if the device screen is off */ boolean isScreenOff() { return mDisplayManager.getDisplay(Display.DEFAULT_DISPLAY).getState() == Display.STATE_OFF; Loading Loading @@ -937,6 +963,11 @@ public class HdmiControlService extends SystemService { return mPowerManagerInternal; } @VisibleForTesting protected void enableAllFeatureFlags() { mSoundbarModeFeatureFlagEnabled = true; } /** * Triggers the address allocation that states the presence of a local device audio system in * the network. Loading Loading @@ -1151,7 +1182,8 @@ public class HdmiControlService extends SystemService { if (mHdmiCecConfig.getIntValue(HdmiControlManager.CEC_SETTING_NAME_SOUNDBAR_MODE) == SOUNDBAR_MODE_ENABLED && !allLocalDeviceTypes.contains(HdmiDeviceInfo.DEVICE_AUDIO_SYSTEM) && SystemProperties.getBoolean(Constants.PROPERTY_ARC_SUPPORT, true)) { && SystemProperties.getBoolean(Constants.PROPERTY_ARC_SUPPORT, true) && mSoundbarModeFeatureFlagEnabled) { allLocalDeviceTypes.add(HdmiDeviceInfo.DEVICE_AUDIO_SYSTEM); } return allLocalDeviceTypes; Loading
services/tests/servicestests/src/com/android/server/hdmi/ActiveSourceActionTest.java +1 −0 Original line number Diff line number Diff line Loading @@ -94,6 +94,7 @@ public class ActiveSourceActionTest { mHdmiControlService.setCecController(hdmiCecController); mHdmiControlService.setHdmiMhlController(HdmiMhlControllerStub.create(mHdmiControlService)); mHdmiControlService.initService(); mHdmiControlService.enableAllFeatureFlags(); mHdmiControlService.onBootPhase(PHASE_SYSTEM_SERVICES_READY); mPowerManager = new FakePowerManagerWrapper(mContextSpy); mHdmiControlService.setPowerManager(mPowerManager); Loading
services/tests/servicestests/src/com/android/server/hdmi/ArcInitiationActionFromAvrTest.java +1 −0 Original line number Diff line number Diff line Loading @@ -111,6 +111,7 @@ public class ArcInitiationActionFromAvrTest { hdmiControlService.setCecController(hdmiCecController); hdmiControlService.setHdmiMhlController(HdmiMhlControllerStub.create(hdmiControlService)); hdmiControlService.initService(); hdmiControlService.enableAllFeatureFlags(); mPowerManager = new FakePowerManagerWrapper(mContextSpy); hdmiControlService.setPowerManager(mPowerManager); mAction = new ArcInitiationActionFromAvr(mHdmiCecLocalDeviceAudioSystem); Loading
services/tests/servicestests/src/com/android/server/hdmi/ArcTerminationActionFromAvrTest.java +1 −0 Original line number Diff line number Diff line Loading @@ -107,6 +107,7 @@ public class ArcTerminationActionFromAvrTest { hdmiControlService.setCecController(hdmiCecController); hdmiControlService.setHdmiMhlController(HdmiMhlControllerStub.create(hdmiControlService)); hdmiControlService.initService(); hdmiControlService.enableAllFeatureFlags(); mPowerManager = new FakePowerManagerWrapper(mContextSpy); hdmiControlService.setPowerManager(mPowerManager); mHdmiCecLocalDeviceAudioSystem = new HdmiCecLocalDeviceAudioSystem(hdmiControlService) { Loading