/* * 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.Parcel; import android.os.Parcelable; import com.android.internal.telephony.RILConstants; /** * Object to indicate the phone radio type and access technology. * * @hide */ public class RadioAccessFamily implements Parcelable { // Radio Access Family public static final int RAF_UNKNOWN = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_UNKNOWN); public static final int RAF_GPRS = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_GPRS); public static final int RAF_EDGE = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_EDGE); public static final int RAF_UMTS = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_UMTS); public static final int RAF_IS95A = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_IS95A); public static final int RAF_IS95B = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_IS95B); public static final int RAF_1xRTT = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_1xRTT); public static final int RAF_EVDO_0 = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_EVDO_0); public static final int RAF_EVDO_A = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_EVDO_A); public static final int RAF_HSDPA = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_HSDPA); public static final int RAF_HSUPA = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_HSUPA); public static final int RAF_HSPA = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_HSPA); public static final int RAF_EVDO_B = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_EVDO_B); public static final int RAF_EHRPD = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_EHRPD); public static final int RAF_LTE = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_LTE); public static final int RAF_HSPAP = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_HSPAP); public static final int RAF_GSM = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_GSM); public static final int RAF_TD_SCDMA = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_TD_SCDMA); /* Phone ID of phone */ private int mPhoneId; /* Radio Access Family */ private int mRadioAccessFamily; /** * Constructor. * * @param phoneId the phone ID * @param radioAccessFamily the phone radio access family defined * in RadioAccessFamily. It's a bit mask value to represent * the support type. */ public RadioAccessFamily(int phoneId, int radioAccessFamily) { mPhoneId = phoneId; mRadioAccessFamily = radioAccessFamily; } /** * Get phone ID. * * @return phone ID */ public int getPhoneId() { return mPhoneId; } /** * get radio access family. * * @return radio access family */ public int getRadioAccessFamily() { return mRadioAccessFamily; } @Override public String toString() { String ret = "{ mPhoneId = " + mPhoneId + ", mRadioAccessFamily = " + mRadioAccessFamily + "}"; return ret; } /** * Implement the Parcelable interface. * * @return describe content */ @Override public int describeContents() { return 0; } /** * Implement the Parcelable interface. * * @param outParcel The Parcel in which the object should be written. * @param flags Additional flags about how the object should be written. */ @Override public void writeToParcel(Parcel outParcel, int flags) { outParcel.writeInt(mPhoneId); outParcel.writeInt(mRadioAccessFamily); } /** * Implement the Parcelable interface. */ public static final Creator CREATOR = new Creator() { @Override public RadioAccessFamily createFromParcel(Parcel in) { int phoneId = in.readInt(); int radioAccessFamily = in.readInt(); return new RadioAccessFamily(phoneId, radioAccessFamily); } @Override public RadioAccessFamily[] newArray(int size) { return new RadioAccessFamily[size]; } }; public static int getRafFromNetworkType(int type) { final int GSM = RAF_GSM | RAF_GPRS | RAF_EDGE; final int HS = RAF_HSUPA | RAF_HSDPA | RAF_HSPA | RAF_HSPAP; final int CDMA = RAF_IS95A | RAF_IS95B | RAF_1xRTT; final int EVDO = RAF_EVDO_0 | RAF_EVDO_A | RAF_EVDO_B; final int WCDMA = HS | RAF_UMTS; int raf; switch (type) { case RILConstants.NETWORK_MODE_WCDMA_PREF: raf = GSM | WCDMA; break; case RILConstants.NETWORK_MODE_GSM_ONLY: raf = GSM; break; case RILConstants.NETWORK_MODE_WCDMA_ONLY: raf = WCDMA; break; case RILConstants.NETWORK_MODE_GSM_UMTS: raf = GSM | WCDMA; break; case RILConstants.NETWORK_MODE_CDMA: raf = CDMA; break; case RILConstants.NETWORK_MODE_LTE_CDMA_EVDO: raf = RAF_LTE | CDMA | EVDO; break; case RILConstants.NETWORK_MODE_LTE_GSM_WCDMA: raf = RAF_LTE | GSM | WCDMA; break; case RILConstants.NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA: raf = RAF_LTE | CDMA | EVDO | GSM | WCDMA; break; case RILConstants.NETWORK_MODE_LTE_ONLY: raf = RAF_LTE; break; case RILConstants.NETWORK_MODE_LTE_WCDMA: raf = RAF_LTE | WCDMA; break; case RILConstants.NETWORK_MODE_CDMA_NO_EVDO: raf = CDMA; break; case RILConstants.NETWORK_MODE_EVDO_NO_CDMA: raf = EVDO; break; case RILConstants.NETWORK_MODE_GLOBAL: raf = GSM | WCDMA | CDMA | EVDO; break; default: raf = RAF_UNKNOWN; break; } return raf; } }