OSDN Git Service

am 62eaad72: am f9787d87: Merge "cherrypick from lmp-docs Docs: Correcting how to...
[android-x86/frameworks-base.git] / telephony / java / android / telephony / VoLteServiceState.java
1 /*
2  * Copyright (C) 2014 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
17 package android.telephony;
18
19 import android.os.Bundle;
20 import android.os.Parcel;
21 import android.os.Parcelable;
22 import android.telephony.Rlog;
23
24 /**
25  * Contains LTE network state related information.
26  *
27  * @hide
28  */
29 public final class VoLteServiceState implements Parcelable {
30
31     private static final String LOG_TAG = "VoLteServiceState";
32     private static final boolean DBG = false;
33
34     //Use int max, as -1 is a valid value in signal strength
35     public static final int INVALID = 0x7FFFFFFF;
36
37     public static final int NOT_SUPPORTED = 0;
38     public static final int SUPPORTED = 1;
39
40     // Single Radio Voice Call Continuity(SRVCC) progress state
41     public static final int HANDOVER_STARTED   = 0;
42     public static final int HANDOVER_COMPLETED = 1;
43     public static final int HANDOVER_FAILED    = 2;
44     public static final int HANDOVER_CANCELED  = 3;
45
46     private int mSrvccState;
47
48     /**
49      * Create a new VoLteServiceState from a intent notifier Bundle
50      *
51      * This method is used by PhoneStateIntentReceiver and maybe by
52      * external applications.
53      *
54      * @param m Bundle from intent notifier
55      * @return newly created VoLteServiceState
56      *
57      * @hide
58      */
59     public static VoLteServiceState newFromBundle(Bundle m) {
60         VoLteServiceState ret;
61         ret = new VoLteServiceState();
62         ret.setFromNotifierBundle(m);
63         return ret;
64     }
65
66     /**
67      * Empty constructor
68      *
69      * @hide
70      */
71     public VoLteServiceState() {
72         initialize();
73     }
74
75     /**
76      * Constructor
77      *
78      * @hide
79      */
80     public VoLteServiceState(int srvccState) {
81         initialize();
82
83         mSrvccState = srvccState;
84     }
85
86     /**
87      * Copy constructors
88      *
89      * @param s Source VoLteServiceState
90      *
91      * @hide
92      */
93     public VoLteServiceState(VoLteServiceState s) {
94         copyFrom(s);
95     }
96
97     /**
98      * Initialize values to defaults.
99      *
100      * @hide
101      */
102     private void initialize() {
103         mSrvccState = INVALID;
104     }
105
106     /**
107      * @hide
108      */
109     protected void copyFrom(VoLteServiceState s) {
110         mSrvccState = s.mSrvccState;
111     }
112
113     /**
114      * Construct a VoLteServiceState object from the given parcel.
115      *
116      * @hide
117      */
118     public VoLteServiceState(Parcel in) {
119         if (DBG) log("Size of VoLteServiceState parcel:" + in.dataSize());
120
121         mSrvccState = in.readInt();
122     }
123
124     /**
125      * {@link Parcelable#writeToParcel}
126      */
127     public void writeToParcel(Parcel out, int flags) {
128         out.writeInt(mSrvccState);
129     }
130
131     /**
132      * {@link Parcelable#describeContents}
133      */
134     public int describeContents() {
135         return 0;
136     }
137
138     /**
139      * {@link Parcelable.Creator}
140      *
141      * @hide
142      */
143     public static final Parcelable.Creator<VoLteServiceState> CREATOR = new Parcelable.Creator() {
144         public VoLteServiceState createFromParcel(Parcel in) {
145             return new VoLteServiceState(in);
146         }
147
148         public VoLteServiceState[] newArray(int size) {
149             return new VoLteServiceState[size];
150         }
151     };
152
153     /**
154      * Validate the individual fields as per the range
155      * specified in ril.h
156      * Set to invalid any field that is not in the valid range
157      *
158      * @return
159      *      Valid values for all fields
160      * @hide
161      */
162     public void validateInput() {
163     }
164
165     public int hashCode() {
166         int primeNum = 31;
167         return ((mSrvccState * primeNum));
168     }
169
170     /**
171      * @return true if the LTE network states are the same
172      */
173     @Override
174     public boolean equals (Object o) {
175         VoLteServiceState s;
176
177         try {
178             s = (VoLteServiceState) o;
179         } catch (ClassCastException ex) {
180             return false;
181         }
182
183         if (o == null) {
184             return false;
185         }
186
187         return (mSrvccState == s.mSrvccState);
188     }
189
190     /**
191      * @return string representation.
192      */
193     @Override
194     public String toString() {
195         return ("VoLteServiceState:"
196                 + " " + mSrvccState);
197     }
198
199     /**
200      * Set VoLteServiceState based on intent notifier map
201      *
202      * @param m intent notifier map
203      * @hide
204      */
205     private void setFromNotifierBundle(Bundle m) {
206         mSrvccState = m.getInt("mSrvccState");
207     }
208
209     /**
210      * Set intent notifier Bundle based on VoLteServiceState
211      *
212      * @param m intent notifier Bundle
213      * @hide
214      */
215     public void fillInNotifierBundle(Bundle m) {
216         m.putInt("mSrvccState", mSrvccState);
217     }
218
219     public int getSrvccState() {
220         return mSrvccState;
221     }
222
223     /**
224      * log
225      */
226     private static void log(String s) {
227         Rlog.w(LOG_TAG, s);
228     }
229 }