161f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang/* 261f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * Copyright (C) 2014 The Android Open Source Project 361f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * 461f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * Licensed under the Apache License, Version 2.0 (the "License"); 561f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * you may not use this file except in compliance with the License. 661f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * You may obtain a copy of the License at 761f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * 861f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * http://www.apache.org/licenses/LICENSE-2.0 961f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * 1061f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * Unless required by applicable law or agreed to in writing, software 1161f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * distributed under the License is distributed on an "AS IS" BASIS, 1261f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1361f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * See the License for the specific language governing permissions and 1461f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * limitations under the License. 1561f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang */ 1661f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 1761f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jangpackage android.hardware.hdmi; 1861f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 1961f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jangimport android.annotation.SystemApi; 2061f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jangimport android.os.Parcel; 2161f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jangimport android.os.Parcelable; 2261f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 2361f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang/** 2461f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * A class to encapsulate device information for HDMI devices including CEC and MHL. In terms of 2561f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * CEC, this container includes basic information such as logical address, physical address and 2661f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * device type, and additional information like vendor id and osd name. In terms of MHL device, this 2761f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * container includes adopter id and device type. Otherwise, it keeps the information of other type 2861f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * devices for which only port ID, physical address are meaningful. 2961f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * 3061f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * @hide 3161f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang */ 3261f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang@SystemApi 3361f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jangpublic class HdmiDeviceInfo implements Parcelable { 3461f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 3561f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang /** TV device type. */ 3661f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang public static final int DEVICE_TV = 0; 3761f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 3861f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang /** Recording device type. */ 3961f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang public static final int DEVICE_RECORDER = 1; 4061f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 4161f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang /** Device type reserved for future usage. */ 4261f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang public static final int DEVICE_RESERVED = 2; 4361f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 4461f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang /** Tuner device type. */ 4561f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang public static final int DEVICE_TUNER = 3; 4661f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 4761f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang /** Playback device type. */ 4861f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang public static final int DEVICE_PLAYBACK = 4; 4961f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 5061f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang /** Audio system device type. */ 5161f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang public static final int DEVICE_AUDIO_SYSTEM = 5; 5261f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 5361f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang /** @hide Pure CEC switch device type. */ 5461f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang public static final int DEVICE_PURE_CEC_SWITCH = 6; 5561f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 5661f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang /** @hide Video processor device type. */ 5761f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang public static final int DEVICE_VIDEO_PROCESSOR = 7; 5861f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 5961f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang // Value indicating the device is not an active source. 6061f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang public static final int DEVICE_INACTIVE = -1; 6161f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 6261f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang /** 6361f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * Logical address used to indicate the source comes from internal device. The logical address 6461f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * of TV(0) is used. 6561f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang */ 6661f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang public static final int ADDR_INTERNAL = 0; 6761f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 6861f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang /** 6961f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * Physical address used to indicate the source comes from internal device. The physical address 7061f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * of TV(0) is used. 7161f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang */ 7261f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang public static final int PATH_INTERNAL = 0x0000; 7361f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 7461f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang /** Invalid physical address (routing path) */ 7561f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang public static final int PATH_INVALID = 0xFFFF; 7661f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 7761f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang /** Invalid port ID */ 7861f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang public static final int PORT_INVALID = -1; 7961f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 80cb8661c08f4a7b00eaa2ede06a30c32dd3cbc53bJinsuk Kim /** Invalid device ID */ 81cb8661c08f4a7b00eaa2ede06a30c32dd3cbc53bJinsuk Kim public static final int ID_INVALID = 0xFFFF; 82cb8661c08f4a7b00eaa2ede06a30c32dd3cbc53bJinsuk Kim 83cb8661c08f4a7b00eaa2ede06a30c32dd3cbc53bJinsuk Kim /** Device info used to indicate an inactivated device. */ 84cb8661c08f4a7b00eaa2ede06a30c32dd3cbc53bJinsuk Kim public static final HdmiDeviceInfo INACTIVE_DEVICE = new HdmiDeviceInfo(); 85cb8661c08f4a7b00eaa2ede06a30c32dd3cbc53bJinsuk Kim 868960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim private static final int HDMI_DEVICE_TYPE_CEC = 0; 878960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim private static final int HDMI_DEVICE_TYPE_MHL = 1; 888960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim private static final int HDMI_DEVICE_TYPE_HARDWARE = 2; 898960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim 90cb8661c08f4a7b00eaa2ede06a30c32dd3cbc53bJinsuk Kim // Type used to indicate the device that has relinquished its active source status. 91cb8661c08f4a7b00eaa2ede06a30c32dd3cbc53bJinsuk Kim private static final int HDMI_DEVICE_TYPE_INACTIVE = 100; 92cb8661c08f4a7b00eaa2ede06a30c32dd3cbc53bJinsuk Kim 938960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim // Offset used for id value. MHL devices, for instance, will be assigned the value from 948960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim // ID_OFFSET_MHL. 958960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim private static final int ID_OFFSET_CEC = 0x0; 968960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim private static final int ID_OFFSET_MHL = 0x80; 978960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim private static final int ID_OFFSET_HARDWARE = 0xC0; 9861f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 9961f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang // Common parameters for all device. 1008960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim private final int mId; 10161f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang private final int mHdmiDeviceType; 10261f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang private final int mPhysicalAddress; 10361f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang private final int mPortId; 10461f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 10561f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang // CEC only parameters. 10661f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang private final int mLogicalAddress; 10761f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang private final int mDeviceType; 10861f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang private final int mVendorId; 10961f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang private final String mDisplayName; 11061f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang private final int mDevicePowerStatus; 11161f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 11261f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang // MHL only parameters. 11361f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang private final int mDeviceId; 11461f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang private final int mAdopterId; 11561f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 11661f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang /** 11761f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * A helper class to deserialize {@link HdmiDeviceInfo} for a parcel. 11861f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang */ 11961f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang public static final Parcelable.Creator<HdmiDeviceInfo> CREATOR = 12061f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang new Parcelable.Creator<HdmiDeviceInfo>() { 12161f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang @Override 12261f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang public HdmiDeviceInfo createFromParcel(Parcel source) { 12361f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang int hdmiDeviceType = source.readInt(); 12461f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang int physicalAddress = source.readInt(); 12561f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang int portId = source.readInt(); 12661f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 12761f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang switch (hdmiDeviceType) { 12861f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang case HDMI_DEVICE_TYPE_CEC: 12961f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang int logicalAddress = source.readInt(); 13061f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang int deviceType = source.readInt(); 13161f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang int vendorId = source.readInt(); 13261f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang int powerStatus = source.readInt(); 13361f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang String displayName = source.readString(); 13461f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang return new HdmiDeviceInfo(logicalAddress, physicalAddress, portId, 13561f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang deviceType, vendorId, displayName, powerStatus); 13661f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang case HDMI_DEVICE_TYPE_MHL: 13761f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang int deviceId = source.readInt(); 13861f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang int adopterId = source.readInt(); 13961f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang return new HdmiDeviceInfo(physicalAddress, portId, adopterId, deviceId); 1408960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim case HDMI_DEVICE_TYPE_HARDWARE: 14161f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang return new HdmiDeviceInfo(physicalAddress, portId); 142cb8661c08f4a7b00eaa2ede06a30c32dd3cbc53bJinsuk Kim case HDMI_DEVICE_TYPE_INACTIVE: 143cb8661c08f4a7b00eaa2ede06a30c32dd3cbc53bJinsuk Kim return HdmiDeviceInfo.INACTIVE_DEVICE; 14461f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang default: 14561f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang return null; 14661f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang } 14761f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang } 14861f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 14961f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang @Override 15061f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang public HdmiDeviceInfo[] newArray(int size) { 15161f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang return new HdmiDeviceInfo[size]; 15261f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang } 15361f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang }; 15461f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 15561f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang /** 15661f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * Constructor. Used to initialize the instance for CEC device. 15761f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * 15861f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * @param logicalAddress logical address of HDMI-CEC device 15961f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * @param physicalAddress physical address of HDMI-CEC device 16061f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * @param portId HDMI port ID (1 for HDMI1) 16161f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * @param deviceType type of device 16261f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * @param vendorId vendor id of device. Used for vendor specific command. 16361f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * @param displayName name of device 16461f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * @param powerStatus device power status 16561f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * @hide 16661f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang */ 16761f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang public HdmiDeviceInfo(int logicalAddress, int physicalAddress, int portId, int deviceType, 16861f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang int vendorId, String displayName, int powerStatus) { 16961f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang mHdmiDeviceType = HDMI_DEVICE_TYPE_CEC; 17061f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang mPhysicalAddress = physicalAddress; 17161f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang mPortId = portId; 17261f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 1738960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim mId = idForCecDevice(logicalAddress); 17461f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang mLogicalAddress = logicalAddress; 17561f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang mDeviceType = deviceType; 17661f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang mVendorId = vendorId; 17761f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang mDevicePowerStatus = powerStatus; 17861f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang mDisplayName = displayName; 17961f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 18061f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang mDeviceId = -1; 18161f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang mAdopterId = -1; 18261f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang } 18361f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 18461f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang /** 18561f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * Constructor. Used to initialize the instance for CEC device. 18661f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * 18761f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * @param logicalAddress logical address of HDMI-CEC device 18861f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * @param physicalAddress physical address of HDMI-CEC device 18961f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * @param portId HDMI port ID (1 for HDMI1) 19061f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * @param deviceType type of device 19161f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * @param vendorId vendor id of device. Used for vendor specific command. 19261f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * @param displayName name of device 19361f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * @hide 19461f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang */ 19561f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang public HdmiDeviceInfo(int logicalAddress, int physicalAddress, int portId, int deviceType, 19661f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang int vendorId, String displayName) { 19761f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang this(logicalAddress, physicalAddress, portId, deviceType, 19861f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang vendorId, displayName, HdmiControlManager.POWER_STATUS_UNKNOWN); 19961f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang } 20061f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 20161f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang /** 2028960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim * Constructor. Used to initialize the instance for device representing hardware port. 20361f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * 2048960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim * @param physicalAddress physical address of the port 20561f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * @param portId HDMI port ID (1 for HDMI1) 20661f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * @hide 20761f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang */ 20861f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang public HdmiDeviceInfo(int physicalAddress, int portId) { 2098960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim mHdmiDeviceType = HDMI_DEVICE_TYPE_HARDWARE; 21061f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang mPhysicalAddress = physicalAddress; 21161f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang mPortId = portId; 21261f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 2138960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim mId = idForHardware(portId); 21461f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang mLogicalAddress = -1; 21561f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang mDeviceType = DEVICE_RESERVED; 21661f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang mVendorId = 0; 21761f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang mDevicePowerStatus = HdmiControlManager.POWER_STATUS_UNKNOWN; 21861f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang mDisplayName = "HDMI" + portId; 21961f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 22061f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang mDeviceId = -1; 22161f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang mAdopterId = -1; 22261f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang } 22361f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 22461f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang /** 22561f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * Constructor. Used to initialize the instance for MHL device. 22661f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * 22761f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * @param physicalAddress physical address of HDMI device 22861f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * @param portId portId HDMI port ID (1 for HDMI1) 22961f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * @param adopterId adopter id of MHL 23061f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * @param deviceId device id of MHL 23161f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * @hide 23261f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang */ 23361f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang public HdmiDeviceInfo(int physicalAddress, int portId, int adopterId, int deviceId) { 23461f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang mHdmiDeviceType = HDMI_DEVICE_TYPE_MHL; 23561f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang mPhysicalAddress = physicalAddress; 23661f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang mPortId = portId; 23761f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 2388960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim mId = idForMhlDevice(portId); 23961f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang mLogicalAddress = -1; 24061f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang mDeviceType = DEVICE_RESERVED; 24161f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang mVendorId = 0; 24261f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang mDevicePowerStatus = HdmiControlManager.POWER_STATUS_UNKNOWN; 243ed0864557b3340ab7db00e2dc95b29c4b8bb485dJinsuk Kim mDisplayName = "Mobile"; 24461f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 24561f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang mDeviceId = adopterId; 24661f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang mAdopterId = deviceId; 24761f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang } 24861f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 24961f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang /** 250cb8661c08f4a7b00eaa2ede06a30c32dd3cbc53bJinsuk Kim * Constructor. Used to initialize the instance representing an inactivated device. 251cb8661c08f4a7b00eaa2ede06a30c32dd3cbc53bJinsuk Kim * Can be passed input change listener to indicate the active source yielded 252cb8661c08f4a7b00eaa2ede06a30c32dd3cbc53bJinsuk Kim * its status, hence the listener should take an appropriate action such as 253cb8661c08f4a7b00eaa2ede06a30c32dd3cbc53bJinsuk Kim * switching to other input. 254cb8661c08f4a7b00eaa2ede06a30c32dd3cbc53bJinsuk Kim */ 255cb8661c08f4a7b00eaa2ede06a30c32dd3cbc53bJinsuk Kim public HdmiDeviceInfo() { 256cb8661c08f4a7b00eaa2ede06a30c32dd3cbc53bJinsuk Kim mHdmiDeviceType = HDMI_DEVICE_TYPE_INACTIVE; 257cb8661c08f4a7b00eaa2ede06a30c32dd3cbc53bJinsuk Kim mPhysicalAddress = PATH_INVALID; 258cb8661c08f4a7b00eaa2ede06a30c32dd3cbc53bJinsuk Kim mId = ID_INVALID; 259cb8661c08f4a7b00eaa2ede06a30c32dd3cbc53bJinsuk Kim 260cb8661c08f4a7b00eaa2ede06a30c32dd3cbc53bJinsuk Kim mLogicalAddress = -1; 261cb8661c08f4a7b00eaa2ede06a30c32dd3cbc53bJinsuk Kim mDeviceType = DEVICE_INACTIVE; 262cb8661c08f4a7b00eaa2ede06a30c32dd3cbc53bJinsuk Kim mPortId = PORT_INVALID; 263cb8661c08f4a7b00eaa2ede06a30c32dd3cbc53bJinsuk Kim mDevicePowerStatus = HdmiControlManager.POWER_STATUS_UNKNOWN; 264cb8661c08f4a7b00eaa2ede06a30c32dd3cbc53bJinsuk Kim mDisplayName = "Inactive"; 265cb8661c08f4a7b00eaa2ede06a30c32dd3cbc53bJinsuk Kim mVendorId = 0; 266cb8661c08f4a7b00eaa2ede06a30c32dd3cbc53bJinsuk Kim 267cb8661c08f4a7b00eaa2ede06a30c32dd3cbc53bJinsuk Kim mDeviceId = -1; 268cb8661c08f4a7b00eaa2ede06a30c32dd3cbc53bJinsuk Kim mAdopterId = -1; 269cb8661c08f4a7b00eaa2ede06a30c32dd3cbc53bJinsuk Kim } 270cb8661c08f4a7b00eaa2ede06a30c32dd3cbc53bJinsuk Kim 271cb8661c08f4a7b00eaa2ede06a30c32dd3cbc53bJinsuk Kim /** 2722b0da5c4c84305f1d391dc78b85e244c9fd92456Yuncheol Heo * Returns the id of the device. 2738960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim */ 2748960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim public int getId() { 2758960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim return mId; 2768960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim } 2778960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim 2788960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim /** 2792b0da5c4c84305f1d391dc78b85e244c9fd92456Yuncheol Heo * Returns the id to be used for CEC device. 2808960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim * 2818960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim * @param address logical address of CEC device 2828960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim * @return id for CEC device 2838960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim */ 2848960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim public static int idForCecDevice(int address) { 2858960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim // The id is generated based on the logical address. 2868960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim return ID_OFFSET_CEC + address; 2878960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim } 2888960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim 2898960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim /** 2902b0da5c4c84305f1d391dc78b85e244c9fd92456Yuncheol Heo * Returns the id to be used for MHL device. 2918960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim * 2928960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim * @param portId port which the MHL device is connected to 2938960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim * @return id for MHL device 2948960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim */ 2958960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim public static int idForMhlDevice(int portId) { 2968960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim // The id is generated based on the port id since there can be only one MHL device per port. 2978960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim return ID_OFFSET_MHL + portId; 2988960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim } 2998960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim 3008960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim /** 3012b0da5c4c84305f1d391dc78b85e244c9fd92456Yuncheol Heo * Returns the id to be used for hardware port. 3028960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim * 3038960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim * @param portId port id 3048960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim * @return id for hardware port 3058960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim */ 3068960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim public static int idForHardware(int portId) { 3078960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim return ID_OFFSET_HARDWARE + portId; 3088960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim } 3098960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim 3108960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim /** 3112b0da5c4c84305f1d391dc78b85e244c9fd92456Yuncheol Heo * Returns the CEC logical address of the device. 31261f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang */ 31361f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang public int getLogicalAddress() { 31461f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang return mLogicalAddress; 31561f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang } 31661f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 31761f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang /** 3182b0da5c4c84305f1d391dc78b85e244c9fd92456Yuncheol Heo * Returns the physical address of the device. 31961f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang */ 32061f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang public int getPhysicalAddress() { 32161f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang return mPhysicalAddress; 32261f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang } 32361f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 32461f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang /** 3252b0da5c4c84305f1d391dc78b85e244c9fd92456Yuncheol Heo * Returns the port ID. 32661f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang */ 32761f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang public int getPortId() { 32861f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang return mPortId; 32961f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang } 33061f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 33161f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang /** 3322b0da5c4c84305f1d391dc78b85e244c9fd92456Yuncheol Heo * Returns CEC type of the device. For more details, refer constants between {@link #DEVICE_TV} 33361f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * and {@link #DEVICE_INACTIVE}. 33461f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang */ 33561f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang public int getDeviceType() { 33661f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang return mDeviceType; 33761f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang } 33861f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 33961f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang /** 3402b0da5c4c84305f1d391dc78b85e244c9fd92456Yuncheol Heo * Returns device's power status. It should be one of the following values. 34161f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * <ul> 34261f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * <li>{@link HdmiControlManager#POWER_STATUS_ON} 34361f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * <li>{@link HdmiControlManager#POWER_STATUS_STANDBY} 34461f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * <li>{@link HdmiControlManager#POWER_STATUS_TRANSIENT_TO_ON} 34561f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * <li>{@link HdmiControlManager#POWER_STATUS_TRANSIENT_TO_STANDBY} 34661f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * <li>{@link HdmiControlManager#POWER_STATUS_UNKNOWN} 34761f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * </ul> 34861f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang */ 34961f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang public int getDevicePowerStatus() { 35061f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang return mDevicePowerStatus; 35161f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang } 35261f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 35361f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang /** 3542b0da5c4c84305f1d391dc78b85e244c9fd92456Yuncheol Heo * Returns MHL device id. Return -1 for non-MHL device. 35561f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang */ 35661f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang public int getDeviceId() { 35761f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang return mDeviceId; 35861f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang } 35961f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 36061f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang /** 3612b0da5c4c84305f1d391dc78b85e244c9fd92456Yuncheol Heo * Returns MHL adopter id. Return -1 for non-MHL device. 36261f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang */ 36361f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang public int getAdopterId() { 36461f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang return mAdopterId; 36561f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang } 36661f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 36761f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang /** 3682b0da5c4c84305f1d391dc78b85e244c9fd92456Yuncheol Heo * Returns {@code true} if the device is of a type that can be an input source. 36961f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang */ 37061f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang public boolean isSourceType() { 371e416d0f67bfed9c8a65573091016d49777c56e8fJinsuk Kim if (isCecDevice()) { 372e416d0f67bfed9c8a65573091016d49777c56e8fJinsuk Kim return mDeviceType == DEVICE_PLAYBACK 373e416d0f67bfed9c8a65573091016d49777c56e8fJinsuk Kim || mDeviceType == DEVICE_RECORDER 374e416d0f67bfed9c8a65573091016d49777c56e8fJinsuk Kim || mDeviceType == DEVICE_TUNER; 375e416d0f67bfed9c8a65573091016d49777c56e8fJinsuk Kim } else if (isMhlDevice()) { 376e416d0f67bfed9c8a65573091016d49777c56e8fJinsuk Kim return true; 377e416d0f67bfed9c8a65573091016d49777c56e8fJinsuk Kim } else { 378e416d0f67bfed9c8a65573091016d49777c56e8fJinsuk Kim return false; 379e416d0f67bfed9c8a65573091016d49777c56e8fJinsuk Kim } 38061f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang } 38161f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 38261f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang /** 3832b0da5c4c84305f1d391dc78b85e244c9fd92456Yuncheol Heo * Returns {@code true} if the device represents an HDMI-CEC device. {@code false} if the device 38461f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * is either MHL or other device. 38561f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang */ 38661f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang public boolean isCecDevice() { 38761f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang return mHdmiDeviceType == HDMI_DEVICE_TYPE_CEC; 38861f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang } 38961f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 39061f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang /** 3912b0da5c4c84305f1d391dc78b85e244c9fd92456Yuncheol Heo * Returns {@code true} if the device represents an MHL device. {@code false} if the device is 39261f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * either CEC or other device. 39361f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang */ 39461f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang public boolean isMhlDevice() { 39561f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang return mHdmiDeviceType == HDMI_DEVICE_TYPE_MHL; 39661f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang } 39761f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 39861f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang /** 399cb8661c08f4a7b00eaa2ede06a30c32dd3cbc53bJinsuk Kim * Return {@code true} if the device represents an inactivated device that relinquishes 400cb8661c08f4a7b00eaa2ede06a30c32dd3cbc53bJinsuk Kim * its status as active source by <Active Source> (HDMI-CEC) or Content-off (MHL). 401cb8661c08f4a7b00eaa2ede06a30c32dd3cbc53bJinsuk Kim */ 402cb8661c08f4a7b00eaa2ede06a30c32dd3cbc53bJinsuk Kim public boolean isInactivated() { 403cb8661c08f4a7b00eaa2ede06a30c32dd3cbc53bJinsuk Kim return mHdmiDeviceType == HDMI_DEVICE_TYPE_INACTIVE; 404cb8661c08f4a7b00eaa2ede06a30c32dd3cbc53bJinsuk Kim } 405cb8661c08f4a7b00eaa2ede06a30c32dd3cbc53bJinsuk Kim 406cb8661c08f4a7b00eaa2ede06a30c32dd3cbc53bJinsuk Kim /** 4072b0da5c4c84305f1d391dc78b85e244c9fd92456Yuncheol Heo * Returns display (OSD) name of the device. 40861f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang */ 40961f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang public String getDisplayName() { 41061f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang return mDisplayName; 41161f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang } 41261f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 41361f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang /** 4142b0da5c4c84305f1d391dc78b85e244c9fd92456Yuncheol Heo * Returns vendor id of the device. Vendor id is used to distinguish devices built by other 41561f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * manufactures. This is required for vendor-specific command on CEC standard. 41661f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang */ 41761f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang public int getVendorId() { 41861f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang return mVendorId; 41961f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang } 42061f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 42161f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang /** 4222b0da5c4c84305f1d391dc78b85e244c9fd92456Yuncheol Heo * Describes the kinds of special objects contained in this Parcelable's marshalled 42361f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * representation. 42461f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang */ 42561f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang @Override 42661f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang public int describeContents() { 42761f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang return 0; 42861f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang } 42961f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 43061f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang /** 4312b0da5c4c84305f1d391dc78b85e244c9fd92456Yuncheol Heo * Serializes this object into a {@link Parcel}. 43261f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * 43361f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * @param dest The Parcel in which the object should be written. 43461f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * @param flags Additional flags about how the object should be written. May be 0 or 43561f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * {@link Parcelable#PARCELABLE_WRITE_RETURN_VALUE}. 43661f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang */ 43761f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang @Override 43861f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang public void writeToParcel(Parcel dest, int flags) { 43961f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang dest.writeInt(mHdmiDeviceType); 44061f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang dest.writeInt(mPhysicalAddress); 44161f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang dest.writeInt(mPortId); 44261f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang switch (mHdmiDeviceType) { 44361f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang case HDMI_DEVICE_TYPE_CEC: 44461f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang dest.writeInt(mLogicalAddress); 44561f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang dest.writeInt(mDeviceType); 44661f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang dest.writeInt(mVendorId); 44761f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang dest.writeInt(mDevicePowerStatus); 44861f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang dest.writeString(mDisplayName); 44961f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang break; 45061f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang case HDMI_DEVICE_TYPE_MHL: 45161f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang dest.writeInt(mDeviceId); 45261f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang dest.writeInt(mAdopterId); 45361f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang break; 454cb8661c08f4a7b00eaa2ede06a30c32dd3cbc53bJinsuk Kim case HDMI_DEVICE_TYPE_INACTIVE: 455cb8661c08f4a7b00eaa2ede06a30c32dd3cbc53bJinsuk Kim // flow through 45661f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang default: 45761f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang // no-op 45861f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang } 45961f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang } 46061f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 46161f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang @Override 46261f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang public String toString() { 46361f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang StringBuffer s = new StringBuffer(); 46461f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang switch (mHdmiDeviceType) { 46561f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang case HDMI_DEVICE_TYPE_CEC: 46661f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang s.append("CEC: "); 46787f22a2870ac363a5849a7252c1bd44ce2b809c2Jinsuk Kim s.append("logical_address: ").append(String.format("0x%02X", mLogicalAddress)); 46887f22a2870ac363a5849a7252c1bd44ce2b809c2Jinsuk Kim s.append(" "); 4698960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim s.append("device_type: ").append(mDeviceType).append(" "); 4708960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim s.append("vendor_id: ").append(mVendorId).append(" "); 4718960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim s.append("display_name: ").append(mDisplayName).append(" "); 4728960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim s.append("power_status: ").append(mDevicePowerStatus).append(" "); 47361f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang break; 47461f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang case HDMI_DEVICE_TYPE_MHL: 47561f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang s.append("MHL: "); 47687f22a2870ac363a5849a7252c1bd44ce2b809c2Jinsuk Kim s.append("device_id: ").append(String.format("0x%04X", mDeviceId)).append(" "); 47787f22a2870ac363a5849a7252c1bd44ce2b809c2Jinsuk Kim s.append("adopter_id: ").append(String.format("0x%04X", mAdopterId)).append(" "); 47861f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang break; 47961f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 4808960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim case HDMI_DEVICE_TYPE_HARDWARE: 4818960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim s.append("Hardware: "); 482cb8661c08f4a7b00eaa2ede06a30c32dd3cbc53bJinsuk Kim break; 483cb8661c08f4a7b00eaa2ede06a30c32dd3cbc53bJinsuk Kim case HDMI_DEVICE_TYPE_INACTIVE: 484cb8661c08f4a7b00eaa2ede06a30c32dd3cbc53bJinsuk Kim s.append("Inactivated: "); 48561f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang break; 48661f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang default: 48761f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang return ""; 48861f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang } 48987f22a2870ac363a5849a7252c1bd44ce2b809c2Jinsuk Kim s.append("physical_address: ").append(String.format("0x%04X", mPhysicalAddress)); 49087f22a2870ac363a5849a7252c1bd44ce2b809c2Jinsuk Kim s.append(" "); 49161f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang s.append("port_id: ").append(mPortId); 49261f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang return s.toString(); 49361f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang } 49461f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 49561f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang @Override 49661f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang public boolean equals(Object obj) { 49761f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang if (!(obj instanceof HdmiDeviceInfo)) { 49861f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang return false; 49961f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang } 50061f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 50161f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang HdmiDeviceInfo other = (HdmiDeviceInfo) obj; 50261f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang return mHdmiDeviceType == other.mHdmiDeviceType 50361f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang && mPhysicalAddress == other.mPhysicalAddress 50461f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang && mPortId == other.mPortId 50561f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang && mLogicalAddress == other.mLogicalAddress 50661f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang && mDeviceType == other.mDeviceType 50761f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang && mVendorId == other.mVendorId 50861f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang && mDevicePowerStatus == other.mDevicePowerStatus 50961f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang && mDisplayName.equals(other.mDisplayName) 51061f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang && mDeviceId == other.mDeviceId 51161f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang && mAdopterId == other.mAdopterId; 51261f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang } 51361f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang} 514