1 /* 2 * Copyright (C) 2019 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package android.hdmicec.cts; 18 19 import androidx.annotation.IntDef; 20 21 import java.io.File; 22 23 public final class HdmiCecConstants { 24 HdmiCecConstants()25 private HdmiCecConstants() {} 26 27 /** @deprecated not used anymore **/ 28 @Deprecated 29 public static final String PHYSICAL_ADDRESS_NAME = "cec-phy-addr"; 30 public static final int REBOOT_TIMEOUT = 60000; 31 public static final int TIMEOUT_CEC_REINIT_SECONDS = 5; 32 public static final int TIMEOUT_SAFETY_MS = 500; 33 34 public static final int INVALID_VENDOR_ID = 0xFFFFFF; 35 36 // Standard delay to allow the DUT to react to a CEC message or ADB command 37 public static final int DEVICE_WAIT_TIME_SECONDS = 5; 38 public static final int DEVICE_WAIT_TIME_MS = 5000; 39 public static final int MAX_SLEEP_TIME_SECONDS = 8; 40 public static final int SLEEP_TIMESTEP_SECONDS = 1; 41 public static final int SLEEP_TIME_DELAY_SECONDS = 2; 42 public static final int DEFAULT_PHYSICAL_ADDRESS = 0x1000; 43 public static final int TV_PHYSICAL_ADDRESS = 0x0000; 44 public static final int PHYSICAL_ADDRESS_LENGTH = 4; /* Num nibbles in CEC message */ 45 46 public static final int CEC_KEYCODE_SELECT = 0x00; 47 public static final int CEC_KEYCODE_UP = 0x01; 48 public static final int CEC_KEYCODE_DOWN = 0x02; 49 public static final int CEC_KEYCODE_LEFT = 0x03; 50 public static final int CEC_KEYCODE_RIGHT = 0x04; 51 public static final int CEC_KEYCODE_ROOT_MENU = 0x09; 52 public static final int CEC_KEYCODE_SETUP_MENU = 0x0A; 53 public static final int CEC_KEYCODE_CONTENTS_MENU = 0x0B; 54 public static final int CEC_KEYCODE_BACK = 0x0D; 55 public static final int CEC_KEYCODE_MEDIA_TOP_MENU = 0x10; 56 public static final int CEC_KEYCODE_MEDIA_CONTEXT_SENSITIVE_MENU = 0x11; 57 public static final int CEC_KEYCODE_NUMBER_0_OR_NUMBER_10 = 0x20; 58 public static final int CEC_KEYCODE_NUMBERS_1 = 0x21; 59 public static final int CEC_KEYCODE_NUMBERS_2 = 0x22; 60 public static final int CEC_KEYCODE_NUMBERS_3 = 0x23; 61 public static final int CEC_KEYCODE_NUMBERS_4 = 0x24; 62 public static final int CEC_KEYCODE_NUMBERS_5 = 0x25; 63 public static final int CEC_KEYCODE_NUMBERS_6 = 0x26; 64 public static final int CEC_KEYCODE_NUMBERS_7 = 0x27; 65 public static final int CEC_KEYCODE_NUMBERS_8 = 0x28; 66 public static final int CEC_KEYCODE_NUMBERS_9 = 0x29; 67 public static final int CEC_KEYCODE_CHANNEL_UP = 0x30; 68 public static final int CEC_KEYCODE_CHANNEL_DOWN = 0x31; 69 public static final int CEC_KEYCODE_PREVIOUS_CHANNEL = 0x32; 70 public static final int CEC_KEYCODE_DISPLAY_INFORMATION = 0x35; 71 public static final int CEC_KEYCODE_POWER = 0x40; 72 public static final int CEC_KEYCODE_VOLUME_UP = 0x41; 73 public static final int CEC_KEYCODE_VOLUME_DOWN = 0x42; 74 public static final int CEC_KEYCODE_MUTE = 0x43; 75 public static final int CEC_KEYCODE_PLAY = 0x44; 76 public static final int CEC_KEYCODE_STOP = 0x45; 77 public static final int CEC_KEYCODE_PAUSE = 0x46; 78 public static final int CEC_KEYCODE_RECORD = 0x47; 79 public static final int CEC_KEYCODE_REWIND = 0x48; 80 public static final int CEC_KEYCODE_FAST_FORWARD = 0x49; 81 public static final int CEC_KEYCODE_EJECT = 0x4A; 82 public static final int CEC_KEYCODE_FORWARD = 0x4B; 83 public static final int CEC_KEYCODE_BACKWARD = 0x4C; 84 public static final int CEC_KEYCODE_POWER_TOGGLE_FUNCTION = 0x6B; 85 public static final int CEC_KEYCODE_POWER_OFF_FUNCTION = 0x6C; 86 public static final int CEC_KEYCODE_POWER_ON_FUNCTION = 0x6D; 87 public static final int CEC_KEYCODE_F1_BLUE = 0x71; 88 public static final int CEC_KEYCODE_F2_RED = 0x72; 89 public static final int CEC_KEYCODE_F3_GREEN = 0x73; 90 public static final int CEC_KEYCODE_F4_YELLOW = 0x74; 91 public static final int CEC_KEYCODE_DATA = 0x76; 92 93 public static final int UNRECOGNIZED_OPCODE = 0x0; 94 95 @IntDef( 96 value = { 97 CEC_DEVICE_TYPE_UNKNOWN, 98 CEC_DEVICE_TYPE_TV, 99 CEC_DEVICE_TYPE_RECORDER, 100 CEC_DEVICE_TYPE_RESERVED, 101 CEC_DEVICE_TYPE_TUNER, 102 CEC_DEVICE_TYPE_PLAYBACK_DEVICE, 103 CEC_DEVICE_TYPE_AUDIO_SYSTEM, 104 CEC_DEVICE_TYPE_SWITCH 105 }) 106 public @interface CecDeviceType {} 107 108 public static final int CEC_DEVICE_TYPE_UNKNOWN = -1; 109 public static final int CEC_DEVICE_TYPE_TV = 0; 110 public static final int CEC_DEVICE_TYPE_RECORDER = 1; 111 public static final int CEC_DEVICE_TYPE_RESERVED = 2; 112 public static final int CEC_DEVICE_TYPE_TUNER = 3; 113 public static final int CEC_DEVICE_TYPE_PLAYBACK_DEVICE = 4; 114 public static final int CEC_DEVICE_TYPE_AUDIO_SYSTEM = 5; 115 public static final int CEC_DEVICE_TYPE_SWITCH = 6; 116 public static final int CEC_DEVICE_TYPE_VIDEO_PROCESSOR = 7; 117 118 /** Feature Abort Reasons */ 119 public static final int ABORT_UNRECOGNIZED_MODE = 0; 120 public static final int ABORT_NOT_IN_CORRECT_MODE = 1; 121 public static final int ABORT_CANNOT_PROVIDE_SOURCE = 2; 122 public static final int ABORT_INVALID_OPERAND = 3; 123 public static final int ABORT_REFUSED = 4; 124 public static final int ABORT_UNABLE_TO_DETERMINE = 5; 125 126 // CEC versions 127 public static final int CEC_VERSION_1_4 = 0x05; 128 public static final int CEC_VERSION_2_0 = 0x06; 129 130 /** CEC Power Status */ 131 public static final int CEC_POWER_STATUS_ON = 0x0; 132 public static final int CEC_POWER_STATUS_STANDBY = 0x1; 133 public static final int CEC_POWER_STATUS_IN_TRANSITION_TO_ON = 0x2; 134 public static final int CEC_POWER_STATUS_IN_TRANSITION_TO_STANDBY = 0x3; 135 136 /** PowerManager wakefulness states */ 137 public static final String WAKEFULNESS_AWAKE = "Awake"; 138 public static final String WAKEFULNESS_ASLEEP = "Asleep"; 139 140 /** Poll Message Success */ 141 public static final String POLL_SUCCESS = "POLL message sent"; 142 143 // CEC Device feature list 144 public static final String HDMI_CEC_FEATURE = "feature:android.hardware.hdmi.cec"; 145 public static final String LEANBACK_FEATURE = "feature:android.software.leanback"; 146 147 // CEC Device property list 148 public static final String HDMI_DEVICE_TYPE_PROPERTY = "ro.hdmi.device_type"; 149 public static final String PROPERTY_ARC_SUPPORT = "persist.sys.hdmi.property_arc_support"; 150 151 /* 152 * The default name of local directory into which the port to device mapping files are stored. 153 */ 154 public static final File CEC_MAP_FOLDER = 155 new File(System.getProperty("java.io.tmpdir"), "cec-cts-temp"); 156 157 // CEC Settings 158 public static final String SETTING_VOLUME_CONTROL_ENABLED = "volume_control_enabled"; 159 public static final String SETTING_SOUNDBAR_MODE_ENABLED = "soundbar_mode"; 160 161 // CEC Settings Values 162 public static final String VOLUME_CONTROL_ENABLED = "1"; 163 public static final String VOLUME_CONTROL_DISABLED = "0"; 164 public static final String SOUNDBAR_MODE_ENABLED = "1"; 165 public static final String SOUNDBAR_MODE_DISABLED = "0"; 166 // Power Control Modes for source devices 167 public static final String POWER_CONTROL_MODE_BROADCAST = "broadcast"; 168 public static final String POWER_CONTROL_MODE_NONE = "none"; 169 public static final String POWER_CONTROL_MODE_TV = "to_tv"; 170 public static final String POWER_CONTROL_MODE_TV_AND_AUDIO_SYSTEM = "to_tv_and_audio_system"; 171 172 // Power State Change on Active Source Lost Settings values 173 public static final String POWER_STATE_CHANGE_ON_ACTIVE_SOURCE_LOST_NONE = "none"; 174 public static final String POWER_STATE_CHANGE_ON_ACTIVE_SOURCE_LOST_STANDBY_NOW = "standby_now"; 175 176 // Short Audio Descriptors that can be queried 177 public static final String QUERY_SAD_LPCM = "query_sad_lpcm"; 178 public static final String QUERY_SAD_DD = "query_sad_dd"; 179 public static final String QUERY_SAD_MPEG1 = "query_sad_mpeg1"; 180 public static final String QUERY_SAD_MP3 = "query_sad_mp3"; 181 public static final String QUERY_SAD_MPEG2 = "query_sad_mpeg2"; 182 public static final String QUERY_SAD_AAC = "query_sad_aac"; 183 public static final String QUERY_SAD_DTS = "query_sad_dts"; 184 public static final String QUERY_SAD_ATRAC = "query_sad_atrac"; 185 public static final String QUERY_SAD_ONEBITAUDIO = "query_sad_onebitaudio"; 186 public static final String QUERY_SAD_DDP = "query_sad_ddp"; 187 public static final String QUERY_SAD_DTSHD = "query_sad_dtshd"; 188 public static final String QUERY_SAD_TRUEHD = "query_sad_truehd"; 189 public static final String QUERY_SAD_DST = "query_sad_dst"; 190 public static final String QUERY_SAD_WMAPRO = "query_sad_wmapro"; 191 public static final String QUERY_SAD_MAX = "query_sad_max"; 192 193 // Whether to query an SAD or not 194 public static final String QUERY_SAD_DISABLED = "0"; 195 public static final String QUERY_SAD_ENABLED = "1"; 196 197 // Audio codecs 198 public static final int AUDIO_CODEC_NONE = 0x0; 199 public static final int AUDIO_CODEC_LPCM = 0x1; // Support LPCMs 200 public static final int AUDIO_CODEC_DD = 0x2; // Support DD 201 public static final int AUDIO_CODEC_MPEG1 = 0x3; // Support MPEG1 202 public static final int AUDIO_CODEC_MP3 = 0x4; // Support MP3 203 public static final int AUDIO_CODEC_MPEG2 = 0x5; // Support MPEG2 204 public static final int AUDIO_CODEC_AAC = 0x6; // Support AAC 205 public static final int AUDIO_CODEC_DTS = 0x7; // Support DTS 206 public static final int AUDIO_CODEC_ATRAC = 0x8; // Support ATRAC 207 public static final int AUDIO_CODEC_ONEBITAUDIO = 0x9; // Support One-Bit Audio 208 public static final int AUDIO_CODEC_DDP = 0xA; // Support DDP 209 public static final int AUDIO_CODEC_DTSHD = 0xB; // Support DTSHD 210 public static final int AUDIO_CODEC_TRUEHD = 0xC; // Support MLP/TRUE-HD 211 public static final int AUDIO_CODEC_DST = 0xD; // Support DST 212 public static final int AUDIO_CODEC_WMAPRO = 0xE; // Support WMA-Pro 213 public static final int AUDIO_CODEC_MAX = 0xF; 214 215 // CEC 2.0 Report Feature Bits 216 public static final int FEATURES_SINK_SUPPORTS_ARC_TX_BIT = 0x4; 217 public static final int FEATURES_SINK_SUPPORTS_ARC_RX_BIT = 0x2; 218 219 // Audio device types from AudioDeviceInfo 220 public static final int DEVICE_OUT_HDMI = 0x400; 221 public static final int DEVICE_OUT_HDMI_ARC = 0x40000; 222 public static final int DEVICE_OUT_HDMI_EARC = 0x40001; 223 224 // Volume behavior constants from AudioManager 225 public static final int DEVICE_VOLUME_BEHAVIOR_VARIABLE = 0; 226 public static final int DEVICE_VOLUME_BEHAVIOR_FULL = 1; 227 public static final int DEVICE_VOLUME_BEHAVIOR_FIXED = 2; 228 public static final int DEVICE_VOLUME_BEHAVIOR_ABSOLUTE = 3; 229 } 230