/* * Copyright (C) 2014 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.telephony; import android.os.Bundle; import android.os.Parcel; import android.os.Parcelable; import android.telephony.Rlog; /** * Contains LTE network state related information. * * @hide */ public final class VoLteServiceState implements Parcelable { private static final String LOG_TAG = "VoLteServiceState"; private static final boolean DBG = false; //Use int max, as -1 is a valid value in signal strength public static final int INVALID = 0x7FFFFFFF; public static final int NOT_SUPPORTED = 0; public static final int SUPPORTED = 1; // Single Radio Voice Call Continuity(SRVCC) progress state public static final int HANDOVER_STARTED = 0; public static final int HANDOVER_COMPLETED = 1; public static final int HANDOVER_FAILED = 2; public static final int HANDOVER_CANCELED = 3; private int mSrvccState; /** * Create a new VoLteServiceState from a intent notifier Bundle * * This method is used by PhoneStateIntentReceiver and maybe by * external applications. * * @param m Bundle from intent notifier * @return newly created VoLteServiceState * * @hide */ public static VoLteServiceState newFromBundle(Bundle m) { VoLteServiceState ret; ret = new VoLteServiceState(); ret.setFromNotifierBundle(m); return ret; } /** * Empty constructor * * @hide */ public VoLteServiceState() { initialize(); } /** * Constructor * * @hide */ public VoLteServiceState(int srvccState) { initialize(); mSrvccState = srvccState; } /** * Copy constructors * * @param s Source VoLteServiceState * * @hide */ public VoLteServiceState(VoLteServiceState s) { copyFrom(s); } /** * Initialize values to defaults. * * @hide */ private void initialize() { mSrvccState = INVALID; } /** * @hide */ protected void copyFrom(VoLteServiceState s) { mSrvccState = s.mSrvccState; } /** * Construct a VoLteServiceState object from the given parcel. * * @hide */ public VoLteServiceState(Parcel in) { if (DBG) log("Size of VoLteServiceState parcel:" + in.dataSize()); mSrvccState = in.readInt(); } /** * {@link Parcelable#writeToParcel} */ public void writeToParcel(Parcel out, int flags) { out.writeInt(mSrvccState); } /** * {@link Parcelable#describeContents} */ public int describeContents() { return 0; } /** * {@link Parcelable.Creator} * * @hide */ public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { public VoLteServiceState createFromParcel(Parcel in) { return new VoLteServiceState(in); } public VoLteServiceState[] newArray(int size) { return new VoLteServiceState[size]; } }; /** * Validate the individual fields as per the range * specified in ril.h * Set to invalid any field that is not in the valid range * * @return * Valid values for all fields * @hide */ public void validateInput() { } public int hashCode() { int primeNum = 31; return ((mSrvccState * primeNum)); } /** * @return true if the LTE network states are the same */ @Override public boolean equals (Object o) { VoLteServiceState s; try { s = (VoLteServiceState) o; } catch (ClassCastException ex) { return false; } if (o == null) { return false; } return (mSrvccState == s.mSrvccState); } /** * @return string representation. */ @Override public String toString() { return ("VoLteServiceState:" + " " + mSrvccState); } /** * Set VoLteServiceState based on intent notifier map * * @param m intent notifier map * @hide */ private void setFromNotifierBundle(Bundle m) { mSrvccState = m.getInt("mSrvccState"); } /** * Set intent notifier Bundle based on VoLteServiceState * * @param m intent notifier Bundle * @hide */ public void fillInNotifierBundle(Bundle m) { m.putInt("mSrvccState", mSrvccState); } public int getSrvccState() { return mSrvccState; } /** * log */ private static void log(String s) { Rlog.w(LOG_TAG, s); } }