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