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