HdmiDeviceInfo.java revision e416d0f67bfed9c8a65573091016d49777c56e8f
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 808960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim private static final int HDMI_DEVICE_TYPE_CEC = 0; 818960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim private static final int HDMI_DEVICE_TYPE_MHL = 1; 828960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim private static final int HDMI_DEVICE_TYPE_HARDWARE = 2; 838960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim 848960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim // Offset used for id value. MHL devices, for instance, will be assigned the value from 858960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim // ID_OFFSET_MHL. 868960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim private static final int ID_OFFSET_CEC = 0x0; 878960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim private static final int ID_OFFSET_MHL = 0x80; 888960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim private static final int ID_OFFSET_HARDWARE = 0xC0; 8961f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 9061f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang // Common parameters for all device. 918960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim private final int mId; 9261f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang private final int mHdmiDeviceType; 9361f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang private final int mPhysicalAddress; 9461f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang private final int mPortId; 9561f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 9661f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang // CEC only parameters. 9761f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang private final int mLogicalAddress; 9861f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang private final int mDeviceType; 9961f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang private final int mVendorId; 10061f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang private final String mDisplayName; 10161f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang private final int mDevicePowerStatus; 10261f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 10361f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang // MHL only parameters. 10461f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang private final int mDeviceId; 10561f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang private final int mAdopterId; 10661f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 10761f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang /** 10861f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * A helper class to deserialize {@link HdmiDeviceInfo} for a parcel. 10961f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang */ 11061f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang public static final Parcelable.Creator<HdmiDeviceInfo> CREATOR = 11161f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang new Parcelable.Creator<HdmiDeviceInfo>() { 11261f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang @Override 11361f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang public HdmiDeviceInfo createFromParcel(Parcel source) { 11461f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang int hdmiDeviceType = source.readInt(); 11561f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang int physicalAddress = source.readInt(); 11661f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang int portId = source.readInt(); 11761f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 11861f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang switch (hdmiDeviceType) { 11961f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang case HDMI_DEVICE_TYPE_CEC: 12061f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang int logicalAddress = source.readInt(); 12161f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang int deviceType = source.readInt(); 12261f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang int vendorId = source.readInt(); 12361f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang int powerStatus = source.readInt(); 12461f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang String displayName = source.readString(); 12561f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang return new HdmiDeviceInfo(logicalAddress, physicalAddress, portId, 12661f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang deviceType, vendorId, displayName, powerStatus); 12761f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang case HDMI_DEVICE_TYPE_MHL: 12861f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang int deviceId = source.readInt(); 12961f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang int adopterId = source.readInt(); 13061f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang return new HdmiDeviceInfo(physicalAddress, portId, adopterId, deviceId); 1318960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim case HDMI_DEVICE_TYPE_HARDWARE: 13261f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang return new HdmiDeviceInfo(physicalAddress, portId); 13361f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang default: 13461f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang return null; 13561f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang } 13661f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang } 13761f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 13861f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang @Override 13961f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang public HdmiDeviceInfo[] newArray(int size) { 14061f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang return new HdmiDeviceInfo[size]; 14161f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang } 14261f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang }; 14361f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 14461f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang /** 14561f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * Constructor. Used to initialize the instance for CEC device. 14661f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * 14761f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * @param logicalAddress logical address of HDMI-CEC device 14861f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * @param physicalAddress physical address of HDMI-CEC device 14961f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * @param portId HDMI port ID (1 for HDMI1) 15061f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * @param deviceType type of device 15161f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * @param vendorId vendor id of device. Used for vendor specific command. 15261f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * @param displayName name of device 15361f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * @param powerStatus device power status 15461f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * @hide 15561f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang */ 15661f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang public HdmiDeviceInfo(int logicalAddress, int physicalAddress, int portId, int deviceType, 15761f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang int vendorId, String displayName, int powerStatus) { 15861f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang mHdmiDeviceType = HDMI_DEVICE_TYPE_CEC; 15961f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang mPhysicalAddress = physicalAddress; 16061f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang mPortId = portId; 16161f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 1628960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim mId = idForCecDevice(logicalAddress); 16361f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang mLogicalAddress = logicalAddress; 16461f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang mDeviceType = deviceType; 16561f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang mVendorId = vendorId; 16661f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang mDevicePowerStatus = powerStatus; 16761f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang mDisplayName = displayName; 16861f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 16961f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang mDeviceId = -1; 17061f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang mAdopterId = -1; 17161f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang } 17261f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 17361f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang /** 17461f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * Constructor. Used to initialize the instance for CEC device. 17561f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * 17661f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * @param logicalAddress logical address of HDMI-CEC device 17761f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * @param physicalAddress physical address of HDMI-CEC device 17861f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * @param portId HDMI port ID (1 for HDMI1) 17961f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * @param deviceType type of device 18061f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * @param vendorId vendor id of device. Used for vendor specific command. 18161f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * @param displayName name of device 18261f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * @hide 18361f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang */ 18461f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang public HdmiDeviceInfo(int logicalAddress, int physicalAddress, int portId, int deviceType, 18561f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang int vendorId, String displayName) { 18661f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang this(logicalAddress, physicalAddress, portId, deviceType, 18761f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang vendorId, displayName, HdmiControlManager.POWER_STATUS_UNKNOWN); 18861f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang } 18961f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 19061f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang /** 1918960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim * Constructor. Used to initialize the instance for device representing hardware port. 19261f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * 1938960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim * @param physicalAddress physical address of the port 19461f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * @param portId HDMI port ID (1 for HDMI1) 19561f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * @hide 19661f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang */ 19761f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang public HdmiDeviceInfo(int physicalAddress, int portId) { 1988960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim mHdmiDeviceType = HDMI_DEVICE_TYPE_HARDWARE; 19961f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang mPhysicalAddress = physicalAddress; 20061f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang mPortId = portId; 20161f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 2028960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim mId = idForHardware(portId); 20361f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang mLogicalAddress = -1; 20461f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang mDeviceType = DEVICE_RESERVED; 20561f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang mVendorId = 0; 20661f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang mDevicePowerStatus = HdmiControlManager.POWER_STATUS_UNKNOWN; 20761f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang mDisplayName = "HDMI" + portId; 20861f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 20961f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang mDeviceId = -1; 21061f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang mAdopterId = -1; 21161f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 21261f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang } 21361f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 21461f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang /** 21561f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * Constructor. Used to initialize the instance for MHL device. 21661f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * 21761f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * @param physicalAddress physical address of HDMI device 21861f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * @param portId portId HDMI port ID (1 for HDMI1) 21961f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * @param adopterId adopter id of MHL 22061f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * @param deviceId device id of MHL 22161f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * @hide 22261f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang */ 22361f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang public HdmiDeviceInfo(int physicalAddress, int portId, int adopterId, int deviceId) { 22461f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang mHdmiDeviceType = HDMI_DEVICE_TYPE_MHL; 22561f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang mPhysicalAddress = physicalAddress; 22661f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang mPortId = portId; 22761f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 2288960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim mId = idForMhlDevice(portId); 22961f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang mLogicalAddress = -1; 23061f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang mDeviceType = DEVICE_RESERVED; 23161f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang mVendorId = 0; 23261f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang mDevicePowerStatus = HdmiControlManager.POWER_STATUS_UNKNOWN; 233ed0864557b3340ab7db00e2dc95b29c4b8bb485dJinsuk Kim mDisplayName = "Mobile"; 23461f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 23561f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang mDeviceId = adopterId; 23661f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang mAdopterId = deviceId; 23761f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang } 23861f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 23961f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang /** 2402b0da5c4c84305f1d391dc78b85e244c9fd92456Yuncheol Heo * Returns the id of the device. 2418960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim */ 2428960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim public int getId() { 2438960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim return mId; 2448960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim } 2458960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim 2468960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim /** 2472b0da5c4c84305f1d391dc78b85e244c9fd92456Yuncheol Heo * Returns the id to be used for CEC device. 2488960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim * 2498960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim * @param address logical address of CEC device 2508960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim * @return id for CEC device 2518960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim */ 2528960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim public static int idForCecDevice(int address) { 2538960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim // The id is generated based on the logical address. 2548960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim return ID_OFFSET_CEC + address; 2558960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim } 2568960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim 2578960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim /** 2582b0da5c4c84305f1d391dc78b85e244c9fd92456Yuncheol Heo * Returns the id to be used for MHL device. 2598960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim * 2608960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim * @param portId port which the MHL device is connected to 2618960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim * @return id for MHL device 2628960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim */ 2638960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim public static int idForMhlDevice(int portId) { 2648960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim // The id is generated based on the port id since there can be only one MHL device per port. 2658960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim return ID_OFFSET_MHL + portId; 2668960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim } 2678960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim 2688960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim /** 2692b0da5c4c84305f1d391dc78b85e244c9fd92456Yuncheol Heo * Returns the id to be used for hardware port. 2708960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim * 2718960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim * @param portId port id 2728960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim * @return id for hardware port 2738960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim */ 2748960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim public static int idForHardware(int portId) { 2758960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim return ID_OFFSET_HARDWARE + portId; 2768960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim } 2778960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim 2788960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim /** 2792b0da5c4c84305f1d391dc78b85e244c9fd92456Yuncheol Heo * Returns the CEC logical address of the device. 28061f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang */ 28161f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang public int getLogicalAddress() { 28261f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang return mLogicalAddress; 28361f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang } 28461f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 28561f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang /** 2862b0da5c4c84305f1d391dc78b85e244c9fd92456Yuncheol Heo * Returns the physical address of the device. 28761f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang */ 28861f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang public int getPhysicalAddress() { 28961f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang return mPhysicalAddress; 29061f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang } 29161f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 29261f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang /** 2932b0da5c4c84305f1d391dc78b85e244c9fd92456Yuncheol Heo * Returns the port ID. 29461f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang */ 29561f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang public int getPortId() { 29661f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang return mPortId; 29761f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang } 29861f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 29961f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang /** 3002b0da5c4c84305f1d391dc78b85e244c9fd92456Yuncheol Heo * Returns CEC type of the device. For more details, refer constants between {@link #DEVICE_TV} 30161f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * and {@link #DEVICE_INACTIVE}. 30261f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang */ 30361f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang public int getDeviceType() { 30461f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang return mDeviceType; 30561f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang } 30661f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 30761f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang /** 3082b0da5c4c84305f1d391dc78b85e244c9fd92456Yuncheol Heo * Returns device's power status. It should be one of the following values. 30961f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * <ul> 31061f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * <li>{@link HdmiControlManager#POWER_STATUS_ON} 31161f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * <li>{@link HdmiControlManager#POWER_STATUS_STANDBY} 31261f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * <li>{@link HdmiControlManager#POWER_STATUS_TRANSIENT_TO_ON} 31361f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * <li>{@link HdmiControlManager#POWER_STATUS_TRANSIENT_TO_STANDBY} 31461f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * <li>{@link HdmiControlManager#POWER_STATUS_UNKNOWN} 31561f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * </ul> 31661f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang */ 31761f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang public int getDevicePowerStatus() { 31861f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang return mDevicePowerStatus; 31961f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang } 32061f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 32161f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang /** 3222b0da5c4c84305f1d391dc78b85e244c9fd92456Yuncheol Heo * Returns MHL device id. Return -1 for non-MHL device. 32361f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang */ 32461f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang public int getDeviceId() { 32561f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang return mDeviceId; 32661f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang } 32761f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 32861f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang /** 3292b0da5c4c84305f1d391dc78b85e244c9fd92456Yuncheol Heo * Returns MHL adopter id. Return -1 for non-MHL device. 33061f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang */ 33161f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang public int getAdopterId() { 33261f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang return mAdopterId; 33361f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang } 33461f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 33561f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang /** 3362b0da5c4c84305f1d391dc78b85e244c9fd92456Yuncheol Heo * Returns {@code true} if the device is of a type that can be an input source. 33761f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang */ 33861f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang public boolean isSourceType() { 339e416d0f67bfed9c8a65573091016d49777c56e8fJinsuk Kim if (isCecDevice()) { 340e416d0f67bfed9c8a65573091016d49777c56e8fJinsuk Kim return mDeviceType == DEVICE_PLAYBACK 341e416d0f67bfed9c8a65573091016d49777c56e8fJinsuk Kim || mDeviceType == DEVICE_RECORDER 342e416d0f67bfed9c8a65573091016d49777c56e8fJinsuk Kim || mDeviceType == DEVICE_TUNER; 343e416d0f67bfed9c8a65573091016d49777c56e8fJinsuk Kim } else if (isMhlDevice()) { 344e416d0f67bfed9c8a65573091016d49777c56e8fJinsuk Kim return true; 345e416d0f67bfed9c8a65573091016d49777c56e8fJinsuk Kim } else { 346e416d0f67bfed9c8a65573091016d49777c56e8fJinsuk Kim return false; 347e416d0f67bfed9c8a65573091016d49777c56e8fJinsuk Kim } 34861f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang } 34961f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 35061f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang /** 3512b0da5c4c84305f1d391dc78b85e244c9fd92456Yuncheol Heo * Returns {@code true} if the device represents an HDMI-CEC device. {@code false} if the device 35261f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * is either MHL or other device. 35361f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang */ 35461f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang public boolean isCecDevice() { 35561f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang return mHdmiDeviceType == HDMI_DEVICE_TYPE_CEC; 35661f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang } 35761f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 35861f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang /** 3592b0da5c4c84305f1d391dc78b85e244c9fd92456Yuncheol Heo * Returns {@code true} if the device represents an MHL device. {@code false} if the device is 36061f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * either CEC or other device. 36161f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang */ 36261f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang public boolean isMhlDevice() { 36361f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang return mHdmiDeviceType == HDMI_DEVICE_TYPE_MHL; 36461f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang } 36561f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 36661f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang /** 3672b0da5c4c84305f1d391dc78b85e244c9fd92456Yuncheol Heo * Returns display (OSD) name of the device. 36861f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang */ 36961f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang public String getDisplayName() { 37061f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang return mDisplayName; 37161f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang } 37261f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 37361f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang /** 3742b0da5c4c84305f1d391dc78b85e244c9fd92456Yuncheol Heo * Returns vendor id of the device. Vendor id is used to distinguish devices built by other 37561f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * manufactures. This is required for vendor-specific command on CEC standard. 37661f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang */ 37761f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang public int getVendorId() { 37861f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang return mVendorId; 37961f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang } 38061f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 38161f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang /** 3822b0da5c4c84305f1d391dc78b85e244c9fd92456Yuncheol Heo * Describes the kinds of special objects contained in this Parcelable's marshalled 38361f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * representation. 38461f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang */ 38561f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang @Override 38661f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang public int describeContents() { 38761f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang return 0; 38861f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang } 38961f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 39061f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang /** 3912b0da5c4c84305f1d391dc78b85e244c9fd92456Yuncheol Heo * Serializes this object into a {@link Parcel}. 39261f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * 39361f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * @param dest The Parcel in which the object should be written. 39461f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * @param flags Additional flags about how the object should be written. May be 0 or 39561f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang * {@link Parcelable#PARCELABLE_WRITE_RETURN_VALUE}. 39661f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang */ 39761f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang @Override 39861f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang public void writeToParcel(Parcel dest, int flags) { 39961f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang dest.writeInt(mHdmiDeviceType); 40061f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang dest.writeInt(mPhysicalAddress); 40161f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang dest.writeInt(mPortId); 40261f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang switch (mHdmiDeviceType) { 40361f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang case HDMI_DEVICE_TYPE_CEC: 40461f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang dest.writeInt(mLogicalAddress); 40561f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang dest.writeInt(mDeviceType); 40661f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang dest.writeInt(mVendorId); 40761f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang dest.writeInt(mDevicePowerStatus); 40861f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang dest.writeString(mDisplayName); 40961f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang break; 41061f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang case HDMI_DEVICE_TYPE_MHL: 41161f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang dest.writeInt(mDeviceId); 41261f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang dest.writeInt(mAdopterId); 41361f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang break; 41461f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang default: 41561f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang // no-op 41661f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang } 41761f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang } 41861f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 41961f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang @Override 42061f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang public String toString() { 42161f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang StringBuffer s = new StringBuffer(); 42261f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang switch (mHdmiDeviceType) { 42361f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang case HDMI_DEVICE_TYPE_CEC: 42461f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang s.append("CEC: "); 42587f22a2870ac363a5849a7252c1bd44ce2b809c2Jinsuk Kim s.append("logical_address: ").append(String.format("0x%02X", mLogicalAddress)); 42687f22a2870ac363a5849a7252c1bd44ce2b809c2Jinsuk Kim s.append(" "); 4278960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim s.append("device_type: ").append(mDeviceType).append(" "); 4288960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim s.append("vendor_id: ").append(mVendorId).append(" "); 4298960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim s.append("display_name: ").append(mDisplayName).append(" "); 4308960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim s.append("power_status: ").append(mDevicePowerStatus).append(" "); 43161f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang break; 43261f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang case HDMI_DEVICE_TYPE_MHL: 43361f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang s.append("MHL: "); 43487f22a2870ac363a5849a7252c1bd44ce2b809c2Jinsuk Kim s.append("device_id: ").append(String.format("0x%04X", mDeviceId)).append(" "); 43587f22a2870ac363a5849a7252c1bd44ce2b809c2Jinsuk Kim s.append("adopter_id: ").append(String.format("0x%04X", mAdopterId)).append(" "); 43661f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang break; 43761f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 4388960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim case HDMI_DEVICE_TYPE_HARDWARE: 4398960d1b1552729e3dfd33deee951ac75933ad8e5Jinsuk Kim s.append("Hardware: "); 44061f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang break; 44161f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang default: 44261f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang return ""; 44361f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang } 44487f22a2870ac363a5849a7252c1bd44ce2b809c2Jinsuk Kim s.append("physical_address: ").append(String.format("0x%04X", mPhysicalAddress)); 44587f22a2870ac363a5849a7252c1bd44ce2b809c2Jinsuk Kim s.append(" "); 44661f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang s.append("port_id: ").append(mPortId); 44761f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang return s.toString(); 44861f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang } 44961f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 45061f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang @Override 45161f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang public boolean equals(Object obj) { 45261f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang if (!(obj instanceof HdmiDeviceInfo)) { 45361f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang return false; 45461f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang } 45561f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang 45661f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang HdmiDeviceInfo other = (HdmiDeviceInfo) obj; 45761f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang return mHdmiDeviceType == other.mHdmiDeviceType 45861f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang && mPhysicalAddress == other.mPhysicalAddress 45961f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang && mPortId == other.mPortId 46061f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang && mLogicalAddress == other.mLogicalAddress 46161f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang && mDeviceType == other.mDeviceType 46261f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang && mVendorId == other.mVendorId 46361f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang && mDevicePowerStatus == other.mDevicePowerStatus 46461f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang && mDisplayName.equals(other.mDisplayName) 46561f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang && mDeviceId == other.mDeviceId 46661f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang && mAdopterId == other.mAdopterId; 46761f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang } 46861f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang} 469