1c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela/*
2c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela * Copyright (C) 2014 The Android Open Source Project
3c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela *
4c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela * Licensed under the Apache License, Version 2.0 (the "License");
5c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela * you may not use this file except in compliance with the License.
6c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela * You may obtain a copy of the License at
7c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela *
8c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela *      http://www.apache.org/licenses/LICENSE-2.0
9c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela *
10c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela * Unless required by applicable law or agreed to in writing, software
11c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela * distributed under the License is distributed on an "AS IS" BASIS,
12c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela * See the License for the specific language governing permissions and
14c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela * limitations under the License.
15c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela */
16c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela
17c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuelapackage android.telephony;
18c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela
19c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuelaimport android.os.Parcel;
20c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuelaimport android.os.Parcelable;
21c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuelaimport android.telephony.TelephonyManager;
22c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuelaimport android.net.LinkProperties;
23c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela
24c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela/**
25c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela * Contains precise data connection state.
26c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela *
27c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela * The following data connection information is included in returned PreciseDataConnectionState:
28c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela *
29c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela * <ul>
30c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela *   <li>Data connection state.
31c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela *   <li>Network type of the connection.
32c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela *   <li>APN type.
33c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela *   <li>APN.
34c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela *   <li>Data connection change reason.
35c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela *   <li>The properties of the network link.
36c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela *   <li>Data connection fail cause.
37c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela * </ul>
38c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela *
39c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela * @hide
40c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela */
41c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuelapublic class PreciseDataConnectionState implements Parcelable {
42c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela
43c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    private int mState = TelephonyManager.DATA_UNKNOWN;
44c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    private int mNetworkType = TelephonyManager.NETWORK_TYPE_UNKNOWN;
45c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    private String mAPNType = "";
46c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    private String mAPN = "";
47c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    private String mReason = "";
48c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    private LinkProperties mLinkProperties = null;
49c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    private String mFailCause = "";
50c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela
51c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    /**
52c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * Constructor
53c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     *
54c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @hide
55c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     */
56c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    public PreciseDataConnectionState(int state, int networkType,
57c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela            String apnType, String apn, String reason,
58c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela            LinkProperties linkProperties, String failCause) {
59c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        mState = state;
60c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        mNetworkType = networkType;
61c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        mAPNType = apnType;
62c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        mAPN = apn;
63c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        mReason = reason;
64c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        mLinkProperties = linkProperties;
65c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        mFailCause = failCause;
66c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    }
67c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela
68c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    /**
69c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * Empty Constructor
70c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     *
71c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @hide
72c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     */
73c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    public PreciseDataConnectionState() {
74c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    }
75c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela
76c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    /**
77c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * Construct a PreciseDataConnectionState object from the given parcel.
78c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     */
79c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    private PreciseDataConnectionState(Parcel in) {
80c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        mState = in.readInt();
81c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        mNetworkType = in.readInt();
82c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        mAPNType = in.readString();
83c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        mAPN = in.readString();
84c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        mReason = in.readString();
85c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        mLinkProperties = (LinkProperties)in.readParcelable(null);
86c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        mFailCause = in.readString();
87c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    }
88c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela
89c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    /**
90c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * Get data connection state
91c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     *
92c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see TelephonyManager#DATA_UNKNOWN
93c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see TelephonyManager#DATA_DISCONNECTED
94c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see TelephonyManager#DATA_CONNECTING
95c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see TelephonyManager#DATA_CONNECTED
96c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see TelephonyManager#DATA_SUSPENDED
97c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     */
98c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    public int getDataConnectionState() {
99c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        return mState;
100c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    }
101c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela
102c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    /**
103c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * Get data connection network type
104c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     *
105c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see TelephonyManager#NETWORK_TYPE_UNKNOWN
106c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see TelephonyManager#NETWORK_TYPE_GPRS
107c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see TelephonyManager#NETWORK_TYPE_EDGE
108c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see TelephonyManager#NETWORK_TYPE_UMTS
109c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see TelephonyManager#NETWORK_TYPE_CDMA
110c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see TelephonyManager#NETWORK_TYPE_EVDO_0
111c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see TelephonyManager#NETWORK_TYPE_EVDO_A
112c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see TelephonyManager#NETWORK_TYPE_1xRTT
113c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see TelephonyManager#NETWORK_TYPE_HSDPA
114c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see TelephonyManager#NETWORK_TYPE_HSUPA
115c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see TelephonyManager#NETWORK_TYPE_HSPA
116c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see TelephonyManager#NETWORK_TYPE_IDEN
117c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see TelephonyManager#NETWORK_TYPE_EVDO_B
118c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see TelephonyManager#NETWORK_TYPE_LTE
119c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see TelephonyManager#NETWORK_TYPE_EHRPD
120c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * @see TelephonyManager#NETWORK_TYPE_HSPAP
121c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     */
122c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    public int getDataConnectionNetworkType() {
123c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        return mNetworkType;
124c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    }
125c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela
126c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    /**
127c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * Get data connection APN type
128c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     */
129c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    public String getDataConnectionAPNType() {
130c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        return mAPNType;
131c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    }
132c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela
133c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    /**
134c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * Get data connection APN.
135c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     */
136c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    public String getDataConnectionAPN() {
137c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        return mAPN;
138c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    }
139c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela
140c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    /**
141c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * Get data connection change reason.
142c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     */
143c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    public String getDataConnectionChangeReason() {
144c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        return mReason;
145c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    }
146c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela
147c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    /**
148c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * Get the properties of the network link.
149c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     */
150c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    public LinkProperties getDataConnectionLinkProperties() {
151c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        return mLinkProperties;
152c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    }
153c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela
154c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    /**
155c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     * Get data connection fail cause, in case there was a failure.
156c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela     */
157c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    public String getDataConnectionFailCause() {
158c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        return mFailCause;
159c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    }
160c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela
161c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    @Override
162c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    public int describeContents() {
163c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        return 0;
164c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    }
165c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela
166c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    @Override
167c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    public void writeToParcel(Parcel out, int flags) {
168c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        out.writeInt(mState);
169c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        out.writeInt(mNetworkType);
170c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        out.writeString(mAPNType);
171c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        out.writeString(mAPN);
172c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        out.writeString(mReason);
173c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        out.writeParcelable(mLinkProperties, flags);
174c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        out.writeString(mFailCause);
175c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    }
176c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela
177c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    public static final Parcelable.Creator<PreciseDataConnectionState> CREATOR
178c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela            = new Parcelable.Creator<PreciseDataConnectionState>() {
179c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela
180c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        public PreciseDataConnectionState createFromParcel(Parcel in) {
181c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela            return new PreciseDataConnectionState(in);
182c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        }
183c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela
184c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        public PreciseDataConnectionState[] newArray(int size) {
185c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela            return new PreciseDataConnectionState[size];
186c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        }
187c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    };
188c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela
189c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    @Override
190c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    public int hashCode() {
191c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        final int prime = 31;
192c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        int result = 1;
193c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        result = prime * result + mState;
194c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        result = prime * result + mNetworkType;
195c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        result = prime * result + ((mAPNType == null) ? 0 : mAPNType.hashCode());
196c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        result = prime * result + ((mAPN == null) ? 0 : mAPN.hashCode());
197c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        result = prime * result + ((mReason == null) ? 0 : mReason.hashCode());
198c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        result = prime * result + ((mLinkProperties == null) ? 0 : mLinkProperties.hashCode());
199c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        result = prime * result + ((mFailCause == null) ? 0 : mFailCause.hashCode());
200c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        return result;
201c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    }
202c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela
203c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    @Override
204c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    public boolean equals(Object obj) {
205c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        if (this == obj) {
206c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela            return true;
207c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        }
208c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        if (obj == null) {
209c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela            return false;
210c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        }
211c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        if (getClass() != obj.getClass()) {
212c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela            return false;
213c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        }
214c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        PreciseDataConnectionState other = (PreciseDataConnectionState) obj;
215c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        if (mAPN == null) {
216c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela            if (other.mAPN != null) {
217c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela                return false;
218c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela            }
219c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        } else if (!mAPN.equals(other.mAPN)) {
220c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela            return false;
221c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        }
222c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        if (mAPNType == null) {
223c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela            if (other.mAPNType != null) {
224c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela                return false;
225c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela            }
226c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        } else if (!mAPNType.equals(other.mAPNType)) {
227c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela            return false;
228c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        }
229c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        if (mFailCause == null) {
230c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela            if (other.mFailCause != null) {
231c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela                return false;
232c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela            }
233c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        } else if (!mFailCause.equals(other.mFailCause)) {
234c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela            return false;
235c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        }
236c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        if (mLinkProperties == null) {
237c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela            if (other.mLinkProperties != null) {
238c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela                return false;
239c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela            }
240c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        } else if (!mLinkProperties.equals(other.mLinkProperties)) {
241c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela            return false;
242c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        }
243c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        if (mNetworkType != other.mNetworkType) {
244c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela            return false;
245c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        }
246c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        if (mReason == null) {
247c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela            if (other.mReason != null) {
248c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela                return false;
249c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela            }
250c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        } else if (!mReason.equals(other.mReason)) {
251c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela            return false;
252c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        }
253c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        if (mState != other.mState) {
254c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela            return false;
255c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        }
256c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        return true;
257c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    }
258c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela
259c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    @Override
260c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    public String toString() {
261c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        StringBuilder sb = new StringBuilder();
262c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela
263c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        sb.append("Data Connection state: " + mState);
264c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        sb.append(", Network type: " + mNetworkType);
265c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        sb.append(", APN type: " + mAPNType);
266c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        sb.append(", APN: " + mAPN);
267c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        sb.append(", Change reason: " + mReason);
268c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        sb.append(", Link properties: " + mLinkProperties);
269c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        sb.append(", Fail cause: " + mFailCause);
270c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela
271c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela        return sb.toString();
272c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela    }
273c5ac15a3e11c03951e269b243674858411204b67Antonio Marín Cerezuela}
274