1e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon/*
2e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon * Copyright 2014, The Android Open Source Project
3e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon *
4e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon * Licensed under the Apache License, Version 2.0 (the "License");
5e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon * you may not use this file except in compliance with the License.
6e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon * You may obtain a copy of the License at
7e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon *
8e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon *     http://www.apache.org/licenses/LICENSE-2.0
9e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon *
10e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon * Unless required by applicable law or agreed to in writing, software
11e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon * distributed under the License is distributed on an "AS IS" BASIS,
12e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon * See the License for the specific language governing permissions and
14e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon * limitations under the License.
15e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon */
16e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon
17ef9f6f957d897ea0ed82114185b8fa3fefd4917bTyler Gunnpackage android.telecom;
18e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon
19e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordonimport android.net.Uri;
206b7f955c2d9b231660b8c54f8ef8e8e6ad802625Santos Cordonimport android.os.Bundle;
21e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordonimport android.os.Parcel;
22e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordonimport android.os.Parcelable;
23e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon
24ef9f6f957d897ea0ed82114185b8fa3fefd4917bTyler Gunnimport com.android.internal.telecom.IVideoProvider;
25e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon
26b8e85c74e5910a461078704048d67f82b216508cIhab Awadimport java.util.ArrayList;
27b8e85c74e5910a461078704048d67f82b216508cIhab Awadimport java.util.List;
28b8e85c74e5910a461078704048d67f82b216508cIhab Awad
29e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon/**
30ef9f6f957d897ea0ed82114185b8fa3fefd4917bTyler Gunn * Information about a connection that is used between Telecom and the ConnectionService.
31ef9f6f957d897ea0ed82114185b8fa3fefd4917bTyler Gunn * This is used to send initial Connection information to Telecom when the connection is
32e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon * first created.
33e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon * @hide
34e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon */
35e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordonpublic final class ParcelableConnection implements Parcelable {
36b8e85c74e5910a461078704048d67f82b216508cIhab Awad    private final PhoneAccountHandle mPhoneAccount;
37b8e85c74e5910a461078704048d67f82b216508cIhab Awad    private final int mState;
385c9c86ec0f95d1f5e1aca212967f508fc736b895Ihab Awad    private final int mConnectionCapabilities;
39720c664401081ca00e56c7eef12641ae792da530Tyler Gunn    private final int mConnectionProperties;
404e22d6dc453de8e15e19e842c189522796c1cf80Christine Hallstrom    private final int mSupportedAudioRoutes;
41100e293fa8021caed956597daa4e01cb19be1c33Andrew Lee    private final Uri mAddress;
42100e293fa8021caed956597daa4e01cb19be1c33Andrew Lee    private final int mAddressPresentation;
43b8e85c74e5910a461078704048d67f82b216508cIhab Awad    private final String mCallerDisplayName;
44b8e85c74e5910a461078704048d67f82b216508cIhab Awad    private final int mCallerDisplayNamePresentation;
45b8e85c74e5910a461078704048d67f82b216508cIhab Awad    private final IVideoProvider mVideoProvider;
46b8e85c74e5910a461078704048d67f82b216508cIhab Awad    private final int mVideoState;
47100e293fa8021caed956597daa4e01cb19be1c33Andrew Lee    private final boolean mRingbackRequested;
48100e293fa8021caed956597daa4e01cb19be1c33Andrew Lee    private final boolean mIsVoipAudioMode;
49e927ec02f5bbad925d5f28cbe370a04aa118f370Roshan Pius    private final long mConnectTimeMillis;
50b8e85c74e5910a461078704048d67f82b216508cIhab Awad    private final StatusHints mStatusHints;
517f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee    private final DisconnectCause mDisconnectCause;
52b8e85c74e5910a461078704048d67f82b216508cIhab Awad    private final List<String> mConferenceableConnectionIds;
536b7f955c2d9b231660b8c54f8ef8e8e6ad802625Santos Cordon    private final Bundle mExtras;
5478da7816da1acdb1cce3f4b5943d105c3383debeTyler Gunn    private String mParentCallId;
5578da7816da1acdb1cce3f4b5943d105c3383debeTyler Gunn
5678da7816da1acdb1cce3f4b5943d105c3383debeTyler Gunn    /** @hide */
5778da7816da1acdb1cce3f4b5943d105c3383debeTyler Gunn    public ParcelableConnection(
5878da7816da1acdb1cce3f4b5943d105c3383debeTyler Gunn            PhoneAccountHandle phoneAccount,
5978da7816da1acdb1cce3f4b5943d105c3383debeTyler Gunn            int state,
6078da7816da1acdb1cce3f4b5943d105c3383debeTyler Gunn            int capabilities,
6178da7816da1acdb1cce3f4b5943d105c3383debeTyler Gunn            int properties,
6278da7816da1acdb1cce3f4b5943d105c3383debeTyler Gunn            int supportedAudioRoutes,
6378da7816da1acdb1cce3f4b5943d105c3383debeTyler Gunn            Uri address,
6478da7816da1acdb1cce3f4b5943d105c3383debeTyler Gunn            int addressPresentation,
6578da7816da1acdb1cce3f4b5943d105c3383debeTyler Gunn            String callerDisplayName,
6678da7816da1acdb1cce3f4b5943d105c3383debeTyler Gunn            int callerDisplayNamePresentation,
6778da7816da1acdb1cce3f4b5943d105c3383debeTyler Gunn            IVideoProvider videoProvider,
6878da7816da1acdb1cce3f4b5943d105c3383debeTyler Gunn            int videoState,
6978da7816da1acdb1cce3f4b5943d105c3383debeTyler Gunn            boolean ringbackRequested,
7078da7816da1acdb1cce3f4b5943d105c3383debeTyler Gunn            boolean isVoipAudioMode,
7178da7816da1acdb1cce3f4b5943d105c3383debeTyler Gunn            long connectTimeMillis,
7278da7816da1acdb1cce3f4b5943d105c3383debeTyler Gunn            StatusHints statusHints,
7378da7816da1acdb1cce3f4b5943d105c3383debeTyler Gunn            DisconnectCause disconnectCause,
7478da7816da1acdb1cce3f4b5943d105c3383debeTyler Gunn            List<String> conferenceableConnectionIds,
7578da7816da1acdb1cce3f4b5943d105c3383debeTyler Gunn            Bundle extras,
7678da7816da1acdb1cce3f4b5943d105c3383debeTyler Gunn            String parentCallId) {
7778da7816da1acdb1cce3f4b5943d105c3383debeTyler Gunn        this(phoneAccount, state, capabilities, properties, supportedAudioRoutes, address,
7878da7816da1acdb1cce3f4b5943d105c3383debeTyler Gunn                addressPresentation, callerDisplayName, callerDisplayNamePresentation,
7978da7816da1acdb1cce3f4b5943d105c3383debeTyler Gunn                videoProvider, videoState, ringbackRequested, isVoipAudioMode, connectTimeMillis,
8078da7816da1acdb1cce3f4b5943d105c3383debeTyler Gunn                statusHints, disconnectCause, conferenceableConnectionIds, extras);
8178da7816da1acdb1cce3f4b5943d105c3383debeTyler Gunn        mParentCallId = parentCallId;
8278da7816da1acdb1cce3f4b5943d105c3383debeTyler Gunn    }
83e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon
84e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon    /** @hide */
85e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon    public ParcelableConnection(
86e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon            PhoneAccountHandle phoneAccount,
87e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon            int state,
88e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon            int capabilities,
89720c664401081ca00e56c7eef12641ae792da530Tyler Gunn            int properties,
904e22d6dc453de8e15e19e842c189522796c1cf80Christine Hallstrom            int supportedAudioRoutes,
91100e293fa8021caed956597daa4e01cb19be1c33Andrew Lee            Uri address,
92100e293fa8021caed956597daa4e01cb19be1c33Andrew Lee            int addressPresentation,
93e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon            String callerDisplayName,
94e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon            int callerDisplayNamePresentation,
95b19a0bcdd8a5020c61a0d697f600fdc943c86f59Ihab Awad            IVideoProvider videoProvider,
968b9d3ca94189b183a2380ba5b289d9a06eb0493eSailesh Nepal            int videoState,
97100e293fa8021caed956597daa4e01cb19be1c33Andrew Lee            boolean ringbackRequested,
98100e293fa8021caed956597daa4e01cb19be1c33Andrew Lee            boolean isVoipAudioMode,
99e927ec02f5bbad925d5f28cbe370a04aa118f370Roshan Pius            long connectTimeMillis,
1006107bab041fb7d851fbf865b7310d294aae970c8Ihab Awad            StatusHints statusHints,
1017f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee            DisconnectCause disconnectCause,
1026b7f955c2d9b231660b8c54f8ef8e8e6ad802625Santos Cordon            List<String> conferenceableConnectionIds,
1036b7f955c2d9b231660b8c54f8ef8e8e6ad802625Santos Cordon            Bundle extras) {
104e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon        mPhoneAccount = phoneAccount;
105e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon        mState = state;
1065c9c86ec0f95d1f5e1aca212967f508fc736b895Ihab Awad        mConnectionCapabilities = capabilities;
107720c664401081ca00e56c7eef12641ae792da530Tyler Gunn        mConnectionProperties = properties;
1084e22d6dc453de8e15e19e842c189522796c1cf80Christine Hallstrom        mSupportedAudioRoutes = supportedAudioRoutes;
109100e293fa8021caed956597daa4e01cb19be1c33Andrew Lee        mAddress = address;
110100e293fa8021caed956597daa4e01cb19be1c33Andrew Lee        mAddressPresentation = addressPresentation;
111e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon        mCallerDisplayName = callerDisplayName;
112e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon        mCallerDisplayNamePresentation = callerDisplayNamePresentation;
113b19a0bcdd8a5020c61a0d697f600fdc943c86f59Ihab Awad        mVideoProvider = videoProvider;
114e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon        mVideoState = videoState;
115100e293fa8021caed956597daa4e01cb19be1c33Andrew Lee        mRingbackRequested = ringbackRequested;
116100e293fa8021caed956597daa4e01cb19be1c33Andrew Lee        mIsVoipAudioMode = isVoipAudioMode;
117e927ec02f5bbad925d5f28cbe370a04aa118f370Roshan Pius        mConnectTimeMillis = connectTimeMillis;
1188b9d3ca94189b183a2380ba5b289d9a06eb0493eSailesh Nepal        mStatusHints = statusHints;
119cf7020b7e84c1f5190db7167d70cb0675cd3332fSailesh Nepal        mDisconnectCause = disconnectCause;
1206b7f955c2d9b231660b8c54f8ef8e8e6ad802625Santos Cordon        mConferenceableConnectionIds = conferenceableConnectionIds;
1216b7f955c2d9b231660b8c54f8ef8e8e6ad802625Santos Cordon        mExtras = extras;
12278da7816da1acdb1cce3f4b5943d105c3383debeTyler Gunn        mParentCallId = null;
123e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon    }
124e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon
125e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon    public PhoneAccountHandle getPhoneAccount() {
126e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon        return mPhoneAccount;
127e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon    }
128e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon
129e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon    public int getState() {
130e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon        return mState;
131e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon    }
132e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon
133720c664401081ca00e56c7eef12641ae792da530Tyler Gunn    /**
134720c664401081ca00e56c7eef12641ae792da530Tyler Gunn     * Returns the current connection capabilities bit-mask.  Connection capabilities are defined as
135720c664401081ca00e56c7eef12641ae792da530Tyler Gunn     * {@code CAPABILITY_*} constants in {@link Connection}.
136720c664401081ca00e56c7eef12641ae792da530Tyler Gunn     *
137720c664401081ca00e56c7eef12641ae792da530Tyler Gunn     * @return Bit-mask containing capabilities of the connection.
138720c664401081ca00e56c7eef12641ae792da530Tyler Gunn     */
1395c9c86ec0f95d1f5e1aca212967f508fc736b895Ihab Awad    public int getConnectionCapabilities() {
1405c9c86ec0f95d1f5e1aca212967f508fc736b895Ihab Awad        return mConnectionCapabilities;
141e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon    }
142e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon
143720c664401081ca00e56c7eef12641ae792da530Tyler Gunn    /**
144720c664401081ca00e56c7eef12641ae792da530Tyler Gunn     * Returns the current connection properties bit-mask.  Connection properties are defined as
145720c664401081ca00e56c7eef12641ae792da530Tyler Gunn     * {@code PROPERTY_*} constants in {@link Connection}.
146720c664401081ca00e56c7eef12641ae792da530Tyler Gunn     *
147720c664401081ca00e56c7eef12641ae792da530Tyler Gunn     * @return Bit-mask containing properties of the connection.
148720c664401081ca00e56c7eef12641ae792da530Tyler Gunn     */
149720c664401081ca00e56c7eef12641ae792da530Tyler Gunn    public int getConnectionProperties() {
150720c664401081ca00e56c7eef12641ae792da530Tyler Gunn        return mConnectionProperties;
151720c664401081ca00e56c7eef12641ae792da530Tyler Gunn    }
152720c664401081ca00e56c7eef12641ae792da530Tyler Gunn
1534e22d6dc453de8e15e19e842c189522796c1cf80Christine Hallstrom    public int getSupportedAudioRoutes() {
1544e22d6dc453de8e15e19e842c189522796c1cf80Christine Hallstrom        return mSupportedAudioRoutes;
1554e22d6dc453de8e15e19e842c189522796c1cf80Christine Hallstrom    }
1564e22d6dc453de8e15e19e842c189522796c1cf80Christine Hallstrom
157e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon    public Uri getHandle() {
158100e293fa8021caed956597daa4e01cb19be1c33Andrew Lee        return mAddress;
159e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon    }
160e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon
161e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon    public int getHandlePresentation() {
162100e293fa8021caed956597daa4e01cb19be1c33Andrew Lee        return mAddressPresentation;
163e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon    }
164e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon
165e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon    public String getCallerDisplayName() {
166e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon        return mCallerDisplayName;
167e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon    }
168e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon
169e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon    public int getCallerDisplayNamePresentation() {
170e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon        return mCallerDisplayNamePresentation;
171e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon    }
172e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon
173b19a0bcdd8a5020c61a0d697f600fdc943c86f59Ihab Awad    public IVideoProvider getVideoProvider() {
174b19a0bcdd8a5020c61a0d697f600fdc943c86f59Ihab Awad        return mVideoProvider;
175e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon    }
176e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon
177e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon    public int getVideoState() {
178e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon        return mVideoState;
179e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon    }
180e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon
181100e293fa8021caed956597daa4e01cb19be1c33Andrew Lee    public boolean isRingbackRequested() {
182100e293fa8021caed956597daa4e01cb19be1c33Andrew Lee        return mRingbackRequested;
1838b9d3ca94189b183a2380ba5b289d9a06eb0493eSailesh Nepal    }
1848b9d3ca94189b183a2380ba5b289d9a06eb0493eSailesh Nepal
185100e293fa8021caed956597daa4e01cb19be1c33Andrew Lee    public boolean getIsVoipAudioMode() {
186100e293fa8021caed956597daa4e01cb19be1c33Andrew Lee        return mIsVoipAudioMode;
1878b9d3ca94189b183a2380ba5b289d9a06eb0493eSailesh Nepal    }
1888b9d3ca94189b183a2380ba5b289d9a06eb0493eSailesh Nepal
189e927ec02f5bbad925d5f28cbe370a04aa118f370Roshan Pius    public long getConnectTimeMillis() {
190e927ec02f5bbad925d5f28cbe370a04aa118f370Roshan Pius        return mConnectTimeMillis;
191e927ec02f5bbad925d5f28cbe370a04aa118f370Roshan Pius    }
192e927ec02f5bbad925d5f28cbe370a04aa118f370Roshan Pius
1938b9d3ca94189b183a2380ba5b289d9a06eb0493eSailesh Nepal    public final StatusHints getStatusHints() {
1948b9d3ca94189b183a2380ba5b289d9a06eb0493eSailesh Nepal        return mStatusHints;
1958b9d3ca94189b183a2380ba5b289d9a06eb0493eSailesh Nepal    }
1968b9d3ca94189b183a2380ba5b289d9a06eb0493eSailesh Nepal
1977f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee    public final DisconnectCause getDisconnectCause() {
198cf7020b7e84c1f5190db7167d70cb0675cd3332fSailesh Nepal        return mDisconnectCause;
1996107bab041fb7d851fbf865b7310d294aae970c8Ihab Awad    }
2006107bab041fb7d851fbf865b7310d294aae970c8Ihab Awad
201b8e85c74e5910a461078704048d67f82b216508cIhab Awad    public final List<String> getConferenceableConnectionIds() {
202b8e85c74e5910a461078704048d67f82b216508cIhab Awad        return mConferenceableConnectionIds;
203b8e85c74e5910a461078704048d67f82b216508cIhab Awad    }
204b8e85c74e5910a461078704048d67f82b216508cIhab Awad
2056b7f955c2d9b231660b8c54f8ef8e8e6ad802625Santos Cordon    public final Bundle getExtras() {
2066b7f955c2d9b231660b8c54f8ef8e8e6ad802625Santos Cordon        return mExtras;
2076b7f955c2d9b231660b8c54f8ef8e8e6ad802625Santos Cordon    }
2086b7f955c2d9b231660b8c54f8ef8e8e6ad802625Santos Cordon
20978da7816da1acdb1cce3f4b5943d105c3383debeTyler Gunn    public final String getParentCallId() {
21078da7816da1acdb1cce3f4b5943d105c3383debeTyler Gunn        return mParentCallId;
21178da7816da1acdb1cce3f4b5943d105c3383debeTyler Gunn    }
21278da7816da1acdb1cce3f4b5943d105c3383debeTyler Gunn
2137c7bc7f6917484250974c5da00af9ef756844b0aSantos Cordon    @Override
2147c7bc7f6917484250974c5da00af9ef756844b0aSantos Cordon    public String toString() {
2157c7bc7f6917484250974c5da00af9ef756844b0aSantos Cordon        return new StringBuilder()
2167c7bc7f6917484250974c5da00af9ef756844b0aSantos Cordon                .append("ParcelableConnection [act:")
2177c7bc7f6917484250974c5da00af9ef756844b0aSantos Cordon                .append(mPhoneAccount)
2186b7f955c2d9b231660b8c54f8ef8e8e6ad802625Santos Cordon                .append("], state:")
2197c7bc7f6917484250974c5da00af9ef756844b0aSantos Cordon                .append(mState)
2207c7bc7f6917484250974c5da00af9ef756844b0aSantos Cordon                .append(", capabilities:")
2215c9c86ec0f95d1f5e1aca212967f508fc736b895Ihab Awad                .append(Connection.capabilitiesToString(mConnectionCapabilities))
222720c664401081ca00e56c7eef12641ae792da530Tyler Gunn                .append(", properties:")
223720c664401081ca00e56c7eef12641ae792da530Tyler Gunn                .append(Connection.propertiesToString(mConnectionProperties))
2246b7f955c2d9b231660b8c54f8ef8e8e6ad802625Santos Cordon                .append(", extras:")
2256b7f955c2d9b231660b8c54f8ef8e8e6ad802625Santos Cordon                .append(mExtras)
22678da7816da1acdb1cce3f4b5943d105c3383debeTyler Gunn                .append(", parent:")
22778da7816da1acdb1cce3f4b5943d105c3383debeTyler Gunn                .append(mParentCallId)
2287c7bc7f6917484250974c5da00af9ef756844b0aSantos Cordon                .toString();
2297c7bc7f6917484250974c5da00af9ef756844b0aSantos Cordon    }
2307c7bc7f6917484250974c5da00af9ef756844b0aSantos Cordon
231e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon    public static final Parcelable.Creator<ParcelableConnection> CREATOR =
232e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon            new Parcelable.Creator<ParcelableConnection> () {
233e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon        @Override
234e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon        public ParcelableConnection createFromParcel(Parcel source) {
235e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon            ClassLoader classLoader = ParcelableConnection.class.getClassLoader();
236e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon
237e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon            PhoneAccountHandle phoneAccount = source.readParcelable(classLoader);
238e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon            int state = source.readInt();
239e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon            int capabilities = source.readInt();
240100e293fa8021caed956597daa4e01cb19be1c33Andrew Lee            Uri address = source.readParcelable(classLoader);
241100e293fa8021caed956597daa4e01cb19be1c33Andrew Lee            int addressPresentation = source.readInt();
242e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon            String callerDisplayName = source.readString();
243e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon            int callerDisplayNamePresentation = source.readInt();
244b19a0bcdd8a5020c61a0d697f600fdc943c86f59Ihab Awad            IVideoProvider videoCallProvider =
245b19a0bcdd8a5020c61a0d697f600fdc943c86f59Ihab Awad                    IVideoProvider.Stub.asInterface(source.readStrongBinder());
246e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon            int videoState = source.readInt();
247100e293fa8021caed956597daa4e01cb19be1c33Andrew Lee            boolean ringbackRequested = source.readByte() == 1;
2488b9d3ca94189b183a2380ba5b289d9a06eb0493eSailesh Nepal            boolean audioModeIsVoip = source.readByte() == 1;
249e927ec02f5bbad925d5f28cbe370a04aa118f370Roshan Pius            long connectTimeMillis = source.readLong();
2508b9d3ca94189b183a2380ba5b289d9a06eb0493eSailesh Nepal            StatusHints statusHints = source.readParcelable(classLoader);
2517f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee            DisconnectCause disconnectCause = source.readParcelable(classLoader);
252b8e85c74e5910a461078704048d67f82b216508cIhab Awad            List<String> conferenceableConnectionIds = new ArrayList<>();
253b8e85c74e5910a461078704048d67f82b216508cIhab Awad            source.readStringList(conferenceableConnectionIds);
254f0ec2e005083808bf68f9f0049b801276c290ae2Jeff Sharkey            Bundle extras = Bundle.setDefusable(source.readBundle(classLoader), true);
255720c664401081ca00e56c7eef12641ae792da530Tyler Gunn            int properties = source.readInt();
2564e22d6dc453de8e15e19e842c189522796c1cf80Christine Hallstrom            int supportedAudioRoutes = source.readInt();
25778da7816da1acdb1cce3f4b5943d105c3383debeTyler Gunn            String parentCallId = source.readString();
258e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon
259e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon            return new ParcelableConnection(
260e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon                    phoneAccount,
261e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon                    state,
262e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon                    capabilities,
263720c664401081ca00e56c7eef12641ae792da530Tyler Gunn                    properties,
2644e22d6dc453de8e15e19e842c189522796c1cf80Christine Hallstrom                    supportedAudioRoutes,
265100e293fa8021caed956597daa4e01cb19be1c33Andrew Lee                    address,
266100e293fa8021caed956597daa4e01cb19be1c33Andrew Lee                    addressPresentation,
267e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon                    callerDisplayName,
268e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon                    callerDisplayNamePresentation,
26950aca23bd7f51a3cf32a1f7e32238cc1e26ca1a0Andrew Lee                    videoCallProvider,
2708b9d3ca94189b183a2380ba5b289d9a06eb0493eSailesh Nepal                    videoState,
271100e293fa8021caed956597daa4e01cb19be1c33Andrew Lee                    ringbackRequested,
2728b9d3ca94189b183a2380ba5b289d9a06eb0493eSailesh Nepal                    audioModeIsVoip,
273e927ec02f5bbad925d5f28cbe370a04aa118f370Roshan Pius                    connectTimeMillis,
2746107bab041fb7d851fbf865b7310d294aae970c8Ihab Awad                    statusHints,
2757f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee                    disconnectCause,
2766b7f955c2d9b231660b8c54f8ef8e8e6ad802625Santos Cordon                    conferenceableConnectionIds,
27778da7816da1acdb1cce3f4b5943d105c3383debeTyler Gunn                    extras,
27878da7816da1acdb1cce3f4b5943d105c3383debeTyler Gunn                    parentCallId);
279e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon        }
280e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon
281e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon        @Override
282e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon        public ParcelableConnection[] newArray(int size) {
283e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon            return new ParcelableConnection[size];
284e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon        }
285e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon    };
286e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon
287e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon    /** {@inheritDoc} */
288e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon    @Override
289e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon    public int describeContents() {
290e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon        return 0;
291e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon    }
292e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon
293e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon    /** Writes ParcelableConnection object into a Parcel. */
294e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon    @Override
295e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon    public void writeToParcel(Parcel destination, int flags) {
296e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon        destination.writeParcelable(mPhoneAccount, 0);
297e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon        destination.writeInt(mState);
2985c9c86ec0f95d1f5e1aca212967f508fc736b895Ihab Awad        destination.writeInt(mConnectionCapabilities);
299100e293fa8021caed956597daa4e01cb19be1c33Andrew Lee        destination.writeParcelable(mAddress, 0);
300100e293fa8021caed956597daa4e01cb19be1c33Andrew Lee        destination.writeInt(mAddressPresentation);
301e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon        destination.writeString(mCallerDisplayName);
302e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon        destination.writeInt(mCallerDisplayNamePresentation);
303e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon        destination.writeStrongBinder(
304b19a0bcdd8a5020c61a0d697f600fdc943c86f59Ihab Awad                mVideoProvider != null ? mVideoProvider.asBinder() : null);
305e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon        destination.writeInt(mVideoState);
306100e293fa8021caed956597daa4e01cb19be1c33Andrew Lee        destination.writeByte((byte) (mRingbackRequested ? 1 : 0));
307100e293fa8021caed956597daa4e01cb19be1c33Andrew Lee        destination.writeByte((byte) (mIsVoipAudioMode ? 1 : 0));
308e927ec02f5bbad925d5f28cbe370a04aa118f370Roshan Pius        destination.writeLong(mConnectTimeMillis);
3098b9d3ca94189b183a2380ba5b289d9a06eb0493eSailesh Nepal        destination.writeParcelable(mStatusHints, 0);
3107f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee        destination.writeParcelable(mDisconnectCause, 0);
311b8e85c74e5910a461078704048d67f82b216508cIhab Awad        destination.writeStringList(mConferenceableConnectionIds);
3126b7f955c2d9b231660b8c54f8ef8e8e6ad802625Santos Cordon        destination.writeBundle(mExtras);
313720c664401081ca00e56c7eef12641ae792da530Tyler Gunn        destination.writeInt(mConnectionProperties);
3144e22d6dc453de8e15e19e842c189522796c1cf80Christine Hallstrom        destination.writeInt(mSupportedAudioRoutes);
31578da7816da1acdb1cce3f4b5943d105c3383debeTyler Gunn        destination.writeString(mParentCallId);
316e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon    }
317e8dc4bef00e391defbdee0264b2ed955b1117841Santos Cordon}
318