178d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim/*
278d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim * Copyright (C) 2014 The Android Open Source Project
378d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim *
478d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim * Licensed under the Apache License, Version 2.0 (the "License");
578d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim * you may not use this file except in compliance with the License.
678d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim * You may obtain a copy of the License at
778d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim *
878d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim *      http://www.apache.org/licenses/LICENSE-2.0
978d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim *
1078d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim * Unless required by applicable law or agreed to in writing, software
1178d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim * distributed under the License is distributed on an "AS IS" BASIS,
1278d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1378d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim * See the License for the specific language governing permissions and
1478d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim * limitations under the License.
1578d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim */
1678d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim
1778d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kimpackage android.hardware.hdmi;
1878d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim
1966d1eb285b129836d1b3c392ed609283c0dbf830Jinsuk Kimimport android.annotation.SystemApi;
2078d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kimimport android.os.Parcel;
2178d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kimimport android.os.Parcelable;
2278d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim
2378d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim/**
2478d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim * A class that describes the HDMI port hotplug event.
2566d1eb285b129836d1b3c392ed609283c0dbf830Jinsuk Kim *
2666d1eb285b129836d1b3c392ed609283c0dbf830Jinsuk Kim * @hide
2778d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim */
2866d1eb285b129836d1b3c392ed609283c0dbf830Jinsuk Kim@SystemApi
2978d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kimpublic final class HdmiHotplugEvent implements Parcelable {
3078d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim
3178d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim    private final int mPort;
3278d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim    private final boolean mConnected;
3378d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim
3478d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim    /**
3578d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim     * Constructor.
3678d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim     *
3778d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim     * <p>Marked as hidden so only system can create the instance.
3878d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim     *
3978d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim     * @hide
4078d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim     */
4178d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim    public HdmiHotplugEvent(int port, boolean connected) {
4278d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim        mPort = port;
4378d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim        mConnected = connected;
4478d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim    }
4578d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim
4678d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim    /**
472b0da5c4c84305f1d391dc78b85e244c9fd92456Yuncheol Heo     * Returns the port number for which the event occurred.
4878d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim     *
4978d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim     * @return port number
5078d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim     */
5178d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim    public int getPort() {
5278d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim        return mPort;
5378d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim    }
5478d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim
5578d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim    /**
562b0da5c4c84305f1d391dc78b85e244c9fd92456Yuncheol Heo     * Returns the connection status associated with this event
5778d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim     *
5878d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim     * @return true if the device gets connected; otherwise false
5978d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim     */
6078d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim    public boolean isConnected() {
6178d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim        return mConnected;
6278d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim    }
6378d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim
6478d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim    /**
652b0da5c4c84305f1d391dc78b85e244c9fd92456Yuncheol Heo     * Describes the kinds of special objects contained in this Parcelable's
6678d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim     * marshalled representation.
6778d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim     */
6878d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim    @Override
6978d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim    public int describeContents() {
7078d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim        return 0;
7178d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim    }
7278d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim
7378d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim    /**
742b0da5c4c84305f1d391dc78b85e244c9fd92456Yuncheol Heo     * Flattens this object in to a Parcel.
7578d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim     *
7678d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim     * @param dest The Parcel in which the object should be written.
7778d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim     * @param flags Additional flags about how the object should be written.
7878d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim     *        May be 0 or {@link Parcelable#PARCELABLE_WRITE_RETURN_VALUE}.
7978d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim     */
8078d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim    @Override
8178d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim    public void writeToParcel(Parcel dest, int flags) {
8278d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim        dest.writeInt(mPort);
8378d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim        dest.writeByte((byte) (mConnected ? 1 : 0));
8478d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim    }
8578d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim
8678d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim    public static final Parcelable.Creator<HdmiHotplugEvent> CREATOR
8778d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim            = new Parcelable.Creator<HdmiHotplugEvent>() {
8878d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim        /**
892b0da5c4c84305f1d391dc78b85e244c9fd92456Yuncheol Heo         * Rebuilds a {@link HdmiHotplugEvent} previously stored with
9078d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim         * {@link Parcelable#writeToParcel(Parcel, int)}.
9178d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim         *
9278d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim         * @param p {@link HdmiHotplugEvent} object to read the Rating from
9378d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim         * @return a new {@link HdmiHotplugEvent} created from the data in the parcel
9478d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim         */
952b0da5c4c84305f1d391dc78b85e244c9fd92456Yuncheol Heo        @Override
9678d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim        public HdmiHotplugEvent createFromParcel(Parcel p) {
9778d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim            int port = p.readInt();
9878d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim            boolean connected = p.readByte() == 1;
9978d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim            return new HdmiHotplugEvent(port, connected);
10078d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim        }
1012b0da5c4c84305f1d391dc78b85e244c9fd92456Yuncheol Heo        @Override
10278d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim        public HdmiHotplugEvent[] newArray(int size) {
10378d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim            return new HdmiHotplugEvent[size];
10478d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim        }
10578d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim    };
10678d695d8ba532214b02e7f18e0ccf89cf099163dJinsuk Kim}
107