10340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim/* 20340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim * Copyright (C) 2014 The Android Open Source Project 30340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim * 40340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim * Licensed under the Apache License, Version 2.0 (the "License"); 50340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim * you may not use this file except in compliance with the License. 60340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim * You may obtain a copy of the License at 70340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim * 80340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim * http://www.apache.org/licenses/LICENSE-2.0 90340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim * 100340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim * Unless required by applicable law or agreed to in writing, software 110340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim * distributed under the License is distributed on an "AS IS" BASIS, 120340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 130340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim * See the License for the specific language governing permissions and 140340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim * limitations under the License. 150340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim */ 160340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kimpackage android.hardware.hdmi; 170340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim 180340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kimimport android.annotation.SystemApi; 190340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kimimport android.os.Parcel; 200340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kimimport android.os.Parcelable; 210340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim 220340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim/** 230340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim * A class to encapsulate HDMI port information. Contains the capability of the ports such as 240340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim * HDMI-CEC, MHL, ARC(Audio Return Channel), and physical address assigned to each port. 250340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim * 260340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim * @hide 270340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim */ 280340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim@SystemApi 290340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kimpublic final class HdmiPortInfo implements Parcelable { 300340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim /** HDMI port type: Input */ 310340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim public static final int PORT_INPUT = 0; 320340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim 330340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim /** HDMI port type: Output */ 340340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim public static final int PORT_OUTPUT = 1; 350340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim 360340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim private final int mId; 370340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim private final int mType; 380340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim private final int mAddress; 390340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim private final boolean mCecSupported; 400340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim private final boolean mArcSupported; 410340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim private final boolean mMhlSupported; 420340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim 430340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim /** 440340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim * Constructor. 450340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim * 460340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim * @param id identifier assigned to each port. 1 for HDMI port 1 470340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim * @param type HDMI port input/output type 480340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim * @param address physical address of the port 490340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim * @param cec {@code true} if HDMI-CEC is supported on the port 500340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim * @param mhl {@code true} if MHL is supported on the port 510340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim * @param arc {@code true} if audio return channel is supported on the port 520340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim */ 530340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim public HdmiPortInfo(int id, int type, int address, boolean cec, boolean mhl, boolean arc) { 540340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim mId = id; 550340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim mType = type; 560340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim mAddress = address; 570340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim mCecSupported = cec; 580340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim mArcSupported = arc; 590340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim mMhlSupported = mhl; 600340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim } 610340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim 620340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim /** 630340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim * Returns the port id. 640340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim * 650340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim * @return port id 660340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim */ 670340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim public int getId() { 680340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim return mId; 690340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim } 700340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim 710340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim /** 720340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim * Returns the port type. 730340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim * 740340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim * @return port type 750340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim */ 760340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim public int getType() { 770340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim return mType; 780340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim } 790340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim 800340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim /** 810340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim * Returns the port address. 820340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim * 830340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim * @return port address 840340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim */ 850340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim public int getAddress() { 860340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim return mAddress; 870340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim } 880340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim 890340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim /** 900340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim * Returns {@code true} if the port supports HDMI-CEC signaling. 910340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim * 920340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim * @return {@code true} if the port supports HDMI-CEC signaling. 930340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim */ 940340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim public boolean isCecSupported() { 950340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim return mCecSupported; 960340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim } 970340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim 980340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim /** 990340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim * Returns {@code true} if the port supports MHL signaling. 1000340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim * 1010340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim * @return {@code true} if the port supports MHL signaling. 1020340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim */ 1030340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim public boolean isMhlSupported() { 1040340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim return mMhlSupported; 1050340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim } 1060340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim 1070340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim /** 1080340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim * Returns {@code true} if the port supports audio return channel. 1090340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim * 1100340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim * @return {@code true} if the port supports audio return channel 1110340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim */ 1120340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim public boolean isArcSupported() { 1130340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim return mArcSupported; 1140340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim } 1150340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim 1160340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim /** 1172b0da5c4c84305f1d391dc78b85e244c9fd92456Yuncheol Heo * Describes the kinds of special objects contained in this Parcelable's 1180340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim * marshalled representation. 1190340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim */ 1200340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim @Override 1210340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim public int describeContents() { 1220340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim return 0; 1230340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim } 1240340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim 1250340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim 1260340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim /** 1270340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim * A helper class to deserialize {@link HdmiPortInfo} for a parcel. 1280340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim */ 1290340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim public static final Parcelable.Creator<HdmiPortInfo> CREATOR = 1300340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim new Parcelable.Creator<HdmiPortInfo>() { 1310340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim @Override 1320340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim public HdmiPortInfo createFromParcel(Parcel source) { 1330340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim int id = source.readInt(); 1340340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim int type = source.readInt(); 1350340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim int address = source.readInt(); 1360340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim boolean cec = (source.readInt() == 1); 1370340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim boolean arc = (source.readInt() == 1); 1380340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim boolean mhl = (source.readInt() == 1); 139417a95685eaad8790d4639ef6fa1bf6d61ce5ac6Yuncheol Heo return new HdmiPortInfo(id, type, address, cec, mhl, arc); 1400340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim } 1410340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim 1420340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim @Override 1430340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim public HdmiPortInfo[] newArray(int size) { 1440340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim return new HdmiPortInfo[size]; 1450340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim } 1460340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim }; 1470340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim 1480340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim /** 1492b0da5c4c84305f1d391dc78b85e244c9fd92456Yuncheol Heo * Serializes this object into a {@link Parcel}. 1500340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim * 1510340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim * @param dest The Parcel in which the object should be written. 1520340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim * @param flags Additional flags about how the object should be written. 1530340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim * May be 0 or {@link Parcelable#PARCELABLE_WRITE_RETURN_VALUE}. 1540340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim */ 1550340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim @Override 1560340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim public void writeToParcel(Parcel dest, int flags) { 1570340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim dest.writeInt(mId); 1580340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim dest.writeInt(mType); 1590340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim dest.writeInt(mAddress); 1600340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim dest.writeInt(mCecSupported ? 1 : 0); 1610340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim dest.writeInt(mArcSupported ? 1 : 0); 1620340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim dest.writeInt(mMhlSupported ? 1 : 0); 1630340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim } 164f4eb72d53b4c5bc2286841006ad473ad4448bcf8Jinsuk Kim 165f4eb72d53b4c5bc2286841006ad473ad4448bcf8Jinsuk Kim @Override 166f4eb72d53b4c5bc2286841006ad473ad4448bcf8Jinsuk Kim public String toString() { 167f4eb72d53b4c5bc2286841006ad473ad4448bcf8Jinsuk Kim StringBuffer s = new StringBuffer(); 168f4eb72d53b4c5bc2286841006ad473ad4448bcf8Jinsuk Kim s.append("port_id: ").append(mId).append(", "); 169959d2db12c7c6a06465af1251bc4cece580a72a3Terry Heo s.append("address: ").append(String.format("0x%04x", mAddress)).append(", "); 170f4eb72d53b4c5bc2286841006ad473ad4448bcf8Jinsuk Kim s.append("cec: ").append(mCecSupported).append(", "); 171f4eb72d53b4c5bc2286841006ad473ad4448bcf8Jinsuk Kim s.append("arc: ").append(mArcSupported).append(", "); 172f4eb72d53b4c5bc2286841006ad473ad4448bcf8Jinsuk Kim s.append("mhl: ").append(mMhlSupported); 173f4eb72d53b4c5bc2286841006ad473ad4448bcf8Jinsuk Kim return s.toString(); 174f4eb72d53b4c5bc2286841006ad473ad4448bcf8Jinsuk Kim } 175417a95685eaad8790d4639ef6fa1bf6d61ce5ac6Yuncheol Heo 176417a95685eaad8790d4639ef6fa1bf6d61ce5ac6Yuncheol Heo @Override 177417a95685eaad8790d4639ef6fa1bf6d61ce5ac6Yuncheol Heo public boolean equals(Object o) { 178417a95685eaad8790d4639ef6fa1bf6d61ce5ac6Yuncheol Heo if (!(o instanceof HdmiPortInfo)) { 179417a95685eaad8790d4639ef6fa1bf6d61ce5ac6Yuncheol Heo return false; 180417a95685eaad8790d4639ef6fa1bf6d61ce5ac6Yuncheol Heo } 181417a95685eaad8790d4639ef6fa1bf6d61ce5ac6Yuncheol Heo final HdmiPortInfo other = (HdmiPortInfo) o; 182417a95685eaad8790d4639ef6fa1bf6d61ce5ac6Yuncheol Heo return mId == other.mId && mType == other.mType && mAddress == other.mAddress 183417a95685eaad8790d4639ef6fa1bf6d61ce5ac6Yuncheol Heo && mCecSupported == other.mCecSupported && mArcSupported == other.mArcSupported 184417a95685eaad8790d4639ef6fa1bf6d61ce5ac6Yuncheol Heo && mMhlSupported == other.mMhlSupported; 185417a95685eaad8790d4639ef6fa1bf6d61ce5ac6Yuncheol Heo } 1860340bbc89f8162f9c2a298c98b03bfcdd1bc6e87Jinsuk Kim} 187