1f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati/*
2f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * Copyright (C) 2018 The Android Open Source Project
3f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati *
4f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati * Licensed under the Apache License, Version 2.0 (the "License");
5f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati * you may not use this file except in compliance with the License.
6f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati * You may obtain a copy of the License at
7f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati *
8f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati *      http://www.apache.org/licenses/LICENSE-2.0
9f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati *
10f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati * Unless required by applicable law or agreed to in writing, software
11f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati * distributed under the License is distributed on an "AS IS" BASIS,
12f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati * See the License for the specific language governing permissions and
14f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger * limitations under the License
15f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati */
16f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati
17f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebingerpackage android.telephony.ims;
18f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati
19f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebingerimport android.annotation.SystemApi;
20f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapatiimport android.net.Uri;
21f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapatiimport android.os.Parcel;
22f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapatiimport android.os.Parcelable;
23c96b5e087382a2a530e9c8cf8f2e1f8dbfc439c5Tyler Gunnimport android.telecom.Log;
24f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapatiimport android.telephony.Rlog;
25f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati
26f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati/*
27f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati * This file contains all the api's through which
28f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati * information received in Dialog Event Package can be
29f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati * queried
30f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati */
31f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati
32f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati/**
3365314501f43a55b987852b2442061196978429e6Anju Mathapati * Parcelable object to handle MultiEndpoint Dialog Information
34f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati * @hide
35f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati */
36f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger@SystemApi
37f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebingerpublic final class ImsExternalCallState implements Parcelable {
38f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati
39f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati    private static final String TAG = "ImsExternalCallState";
40f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati
41f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati    // Dialog States
42f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati    public static final int CALL_STATE_CONFIRMED = 1;
43f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati    public static final int CALL_STATE_TERMINATED = 2;
44f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati    // Dialog Id
4565314501f43a55b987852b2442061196978429e6Anju Mathapati    private int mCallId;
46f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati    // Number
4765314501f43a55b987852b2442061196978429e6Anju Mathapati    private Uri mAddress;
4865314501f43a55b987852b2442061196978429e6Anju Mathapati    private boolean mIsPullable;
49f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati    // CALL_STATE_CONFIRMED / CALL_STATE_TERMINATED
5065314501f43a55b987852b2442061196978429e6Anju Mathapati    private int mCallState;
51f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati    // ImsCallProfile#CALL_TYPE_*
5265314501f43a55b987852b2442061196978429e6Anju Mathapati    private int mCallType;
5365314501f43a55b987852b2442061196978429e6Anju Mathapati    private boolean mIsHeld;
54f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati
55f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger    /** @hide */
56f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati    public ImsExternalCallState() {
57f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati    }
58f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati
59f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger    /** @hide */
6065314501f43a55b987852b2442061196978429e6Anju Mathapati    public ImsExternalCallState(int callId, Uri address, boolean isPullable, int callState,
6165314501f43a55b987852b2442061196978429e6Anju Mathapati            int callType, boolean isCallheld) {
6265314501f43a55b987852b2442061196978429e6Anju Mathapati        mCallId = callId;
6365314501f43a55b987852b2442061196978429e6Anju Mathapati        mAddress = address;
6465314501f43a55b987852b2442061196978429e6Anju Mathapati        mIsPullable = isPullable;
6565314501f43a55b987852b2442061196978429e6Anju Mathapati        mCallState = callState;
6665314501f43a55b987852b2442061196978429e6Anju Mathapati        mCallType = callType;
6765314501f43a55b987852b2442061196978429e6Anju Mathapati        mIsHeld = isCallheld;
6865314501f43a55b987852b2442061196978429e6Anju Mathapati        Rlog.d(TAG, "ImsExternalCallState = " + this);
6965314501f43a55b987852b2442061196978429e6Anju Mathapati    }
7065314501f43a55b987852b2442061196978429e6Anju Mathapati
71f8c3cd8b3530a27f7534c32bac84c464ad5f66aeBrad Ebinger    /** @hide */
72f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati    public ImsExternalCallState(Parcel in) {
73f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati        mCallId = in.readInt();
74f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati        ClassLoader classLoader = ImsExternalCallState.class.getClassLoader();
75f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati        mAddress = in.readParcelable(classLoader);
76f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati        mIsPullable = (in.readInt() != 0);
77f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati        mCallState = in.readInt();
78f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati        mCallType = in.readInt();
79f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati        mIsHeld = (in.readInt() != 0);
8065314501f43a55b987852b2442061196978429e6Anju Mathapati        Rlog.d(TAG, "ImsExternalCallState const = " + this);
81f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati    }
82f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati
83f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati    @Override
84f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati    public int describeContents() {
85f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati        return 0;
86f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati    }
87f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati
88f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati    @Override
89f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati    public void writeToParcel(Parcel out, int flags) {
90f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati        out.writeInt(mCallId);
91f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati        out.writeParcelable(mAddress, 0);
92f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati        out.writeInt(mIsPullable ? 1 : 0);
93f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati        out.writeInt(mCallState);
94f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati        out.writeInt(mCallType);
95f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati        out.writeInt(mIsHeld ? 1 : 0);
9665314501f43a55b987852b2442061196978429e6Anju Mathapati        Rlog.d(TAG, "ImsExternalCallState writeToParcel = " + out.toString());
97f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati    }
98f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati
99f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati    public static final Parcelable.Creator<ImsExternalCallState> CREATOR =
100f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati            new Parcelable.Creator<ImsExternalCallState>() {
101f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati        @Override
102f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati        public ImsExternalCallState createFromParcel(Parcel in) {
103f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati            return new ImsExternalCallState(in);
104f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati        }
105f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati
106f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati        @Override
107f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati        public ImsExternalCallState[] newArray(int size) {
108f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati            return new ImsExternalCallState[size];
109f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati        }
110f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati    };
111f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati
112f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati    public int getCallId() {
113f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati        return mCallId;
114f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati    }
115f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati
116f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati    public Uri getAddress() {
117f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati        return mAddress;
118f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati    }
119f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati
120f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati    public boolean isCallPullable() {
121f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati        return mIsPullable;
122f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati    }
123f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati
124f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati    public int getCallState() {
125f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati        return mCallState;
126f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati    }
127f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati
128f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati    public int getCallType() {
129f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati        return mCallType;
130f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati    }
131f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati
132f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati    public boolean isCallHeld() {
133f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati        return mIsHeld;
134f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati    }
135f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati
136f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati    @Override
137f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati    public String toString() {
138f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati        return "ImsExternalCallState { mCallId = " + mCallId +
139c96b5e087382a2a530e9c8cf8f2e1f8dbfc439c5Tyler Gunn                ", mAddress = " + Log.pii(mAddress) +
140f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati                ", mIsPullable = " + mIsPullable +
141f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati                ", mCallState = " + mCallState +
142f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati                ", mCallType = " + mCallType +
143f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati                ", mIsHeld = " + mIsHeld + "}";
144f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati    }
145f604fc33c699b9f91315588ea4d6c6cd3b09a372Anju Mathapati}
146