12af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville/* 22af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville* Copyright (C) 2014 The Android Open Source Project 32af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville* 42af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville* Licensed under the Apache License, Version 2.0 (the "License"); 52af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville* you may not use this file except in compliance with the License. 62af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville* You may obtain a copy of the License at 72af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville* 82af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville* http://www.apache.org/licenses/LICENSE-2.0 92af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville* 102af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville* Unless required by applicable law or agreed to in writing, software 112af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville* distributed under the License is distributed on an "AS IS" BASIS, 122af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 132af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville* See the License for the specific language governing permissions and 142af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville* limitations under the License. 152af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville*/ 162af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville 172af2d57d578e0c3a2740628e7c6336b19961cc49Wink Savillepackage android.telephony; 182af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville 192af2d57d578e0c3a2740628e7c6336b19961cc49Wink Savilleimport android.os.Parcel; 202af2d57d578e0c3a2740628e7c6336b19961cc49Wink Savilleimport android.os.Parcelable; 212af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville 22997ddc8e3e4b9d4daa65294dbd5cc3ecfb79c101Stuart Scottimport com.android.internal.telephony.RILConstants; 23997ddc8e3e4b9d4daa65294dbd5cc3ecfb79c101Stuart Scott 242af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville/** 252af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville * Object to indicate the phone radio type and access technology. 262af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville * 272af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville * @hide 282af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville */ 292af2d57d578e0c3a2740628e7c6336b19961cc49Wink Savillepublic class RadioAccessFamily implements Parcelable { 302af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville 312af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville // Radio Access Family 322af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville public static final int RAF_UNKNOWN = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_UNKNOWN); 332af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville public static final int RAF_GPRS = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_GPRS); 342af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville public static final int RAF_EDGE = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_EDGE); 352af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville public static final int RAF_UMTS = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_UMTS); 362af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville public static final int RAF_IS95A = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_IS95A); 372af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville public static final int RAF_IS95B = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_IS95B); 382af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville public static final int RAF_1xRTT = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_1xRTT); 392af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville public static final int RAF_EVDO_0 = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_EVDO_0); 402af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville public static final int RAF_EVDO_A = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_EVDO_A); 412af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville public static final int RAF_HSDPA = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_HSDPA); 422af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville public static final int RAF_HSUPA = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_HSUPA); 432af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville public static final int RAF_HSPA = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_HSPA); 442af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville public static final int RAF_EVDO_B = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_EVDO_B); 452af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville public static final int RAF_EHRPD = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_EHRPD); 462af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville public static final int RAF_LTE = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_LTE); 472af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville public static final int RAF_HSPAP = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_HSPAP); 482af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville public static final int RAF_GSM = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_GSM); 492af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville public static final int RAF_TD_SCDMA = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_TD_SCDMA); 502af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville 512af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville /* Phone ID of phone */ 522af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville private int mPhoneId; 532af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville 542af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville /* Radio Access Family */ 552af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville private int mRadioAccessFamily; 562af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville 572af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville /** 582af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville * Constructor. 592af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville * 602af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville * @param phoneId the phone ID 612af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville * @param radioAccessFamily the phone radio access family defined 622af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville * in RadioAccessFamily. It's a bit mask value to represent 632af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville * the support type. 642af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville */ 652af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville public RadioAccessFamily(int phoneId, int radioAccessFamily) { 662af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville mPhoneId = phoneId; 672af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville mRadioAccessFamily = radioAccessFamily; 682af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville } 692af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville 702af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville /** 712af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville * Get phone ID. 722af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville * 732af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville * @return phone ID 742af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville */ 752af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville public int getPhoneId() { 762af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville return mPhoneId; 772af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville } 782af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville 792af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville /** 802af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville * get radio access family. 812af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville * 822af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville * @return radio access family 832af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville */ 842af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville public int getRadioAccessFamily() { 852af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville return mRadioAccessFamily; 862af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville } 872af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville 882af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville @Override 892af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville public String toString() { 902af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville String ret = "{ mPhoneId = " + mPhoneId 912af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville + ", mRadioAccessFamily = " + mRadioAccessFamily 922af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville + "}"; 932af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville return ret; 942af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville } 952af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville 962af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville /** 972af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville * Implement the Parcelable interface. 982af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville * 992af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville * @return describe content 1002af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville */ 1012af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville @Override 1022af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville public int describeContents() { 1032af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville return 0; 1042af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville } 1052af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville 1062af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville /** 1072af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville * Implement the Parcelable interface. 1082af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville * 1092af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville * @param outParcel The Parcel in which the object should be written. 1102af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville * @param flags Additional flags about how the object should be written. 1112af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville */ 112997ddc8e3e4b9d4daa65294dbd5cc3ecfb79c101Stuart Scott @Override 1132af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville public void writeToParcel(Parcel outParcel, int flags) { 1142af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville outParcel.writeInt(mPhoneId); 1152af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville outParcel.writeInt(mRadioAccessFamily); 1162af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville } 1172af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville 1182af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville /** 1192af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville * Implement the Parcelable interface. 1202af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville */ 1212af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville public static final Creator<RadioAccessFamily> CREATOR = 1222af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville new Creator<RadioAccessFamily>() { 1232af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville 1242af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville @Override 1252af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville public RadioAccessFamily createFromParcel(Parcel in) { 1262af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville int phoneId = in.readInt(); 1272af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville int radioAccessFamily = in.readInt(); 1282af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville 1292af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville return new RadioAccessFamily(phoneId, radioAccessFamily); 1302af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville } 1312af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville 1322af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville @Override 1332af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville public RadioAccessFamily[] newArray(int size) { 1342af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville return new RadioAccessFamily[size]; 1352af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville } 1362af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville }; 137997ddc8e3e4b9d4daa65294dbd5cc3ecfb79c101Stuart Scott 138997ddc8e3e4b9d4daa65294dbd5cc3ecfb79c101Stuart Scott public static int getRafFromNetworkType(int type) { 139f73c2d1f0b6d55668c19493fba0088a69e6b128fWink Saville final int GSM = RAF_GSM | RAF_GPRS | RAF_EDGE; 140f73c2d1f0b6d55668c19493fba0088a69e6b128fWink Saville final int HS = RAF_HSUPA | RAF_HSDPA | RAF_HSPA | RAF_HSPAP; 141f73c2d1f0b6d55668c19493fba0088a69e6b128fWink Saville final int CDMA = RAF_IS95A | RAF_IS95B | RAF_1xRTT; 142f73c2d1f0b6d55668c19493fba0088a69e6b128fWink Saville final int EVDO = RAF_EVDO_0 | RAF_EVDO_A | RAF_EVDO_B; 143f73c2d1f0b6d55668c19493fba0088a69e6b128fWink Saville final int WCDMA = HS | RAF_UMTS; 144f73c2d1f0b6d55668c19493fba0088a69e6b128fWink Saville 145f73c2d1f0b6d55668c19493fba0088a69e6b128fWink Saville int raf; 146f73c2d1f0b6d55668c19493fba0088a69e6b128fWink Saville 147997ddc8e3e4b9d4daa65294dbd5cc3ecfb79c101Stuart Scott switch (type) { 148997ddc8e3e4b9d4daa65294dbd5cc3ecfb79c101Stuart Scott case RILConstants.NETWORK_MODE_WCDMA_PREF: 149f73c2d1f0b6d55668c19493fba0088a69e6b128fWink Saville raf = GSM | WCDMA; 150f73c2d1f0b6d55668c19493fba0088a69e6b128fWink Saville break; 151997ddc8e3e4b9d4daa65294dbd5cc3ecfb79c101Stuart Scott case RILConstants.NETWORK_MODE_GSM_ONLY: 152f73c2d1f0b6d55668c19493fba0088a69e6b128fWink Saville raf = GSM; 153f73c2d1f0b6d55668c19493fba0088a69e6b128fWink Saville break; 154482b4246c25164f8a55c473acec1d2ca9a9e08d2Stuart Scott case RILConstants.NETWORK_MODE_WCDMA_ONLY: 155f73c2d1f0b6d55668c19493fba0088a69e6b128fWink Saville raf = WCDMA; 156f73c2d1f0b6d55668c19493fba0088a69e6b128fWink Saville break; 157482b4246c25164f8a55c473acec1d2ca9a9e08d2Stuart Scott case RILConstants.NETWORK_MODE_GSM_UMTS: 158f73c2d1f0b6d55668c19493fba0088a69e6b128fWink Saville raf = GSM | WCDMA; 159f73c2d1f0b6d55668c19493fba0088a69e6b128fWink Saville break; 160482b4246c25164f8a55c473acec1d2ca9a9e08d2Stuart Scott case RILConstants.NETWORK_MODE_CDMA: 161f73c2d1f0b6d55668c19493fba0088a69e6b128fWink Saville raf = CDMA; 162f73c2d1f0b6d55668c19493fba0088a69e6b128fWink Saville break; 163482b4246c25164f8a55c473acec1d2ca9a9e08d2Stuart Scott case RILConstants.NETWORK_MODE_LTE_CDMA_EVDO: 164f73c2d1f0b6d55668c19493fba0088a69e6b128fWink Saville raf = RAF_LTE | CDMA | EVDO; 165f73c2d1f0b6d55668c19493fba0088a69e6b128fWink Saville break; 166482b4246c25164f8a55c473acec1d2ca9a9e08d2Stuart Scott case RILConstants.NETWORK_MODE_LTE_GSM_WCDMA: 167f73c2d1f0b6d55668c19493fba0088a69e6b128fWink Saville raf = RAF_LTE | GSM | WCDMA; 168f73c2d1f0b6d55668c19493fba0088a69e6b128fWink Saville break; 169482b4246c25164f8a55c473acec1d2ca9a9e08d2Stuart Scott case RILConstants.NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA: 170f73c2d1f0b6d55668c19493fba0088a69e6b128fWink Saville raf = RAF_LTE | CDMA | EVDO | GSM | WCDMA; 171f73c2d1f0b6d55668c19493fba0088a69e6b128fWink Saville break; 172482b4246c25164f8a55c473acec1d2ca9a9e08d2Stuart Scott case RILConstants.NETWORK_MODE_LTE_ONLY: 173f73c2d1f0b6d55668c19493fba0088a69e6b128fWink Saville raf = RAF_LTE; 174f73c2d1f0b6d55668c19493fba0088a69e6b128fWink Saville break; 175482b4246c25164f8a55c473acec1d2ca9a9e08d2Stuart Scott case RILConstants.NETWORK_MODE_LTE_WCDMA: 176f73c2d1f0b6d55668c19493fba0088a69e6b128fWink Saville raf = RAF_LTE | WCDMA; 177f73c2d1f0b6d55668c19493fba0088a69e6b128fWink Saville break; 178482b4246c25164f8a55c473acec1d2ca9a9e08d2Stuart Scott case RILConstants.NETWORK_MODE_CDMA_NO_EVDO: 179f73c2d1f0b6d55668c19493fba0088a69e6b128fWink Saville raf = CDMA; 180f73c2d1f0b6d55668c19493fba0088a69e6b128fWink Saville break; 181482b4246c25164f8a55c473acec1d2ca9a9e08d2Stuart Scott case RILConstants.NETWORK_MODE_EVDO_NO_CDMA: 182f73c2d1f0b6d55668c19493fba0088a69e6b128fWink Saville raf = EVDO; 183f73c2d1f0b6d55668c19493fba0088a69e6b128fWink Saville break; 184482b4246c25164f8a55c473acec1d2ca9a9e08d2Stuart Scott case RILConstants.NETWORK_MODE_GLOBAL: 185f73c2d1f0b6d55668c19493fba0088a69e6b128fWink Saville raf = GSM | WCDMA | CDMA | EVDO; 186f73c2d1f0b6d55668c19493fba0088a69e6b128fWink Saville break; 187997ddc8e3e4b9d4daa65294dbd5cc3ecfb79c101Stuart Scott default: 188f73c2d1f0b6d55668c19493fba0088a69e6b128fWink Saville raf = RAF_UNKNOWN; 189f73c2d1f0b6d55668c19493fba0088a69e6b128fWink Saville break; 190997ddc8e3e4b9d4daa65294dbd5cc3ecfb79c101Stuart Scott } 191b5f1e878d1bc245b676a1a2504c30d21a311bf6cWink Saville return raf; 192997ddc8e3e4b9d4daa65294dbd5cc3ecfb79c101Stuart Scott } 1932af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville} 1942af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville 195