Merge "Make list of SADs to query configurable"

This commit is contained in:
Nathalie Le Clair
2021-10-19 15:15:46 +00:00
committed by Android (Google) Code Review
11 changed files with 1191 additions and 397 deletions

View File

@@ -3355,6 +3355,7 @@ package android.hardware.hdmi {
method @NonNull @RequiresPermission(android.Manifest.permission.HDMI_CEC) public String getPowerControlMode();
method @NonNull @RequiresPermission(android.Manifest.permission.HDMI_CEC) public String getPowerStateChangeOnActiveSourceLost();
method @NonNull @RequiresPermission(android.Manifest.permission.HDMI_CEC) public int getRoutingControl();
method @RequiresPermission(android.Manifest.permission.HDMI_CEC) public int getSadPresenceInQuery(@NonNull String);
method @Nullable public android.hardware.hdmi.HdmiSwitchClient getSwitchClient();
method @NonNull @RequiresPermission(android.Manifest.permission.HDMI_CEC) public int getSystemAudioControl();
method @NonNull @RequiresPermission(android.Manifest.permission.HDMI_CEC) public int getSystemAudioModeMuting();
@@ -3373,6 +3374,8 @@ package android.hardware.hdmi {
method @RequiresPermission(android.Manifest.permission.HDMI_CEC) public void setPowerControlMode(@NonNull String);
method @RequiresPermission(android.Manifest.permission.HDMI_CEC) public void setPowerStateChangeOnActiveSourceLost(@NonNull String);
method @RequiresPermission(android.Manifest.permission.HDMI_CEC) public void setRoutingControl(@NonNull int);
method @RequiresPermission(android.Manifest.permission.HDMI_CEC) public void setSadPresenceInQuery(@NonNull String, int);
method @RequiresPermission(android.Manifest.permission.HDMI_CEC) public void setSadsPresenceInQuery(@NonNull java.util.List<java.lang.String>, int);
method @RequiresPermission(android.Manifest.permission.HDMI_CEC) public void setStandbyMode(boolean);
method @RequiresPermission(android.Manifest.permission.HDMI_CEC) public void setSystemAudioControl(@NonNull int);
method @RequiresPermission(android.Manifest.permission.HDMI_CEC) public void setSystemAudioModeMuting(@NonNull int);
@@ -3384,6 +3387,21 @@ package android.hardware.hdmi {
field public static final String CEC_SETTING_NAME_HDMI_CEC_VERSION = "hdmi_cec_version";
field public static final String CEC_SETTING_NAME_POWER_CONTROL_MODE = "power_control_mode";
field public static final String CEC_SETTING_NAME_POWER_STATE_CHANGE_ON_ACTIVE_SOURCE_LOST = "power_state_change_on_active_source_lost";
field public static final String CEC_SETTING_NAME_QUERY_SAD_AAC = "query_sad_aac";
field public static final String CEC_SETTING_NAME_QUERY_SAD_ATRAC = "query_sad_atrac";
field public static final String CEC_SETTING_NAME_QUERY_SAD_DD = "query_sad_dd";
field public static final String CEC_SETTING_NAME_QUERY_SAD_DDP = "query_sad_ddp";
field public static final String CEC_SETTING_NAME_QUERY_SAD_DST = "query_sad_dst";
field public static final String CEC_SETTING_NAME_QUERY_SAD_DTS = "query_sad_dts";
field public static final String CEC_SETTING_NAME_QUERY_SAD_DTSHD = "query_sad_dtshd";
field public static final String CEC_SETTING_NAME_QUERY_SAD_LPCM = "query_sad_lpcm";
field public static final String CEC_SETTING_NAME_QUERY_SAD_MAX = "query_sad_max";
field public static final String CEC_SETTING_NAME_QUERY_SAD_MP3 = "query_sad_mp3";
field public static final String CEC_SETTING_NAME_QUERY_SAD_MPEG1 = "query_sad_mpeg1";
field public static final String CEC_SETTING_NAME_QUERY_SAD_MPEG2 = "query_sad_mpeg2";
field public static final String CEC_SETTING_NAME_QUERY_SAD_ONEBITAUDIO = "query_sad_onebitaudio";
field public static final String CEC_SETTING_NAME_QUERY_SAD_TRUEHD = "query_sad_truehd";
field public static final String CEC_SETTING_NAME_QUERY_SAD_WMAPRO = "query_sad_wmapro";
field public static final String CEC_SETTING_NAME_ROUTING_CONTROL = "routing_control";
field public static final String CEC_SETTING_NAME_SYSTEM_AUDIO_CONTROL = "system_audio_control";
field public static final String CEC_SETTING_NAME_SYSTEM_AUDIO_MODE_MUTING = "system_audio_mode_muting";
@@ -3451,6 +3469,8 @@ package android.hardware.hdmi {
field public static final int POWER_STATUS_TRANSIENT_TO_ON = 2; // 0x2
field public static final int POWER_STATUS_TRANSIENT_TO_STANDBY = 3; // 0x3
field public static final int POWER_STATUS_UNKNOWN = -1; // 0xffffffff
field public static final int QUERY_SAD_DISABLED = 0; // 0x0
field public static final int QUERY_SAD_ENABLED = 1; // 0x1
field @Deprecated public static final int RESULT_ALREADY_IN_PROGRESS = 4; // 0x4
field public static final int RESULT_COMMUNICATION_FAILED = 7; // 0x7
field public static final int RESULT_EXCEPTION = 5; // 0x5

File diff suppressed because it is too large Load Diff

View File

@@ -5104,6 +5104,97 @@
<bool name="config_cecRcProfileSourceMediaContextSensitiveMenuNotHandled_allowed">true</bool>
<bool name="config_cecRcProfileSourceMediaContextSensitiveMenuNotHandled_default">true</bool>
<!-- Which Short Audio Descriptors a TV should query via CEC -->
<bool name="config_cecQuerySadLpcm_userConfigurable">true</bool>
<bool name="config_cecQuerySadLpcmEnabled_allowed">true</bool>
<bool name="config_cecQuerySadLpcmEnabled_default">true</bool>
<bool name="config_cecQuerySadLpcmDisabled_allowed">true</bool>
<bool name="config_cecQuerySadLpcmDisabled_default">false</bool>
<bool name="config_cecQuerySadDd_userConfigurable">true</bool>
<bool name="config_cecQuerySadDdEnabled_allowed">true</bool>
<bool name="config_cecQuerySadDdEnabled_default">true</bool>
<bool name="config_cecQuerySadDdDisabled_allowed">true</bool>
<bool name="config_cecQuerySadDdDisabled_default">false</bool>
<bool name="config_cecQuerySadMpeg1_userConfigurable">true</bool>
<bool name="config_cecQuerySadMpeg1Enabled_allowed">true</bool>
<bool name="config_cecQuerySadMpeg1Enabled_default">true</bool>
<bool name="config_cecQuerySadMpeg1Disabled_allowed">true</bool>
<bool name="config_cecQuerySadMpeg1Disabled_default">false</bool>
<bool name="config_cecQuerySadMp3_userConfigurable">true</bool>
<bool name="config_cecQuerySadMp3Enabled_allowed">true</bool>
<bool name="config_cecQuerySadMp3Enabled_default">true</bool>
<bool name="config_cecQuerySadMp3Disabled_allowed">true</bool>
<bool name="config_cecQuerySadMp3Disabled_default">false</bool>
<bool name="config_cecQuerySadMpeg2_userConfigurable">true</bool>
<bool name="config_cecQuerySadMpeg2Enabled_allowed">true</bool>
<bool name="config_cecQuerySadMpeg2Enabled_default">true</bool>
<bool name="config_cecQuerySadMpeg2Disabled_allowed">true</bool>
<bool name="config_cecQuerySadMpeg2Disabled_default">false</bool>
<bool name="config_cecQuerySadAac_userConfigurable">true</bool>
<bool name="config_cecQuerySadAacEnabled_allowed">true</bool>
<bool name="config_cecQuerySadAacEnabled_default">true</bool>
<bool name="config_cecQuerySadAacDisabled_allowed">true</bool>
<bool name="config_cecQuerySadAacDisabled_default">false</bool>
<bool name="config_cecQuerySadDts_userConfigurable">true</bool>
<bool name="config_cecQuerySadDtsEnabled_allowed">true</bool>
<bool name="config_cecQuerySadDtsEnabled_default">true</bool>
<bool name="config_cecQuerySadDtsDisabled_allowed">true</bool>
<bool name="config_cecQuerySadDtsDisabled_default">false</bool>
<bool name="config_cecQuerySadAtrac_userConfigurable">true</bool>
<bool name="config_cecQuerySadAtracEnabled_allowed">true</bool>
<bool name="config_cecQuerySadAtracEnabled_default">true</bool>
<bool name="config_cecQuerySadAtracDisabled_allowed">true</bool>
<bool name="config_cecQuerySadAtracDisabled_default">false</bool>
<bool name="config_cecQuerySadOnebitaudio_userConfigurable">true</bool>
<bool name="config_cecQuerySadOnebitaudioEnabled_allowed">true</bool>
<bool name="config_cecQuerySadOnebitaudioEnabled_default">true</bool>
<bool name="config_cecQuerySadOnebitaudioDisabled_allowed">true</bool>
<bool name="config_cecQuerySadOnebitaudioDisabled_default">false</bool>
<bool name="config_cecQuerySadDdp_userConfigurable">true</bool>
<bool name="config_cecQuerySadDdpEnabled_allowed">true</bool>
<bool name="config_cecQuerySadDdpEnabled_default">true</bool>
<bool name="config_cecQuerySadDdpDisabled_allowed">true</bool>
<bool name="config_cecQuerySadDdpDisabled_default">false</bool>
<bool name="config_cecQuerySadDtshd_userConfigurable">true</bool>
<bool name="config_cecQuerySadDtshdEnabled_allowed">true</bool>
<bool name="config_cecQuerySadDtshdEnabled_default">true</bool>
<bool name="config_cecQuerySadDtshdDisabled_allowed">true</bool>
<bool name="config_cecQuerySadDtshdDisabled_default">false</bool>
<bool name="config_cecQuerySadTruehd_userConfigurable">true</bool>
<bool name="config_cecQuerySadTruehdEnabled_allowed">true</bool>
<bool name="config_cecQuerySadTruehdEnabled_default">true</bool>
<bool name="config_cecQuerySadTruehdDisabled_allowed">true</bool>
<bool name="config_cecQuerySadTruehdDisabled_default">false</bool>
<bool name="config_cecQuerySadDst_userConfigurable">true</bool>
<bool name="config_cecQuerySadDstEnabled_allowed">true</bool>
<bool name="config_cecQuerySadDstEnabled_default">true</bool>
<bool name="config_cecQuerySadDstDisabled_allowed">true</bool>
<bool name="config_cecQuerySadDstDisabled_default">false</bool>
<bool name="config_cecQuerySadWmapro_userConfigurable">true</bool>
<bool name="config_cecQuerySadWmaproEnabled_allowed">true</bool>
<bool name="config_cecQuerySadWmaproEnabled_default">true</bool>
<bool name="config_cecQuerySadWmaproDisabled_allowed">true</bool>
<bool name="config_cecQuerySadWmaproDisabled_default">false</bool>
<bool name="config_cecQuerySadMax_userConfigurable">true</bool>
<bool name="config_cecQuerySadMaxEnabled_allowed">true</bool>
<bool name="config_cecQuerySadMaxEnabled_default">true</bool>
<bool name="config_cecQuerySadMaxDisabled_allowed">true</bool>
<bool name="config_cecQuerySadMaxDisabled_default">false</bool>
<!-- Whether app hibernation deletes OAT artifact files as part of global hibernation. -->
<bool name="config_hibernationDeletesOatArtifactsEnabled">true</bool>

View File

@@ -4432,6 +4432,97 @@
<java-symbol type="bool" name="config_cecRcProfileSourceMediaContextSensitiveMenuNotHandled_allowed" />
<java-symbol type="bool" name="config_cecRcProfileSourceMediaContextSensitiveMenuNotHandled_default" />
<!-- Which Short Audio Descriptors a TV should query via CEC -->
<java-symbol type="bool" name="config_cecQuerySadLpcm_userConfigurable" />
<java-symbol type="bool" name="config_cecQuerySadLpcmEnabled_allowed" />
<java-symbol type="bool" name="config_cecQuerySadLpcmEnabled_default" />
<java-symbol type="bool" name="config_cecQuerySadLpcmDisabled_allowed" />
<java-symbol type="bool" name="config_cecQuerySadLpcmDisabled_default" />
<java-symbol type="bool" name="config_cecQuerySadDd_userConfigurable" />
<java-symbol type="bool" name="config_cecQuerySadDdEnabled_allowed" />
<java-symbol type="bool" name="config_cecQuerySadDdEnabled_default" />
<java-symbol type="bool" name="config_cecQuerySadDdDisabled_allowed" />
<java-symbol type="bool" name="config_cecQuerySadDdDisabled_default" />
<java-symbol type="bool" name="config_cecQuerySadMpeg1_userConfigurable" />
<java-symbol type="bool" name="config_cecQuerySadMpeg1Enabled_allowed" />
<java-symbol type="bool" name="config_cecQuerySadMpeg1Enabled_default" />
<java-symbol type="bool" name="config_cecQuerySadMpeg1Disabled_allowed" />
<java-symbol type="bool" name="config_cecQuerySadMpeg1Disabled_default" />
<java-symbol type="bool" name="config_cecQuerySadMp3_userConfigurable" />
<java-symbol type="bool" name="config_cecQuerySadMp3Enabled_allowed" />
<java-symbol type="bool" name="config_cecQuerySadMp3Enabled_default" />
<java-symbol type="bool" name="config_cecQuerySadMp3Disabled_allowed" />
<java-symbol type="bool" name="config_cecQuerySadMp3Disabled_default" />
<java-symbol type="bool" name="config_cecQuerySadMpeg2_userConfigurable" />
<java-symbol type="bool" name="config_cecQuerySadMpeg2Enabled_allowed" />
<java-symbol type="bool" name="config_cecQuerySadMpeg2Enabled_default" />
<java-symbol type="bool" name="config_cecQuerySadMpeg2Disabled_allowed" />
<java-symbol type="bool" name="config_cecQuerySadMpeg2Disabled_default" />
<java-symbol type="bool" name="config_cecQuerySadAac_userConfigurable" />
<java-symbol type="bool" name="config_cecQuerySadAacEnabled_allowed" />
<java-symbol type="bool" name="config_cecQuerySadAacEnabled_default" />
<java-symbol type="bool" name="config_cecQuerySadAacDisabled_allowed" />
<java-symbol type="bool" name="config_cecQuerySadAacDisabled_default" />
<java-symbol type="bool" name="config_cecQuerySadDts_userConfigurable" />
<java-symbol type="bool" name="config_cecQuerySadDtsEnabled_allowed" />
<java-symbol type="bool" name="config_cecQuerySadDtsEnabled_default" />
<java-symbol type="bool" name="config_cecQuerySadDtsDisabled_allowed" />
<java-symbol type="bool" name="config_cecQuerySadDtsDisabled_default" />
<java-symbol type="bool" name="config_cecQuerySadAtrac_userConfigurable" />
<java-symbol type="bool" name="config_cecQuerySadAtracEnabled_allowed" />
<java-symbol type="bool" name="config_cecQuerySadAtracEnabled_default" />
<java-symbol type="bool" name="config_cecQuerySadAtracDisabled_allowed" />
<java-symbol type="bool" name="config_cecQuerySadAtracDisabled_default" />
<java-symbol type="bool" name="config_cecQuerySadOnebitaudio_userConfigurable" />
<java-symbol type="bool" name="config_cecQuerySadOnebitaudioEnabled_allowed" />
<java-symbol type="bool" name="config_cecQuerySadOnebitaudioEnabled_default" />
<java-symbol type="bool" name="config_cecQuerySadOnebitaudioDisabled_allowed" />
<java-symbol type="bool" name="config_cecQuerySadOnebitaudioDisabled_default" />
<java-symbol type="bool" name="config_cecQuerySadDdp_userConfigurable" />
<java-symbol type="bool" name="config_cecQuerySadDdpEnabled_allowed" />
<java-symbol type="bool" name="config_cecQuerySadDdpEnabled_default" />
<java-symbol type="bool" name="config_cecQuerySadDdpDisabled_allowed" />
<java-symbol type="bool" name="config_cecQuerySadDdpDisabled_default" />
<java-symbol type="bool" name="config_cecQuerySadDtshd_userConfigurable" />
<java-symbol type="bool" name="config_cecQuerySadDtshdEnabled_allowed" />
<java-symbol type="bool" name="config_cecQuerySadDtshdEnabled_default" />
<java-symbol type="bool" name="config_cecQuerySadDtshdDisabled_allowed" />
<java-symbol type="bool" name="config_cecQuerySadDtshdDisabled_default" />
<java-symbol type="bool" name="config_cecQuerySadTruehd_userConfigurable" />
<java-symbol type="bool" name="config_cecQuerySadTruehdEnabled_allowed" />
<java-symbol type="bool" name="config_cecQuerySadTruehdEnabled_default" />
<java-symbol type="bool" name="config_cecQuerySadTruehdDisabled_allowed" />
<java-symbol type="bool" name="config_cecQuerySadTruehdDisabled_default" />
<java-symbol type="bool" name="config_cecQuerySadDst_userConfigurable" />
<java-symbol type="bool" name="config_cecQuerySadDstEnabled_allowed" />
<java-symbol type="bool" name="config_cecQuerySadDstEnabled_default" />
<java-symbol type="bool" name="config_cecQuerySadDstDisabled_allowed" />
<java-symbol type="bool" name="config_cecQuerySadDstDisabled_default" />
<java-symbol type="bool" name="config_cecQuerySadWmapro_userConfigurable" />
<java-symbol type="bool" name="config_cecQuerySadWmaproEnabled_allowed" />
<java-symbol type="bool" name="config_cecQuerySadWmaproEnabled_default" />
<java-symbol type="bool" name="config_cecQuerySadWmaproDisabled_allowed" />
<java-symbol type="bool" name="config_cecQuerySadWmaproDisabled_default" />
<java-symbol type="bool" name="config_cecQuerySadMax_userConfigurable" />
<java-symbol type="bool" name="config_cecQuerySadMaxEnabled_allowed" />
<java-symbol type="bool" name="config_cecQuerySadMaxEnabled_default" />
<java-symbol type="bool" name="config_cecQuerySadMaxDisabled_allowed" />
<java-symbol type="bool" name="config_cecQuerySadMaxDisabled_default" />
<!-- Ids for RemoteViews -->
<java-symbol type="id" name="remote_views_next_child" />
<java-symbol type="id" name="remote_views_stable_id" />

View File

@@ -408,11 +408,11 @@ public class HdmiCecConfig {
HdmiControlManager.CEC_SETTING_NAME_RC_PROFILE_SOURCE_HANDLES_ROOT_MENU,
R.bool.config_cecRcProfileSourceRootMenu_userConfigurable);
rcProfileSourceRootMenu.registerValue(
HdmiControlManager.RC_PROFILE_SOURCE_ROOT_MENU_HANDLED,
HdmiControlManager.RC_PROFILE_SOURCE_MENU_HANDLED,
R.bool.config_cecRcProfileSourceRootMenuHandled_allowed,
R.bool.config_cecRcProfileSourceRootMenuHandled_default);
rcProfileSourceRootMenu.registerValue(
HdmiControlManager.RC_PROFILE_SOURCE_ROOT_MENU_NOT_HANDLED,
HdmiControlManager.RC_PROFILE_SOURCE_MENU_NOT_HANDLED,
R.bool.config_cecRcProfileSourceRootMenuNotHandled_allowed,
R.bool.config_cecRcProfileSourceRootMenuNotHandled_default);
@@ -420,11 +420,11 @@ public class HdmiCecConfig {
HdmiControlManager.CEC_SETTING_NAME_RC_PROFILE_SOURCE_HANDLES_SETUP_MENU,
R.bool.config_cecRcProfileSourceSetupMenu_userConfigurable);
rcProfileSourceSetupMenu.registerValue(
HdmiControlManager.RC_PROFILE_SOURCE_SETUP_MENU_HANDLED,
HdmiControlManager.RC_PROFILE_SOURCE_MENU_HANDLED,
R.bool.config_cecRcProfileSourceSetupMenuHandled_allowed,
R.bool.config_cecRcProfileSourceSetupMenuHandled_default);
rcProfileSourceSetupMenu.registerValue(
HdmiControlManager.RC_PROFILE_SOURCE_SETUP_MENU_NOT_HANDLED,
HdmiControlManager.RC_PROFILE_SOURCE_MENU_NOT_HANDLED,
R.bool.config_cecRcProfileSourceSetupMenuNotHandled_allowed,
R.bool.config_cecRcProfileSourceSetupMenuNotHandled_default);
@@ -432,11 +432,11 @@ public class HdmiCecConfig {
HdmiControlManager.CEC_SETTING_NAME_RC_PROFILE_SOURCE_HANDLES_CONTENTS_MENU,
R.bool.config_cecRcProfileSourceContentsMenu_userConfigurable);
rcProfileSourceContentsMenu.registerValue(
HdmiControlManager.RC_PROFILE_SOURCE_CONTENTS_MENU_HANDLED,
HdmiControlManager.RC_PROFILE_SOURCE_MENU_HANDLED,
R.bool.config_cecRcProfileSourceContentsMenuHandled_allowed,
R.bool.config_cecRcProfileSourceContentsMenuHandled_default);
rcProfileSourceContentsMenu.registerValue(
HdmiControlManager.RC_PROFILE_SOURCE_CONTENTS_MENU_NOT_HANDLED,
HdmiControlManager.RC_PROFILE_SOURCE_MENU_NOT_HANDLED,
R.bool.config_cecRcProfileSourceContentsMenuNotHandled_allowed,
R.bool.config_cecRcProfileSourceContentsMenuNotHandled_default);
@@ -444,11 +444,11 @@ public class HdmiCecConfig {
HdmiControlManager.CEC_SETTING_NAME_RC_PROFILE_SOURCE_HANDLES_TOP_MENU,
R.bool.config_cecRcProfileSourceTopMenu_userConfigurable);
rcProfileSourceTopMenu.registerValue(
HdmiControlManager.RC_PROFILE_SOURCE_TOP_MENU_HANDLED,
HdmiControlManager.RC_PROFILE_SOURCE_MENU_HANDLED,
R.bool.config_cecRcProfileSourceTopMenuHandled_allowed,
R.bool.config_cecRcProfileSourceTopMenuHandled_default);
rcProfileSourceTopMenu.registerValue(
HdmiControlManager.RC_PROFILE_SOURCE_TOP_MENU_NOT_HANDLED,
HdmiControlManager.RC_PROFILE_SOURCE_MENU_NOT_HANDLED,
R.bool.config_cecRcProfileSourceTopMenuNotHandled_allowed,
R.bool.config_cecRcProfileSourceTopMenuNotHandled_default);
@@ -457,14 +457,194 @@ public class HdmiCecConfig {
.CEC_SETTING_NAME_RC_PROFILE_SOURCE_HANDLES_MEDIA_CONTEXT_SENSITIVE_MENU,
R.bool.config_cecRcProfileSourceMediaContextSensitiveMenu_userConfigurable);
rcProfileSourceMediaContextSensitiveMenu.registerValue(
HdmiControlManager.RC_PROFILE_SOURCE_MEDIA_CONTEXT_SENSITIVE_MENU_HANDLED,
HdmiControlManager.RC_PROFILE_SOURCE_MENU_HANDLED,
R.bool.config_cecRcProfileSourceMediaContextSensitiveMenuHandled_allowed,
R.bool.config_cecRcProfileSourceMediaContextSensitiveMenuHandled_default);
rcProfileSourceMediaContextSensitiveMenu.registerValue(
HdmiControlManager.RC_PROFILE_SOURCE_MEDIA_CONTEXT_SENSITIVE_MENU_NOT_HANDLED,
HdmiControlManager.RC_PROFILE_SOURCE_MENU_NOT_HANDLED,
R.bool.config_cecRcProfileSourceMediaContextSensitiveMenuNotHandled_allowed,
R.bool.config_cecRcProfileSourceMediaContextSensitiveMenuNotHandled_default);
Setting querySadLpcm = registerSetting(
HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_LPCM,
R.bool.config_cecQuerySadLpcm_userConfigurable);
querySadLpcm.registerValue(
HdmiControlManager.QUERY_SAD_ENABLED,
R.bool.config_cecQuerySadLpcmEnabled_allowed,
R.bool.config_cecQuerySadLpcmEnabled_default);
querySadLpcm.registerValue(
HdmiControlManager.QUERY_SAD_DISABLED,
R.bool.config_cecQuerySadLpcmDisabled_allowed,
R.bool.config_cecQuerySadLpcmDisabled_default);
Setting querySadDd = registerSetting(
HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_DD,
R.bool.config_cecQuerySadDd_userConfigurable);
querySadDd.registerValue(
HdmiControlManager.QUERY_SAD_ENABLED,
R.bool.config_cecQuerySadDdEnabled_allowed,
R.bool.config_cecQuerySadDdEnabled_default);
querySadDd.registerValue(
HdmiControlManager.QUERY_SAD_DISABLED,
R.bool.config_cecQuerySadDdDisabled_allowed,
R.bool.config_cecQuerySadDdDisabled_default);
Setting querySadMpeg1 = registerSetting(
HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_MPEG1,
R.bool.config_cecQuerySadMpeg1_userConfigurable);
querySadMpeg1.registerValue(
HdmiControlManager.QUERY_SAD_ENABLED,
R.bool.config_cecQuerySadMpeg1Enabled_allowed,
R.bool.config_cecQuerySadMpeg1Enabled_default);
querySadMpeg1.registerValue(
HdmiControlManager.QUERY_SAD_DISABLED,
R.bool.config_cecQuerySadMpeg1Disabled_allowed,
R.bool.config_cecQuerySadMpeg1Disabled_default);
Setting querySadMp3 = registerSetting(
HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_MP3,
R.bool.config_cecQuerySadMp3_userConfigurable);
querySadMp3.registerValue(
HdmiControlManager.QUERY_SAD_ENABLED,
R.bool.config_cecQuerySadMp3Enabled_allowed,
R.bool.config_cecQuerySadMp3Enabled_default);
querySadMp3.registerValue(
HdmiControlManager.QUERY_SAD_DISABLED,
R.bool.config_cecQuerySadMp3Disabled_allowed,
R.bool.config_cecQuerySadMp3Disabled_default);
Setting querySadMpeg2 = registerSetting(
HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_MPEG2,
R.bool.config_cecQuerySadMpeg2_userConfigurable);
querySadMpeg2.registerValue(
HdmiControlManager.QUERY_SAD_ENABLED,
R.bool.config_cecQuerySadMpeg2Enabled_allowed,
R.bool.config_cecQuerySadMpeg2Enabled_default);
querySadMpeg2.registerValue(
HdmiControlManager.QUERY_SAD_DISABLED,
R.bool.config_cecQuerySadMpeg2Disabled_allowed,
R.bool.config_cecQuerySadMpeg2Disabled_default);
Setting querySadAac = registerSetting(
HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_AAC,
R.bool.config_cecQuerySadAac_userConfigurable);
querySadAac.registerValue(
HdmiControlManager.QUERY_SAD_ENABLED,
R.bool.config_cecQuerySadAacEnabled_allowed,
R.bool.config_cecQuerySadAacEnabled_default);
querySadAac.registerValue(
HdmiControlManager.QUERY_SAD_DISABLED,
R.bool.config_cecQuerySadAacDisabled_allowed,
R.bool.config_cecQuerySadAacDisabled_default);
Setting querySadDts = registerSetting(
HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_DTS,
R.bool.config_cecQuerySadDts_userConfigurable);
querySadDts.registerValue(
HdmiControlManager.QUERY_SAD_ENABLED,
R.bool.config_cecQuerySadDtsEnabled_allowed,
R.bool.config_cecQuerySadDtsEnabled_default);
querySadDts.registerValue(
HdmiControlManager.QUERY_SAD_DISABLED,
R.bool.config_cecQuerySadDtsDisabled_allowed,
R.bool.config_cecQuerySadDtsDisabled_default);
Setting querySadAtrac = registerSetting(
HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_ATRAC,
R.bool.config_cecQuerySadAtrac_userConfigurable);
querySadAtrac.registerValue(
HdmiControlManager.QUERY_SAD_ENABLED,
R.bool.config_cecQuerySadAtracEnabled_allowed,
R.bool.config_cecQuerySadAtracEnabled_default);
querySadAtrac.registerValue(
HdmiControlManager.QUERY_SAD_DISABLED,
R.bool.config_cecQuerySadAtracDisabled_allowed,
R.bool.config_cecQuerySadAtracDisabled_default);
Setting querySadOnebitaudio = registerSetting(
HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_ONEBITAUDIO,
R.bool.config_cecQuerySadOnebitaudio_userConfigurable);
querySadOnebitaudio.registerValue(
HdmiControlManager.QUERY_SAD_ENABLED,
R.bool.config_cecQuerySadOnebitaudioEnabled_allowed,
R.bool.config_cecQuerySadOnebitaudioEnabled_default);
querySadOnebitaudio.registerValue(
HdmiControlManager.QUERY_SAD_DISABLED,
R.bool.config_cecQuerySadOnebitaudioDisabled_allowed,
R.bool.config_cecQuerySadOnebitaudioDisabled_default);
Setting querySadDdp = registerSetting(
HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_DDP,
R.bool.config_cecQuerySadDdp_userConfigurable);
querySadDdp.registerValue(
HdmiControlManager.QUERY_SAD_ENABLED,
R.bool.config_cecQuerySadDdpEnabled_allowed,
R.bool.config_cecQuerySadDdpEnabled_default);
querySadDdp.registerValue(
HdmiControlManager.QUERY_SAD_DISABLED,
R.bool.config_cecQuerySadDdpDisabled_allowed,
R.bool.config_cecQuerySadDdpDisabled_default);
Setting querySadDtshd = registerSetting(
HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_DTSHD,
R.bool.config_cecQuerySadDtshd_userConfigurable);
querySadDtshd.registerValue(
HdmiControlManager.QUERY_SAD_ENABLED,
R.bool.config_cecQuerySadDtshdEnabled_allowed,
R.bool.config_cecQuerySadDtshdEnabled_default);
querySadDtshd.registerValue(
HdmiControlManager.QUERY_SAD_DISABLED,
R.bool.config_cecQuerySadDtshdDisabled_allowed,
R.bool.config_cecQuerySadDtshdDisabled_default);
Setting querySadTruehd = registerSetting(
HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_TRUEHD,
R.bool.config_cecQuerySadTruehd_userConfigurable);
querySadTruehd.registerValue(
HdmiControlManager.QUERY_SAD_ENABLED,
R.bool.config_cecQuerySadTruehdEnabled_allowed,
R.bool.config_cecQuerySadTruehdEnabled_default);
querySadTruehd.registerValue(
HdmiControlManager.QUERY_SAD_DISABLED,
R.bool.config_cecQuerySadTruehdDisabled_allowed,
R.bool.config_cecQuerySadTruehdDisabled_default);
Setting querySadDst = registerSetting(
HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_DST,
R.bool.config_cecQuerySadDst_userConfigurable);
querySadDst.registerValue(
HdmiControlManager.QUERY_SAD_ENABLED,
R.bool.config_cecQuerySadDstEnabled_allowed,
R.bool.config_cecQuerySadDstEnabled_default);
querySadDst.registerValue(
HdmiControlManager.QUERY_SAD_DISABLED,
R.bool.config_cecQuerySadDstDisabled_allowed,
R.bool.config_cecQuerySadDstDisabled_default);
Setting querySadWmapro = registerSetting(
HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_WMAPRO,
R.bool.config_cecQuerySadWmapro_userConfigurable);
querySadWmapro.registerValue(
HdmiControlManager.QUERY_SAD_ENABLED,
R.bool.config_cecQuerySadWmaproEnabled_allowed,
R.bool.config_cecQuerySadWmaproEnabled_default);
querySadWmapro.registerValue(
HdmiControlManager.QUERY_SAD_DISABLED,
R.bool.config_cecQuerySadWmaproDisabled_allowed,
R.bool.config_cecQuerySadWmaproDisabled_default);
Setting querySadMax = registerSetting(
HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_MAX,
R.bool.config_cecQuerySadMax_userConfigurable);
querySadMax.registerValue(
HdmiControlManager.QUERY_SAD_ENABLED,
R.bool.config_cecQuerySadMaxEnabled_allowed,
R.bool.config_cecQuerySadMaxEnabled_default);
querySadMax.registerValue(
HdmiControlManager.QUERY_SAD_DISABLED,
R.bool.config_cecQuerySadMaxDisabled_allowed,
R.bool.config_cecQuerySadMaxDisabled_default);
verifySettings();
}
@@ -530,6 +710,36 @@ public class HdmiCecConfig {
case HdmiControlManager
.CEC_SETTING_NAME_RC_PROFILE_SOURCE_HANDLES_MEDIA_CONTEXT_SENSITIVE_MENU:
return STORAGE_SHARED_PREFS;
case HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_LPCM:
return STORAGE_SHARED_PREFS;
case HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_DD:
return STORAGE_SHARED_PREFS;
case HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_MPEG1:
return STORAGE_SHARED_PREFS;
case HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_MP3:
return STORAGE_SHARED_PREFS;
case HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_MPEG2:
return STORAGE_SHARED_PREFS;
case HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_AAC:
return STORAGE_SHARED_PREFS;
case HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_DTS:
return STORAGE_SHARED_PREFS;
case HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_ATRAC:
return STORAGE_SHARED_PREFS;
case HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_ONEBITAUDIO:
return STORAGE_SHARED_PREFS;
case HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_DDP:
return STORAGE_SHARED_PREFS;
case HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_DTSHD:
return STORAGE_SHARED_PREFS;
case HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_TRUEHD:
return STORAGE_SHARED_PREFS;
case HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_DST:
return STORAGE_SHARED_PREFS;
case HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_WMAPRO:
return STORAGE_SHARED_PREFS;
case HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_MAX:
return STORAGE_SHARED_PREFS;
default:
throw new VerificationException("Invalid CEC setting '" + setting.getName()
+ "' storage.");
@@ -571,6 +781,36 @@ public class HdmiCecConfig {
case HdmiControlManager
.CEC_SETTING_NAME_RC_PROFILE_SOURCE_HANDLES_MEDIA_CONTEXT_SENSITIVE_MENU:
return setting.getName();
case HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_LPCM:
return setting.getName();
case HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_DD:
return setting.getName();
case HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_MPEG1:
return setting.getName();
case HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_MP3:
return setting.getName();
case HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_MPEG2:
return setting.getName();
case HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_AAC:
return setting.getName();
case HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_DTS:
return setting.getName();
case HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_ATRAC:
return setting.getName();
case HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_ONEBITAUDIO:
return setting.getName();
case HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_DDP:
return setting.getName();
case HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_DTSHD:
return setting.getName();
case HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_TRUEHD:
return setting.getName();
case HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_DST:
return setting.getName();
case HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_WMAPRO:
return setting.getName();
case HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_MAX:
return setting.getName();
default:
throw new VerificationException("Invalid CEC setting '" + setting.getName()
+ "' storage key.");

View File

@@ -151,6 +151,7 @@ abstract class HdmiCecLocalDevice {
private int mActiveRoutingPath;
protected final HdmiCecMessageCache mCecMessageCache = new HdmiCecMessageCache();
@VisibleForTesting
protected final Object mLock;
// A collection of FeatureAction.

View File

@@ -332,27 +332,27 @@ abstract class HdmiCecLocalDeviceSource extends HdmiCecLocalDevice {
HdmiCecConfig hdmiCecConfig = mService.getHdmiCecConfig();
if (hdmiCecConfig.getIntValue(
HdmiControlManager.CEC_SETTING_NAME_RC_PROFILE_SOURCE_HANDLES_ROOT_MENU)
== HdmiControlManager.RC_PROFILE_SOURCE_ROOT_MENU_HANDLED) {
== HdmiControlManager.RC_PROFILE_SOURCE_MENU_HANDLED) {
features.add(Constants.RC_PROFILE_SOURCE_HANDLES_ROOT_MENU);
}
if (hdmiCecConfig.getIntValue(
HdmiControlManager.CEC_SETTING_NAME_RC_PROFILE_SOURCE_HANDLES_SETUP_MENU)
== HdmiControlManager.RC_PROFILE_SOURCE_SETUP_MENU_HANDLED) {
== HdmiControlManager.RC_PROFILE_SOURCE_MENU_HANDLED) {
features.add(Constants.RC_PROFILE_SOURCE_HANDLES_SETUP_MENU);
}
if (hdmiCecConfig.getIntValue(
HdmiControlManager.CEC_SETTING_NAME_RC_PROFILE_SOURCE_HANDLES_CONTENTS_MENU)
== HdmiControlManager.RC_PROFILE_SOURCE_CONTENTS_MENU_HANDLED) {
== HdmiControlManager.RC_PROFILE_SOURCE_MENU_HANDLED) {
features.add(Constants.RC_PROFILE_SOURCE_HANDLES_CONTENTS_MENU);
}
if (hdmiCecConfig.getIntValue(
HdmiControlManager.CEC_SETTING_NAME_RC_PROFILE_SOURCE_HANDLES_TOP_MENU)
== HdmiControlManager.RC_PROFILE_SOURCE_TOP_MENU_HANDLED) {
== HdmiControlManager.RC_PROFILE_SOURCE_MENU_HANDLED) {
features.add(Constants.RC_PROFILE_SOURCE_HANDLES_TOP_MENU);
}
if (hdmiCecConfig.getIntValue(HdmiControlManager
.CEC_SETTING_NAME_RC_PROFILE_SOURCE_HANDLES_MEDIA_CONTEXT_SENSITIVE_MENU)
== HdmiControlManager.RC_PROFILE_SOURCE_MEDIA_CONTEXT_SENSITIVE_MENU_HANDLED) {
== HdmiControlManager.RC_PROFILE_SOURCE_MENU_HANDLED) {
features.add(Constants.RC_PROFILE_SOURCE_HANDLES_MEDIA_CONTEXT_SENSITIVE_MENU);
}
return features;

View File

@@ -16,10 +16,10 @@
package com.android.server.hdmi;
import android.hardware.hdmi.HdmiControlManager;
import android.util.Slog;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
@@ -35,27 +35,11 @@ final class RequestSadAction extends HdmiCecFeatureAction {
// State in which the action is waiting for <Report Short Audio Descriptor>.
private static final int STATE_WAITING_FOR_REPORT_SAD = 1;
private static final List<Integer> ALL_CEC_CODECS = new ArrayList<Integer>(Arrays.asList(
Constants.AUDIO_CODEC_LPCM,
Constants.AUDIO_CODEC_DD,
Constants.AUDIO_CODEC_MPEG1,
Constants.AUDIO_CODEC_MP3,
Constants.AUDIO_CODEC_MPEG2,
Constants.AUDIO_CODEC_AAC,
Constants.AUDIO_CODEC_DTS,
Constants.AUDIO_CODEC_ATRAC,
Constants.AUDIO_CODEC_ONEBITAUDIO,
Constants.AUDIO_CODEC_DDP,
Constants.AUDIO_CODEC_DTSHD,
Constants.AUDIO_CODEC_TRUEHD,
Constants.AUDIO_CODEC_DST,
Constants.AUDIO_CODEC_WMAPRO,
Constants.AUDIO_CODEC_MAX));
private static final int MAX_SAD_PER_REQUEST = 4;
private static final int RETRY_COUNTER_MAX = 1;
private final int mTargetAddress;
private final RequestSadCallback mCallback;
private final List<Integer> mCecCodecsToQuery = new ArrayList<>();
// List of all valid SADs reported by the target device. Not parsed nor deduplicated.
private final List<byte[]> mSupportedSads = new ArrayList<>();
private int mQueriedSadCount = 0; // Number of SADs queries that has already been completed
@@ -71,9 +55,84 @@ final class RequestSadAction extends HdmiCecFeatureAction {
super(source);
mTargetAddress = targetAddress;
mCallback = Objects.requireNonNull(callback);
HdmiCecConfig hdmiCecConfig = localDevice().mService.getHdmiCecConfig();
if (hdmiCecConfig.getIntValue(
HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_LPCM)
== HdmiControlManager.QUERY_SAD_ENABLED) {
mCecCodecsToQuery.add(Constants.AUDIO_CODEC_LPCM);
}
if (hdmiCecConfig.getIntValue(
HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_DD)
== HdmiControlManager.QUERY_SAD_ENABLED) {
mCecCodecsToQuery.add(Constants.AUDIO_CODEC_DD);
}
if (hdmiCecConfig.getIntValue(
HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_MPEG1)
== HdmiControlManager.QUERY_SAD_ENABLED) {
mCecCodecsToQuery.add(Constants.AUDIO_CODEC_MPEG1);
}
if (hdmiCecConfig.getIntValue(
HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_MP3)
== HdmiControlManager.QUERY_SAD_ENABLED) {
mCecCodecsToQuery.add(Constants.AUDIO_CODEC_MP3);
}
if (hdmiCecConfig.getIntValue(
HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_MPEG2)
== HdmiControlManager.QUERY_SAD_ENABLED) {
mCecCodecsToQuery.add(Constants.AUDIO_CODEC_MPEG2);
}
if (hdmiCecConfig.getIntValue(
HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_AAC)
== HdmiControlManager.QUERY_SAD_ENABLED) {
mCecCodecsToQuery.add(Constants.AUDIO_CODEC_AAC);
}
if (hdmiCecConfig.getIntValue(
HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_DTS)
== HdmiControlManager.QUERY_SAD_ENABLED) {
mCecCodecsToQuery.add(Constants.AUDIO_CODEC_DTS);
}
if (hdmiCecConfig.getIntValue(
HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_ATRAC)
== HdmiControlManager.QUERY_SAD_ENABLED) {
mCecCodecsToQuery.add(Constants.AUDIO_CODEC_ATRAC);
}
if (hdmiCecConfig.getIntValue(
HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_ONEBITAUDIO)
== HdmiControlManager.QUERY_SAD_ENABLED) {
mCecCodecsToQuery.add(Constants.AUDIO_CODEC_ONEBITAUDIO);
}
if (hdmiCecConfig.getIntValue(
HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_DDP)
== HdmiControlManager.QUERY_SAD_ENABLED) {
mCecCodecsToQuery.add(Constants.AUDIO_CODEC_DDP);
}
if (hdmiCecConfig.getIntValue(
HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_DTSHD)
== HdmiControlManager.QUERY_SAD_ENABLED) {
mCecCodecsToQuery.add(Constants.AUDIO_CODEC_DTSHD);
}
if (hdmiCecConfig.getIntValue(
HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_TRUEHD)
== HdmiControlManager.QUERY_SAD_ENABLED) {
mCecCodecsToQuery.add(Constants.AUDIO_CODEC_TRUEHD);
}
if (hdmiCecConfig.getIntValue(
HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_DST)
== HdmiControlManager.QUERY_SAD_ENABLED) {
mCecCodecsToQuery.add(Constants.AUDIO_CODEC_DST);
}
if (hdmiCecConfig.getIntValue(
HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_WMAPRO)
== HdmiControlManager.QUERY_SAD_ENABLED) {
mCecCodecsToQuery.add(Constants.AUDIO_CODEC_WMAPRO);
}
if (hdmiCecConfig.getIntValue(
HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_MAX)
== HdmiControlManager.QUERY_SAD_ENABLED) {
mCecCodecsToQuery.add(Constants.AUDIO_CODEC_MAX);
}
}
@Override
boolean start() {
querySad();
@@ -81,13 +140,13 @@ final class RequestSadAction extends HdmiCecFeatureAction {
}
private void querySad() {
if (mQueriedSadCount >= ALL_CEC_CODECS.size()) {
if (mQueriedSadCount >= mCecCodecsToQuery.size()) {
wrapUpAndFinish();
return;
}
int[] codecsToQuery = ALL_CEC_CODECS.subList(mQueriedSadCount,
Math.min(ALL_CEC_CODECS.size(), mQueriedSadCount + MAX_SAD_PER_REQUEST))
.stream().mapToInt(i -> i).toArray();
int[] codecsToQuery = mCecCodecsToQuery.subList(mQueriedSadCount,
Math.min(mCecCodecsToQuery.size(), mQueriedSadCount + MAX_SAD_PER_REQUEST))
.stream().mapToInt(i -> i).toArray();
sendCommand(HdmiCecMessageBuilder.buildRequestShortAudioDescriptor(getSourceAddress(),
mTargetAddress, codecsToQuery));
mState = STATE_WAITING_FOR_REPORT_SAD;
@@ -111,9 +170,10 @@ final class RequestSadAction extends HdmiCecFeatureAction {
byte[] sad = new byte[]{cmd.getParams()[i], cmd.getParams()[i + 1],
cmd.getParams()[i + 2]};
updateResult(sad);
} else {
// Don't include invalid codecs in the result. Don't query again.
Slog.w(TAG, "Dropped invalid codec " + cmd.getParams()[i] + ".");
}
// Don't include invalid codecs in the result. Don't query again.
Slog.w(TAG, "Received invalid codec " + cmd.getParams()[i] + ".");
}
mQueriedSadCount += MAX_SAD_PER_REQUEST;
mTimeoutRetry = 0;

View File

@@ -242,6 +242,101 @@ final class FakeHdmiCecConfig extends HdmiCecConfig {
doReturn(true).when(resources).getBoolean(
R.bool.config_cecRcProfileSourceMediaContextSensitiveMenuNotHandled_default);
doReturn(true).when(resources).getBoolean(R.bool.config_cecQuerySadLpcm_userConfigurable);
doReturn(true).when(resources).getBoolean(R.bool.config_cecQuerySadLpcmEnabled_allowed);
doReturn(true).when(resources).getBoolean(R.bool.config_cecQuerySadLpcmEnabled_default);
doReturn(true).when(resources).getBoolean(R.bool.config_cecQuerySadLpcmDisabled_allowed);
doReturn(false).when(resources).getBoolean(R.bool.config_cecQuerySadLpcmDisabled_default);
doReturn(true).when(resources).getBoolean(R.bool.config_cecQuerySadDd_userConfigurable);
doReturn(true).when(resources).getBoolean(R.bool.config_cecQuerySadDdEnabled_allowed);
doReturn(true).when(resources).getBoolean(R.bool.config_cecQuerySadDdEnabled_default);
doReturn(true).when(resources).getBoolean(R.bool.config_cecQuerySadDdDisabled_allowed);
doReturn(false).when(resources).getBoolean(R.bool.config_cecQuerySadDdDisabled_default);
doReturn(true).when(resources).getBoolean(R.bool.config_cecQuerySadMpeg1_userConfigurable);
doReturn(true).when(resources).getBoolean(R.bool.config_cecQuerySadMpeg1Enabled_allowed);
doReturn(true).when(resources).getBoolean(R.bool.config_cecQuerySadMpeg1Enabled_default);
doReturn(true).when(resources).getBoolean(R.bool.config_cecQuerySadMpeg1Disabled_allowed);
doReturn(false).when(resources).getBoolean(R.bool.config_cecQuerySadMpeg1Disabled_default);
doReturn(true).when(resources).getBoolean(R.bool.config_cecQuerySadMp3_userConfigurable);
doReturn(true).when(resources).getBoolean(R.bool.config_cecQuerySadMp3Enabled_allowed);
doReturn(true).when(resources).getBoolean(R.bool.config_cecQuerySadMp3Enabled_default);
doReturn(true).when(resources).getBoolean(R.bool.config_cecQuerySadMp3Disabled_allowed);
doReturn(false).when(resources).getBoolean(R.bool.config_cecQuerySadMp3Disabled_default);
doReturn(true).when(resources).getBoolean(R.bool.config_cecQuerySadMpeg2_userConfigurable);
doReturn(true).when(resources).getBoolean(R.bool.config_cecQuerySadMpeg2Enabled_allowed);
doReturn(true).when(resources).getBoolean(R.bool.config_cecQuerySadMpeg2Enabled_default);
doReturn(true).when(resources).getBoolean(R.bool.config_cecQuerySadMpeg2Disabled_allowed);
doReturn(false).when(resources).getBoolean(R.bool.config_cecQuerySadMpeg2Disabled_default);
doReturn(true).when(resources).getBoolean(R.bool.config_cecQuerySadAac_userConfigurable);
doReturn(true).when(resources).getBoolean(R.bool.config_cecQuerySadAacEnabled_allowed);
doReturn(true).when(resources).getBoolean(R.bool.config_cecQuerySadAacEnabled_default);
doReturn(true).when(resources).getBoolean(R.bool.config_cecQuerySadAacDisabled_allowed);
doReturn(false).when(resources).getBoolean(R.bool.config_cecQuerySadAacDisabled_default);
doReturn(true).when(resources).getBoolean(R.bool.config_cecQuerySadDts_userConfigurable);
doReturn(true).when(resources).getBoolean(R.bool.config_cecQuerySadDtsEnabled_allowed);
doReturn(true).when(resources).getBoolean(R.bool.config_cecQuerySadDtsEnabled_default);
doReturn(true).when(resources).getBoolean(R.bool.config_cecQuerySadDtsDisabled_allowed);
doReturn(false).when(resources).getBoolean(R.bool.config_cecQuerySadDtsDisabled_default);
doReturn(true).when(resources).getBoolean(R.bool.config_cecQuerySadAtrac_userConfigurable);
doReturn(true).when(resources).getBoolean(R.bool.config_cecQuerySadAtracEnabled_allowed);
doReturn(true).when(resources).getBoolean(R.bool.config_cecQuerySadAtracEnabled_default);
doReturn(true).when(resources).getBoolean(R.bool.config_cecQuerySadAtracDisabled_allowed);
doReturn(false).when(resources).getBoolean(R.bool.config_cecQuerySadAtracDisabled_default);
doReturn(true).when(resources).getBoolean(
R.bool.config_cecQuerySadOnebitaudio_userConfigurable);
doReturn(true).when(resources).getBoolean(
R.bool.config_cecQuerySadOnebitaudioEnabled_allowed);
doReturn(true).when(resources).getBoolean(
R.bool.config_cecQuerySadOnebitaudioEnabled_default);
doReturn(true).when(resources).getBoolean(
R.bool.config_cecQuerySadOnebitaudioDisabled_allowed);
doReturn(false).when(resources).getBoolean(
R.bool.config_cecQuerySadOnebitaudioDisabled_default);
doReturn(true).when(resources).getBoolean(R.bool.config_cecQuerySadDdp_userConfigurable);
doReturn(true).when(resources).getBoolean(R.bool.config_cecQuerySadDdpEnabled_allowed);
doReturn(true).when(resources).getBoolean(R.bool.config_cecQuerySadDdpEnabled_default);
doReturn(true).when(resources).getBoolean(R.bool.config_cecQuerySadDdpDisabled_allowed);
doReturn(false).when(resources).getBoolean(R.bool.config_cecQuerySadDdpDisabled_default);
doReturn(true).when(resources).getBoolean(R.bool.config_cecQuerySadDtshd_userConfigurable);
doReturn(true).when(resources).getBoolean(R.bool.config_cecQuerySadDtshdEnabled_allowed);
doReturn(true).when(resources).getBoolean(R.bool.config_cecQuerySadDtshdEnabled_default);
doReturn(true).when(resources).getBoolean(R.bool.config_cecQuerySadDtshdDisabled_allowed);
doReturn(false).when(resources).getBoolean(R.bool.config_cecQuerySadDtshdDisabled_default);
doReturn(true).when(resources).getBoolean(R.bool.config_cecQuerySadTruehd_userConfigurable);
doReturn(true).when(resources).getBoolean(R.bool.config_cecQuerySadTruehdEnabled_allowed);
doReturn(true).when(resources).getBoolean(R.bool.config_cecQuerySadTruehdEnabled_default);
doReturn(true).when(resources).getBoolean(R.bool.config_cecQuerySadTruehdDisabled_allowed);
doReturn(false).when(resources).getBoolean(R.bool.config_cecQuerySadTruehdDisabled_default);
doReturn(true).when(resources).getBoolean(R.bool.config_cecQuerySadDst_userConfigurable);
doReturn(true).when(resources).getBoolean(R.bool.config_cecQuerySadDstEnabled_allowed);
doReturn(true).when(resources).getBoolean(R.bool.config_cecQuerySadDstEnabled_default);
doReturn(true).when(resources).getBoolean(R.bool.config_cecQuerySadDstDisabled_allowed);
doReturn(false).when(resources).getBoolean(R.bool.config_cecQuerySadDstDisabled_default);
doReturn(true).when(resources).getBoolean(R.bool.config_cecQuerySadWmapro_userConfigurable);
doReturn(true).when(resources).getBoolean(R.bool.config_cecQuerySadWmaproEnabled_allowed);
doReturn(true).when(resources).getBoolean(R.bool.config_cecQuerySadWmaproEnabled_default);
doReturn(true).when(resources).getBoolean(R.bool.config_cecQuerySadWmaproDisabled_allowed);
doReturn(false).when(resources).getBoolean(R.bool.config_cecQuerySadWmaproDisabled_default);
doReturn(true).when(resources).getBoolean(R.bool.config_cecQuerySadMax_userConfigurable);
doReturn(true).when(resources).getBoolean(R.bool.config_cecQuerySadMaxEnabled_allowed);
doReturn(true).when(resources).getBoolean(R.bool.config_cecQuerySadMaxEnabled_default);
doReturn(true).when(resources).getBoolean(R.bool.config_cecQuerySadMaxDisabled_allowed);
doReturn(false).when(resources).getBoolean(R.bool.config_cecQuerySadMaxDisabled_default);
return resources;
}

View File

@@ -89,7 +89,22 @@ public final class HdmiCecConfigTest {
HdmiControlManager.CEC_SETTING_NAME_RC_PROFILE_SOURCE_HANDLES_CONTENTS_MENU,
HdmiControlManager.CEC_SETTING_NAME_RC_PROFILE_SOURCE_HANDLES_TOP_MENU,
HdmiControlManager
.CEC_SETTING_NAME_RC_PROFILE_SOURCE_HANDLES_MEDIA_CONTEXT_SENSITIVE_MENU);
.CEC_SETTING_NAME_RC_PROFILE_SOURCE_HANDLES_MEDIA_CONTEXT_SENSITIVE_MENU,
HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_LPCM,
HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_DD,
HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_MPEG1,
HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_MP3,
HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_MPEG2,
HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_AAC,
HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_DTS,
HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_ATRAC,
HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_ONEBITAUDIO,
HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_DDP,
HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_DTSHD,
HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_TRUEHD,
HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_DST,
HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_WMAPRO,
HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_MAX);
}
@Test
@@ -112,7 +127,22 @@ public final class HdmiCecConfigTest {
HdmiControlManager.CEC_SETTING_NAME_RC_PROFILE_SOURCE_HANDLES_CONTENTS_MENU,
HdmiControlManager.CEC_SETTING_NAME_RC_PROFILE_SOURCE_HANDLES_TOP_MENU,
HdmiControlManager
.CEC_SETTING_NAME_RC_PROFILE_SOURCE_HANDLES_MEDIA_CONTEXT_SENSITIVE_MENU);
.CEC_SETTING_NAME_RC_PROFILE_SOURCE_HANDLES_MEDIA_CONTEXT_SENSITIVE_MENU,
HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_LPCM,
HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_DD,
HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_MPEG1,
HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_MP3,
HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_MPEG2,
HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_AAC,
HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_DTS,
HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_ATRAC,
HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_ONEBITAUDIO,
HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_DDP,
HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_DTSHD,
HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_TRUEHD,
HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_DST,
HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_WMAPRO,
HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_MAX);
}
@Test
@@ -135,7 +165,22 @@ public final class HdmiCecConfigTest {
HdmiControlManager.CEC_SETTING_NAME_RC_PROFILE_SOURCE_HANDLES_CONTENTS_MENU,
HdmiControlManager.CEC_SETTING_NAME_RC_PROFILE_SOURCE_HANDLES_TOP_MENU,
HdmiControlManager
.CEC_SETTING_NAME_RC_PROFILE_SOURCE_HANDLES_MEDIA_CONTEXT_SENSITIVE_MENU);
.CEC_SETTING_NAME_RC_PROFILE_SOURCE_HANDLES_MEDIA_CONTEXT_SENSITIVE_MENU,
HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_LPCM,
HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_DD,
HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_MPEG1,
HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_MP3,
HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_MPEG2,
HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_AAC,
HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_DTS,
HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_ATRAC,
HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_ONEBITAUDIO,
HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_DDP,
HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_DTSHD,
HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_TRUEHD,
HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_DST,
HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_WMAPRO,
HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_MAX);
}
@Test

View File

@@ -22,6 +22,7 @@ import static com.android.server.hdmi.HdmiControlService.INITIATED_BY_ENABLE_CEC
import static com.google.common.truth.Truth.assertThat;
import android.content.Context;
import android.hardware.hdmi.HdmiControlManager;
import android.os.Looper;
import android.os.test.TestLooper;
import android.platform.test.annotations.Presubmit;
@@ -68,6 +69,7 @@ public class RequestSadActionTest {
private Looper mMyLooper;
private TestLooper mTestLooper = new TestLooper();
private ArrayList<HdmiCecLocalDevice> mLocalDevices = new ArrayList<>();
private int mTvLogicalAddress;
private List<byte[]> mSupportedSads;
private RequestSadCallback mCallback =
new RequestSadCallback() {
@@ -94,7 +96,7 @@ public class RequestSadActionTest {
mMyLooper = mTestLooper.getLooper();
mHdmiControlService =
new HdmiControlService(InstrumentationRegistry.getTargetContext(),
new HdmiControlService(context,
Collections.emptyList()) {
@Override
boolean isControlEnabled() {
@@ -129,6 +131,9 @@ public class RequestSadActionTest {
mHdmiControlService.allocateLogicalAddress(mLocalDevices, INITIATED_BY_ENABLE_CEC);
mNativeWrapper.setPhysicalAddress(0x0000);
mTestLooper.dispatchAll();
synchronized (mHdmiCecLocalDeviceTv.mLock) {
mTvLogicalAddress = mHdmiCecLocalDeviceTv.getDeviceInfo().getLogicalAddress();
}
mNativeWrapper.clearResultMessages();
}
@@ -140,8 +145,7 @@ public class RequestSadActionTest {
mTestLooper.dispatchAll();
HdmiCecMessage expected1 = HdmiCecMessageBuilder.buildRequestShortAudioDescriptor(
mHdmiCecLocalDeviceTv.getDeviceInfo().getLogicalAddress(),
Constants.ADDR_AUDIO_SYSTEM,
mTvLogicalAddress, Constants.ADDR_AUDIO_SYSTEM,
CODECS_TO_QUERY_1.stream().mapToInt(i -> i).toArray());
assertThat(mNativeWrapper.getResultMessages()).contains(expected1);
mNativeWrapper.clearResultMessages();
@@ -153,8 +157,7 @@ public class RequestSadActionTest {
mTestLooper.dispatchAll();
HdmiCecMessage expected2 = HdmiCecMessageBuilder.buildRequestShortAudioDescriptor(
mHdmiCecLocalDeviceTv.getDeviceInfo().getLogicalAddress(),
Constants.ADDR_AUDIO_SYSTEM,
mTvLogicalAddress, Constants.ADDR_AUDIO_SYSTEM,
CODECS_TO_QUERY_2.stream().mapToInt(i -> i).toArray());
assertThat(mNativeWrapper.getResultMessages()).contains(expected2);
mNativeWrapper.clearResultMessages();
@@ -166,8 +169,7 @@ public class RequestSadActionTest {
mTestLooper.dispatchAll();
HdmiCecMessage expected3 = HdmiCecMessageBuilder.buildRequestShortAudioDescriptor(
mHdmiCecLocalDeviceTv.getDeviceInfo().getLogicalAddress(),
Constants.ADDR_AUDIO_SYSTEM,
mTvLogicalAddress, Constants.ADDR_AUDIO_SYSTEM,
CODECS_TO_QUERY_3.stream().mapToInt(i -> i).toArray());
assertThat(mNativeWrapper.getResultMessages()).contains(expected3);
mNativeWrapper.clearResultMessages();
@@ -179,8 +181,7 @@ public class RequestSadActionTest {
mTestLooper.dispatchAll();
HdmiCecMessage expected4 = HdmiCecMessageBuilder.buildRequestShortAudioDescriptor(
mHdmiCecLocalDeviceTv.getDeviceInfo().getLogicalAddress(),
Constants.ADDR_AUDIO_SYSTEM,
mTvLogicalAddress, Constants.ADDR_AUDIO_SYSTEM,
CODECS_TO_QUERY_4.stream().mapToInt(i -> i).toArray());
assertThat(mNativeWrapper.getResultMessages()).contains(expected4);
mNativeWrapper.clearResultMessages();
@@ -200,14 +201,12 @@ public class RequestSadActionTest {
action.start();
mTestLooper.dispatchAll();
HdmiCecMessage featureAbort = HdmiCecMessageBuilder.buildFeatureAbortCommand(
Constants.ADDR_AUDIO_SYSTEM,
mHdmiCecLocalDeviceTv.getDeviceInfo().getLogicalAddress(),
Constants.ADDR_AUDIO_SYSTEM, mTvLogicalAddress,
Constants.MESSAGE_REQUEST_SHORT_AUDIO_DESCRIPTOR,
Constants.ABORT_INVALID_OPERAND);
HdmiCecMessage expected1 = HdmiCecMessageBuilder.buildRequestShortAudioDescriptor(
mHdmiCecLocalDeviceTv.getDeviceInfo().getLogicalAddress(),
Constants.ADDR_AUDIO_SYSTEM,
mTvLogicalAddress, Constants.ADDR_AUDIO_SYSTEM,
CODECS_TO_QUERY_1.stream().mapToInt(i -> i).toArray());
assertThat(mNativeWrapper.getResultMessages()).contains(expected1);
mNativeWrapper.clearResultMessages();
@@ -215,8 +214,7 @@ public class RequestSadActionTest {
mTestLooper.dispatchAll();
HdmiCecMessage expected2 = HdmiCecMessageBuilder.buildRequestShortAudioDescriptor(
mHdmiCecLocalDeviceTv.getDeviceInfo().getLogicalAddress(),
Constants.ADDR_AUDIO_SYSTEM,
mTvLogicalAddress, Constants.ADDR_AUDIO_SYSTEM,
CODECS_TO_QUERY_2.stream().mapToInt(i -> i).toArray());
assertThat(mNativeWrapper.getResultMessages()).contains(expected2);
mNativeWrapper.clearResultMessages();
@@ -224,8 +222,7 @@ public class RequestSadActionTest {
mTestLooper.dispatchAll();
HdmiCecMessage expected3 = HdmiCecMessageBuilder.buildRequestShortAudioDescriptor(
mHdmiCecLocalDeviceTv.getDeviceInfo().getLogicalAddress(),
Constants.ADDR_AUDIO_SYSTEM,
mTvLogicalAddress, Constants.ADDR_AUDIO_SYSTEM,
CODECS_TO_QUERY_3.stream().mapToInt(i -> i).toArray());
assertThat(mNativeWrapper.getResultMessages()).contains(expected3);
mNativeWrapper.clearResultMessages();
@@ -233,8 +230,7 @@ public class RequestSadActionTest {
mTestLooper.dispatchAll();
HdmiCecMessage expected4 = HdmiCecMessageBuilder.buildRequestShortAudioDescriptor(
mHdmiCecLocalDeviceTv.getDeviceInfo().getLogicalAddress(),
Constants.ADDR_AUDIO_SYSTEM,
mTvLogicalAddress, Constants.ADDR_AUDIO_SYSTEM,
CODECS_TO_QUERY_4.stream().mapToInt(i -> i).toArray());
assertThat(mNativeWrapper.getResultMessages()).contains(expected4);
action.processCommand(featureAbort);
@@ -251,8 +247,7 @@ public class RequestSadActionTest {
mTestLooper.dispatchAll();
HdmiCecMessage expected1 = HdmiCecMessageBuilder.buildRequestShortAudioDescriptor(
mHdmiCecLocalDeviceTv.getDeviceInfo().getLogicalAddress(),
Constants.ADDR_AUDIO_SYSTEM,
mTvLogicalAddress, Constants.ADDR_AUDIO_SYSTEM,
CODECS_TO_QUERY_1.stream().mapToInt(i -> i).toArray());
byte[] sadsToRespond_1 = new byte[]{
0x01, 0x18, 0x4A,
@@ -260,16 +255,14 @@ public class RequestSadActionTest {
0x03, 0x4B, 0x00,
0x04, 0x20, 0x0A};
HdmiCecMessage response1 = HdmiCecMessageBuilder.buildReportShortAudioDescriptor(
Constants.ADDR_AUDIO_SYSTEM,
mHdmiCecLocalDeviceTv.getDeviceInfo().getLogicalAddress(), sadsToRespond_1);
Constants.ADDR_AUDIO_SYSTEM, mTvLogicalAddress, sadsToRespond_1);
assertThat(mNativeWrapper.getResultMessages()).contains(expected1);
mNativeWrapper.clearResultMessages();
action.processCommand(response1);
mTestLooper.dispatchAll();
HdmiCecMessage expected2 = HdmiCecMessageBuilder.buildRequestShortAudioDescriptor(
mHdmiCecLocalDeviceTv.getDeviceInfo().getLogicalAddress(),
Constants.ADDR_AUDIO_SYSTEM,
mTvLogicalAddress, Constants.ADDR_AUDIO_SYSTEM,
CODECS_TO_QUERY_2.stream().mapToInt(i -> i).toArray());
byte[] sadsToRespond_2 = new byte[]{
0x05, 0x18, 0x4A,
@@ -277,16 +270,14 @@ public class RequestSadActionTest {
0x07, 0x4B, 0x00,
0x08, 0x20, 0x0A};
HdmiCecMessage response2 = HdmiCecMessageBuilder.buildReportShortAudioDescriptor(
Constants.ADDR_AUDIO_SYSTEM,
mHdmiCecLocalDeviceTv.getDeviceInfo().getLogicalAddress(), sadsToRespond_2);
Constants.ADDR_AUDIO_SYSTEM, mTvLogicalAddress, sadsToRespond_2);
assertThat(mNativeWrapper.getResultMessages()).contains(expected2);
mNativeWrapper.clearResultMessages();
action.processCommand(response2);
mTestLooper.dispatchAll();
HdmiCecMessage expected3 = HdmiCecMessageBuilder.buildRequestShortAudioDescriptor(
mHdmiCecLocalDeviceTv.getDeviceInfo().getLogicalAddress(),
Constants.ADDR_AUDIO_SYSTEM,
mTvLogicalAddress, Constants.ADDR_AUDIO_SYSTEM,
CODECS_TO_QUERY_3.stream().mapToInt(i -> i).toArray());
byte[] sadsToRespond_3 = new byte[]{
0x09, 0x18, 0x4A,
@@ -294,24 +285,21 @@ public class RequestSadActionTest {
0x0B, 0x4B, 0x00,
0x0C, 0x20, 0x0A};
HdmiCecMessage response3 = HdmiCecMessageBuilder.buildReportShortAudioDescriptor(
Constants.ADDR_AUDIO_SYSTEM,
mHdmiCecLocalDeviceTv.getDeviceInfo().getLogicalAddress(), sadsToRespond_3);
Constants.ADDR_AUDIO_SYSTEM, mTvLogicalAddress, sadsToRespond_3);
assertThat(mNativeWrapper.getResultMessages()).contains(expected3);
mNativeWrapper.clearResultMessages();
action.processCommand(response3);
mTestLooper.dispatchAll();
HdmiCecMessage expected4 = HdmiCecMessageBuilder.buildRequestShortAudioDescriptor(
mHdmiCecLocalDeviceTv.getDeviceInfo().getLogicalAddress(),
Constants.ADDR_AUDIO_SYSTEM,
mTvLogicalAddress, Constants.ADDR_AUDIO_SYSTEM,
CODECS_TO_QUERY_4.stream().mapToInt(i -> i).toArray());
byte[] sadsToRespond_4 = new byte[]{
0x0D, 0x18, 0x4A,
0x0E, 0x64, 0x5A,
0x0F, 0x4B, 0x00};
HdmiCecMessage response4 = HdmiCecMessageBuilder.buildReportShortAudioDescriptor(
Constants.ADDR_AUDIO_SYSTEM,
mHdmiCecLocalDeviceTv.getDeviceInfo().getLogicalAddress(), sadsToRespond_4);
Constants.ADDR_AUDIO_SYSTEM, mTvLogicalAddress, sadsToRespond_4);
assertThat(mNativeWrapper.getResultMessages()).contains(expected4);
action.processCommand(response4);
mTestLooper.dispatchAll();
@@ -335,38 +323,33 @@ public class RequestSadActionTest {
mTestLooper.dispatchAll();
HdmiCecMessage expected1 = HdmiCecMessageBuilder.buildRequestShortAudioDescriptor(
mHdmiCecLocalDeviceTv.getDeviceInfo().getLogicalAddress(),
Constants.ADDR_AUDIO_SYSTEM,
mTvLogicalAddress, Constants.ADDR_AUDIO_SYSTEM,
CODECS_TO_QUERY_1.stream().mapToInt(i -> i).toArray());
byte[] sadsToRespond_1 = new byte[]{
0x01, 0x18, 0x4A,
0x03, 0x4B, 0x00,
0x04, 0x20, 0x0A};
HdmiCecMessage response1 = HdmiCecMessageBuilder.buildReportShortAudioDescriptor(
Constants.ADDR_AUDIO_SYSTEM,
mHdmiCecLocalDeviceTv.getDeviceInfo().getLogicalAddress(), sadsToRespond_1);
Constants.ADDR_AUDIO_SYSTEM, mTvLogicalAddress, sadsToRespond_1);
assertThat(mNativeWrapper.getResultMessages()).contains(expected1);
mNativeWrapper.clearResultMessages();
action.processCommand(response1);
mTestLooper.dispatchAll();
HdmiCecMessage expected2 = HdmiCecMessageBuilder.buildRequestShortAudioDescriptor(
mHdmiCecLocalDeviceTv.getDeviceInfo().getLogicalAddress(),
Constants.ADDR_AUDIO_SYSTEM,
mTvLogicalAddress, Constants.ADDR_AUDIO_SYSTEM,
CODECS_TO_QUERY_2.stream().mapToInt(i -> i).toArray());
byte[] sadsToRespond_2 = new byte[]{
0x08, 0x20, 0x0A};
HdmiCecMessage response2 = HdmiCecMessageBuilder.buildReportShortAudioDescriptor(
Constants.ADDR_AUDIO_SYSTEM,
mHdmiCecLocalDeviceTv.getDeviceInfo().getLogicalAddress(), sadsToRespond_2);
Constants.ADDR_AUDIO_SYSTEM, mTvLogicalAddress, sadsToRespond_2);
assertThat(mNativeWrapper.getResultMessages()).contains(expected2);
mNativeWrapper.clearResultMessages();
action.processCommand(response2);
mTestLooper.dispatchAll();
HdmiCecMessage expected3 = HdmiCecMessageBuilder.buildRequestShortAudioDescriptor(
mHdmiCecLocalDeviceTv.getDeviceInfo().getLogicalAddress(),
Constants.ADDR_AUDIO_SYSTEM,
mTvLogicalAddress, Constants.ADDR_AUDIO_SYSTEM,
CODECS_TO_QUERY_3.stream().mapToInt(i -> i).toArray());
byte[] sadsToRespond_3 = new byte[]{
0x09, 0x18, 0x4A,
@@ -374,22 +357,19 @@ public class RequestSadActionTest {
0x0B, 0x4B, 0x00,
0x0C, 0x20, 0x0A};
HdmiCecMessage response3 = HdmiCecMessageBuilder.buildReportShortAudioDescriptor(
Constants.ADDR_AUDIO_SYSTEM,
mHdmiCecLocalDeviceTv.getDeviceInfo().getLogicalAddress(), sadsToRespond_3);
Constants.ADDR_AUDIO_SYSTEM, mTvLogicalAddress, sadsToRespond_3);
assertThat(mNativeWrapper.getResultMessages()).contains(expected3);
mNativeWrapper.clearResultMessages();
action.processCommand(response3);
mTestLooper.dispatchAll();
HdmiCecMessage expected4 = HdmiCecMessageBuilder.buildRequestShortAudioDescriptor(
mHdmiCecLocalDeviceTv.getDeviceInfo().getLogicalAddress(),
Constants.ADDR_AUDIO_SYSTEM,
mTvLogicalAddress, Constants.ADDR_AUDIO_SYSTEM,
CODECS_TO_QUERY_4.stream().mapToInt(i -> i).toArray());
byte[] sadsToRespond_4 = new byte[]{
0x0F, 0x4B, 0x00};
HdmiCecMessage response4 = HdmiCecMessageBuilder.buildReportShortAudioDescriptor(
Constants.ADDR_AUDIO_SYSTEM,
mHdmiCecLocalDeviceTv.getDeviceInfo().getLogicalAddress(), sadsToRespond_4);
Constants.ADDR_AUDIO_SYSTEM, mTvLogicalAddress, sadsToRespond_4);
assertThat(mNativeWrapper.getResultMessages()).contains(expected4);
action.processCommand(response4);
mTestLooper.dispatchAll();
@@ -413,8 +393,7 @@ public class RequestSadActionTest {
mTestLooper.dispatchAll();
HdmiCecMessage expected1 = HdmiCecMessageBuilder.buildRequestShortAudioDescriptor(
mHdmiCecLocalDeviceTv.getDeviceInfo().getLogicalAddress(),
Constants.ADDR_AUDIO_SYSTEM,
mTvLogicalAddress, Constants.ADDR_AUDIO_SYSTEM,
CODECS_TO_QUERY_1.stream().mapToInt(i -> i).toArray());
byte[] sadsToRespond_1 = new byte[]{
0x20, 0x18, 0x4A,
@@ -422,16 +401,14 @@ public class RequestSadActionTest {
0x22, 0x4B, 0x00,
0x23, 0x20, 0x0A};
HdmiCecMessage response1 = HdmiCecMessageBuilder.buildReportShortAudioDescriptor(
Constants.ADDR_AUDIO_SYSTEM,
mHdmiCecLocalDeviceTv.getDeviceInfo().getLogicalAddress(), sadsToRespond_1);
Constants.ADDR_AUDIO_SYSTEM, mTvLogicalAddress, sadsToRespond_1);
assertThat(mNativeWrapper.getResultMessages()).contains(expected1);
mNativeWrapper.clearResultMessages();
action.processCommand(response1);
mTestLooper.dispatchAll();
HdmiCecMessage expected2 = HdmiCecMessageBuilder.buildRequestShortAudioDescriptor(
mHdmiCecLocalDeviceTv.getDeviceInfo().getLogicalAddress(),
Constants.ADDR_AUDIO_SYSTEM,
mTvLogicalAddress, Constants.ADDR_AUDIO_SYSTEM,
CODECS_TO_QUERY_2.stream().mapToInt(i -> i).toArray());
byte[] sadsToRespond_2 = new byte[]{
0x24, 0x18, 0x4A,
@@ -439,16 +416,14 @@ public class RequestSadActionTest {
0x26, 0x4B, 0x00,
0x27, 0x20, 0x0A};
HdmiCecMessage response2 = HdmiCecMessageBuilder.buildReportShortAudioDescriptor(
Constants.ADDR_AUDIO_SYSTEM,
mHdmiCecLocalDeviceTv.getDeviceInfo().getLogicalAddress(), sadsToRespond_2);
Constants.ADDR_AUDIO_SYSTEM, mTvLogicalAddress, sadsToRespond_2);
assertThat(mNativeWrapper.getResultMessages()).contains(expected2);
mNativeWrapper.clearResultMessages();
action.processCommand(response2);
mTestLooper.dispatchAll();
HdmiCecMessage expected3 = HdmiCecMessageBuilder.buildRequestShortAudioDescriptor(
mHdmiCecLocalDeviceTv.getDeviceInfo().getLogicalAddress(),
Constants.ADDR_AUDIO_SYSTEM,
mTvLogicalAddress, Constants.ADDR_AUDIO_SYSTEM,
CODECS_TO_QUERY_3.stream().mapToInt(i -> i).toArray());
byte[] sadsToRespond_3 = new byte[]{
0x28, 0x18, 0x4A,
@@ -456,24 +431,21 @@ public class RequestSadActionTest {
0x2A, 0x4B, 0x00,
0x2B, 0x20, 0x0A};
HdmiCecMessage response3 = HdmiCecMessageBuilder.buildReportShortAudioDescriptor(
Constants.ADDR_AUDIO_SYSTEM,
mHdmiCecLocalDeviceTv.getDeviceInfo().getLogicalAddress(), sadsToRespond_3);
Constants.ADDR_AUDIO_SYSTEM, mTvLogicalAddress, sadsToRespond_3);
assertThat(mNativeWrapper.getResultMessages()).contains(expected3);
mNativeWrapper.clearResultMessages();
action.processCommand(response3);
mTestLooper.dispatchAll();
HdmiCecMessage expected4 = HdmiCecMessageBuilder.buildRequestShortAudioDescriptor(
mHdmiCecLocalDeviceTv.getDeviceInfo().getLogicalAddress(),
Constants.ADDR_AUDIO_SYSTEM,
mTvLogicalAddress, Constants.ADDR_AUDIO_SYSTEM,
CODECS_TO_QUERY_4.stream().mapToInt(i -> i).toArray());
byte[] sadsToRespond_4 = new byte[]{
0x2C, 0x18, 0x4A,
0x2D, 0x64, 0x5A,
0x2E, 0x4B, 0x00};
HdmiCecMessage response4 = HdmiCecMessageBuilder.buildReportShortAudioDescriptor(
Constants.ADDR_AUDIO_SYSTEM,
mHdmiCecLocalDeviceTv.getDeviceInfo().getLogicalAddress(), sadsToRespond_4);
Constants.ADDR_AUDIO_SYSTEM, mTvLogicalAddress, sadsToRespond_4);
assertThat(mNativeWrapper.getResultMessages()).contains(expected4);
action.processCommand(response4);
mTestLooper.dispatchAll();
@@ -489,8 +461,7 @@ public class RequestSadActionTest {
mTestLooper.dispatchAll();
HdmiCecMessage expected1 = HdmiCecMessageBuilder.buildRequestShortAudioDescriptor(
mHdmiCecLocalDeviceTv.getDeviceInfo().getLogicalAddress(),
Constants.ADDR_AUDIO_SYSTEM,
mTvLogicalAddress, Constants.ADDR_AUDIO_SYSTEM,
CODECS_TO_QUERY_1.stream().mapToInt(i -> i).toArray());
byte[] sadsToRespond_1 = new byte[]{
0x01, 0x18,
@@ -498,8 +469,7 @@ public class RequestSadActionTest {
0x03, 0x4B, 0x00,
0x04, 0x20, 0x0A};
HdmiCecMessage response1 = HdmiCecMessageBuilder.buildReportShortAudioDescriptor(
Constants.ADDR_AUDIO_SYSTEM,
mHdmiCecLocalDeviceTv.getDeviceInfo().getLogicalAddress(), sadsToRespond_1);
Constants.ADDR_AUDIO_SYSTEM, mTvLogicalAddress, sadsToRespond_1);
assertThat(mNativeWrapper.getResultMessages()).contains(expected1);
mNativeWrapper.clearResultMessages();
action.processCommand(response1);
@@ -512,8 +482,7 @@ public class RequestSadActionTest {
mTestLooper.dispatchAll();
HdmiCecMessage expected2 = HdmiCecMessageBuilder.buildRequestShortAudioDescriptor(
mHdmiCecLocalDeviceTv.getDeviceInfo().getLogicalAddress(),
Constants.ADDR_AUDIO_SYSTEM,
mTvLogicalAddress, Constants.ADDR_AUDIO_SYSTEM,
CODECS_TO_QUERY_2.stream().mapToInt(i -> i).toArray());
byte[] sadsToRespond_2 = new byte[]{
0x05, 0x18, 0x4A,
@@ -521,8 +490,7 @@ public class RequestSadActionTest {
0x07,
0x08, 0x20, 0x0A};
HdmiCecMessage response2 = HdmiCecMessageBuilder.buildReportShortAudioDescriptor(
Constants.ADDR_AUDIO_SYSTEM,
mHdmiCecLocalDeviceTv.getDeviceInfo().getLogicalAddress(), sadsToRespond_2);
Constants.ADDR_AUDIO_SYSTEM, mTvLogicalAddress, sadsToRespond_2);
assertThat(mNativeWrapper.getResultMessages()).contains(expected2);
mNativeWrapper.clearResultMessages();
action.processCommand(response2);
@@ -535,13 +503,11 @@ public class RequestSadActionTest {
mTestLooper.dispatchAll();
HdmiCecMessage expected3 = HdmiCecMessageBuilder.buildRequestShortAudioDescriptor(
mHdmiCecLocalDeviceTv.getDeviceInfo().getLogicalAddress(),
Constants.ADDR_AUDIO_SYSTEM,
mTvLogicalAddress, Constants.ADDR_AUDIO_SYSTEM,
CODECS_TO_QUERY_3.stream().mapToInt(i -> i).toArray());
byte[] sadsToRespond_3 = new byte[0];
HdmiCecMessage response3 = HdmiCecMessageBuilder.buildReportShortAudioDescriptor(
Constants.ADDR_AUDIO_SYSTEM,
mHdmiCecLocalDeviceTv.getDeviceInfo().getLogicalAddress(), sadsToRespond_3);
Constants.ADDR_AUDIO_SYSTEM, mTvLogicalAddress, sadsToRespond_3);
assertThat(mNativeWrapper.getResultMessages()).contains(expected3);
mNativeWrapper.clearResultMessages();
action.processCommand(response3);
@@ -554,16 +520,14 @@ public class RequestSadActionTest {
mTestLooper.dispatchAll();
HdmiCecMessage expected4 = HdmiCecMessageBuilder.buildRequestShortAudioDescriptor(
mHdmiCecLocalDeviceTv.getDeviceInfo().getLogicalAddress(),
Constants.ADDR_AUDIO_SYSTEM,
mTvLogicalAddress, Constants.ADDR_AUDIO_SYSTEM,
CODECS_TO_QUERY_4.stream().mapToInt(i -> i).toArray());
byte[] sadsToRespond_4 = new byte[]{
0x0D, 0x18, 0x4A,
0x0E, 0x64, 0x5A,
0x0F, 0x4B};
HdmiCecMessage response4 = HdmiCecMessageBuilder.buildReportShortAudioDescriptor(
Constants.ADDR_AUDIO_SYSTEM,
mHdmiCecLocalDeviceTv.getDeviceInfo().getLogicalAddress(), sadsToRespond_4);
Constants.ADDR_AUDIO_SYSTEM, mTvLogicalAddress, sadsToRespond_4);
assertThat(mNativeWrapper.getResultMessages()).contains(expected4);
mNativeWrapper.clearResultMessages();
action.processCommand(response4);
@@ -576,4 +540,77 @@ public class RequestSadActionTest {
assertThat(mSupportedSads.size()).isEqualTo(0);
}
@Test
public void selectedSads_allSupported_completeResult() {
mHdmiControlService.getHdmiCecConfig().setIntValue(
HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_MPEG1,
HdmiControlManager.QUERY_SAD_DISABLED);
mHdmiControlService.getHdmiCecConfig().setIntValue(
HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_ONEBITAUDIO,
HdmiControlManager.QUERY_SAD_DISABLED);
mHdmiControlService.getHdmiCecConfig().setIntValue(
HdmiControlManager.CEC_SETTING_NAME_QUERY_SAD_WMAPRO,
HdmiControlManager.QUERY_SAD_DISABLED);
RequestSadAction action = new RequestSadAction(mHdmiCecLocalDeviceTv, ADDR_AUDIO_SYSTEM,
mCallback);
action.start();
mTestLooper.dispatchAll();
HdmiCecMessage expected1 = HdmiCecMessageBuilder.buildRequestShortAudioDescriptor(
mTvLogicalAddress, Constants.ADDR_AUDIO_SYSTEM,
new int[]{Constants.AUDIO_CODEC_LPCM, Constants.AUDIO_CODEC_DD,
Constants.AUDIO_CODEC_MP3, Constants.AUDIO_CODEC_MPEG2});
byte[] sadsToRespond_1 = new byte[]{
0x01, 0x18, 0x4A,
0x02, 0x64, 0x5A,
0x04, 0x20, 0x0A,
0x05, 0x18, 0x4A};
HdmiCecMessage response1 = HdmiCecMessageBuilder.buildReportShortAudioDescriptor(
Constants.ADDR_AUDIO_SYSTEM, mTvLogicalAddress, sadsToRespond_1);
assertThat(mNativeWrapper.getResultMessages()).contains(expected1);
mNativeWrapper.clearResultMessages();
action.processCommand(response1);
mTestLooper.dispatchAll();
HdmiCecMessage expected2 = HdmiCecMessageBuilder.buildRequestShortAudioDescriptor(
mTvLogicalAddress, Constants.ADDR_AUDIO_SYSTEM,
new int[]{Constants.AUDIO_CODEC_AAC, Constants.AUDIO_CODEC_DTS,
Constants.AUDIO_CODEC_ATRAC, Constants.AUDIO_CODEC_DDP});
byte[] sadsToRespond_2 = new byte[]{
0x06, 0x64, 0x5A,
0x07, 0x4B, 0x00,
0x08, 0x20, 0x0A,
0x09, 0x18, 0x4A};
HdmiCecMessage response2 = HdmiCecMessageBuilder.buildReportShortAudioDescriptor(
Constants.ADDR_AUDIO_SYSTEM, mTvLogicalAddress, sadsToRespond_2);
assertThat(mNativeWrapper.getResultMessages()).contains(expected2);
mNativeWrapper.clearResultMessages();
action.processCommand(response2);
mTestLooper.dispatchAll();
HdmiCecMessage expected3 = HdmiCecMessageBuilder.buildRequestShortAudioDescriptor(
mTvLogicalAddress, Constants.ADDR_AUDIO_SYSTEM,
new int[]{Constants.AUDIO_CODEC_DTSHD, Constants.AUDIO_CODEC_TRUEHD,
Constants.AUDIO_CODEC_DST, Constants.AUDIO_CODEC_MAX});
byte[] sadsToRespond_3 = new byte[]{
0x0B, 0x4B, 0x00,
0x0C, 0x20, 0x0A,
0x0D, 0x18, 0x4A,
0x0F, 0x4B, 0x00};
HdmiCecMessage response3 = HdmiCecMessageBuilder.buildReportShortAudioDescriptor(
Constants.ADDR_AUDIO_SYSTEM, mTvLogicalAddress, sadsToRespond_3);
assertThat(mNativeWrapper.getResultMessages()).contains(expected3);
mNativeWrapper.clearResultMessages();
action.processCommand(response3);
mTestLooper.dispatchAll();
assertThat(mSupportedSads.size()).isEqualTo(12);
assertThat(Arrays.equals(sadsToRespond_1,
concatenateSads(mSupportedSads.subList(0, 4)))).isTrue();
assertThat(Arrays.equals(sadsToRespond_2,
concatenateSads(mSupportedSads.subList(4, 8)))).isTrue();
assertThat(Arrays.equals(sadsToRespond_3,
concatenateSads(mSupportedSads.subList(8, 12)))).isTrue();
}
}