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

Commit 9b5bd967 authored by Jungshik Jang's avatar Jungshik Jang Committed by Android (Google) Code Review
Browse files

Merge "Rename HdmiCecDeviceInfo into HdmiDeviceInfo." into lmp-dev

parents eec75412 61f4fbd2
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