Home | History | Annotate | Download | only in telephony
      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 }
    230