blob: afef601b9c4c55f4019a30a6f4e207f825834181 [file] [log] [blame]
/*
* 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<VoLteServiceState> 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);
}
}