Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 61f4fbd2 authored by Jungshik Jang's avatar Jungshik Jang
Browse files

Rename HdmiCecDeviceInfo into HdmiDeviceInfo.

In order to include mhl device info to device info,
rename HdmiCecDeviceInfo into HdmiDeviceInfo.

BUG: 16215362

Change-Id: I30fb0216061fbbdd6fdc1b82c63af83f1b678597
parent dd712a70
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -28,10 +28,10 @@ public abstract class HdmiClient {
    /**
     * Returns the active source information.
     *
     * @return {@link HdmiCecDeviceInfo} object that describes the active source
     * @return {@link HdmiDeviceInfo} object that describes the active source
     *         or active routing path
     */
    public HdmiCecDeviceInfo getActiveSource() {
    public HdmiDeviceInfo getActiveSource() {
        try {
            return mService.getActiveSource();
        } catch (RemoteException e) {
+8 −8
Original line number Diff line number Diff line
@@ -228,8 +228,8 @@ public final class HdmiControlManager {
                // Do nothing.
            }
        }
        mHasTvDevice = hasDeviceType(types, HdmiCecDeviceInfo.DEVICE_TV);
        mHasPlaybackDevice = hasDeviceType(types, HdmiCecDeviceInfo.DEVICE_PLAYBACK);
        mHasTvDevice = hasDeviceType(types, HdmiDeviceInfo.DEVICE_TV);
        mHasPlaybackDevice = hasDeviceType(types, HdmiDeviceInfo.DEVICE_PLAYBACK);
    }

    private static boolean hasDeviceType(int[] types, int type) {
@@ -249,8 +249,8 @@ public final class HdmiControlManager {
     *
     * @param type CEC device type
     * @return {@link HdmiClient} instance. {@code null} on failure.
     * @see {@link HdmiCecDeviceInfo#DEVICE_PLAYBACK}
     * @see {@link HdmiCecDeviceInfo#DEVICE_TV}
     * See {@link HdmiDeviceInfo#DEVICE_PLAYBACK}
     * See {@link HdmiDeviceInfo#DEVICE_TV}
     */
    @Nullable
    public HdmiClient getClient(int type) {
@@ -258,9 +258,9 @@ public final class HdmiControlManager {
            return null;
        }
        switch (type) {
            case HdmiCecDeviceInfo.DEVICE_TV:
            case HdmiDeviceInfo.DEVICE_TV:
                return mHasTvDevice ? new HdmiTvClient(mService) : null;
            case HdmiCecDeviceInfo.DEVICE_PLAYBACK:
            case HdmiDeviceInfo.DEVICE_PLAYBACK:
                return mHasPlaybackDevice ? new HdmiPlaybackClient(mService) : null;
            default:
                return null;
@@ -278,7 +278,7 @@ public final class HdmiControlManager {
     */
    @Nullable
    public HdmiPlaybackClient getPlaybackClient() {
        return (HdmiPlaybackClient) getClient(HdmiCecDeviceInfo.DEVICE_PLAYBACK);
        return (HdmiPlaybackClient) getClient(HdmiDeviceInfo.DEVICE_PLAYBACK);
    }

    /**
@@ -292,7 +292,7 @@ public final class HdmiControlManager {
     */
    @Nullable
    public HdmiTvClient getTvClient() {
        return (HdmiTvClient) getClient(HdmiCecDeviceInfo.DEVICE_TV);
        return (HdmiTvClient) getClient(HdmiDeviceInfo.DEVICE_TV);
    }

    /**
+1 −1
Original line number Diff line number Diff line
@@ -16,4 +16,4 @@

package android.hardware.hdmi;

parcelable HdmiCecDeviceInfo;
parcelable HdmiDeviceInfo;
+411 −0
Original line number Diff line number Diff line
@@ -21,16 +21,16 @@ import android.os.Parcel;
import android.os.Parcelable;

/**
 * A class to encapsulate device information for HDMI-CEC. This container
 * include basic information such as logical address, physical address and
 * device type, and additional information like vendor id and osd name.
 * Also used to keep the information of non-CEC devices for which only
 * port ID, physical address are meaningful.
 * A class to encapsulate device information for HDMI devices including CEC and MHL. In terms of
 * CEC, this container includes basic information such as logical address, physical address and
 * device type, and additional information like vendor id and osd name. In terms of MHL device, this
 * container includes adopter id and device type. Otherwise, it keeps the information of other type
 * devices for which only port ID, physical address are meaningful.
 *
 * @hide
 */
@SystemApi
public final class HdmiCecDeviceInfo implements Parcelable {
public class HdmiDeviceInfo implements Parcelable {

    /** TV device type. */
    public static final int DEVICE_TV = 0;
@@ -60,14 +60,14 @@ public final class HdmiCecDeviceInfo implements Parcelable {
    public static final int DEVICE_INACTIVE = -1;

    /**
     * Logical address used to indicate the source comes from internal device.
     * The logical address of TV(0) is used.
     * Logical address used to indicate the source comes from internal device. The logical address
     * of TV(0) is used.
     */
    public static final int ADDR_INTERNAL = 0;

    /**
     * Physical address used to indicate the source comes from internal device.
     * The physical address of TV(0) is used.
     * Physical address used to indicate the source comes from internal device. The physical address
     * of TV(0) is used.
     */
    public static final int PATH_INTERNAL = 0x0000;

@@ -77,36 +77,60 @@ public final class HdmiCecDeviceInfo implements Parcelable {
    /** Invalid port ID */
    public static final int PORT_INVALID = -1;

    // Logical address, physical address, device type, vendor id and display name
    // are immutable value.
    private final int mLogicalAddress;
    private static final int HDMI_DEVICE_TYPE_OTHER = 0;
    private static final int HDMI_DEVICE_TYPE_CEC = 1;
    private static final int HDMI_DEVICE_TYPE_MHL = 2;

    // Common parameters for all device.
    private final int mHdmiDeviceType;
    private final int mPhysicalAddress;
    private final int mPortId;

    // CEC only parameters.
    private final int mLogicalAddress;
    private final int mDeviceType;
    private final int mVendorId;
    private final String mDisplayName;
    private final boolean mIsCecDevice;
    private final int mDevicePowerStatus;

    // MHL only parameters.
    private final int mDeviceId;
    private final int mAdopterId;

    /**
     * A helper class to deserialize {@link HdmiCecDeviceInfo} for a parcel.
     * A helper class to deserialize {@link HdmiDeviceInfo} for a parcel.
     */
    public static final Parcelable.Creator<HdmiCecDeviceInfo> CREATOR =
            new Parcelable.Creator<HdmiCecDeviceInfo>() {
    public static final Parcelable.Creator<HdmiDeviceInfo> CREATOR =
            new Parcelable.Creator<HdmiDeviceInfo>() {
                @Override
                public HdmiCecDeviceInfo createFromParcel(Parcel source) {
                    int logicalAddress = source.readInt();
                public HdmiDeviceInfo createFromParcel(Parcel source) {
                    int hdmiDeviceType = source.readInt();
                    int physicalAddress = source.readInt();
                    int portId = source.readInt();

                    switch (hdmiDeviceType) {
                        case HDMI_DEVICE_TYPE_CEC:
                            int logicalAddress = source.readInt();
                            int deviceType = source.readInt();
                            int vendorId = source.readInt();
                            int powerStatus = source.readInt();
                            String displayName = source.readString();
                    return new HdmiCecDeviceInfo(logicalAddress, physicalAddress, portId,
                            deviceType, vendorId, displayName);
                            return new HdmiDeviceInfo(logicalAddress, physicalAddress, portId,
                                    deviceType, vendorId, displayName, powerStatus);
                        case HDMI_DEVICE_TYPE_MHL:
                            int deviceId = source.readInt();
                            int adopterId = source.readInt();
                            return new HdmiDeviceInfo(physicalAddress, portId, adopterId, deviceId);
                        case HDMI_DEVICE_TYPE_OTHER:
                            return new HdmiDeviceInfo(physicalAddress, portId);
                        default:
                            return null;
                    }
                }

                @Override
                public HdmiCecDeviceInfo[] newArray(int size) {
                    return new HdmiCecDeviceInfo[size];
                public HdmiDeviceInfo[] newArray(int size) {
                    return new HdmiDeviceInfo[size];
                }
            };

@@ -119,38 +143,91 @@ public final class HdmiCecDeviceInfo implements Parcelable {
     * @param deviceType type of device
     * @param vendorId vendor id of device. Used for vendor specific command.
     * @param displayName name of device
     * @param powerStatus device power status
     * @hide
     */
    public HdmiCecDeviceInfo(int logicalAddress, int physicalAddress, int portId, int deviceType,
            int vendorId, String displayName) {
        mLogicalAddress = logicalAddress;
    public HdmiDeviceInfo(int logicalAddress, int physicalAddress, int portId, int deviceType,
            int vendorId, String displayName, int powerStatus) {
        mHdmiDeviceType = HDMI_DEVICE_TYPE_CEC;
        mPhysicalAddress = physicalAddress;
        mPortId = portId;

        mLogicalAddress = logicalAddress;
        mDeviceType = deviceType;
        mDisplayName = displayName;
        mVendorId = vendorId;
        mIsCecDevice = true;
        mDevicePowerStatus = powerStatus;
        mDisplayName = displayName;

        mDeviceId = -1;
        mAdopterId = -1;
    }

    /**
     * Constructor. Used to initialize the instance for non-CEC device.
     * Constructor. Used to initialize the instance for CEC device.
     *
     * @param logicalAddress logical address of HDMI-CEC device
     * @param physicalAddress physical address of HDMI-CEC device
     * @param portId HDMI port ID (1 for HDMI1)
     * @param deviceType type of device
     * @param vendorId vendor id of device. Used for vendor specific command.
     * @param displayName name of device
     * @hide
     */
    public HdmiDeviceInfo(int logicalAddress, int physicalAddress, int portId, int deviceType,
            int vendorId, String displayName) {
        this(logicalAddress, physicalAddress, portId, deviceType,
                vendorId, displayName, HdmiControlManager.POWER_STATUS_UNKNOWN);
    }

    /**
     * Constructor. Used to initialize the instance for other device.
     *
     * @param physicalAddress physical address of HDMI device
     * @param portId HDMI port ID (1 for HDMI1)
     * @hide
     */
    public HdmiCecDeviceInfo(int physicalAddress, int portId) {
    public HdmiDeviceInfo(int physicalAddress, int portId) {
        mHdmiDeviceType = HDMI_DEVICE_TYPE_OTHER;
        mPhysicalAddress = physicalAddress;
        mPortId = portId;

        mLogicalAddress = -1;
        mDeviceType = DEVICE_RESERVED;
        mVendorId = 0;
        mDevicePowerStatus = HdmiControlManager.POWER_STATUS_UNKNOWN;
        mDisplayName = "HDMI" + portId;

        mDeviceId = -1;
        mAdopterId = -1;

    }

    /**
     * Constructor. Used to initialize the instance for MHL device.
     *
     * @param physicalAddress physical address of HDMI device
     * @param portId portId HDMI port ID (1 for HDMI1)
     * @param adopterId adopter id of MHL
     * @param deviceId device id of MHL
     * @hide
     */
    public HdmiDeviceInfo(int physicalAddress, int portId, int adopterId, int deviceId) {
        mHdmiDeviceType = HDMI_DEVICE_TYPE_MHL;
        mPhysicalAddress = physicalAddress;
        mPortId = portId;

        mLogicalAddress = -1;
        mDeviceType = DEVICE_RESERVED;
        mDisplayName = null;
        mVendorId = 0;
        mIsCecDevice = false;
        mDevicePowerStatus = HdmiControlManager.POWER_STATUS_UNKNOWN;
        mDisplayName = "MHL";

        mDeviceId = adopterId;
        mAdopterId = deviceId;
    }

    /**
     * Return the logical address of the device.
     * Return the CEC logical address of the device.
     */
    public int getLogicalAddress() {
        return mLogicalAddress;
@@ -171,13 +248,41 @@ public final class HdmiCecDeviceInfo implements Parcelable {
    }

    /**
     * Return type of the device. For more details, refer constants between
     * {@link DEVICE_TV} and {@link DEVICE_INACTIVE}.
     * Return CEC type of the device. For more details, refer constants between {@link #DEVICE_TV}
     * and {@link #DEVICE_INACTIVE}.
     */
    public int getDeviceType() {
        return mDeviceType;
    }

    /**
     * Return device's power status. It should be one of the following values.
     * <ul>
     * <li>{@link HdmiControlManager#POWER_STATUS_ON}
     * <li>{@link HdmiControlManager#POWER_STATUS_STANDBY}
     * <li>{@link HdmiControlManager#POWER_STATUS_TRANSIENT_TO_ON}
     * <li>{@link HdmiControlManager#POWER_STATUS_TRANSIENT_TO_STANDBY}
     * <li>{@link HdmiControlManager#POWER_STATUS_UNKNOWN}
     * </ul>
     */
    public int getDevicePowerStatus() {
        return mDevicePowerStatus;
    }

    /**
     * Return MHL device id. Return -1 for non-MHL device.
     */
    public int getDeviceId() {
        return mDeviceId;
    }

    /**
     * Return MHL adopter id. Return -1 for non-MHL device.
     */
    public int getAdopterId() {
        return mAdopterId;
    }

    /**
     * Return {@code true} if the device is of a type that can be an input source.
     */
@@ -188,11 +293,19 @@ public final class HdmiCecDeviceInfo implements Parcelable {
    }

    /**
     * Return {@code true} if the device represents an HDMI-CEC device. {@code false}
     * if the device is either MHL or non-CEC device.
     * Return {@code true} if the device represents an HDMI-CEC device. {@code false} if the device
     * is either MHL or other device.
     */
    public boolean isCecDevice() {
        return mIsCecDevice;
        return mHdmiDeviceType == HDMI_DEVICE_TYPE_CEC;
    }

    /**
     * Return {@code true} if the device represents an MHL device. {@code false} if the device is
     * either CEC or other device.
     */
    public boolean isMhlDevice() {
        return mHdmiDeviceType == HDMI_DEVICE_TYPE_MHL;
    }

    /**
@@ -203,17 +316,16 @@ public final class HdmiCecDeviceInfo implements Parcelable {
    }

    /**
     * Return vendor id of the device. Vendor id is used to distinguish devices
     * built by other manufactures. This is required for vendor-specific command
     * on CEC standard.
     * Return vendor id of the device. Vendor id is used to distinguish devices built by other
     * manufactures. This is required for vendor-specific command on CEC standard.
     */
    public int getVendorId() {
        return mVendorId;
    }

    /**
     * Describe the kinds of special objects contained in this Parcelable's
     * marshalled representation.
     * Describe the kinds of special objects contained in this Parcelable's marshalled
     * representation.
     */
    @Override
    public int describeContents() {
@@ -224,50 +336,76 @@ public final class HdmiCecDeviceInfo implements Parcelable {
     * Serialize 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}.
     * @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(mLogicalAddress);
        dest.writeInt(mHdmiDeviceType);
        dest.writeInt(mPhysicalAddress);
        dest.writeInt(mPortId);
        switch (mHdmiDeviceType) {
            case HDMI_DEVICE_TYPE_CEC:
                dest.writeInt(mLogicalAddress);
                dest.writeInt(mDeviceType);
                dest.writeInt(mVendorId);
                dest.writeInt(mDevicePowerStatus);
                dest.writeString(mDisplayName);
                break;
            case HDMI_DEVICE_TYPE_MHL:
                dest.writeInt(mDeviceId);
                dest.writeInt(mAdopterId);
                break;
            default:
                // no-op
        }
    }

    @Override
    public String toString() {
        StringBuffer s = new StringBuffer();
        if (isCecDevice()) {
        switch (mHdmiDeviceType) {
            case HDMI_DEVICE_TYPE_CEC:
                s.append("CEC: ");
                s.append("logical_address: ").append(mLogicalAddress).append(", ");
            s.append("physical_address: ").append(mPhysicalAddress).append(", ");
            s.append("port_id: ").append(mPortId).append(", ");
                s.append("device_type: ").append(mDeviceType).append(", ");
                s.append("vendor_id: ").append(mVendorId).append(", ");
            s.append("display_name: ").append(mDisplayName);
        } else {
            s.append("Non-CEC: ");
            s.append("physical_address: ").append(mPhysicalAddress).append(", ");
            s.append("port_id: ").append(mPortId).append(", ");
                s.append("display_name: ").append(mDisplayName).append(", ");
                s.append("power_status: ").append(mDevicePowerStatus).append(", ");
                break;
            case HDMI_DEVICE_TYPE_MHL:
                s.append("MHL: ");
                break;

            case HDMI_DEVICE_TYPE_OTHER:
                s.append("Other: ");
                s.append("device_id: ").append(mDeviceId).append(", ");
                s.append("adopter_id: ").append(mAdopterId).append(", ");
                break;
            default:
                return "";
        }
        s.append("physical_address: ").append(mPhysicalAddress).append(", ");
        s.append("port_id: ").append(mPortId);
        return s.toString();
    }

    @Override
    public boolean equals(Object obj) {
        if (!(obj instanceof HdmiCecDeviceInfo)) {
        if (!(obj instanceof HdmiDeviceInfo)) {
            return false;
        }

        HdmiCecDeviceInfo other = (HdmiCecDeviceInfo) obj;
        return mLogicalAddress == other.mLogicalAddress
        HdmiDeviceInfo other = (HdmiDeviceInfo) obj;
        return mHdmiDeviceType == other.mHdmiDeviceType
                && mPhysicalAddress == other.mPhysicalAddress
                && mPortId == other.mPortId
                && mLogicalAddress == other.mLogicalAddress
                && mDeviceType == other.mDeviceType
                && mVendorId == other.mVendorId
                && mDisplayName.equals(other.mDisplayName);
                && mDevicePowerStatus == other.mDevicePowerStatus
                && mDisplayName.equals(other.mDisplayName)
                && mDeviceId == other.mDeviceId
                && mAdopterId == other.mAdopterId;
    }
}
+9 −7
Original line number Diff line number Diff line
@@ -52,12 +52,14 @@ public final class HdmiPlaybackClient extends HdmiClient {
        /**
         * Called when display device status is reported.
         *
         * @param status display device status
         * @see {@link HdmiControlManager#POWER_STATUS_ON}
         * @see {@link HdmiControlManager#POWER_STATUS_STANDBY}
         * @see {@link HdmiControlManager#POWER_STATUS_TRANSIENT_TO_ON}
         * @see {@link HdmiControlManager#POWER_STATUS_TRANSIENT_TO_STANDBY}
         * @see {@link HdmiControlManager#POWER_STATUS_UNKNOWN}
         * @param status display device status. It should be one of the following values.
         *            <ul>
         *            <li>{@link HdmiControlManager#POWER_STATUS_ON}
         *            <li>{@link HdmiControlManager#POWER_STATUS_STANDBY}
         *            <li>{@link HdmiControlManager#POWER_STATUS_TRANSIENT_TO_ON}
         *            <li>{@link HdmiControlManager#POWER_STATUS_TRANSIENT_TO_STANDBY}
         *            <li>{@link HdmiControlManager#POWER_STATUS_UNKNOWN}
         *            </ul>
         */
        public void onComplete(int status);
    }
@@ -84,7 +86,7 @@ public final class HdmiPlaybackClient extends HdmiClient {

    @Override
    public int getDeviceType() {
        return HdmiCecDeviceInfo.DEVICE_PLAYBACK;
        return HdmiDeviceInfo.DEVICE_PLAYBACK;
    }

    /**
Loading