| /* |
| * Copyright (C) 2014 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| package android.hardware.hdmi; |
| |
| import android.annotation.SystemApi; |
| import android.os.Parcel; |
| import android.os.Parcelable; |
| |
| /** |
| * A class to encapsulate HDMI port information. Contains the capability of the ports such as |
| * HDMI-CEC, MHL, ARC(Audio Return Channel), and physical address assigned to each port. |
| * |
| * @hide |
| */ |
| @SystemApi |
| public final class HdmiPortInfo implements Parcelable { |
| /** HDMI port type: Input */ |
| public static final int PORT_INPUT = 0; |
| |
| /** HDMI port type: Output */ |
| public static final int PORT_OUTPUT = 1; |
| |
| private final int mId; |
| private final int mType; |
| private final int mAddress; |
| private final boolean mCecSupported; |
| private final boolean mArcSupported; |
| private final boolean mMhlSupported; |
| |
| /** |
| * Constructor. |
| * |
| * @param id identifier assigned to each port. 1 for HDMI port 1 |
| * @param type HDMI port input/output type |
| * @param address physical address of the port |
| * @param cec {@code true} if HDMI-CEC is supported on the port |
| * @param mhl {@code true} if MHL is supported on the port |
| * @param arc {@code true} if audio return channel is supported on the port |
| */ |
| public HdmiPortInfo(int id, int type, int address, boolean cec, boolean mhl, boolean arc) { |
| mId = id; |
| mType = type; |
| mAddress = address; |
| mCecSupported = cec; |
| mArcSupported = arc; |
| mMhlSupported = mhl; |
| } |
| |
| /** |
| * Returns the port id. |
| * |
| * @return port id |
| */ |
| public int getId() { |
| return mId; |
| } |
| |
| /** |
| * Returns the port type. |
| * |
| * @return port type |
| */ |
| public int getType() { |
| return mType; |
| } |
| |
| /** |
| * Returns the port address. |
| * |
| * @return port address |
| */ |
| public int getAddress() { |
| return mAddress; |
| } |
| |
| /** |
| * Returns {@code true} if the port supports HDMI-CEC signaling. |
| * |
| * @return {@code true} if the port supports HDMI-CEC signaling. |
| */ |
| public boolean isCecSupported() { |
| return mCecSupported; |
| } |
| |
| /** |
| * Returns {@code true} if the port supports MHL signaling. |
| * |
| * @return {@code true} if the port supports MHL signaling. |
| */ |
| public boolean isMhlSupported() { |
| return mMhlSupported; |
| } |
| |
| /** |
| * Returns {@code true} if the port supports audio return channel. |
| * |
| * @return {@code true} if the port supports audio return channel |
| */ |
| public boolean isArcSupported() { |
| return mArcSupported; |
| } |
| |
| /** |
| * Describes the kinds of special objects contained in this Parcelable's |
| * marshalled representation. |
| */ |
| @Override |
| public int describeContents() { |
| return 0; |
| } |
| |
| |
| /** |
| * A helper class to deserialize {@link HdmiPortInfo} for a parcel. |
| */ |
| public static final Parcelable.Creator<HdmiPortInfo> CREATOR = |
| new Parcelable.Creator<HdmiPortInfo>() { |
| @Override |
| public HdmiPortInfo createFromParcel(Parcel source) { |
| int id = source.readInt(); |
| int type = source.readInt(); |
| int address = source.readInt(); |
| boolean cec = (source.readInt() == 1); |
| boolean arc = (source.readInt() == 1); |
| boolean mhl = (source.readInt() == 1); |
| return new HdmiPortInfo(id, type, address, cec, mhl, arc); |
| } |
| |
| @Override |
| public HdmiPortInfo[] newArray(int size) { |
| return new HdmiPortInfo[size]; |
| } |
| }; |
| |
| /** |
| * Serializes this object into a {@link Parcel}. |
| * |
| * @param dest The Parcel in which the object should be written. |
| * @param flags Additional flags about how the object should be written. |
| * May be 0 or {@link Parcelable#PARCELABLE_WRITE_RETURN_VALUE}. |
| */ |
| @Override |
| public void writeToParcel(Parcel dest, int flags) { |
| dest.writeInt(mId); |
| dest.writeInt(mType); |
| dest.writeInt(mAddress); |
| dest.writeInt(mCecSupported ? 1 : 0); |
| dest.writeInt(mArcSupported ? 1 : 0); |
| dest.writeInt(mMhlSupported ? 1 : 0); |
| } |
| |
| @Override |
| public String toString() { |
| StringBuffer s = new StringBuffer(); |
| s.append("port_id: ").append(mId).append(", "); |
| s.append("address: ").append(String.format("0x%04x", mAddress)).append(", "); |
| s.append("cec: ").append(mCecSupported).append(", "); |
| s.append("arc: ").append(mArcSupported).append(", "); |
| s.append("mhl: ").append(mMhlSupported); |
| return s.toString(); |
| } |
| |
| @Override |
| public boolean equals(Object o) { |
| if (!(o instanceof HdmiPortInfo)) { |
| return false; |
| } |
| final HdmiPortInfo other = (HdmiPortInfo) o; |
| return mId == other.mId && mType == other.mType && mAddress == other.mAddress |
| && mCecSupported == other.mCecSupported && mArcSupported == other.mArcSupported |
| && mMhlSupported == other.mMhlSupported; |
| } |
| } |