19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2006 The Android Open Source Project 39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License. 69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at 79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and 149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License. 159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage android.telephony; 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Bundle; 209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Parcel; 219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Parcelable; 22767a662ecde33c3979bf02b793d392aca0403162Wink Savilleimport android.util.Log; 239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/** 259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Contains phone state and service related information. 269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The following phone information is included in returned ServiceState: 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <ul> 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <li>Service state: IN_SERVICE, OUT_OF_SERVICE, EMERGENCY_ONLY, POWER_OFF 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <li>Roaming indicator 329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <li>Operator name, short name and numeric id 339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <li>Network selection mode 349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * </ul> 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic class ServiceState implements Parcelable { 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 38767a662ecde33c3979bf02b793d392aca0403162Wink Saville static final String LOG_TAG = "PHONE"; 39767a662ecde33c3979bf02b793d392aca0403162Wink Saville 409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Normal operation condition, the phone is registered 429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * with an operator either in home network or in roaming. 439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int STATE_IN_SERVICE = 0; 459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Phone is not registered with any operator, the phone 489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * can be currently searching a new operator to register to, or not 499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * searching to registration at all, or registration is denied, or radio 509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * signal is not available. 519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int STATE_OUT_OF_SERVICE = 1; 539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The phone is registered and locked. Only emergency numbers are allowed. {@more} 569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int STATE_EMERGENCY_ONLY = 2; 589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 60390de220248d05ccb9dc10a197700ad3c1595937Jake Hamby * Radio of telephony is explicitly powered off. 619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int STATE_POWER_OFF = 3; 639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 64767a662ecde33c3979bf02b793d392aca0403162Wink Saville 65767a662ecde33c3979bf02b793d392aca0403162Wink Saville /** 66767a662ecde33c3979bf02b793d392aca0403162Wink Saville * Available radio technologies for GSM, UMTS and CDMA. 67767a662ecde33c3979bf02b793d392aca0403162Wink Saville */ 68767a662ecde33c3979bf02b793d392aca0403162Wink Saville /** @hide */ 69767a662ecde33c3979bf02b793d392aca0403162Wink Saville public static final int RADIO_TECHNOLOGY_UNKNOWN = 0; 70767a662ecde33c3979bf02b793d392aca0403162Wink Saville /** @hide */ 71767a662ecde33c3979bf02b793d392aca0403162Wink Saville public static final int RADIO_TECHNOLOGY_GPRS = 1; 72767a662ecde33c3979bf02b793d392aca0403162Wink Saville /** @hide */ 73767a662ecde33c3979bf02b793d392aca0403162Wink Saville public static final int RADIO_TECHNOLOGY_EDGE = 2; 74767a662ecde33c3979bf02b793d392aca0403162Wink Saville /** @hide */ 75767a662ecde33c3979bf02b793d392aca0403162Wink Saville public static final int RADIO_TECHNOLOGY_UMTS = 3; 76767a662ecde33c3979bf02b793d392aca0403162Wink Saville /** @hide */ 77767a662ecde33c3979bf02b793d392aca0403162Wink Saville public static final int RADIO_TECHNOLOGY_IS95A = 4; 78767a662ecde33c3979bf02b793d392aca0403162Wink Saville /** @hide */ 79767a662ecde33c3979bf02b793d392aca0403162Wink Saville public static final int RADIO_TECHNOLOGY_IS95B = 5; 80767a662ecde33c3979bf02b793d392aca0403162Wink Saville /** @hide */ 81767a662ecde33c3979bf02b793d392aca0403162Wink Saville public static final int RADIO_TECHNOLOGY_1xRTT = 6; 82767a662ecde33c3979bf02b793d392aca0403162Wink Saville /** @hide */ 83767a662ecde33c3979bf02b793d392aca0403162Wink Saville public static final int RADIO_TECHNOLOGY_EVDO_0 = 7; 84767a662ecde33c3979bf02b793d392aca0403162Wink Saville /** @hide */ 85767a662ecde33c3979bf02b793d392aca0403162Wink Saville public static final int RADIO_TECHNOLOGY_EVDO_A = 8; 86ebe66345e7099ca6fc95e8aa4d31a5b5cbbd6224Li Zhe /** @hide */ 87ebe66345e7099ca6fc95e8aa4d31a5b5cbbd6224Li Zhe public static final int RADIO_TECHNOLOGY_HSDPA = 9; 88ebe66345e7099ca6fc95e8aa4d31a5b5cbbd6224Li Zhe /** @hide */ 89ebe66345e7099ca6fc95e8aa4d31a5b5cbbd6224Li Zhe public static final int RADIO_TECHNOLOGY_HSUPA = 10; 90ebe66345e7099ca6fc95e8aa4d31a5b5cbbd6224Li Zhe /** @hide */ 91ebe66345e7099ca6fc95e8aa4d31a5b5cbbd6224Li Zhe public static final int RADIO_TECHNOLOGY_HSPA = 11; 920a5174a6e947d5cbeb8846a1273a90b6de065cbfNaveen Kalla /** @hide */ 930a5174a6e947d5cbeb8846a1273a90b6de065cbfNaveen Kalla public static final int RADIO_TECHNOLOGY_EVDO_B = 12; 949d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville /** @hide */ 95f57276154aaa587524374db8e0d7228383611bf3Ramesh Sudini public static final int RADIO_TECHNOLOGY_EHRPD = 13; 969d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville /** @hide */ 97f57276154aaa587524374db8e0d7228383611bf3Ramesh Sudini public static final int RADIO_TECHNOLOGY_LTE = 14; 98f57276154aaa587524374db8e0d7228383611bf3Ramesh Sudini /** @hide */ 99f57276154aaa587524374db8e0d7228383611bf3Ramesh Sudini public static final int RADIO_TECHNOLOGY_HSPAP = 15; 100767a662ecde33c3979bf02b793d392aca0403162Wink Saville 101767a662ecde33c3979bf02b793d392aca0403162Wink Saville /** 102767a662ecde33c3979bf02b793d392aca0403162Wink Saville * Available registration states for GSM, UMTS and CDMA. 103767a662ecde33c3979bf02b793d392aca0403162Wink Saville */ 104767a662ecde33c3979bf02b793d392aca0403162Wink Saville /** @hide */ 105767a662ecde33c3979bf02b793d392aca0403162Wink Saville public static final int REGISTRATION_STATE_NOT_REGISTERED_AND_NOT_SEARCHING = 0; 106767a662ecde33c3979bf02b793d392aca0403162Wink Saville /** @hide */ 107767a662ecde33c3979bf02b793d392aca0403162Wink Saville public static final int REGISTRATION_STATE_HOME_NETWORK = 1; 108767a662ecde33c3979bf02b793d392aca0403162Wink Saville /** @hide */ 109767a662ecde33c3979bf02b793d392aca0403162Wink Saville public static final int REGISTRATION_STATE_NOT_REGISTERED_AND_SEARCHING = 2; 110767a662ecde33c3979bf02b793d392aca0403162Wink Saville /** @hide */ 111767a662ecde33c3979bf02b793d392aca0403162Wink Saville public static final int REGISTRATION_STATE_REGISTRATION_DENIED = 3; 112767a662ecde33c3979bf02b793d392aca0403162Wink Saville /** @hide */ 113767a662ecde33c3979bf02b793d392aca0403162Wink Saville public static final int REGISTRATION_STATE_UNKNOWN = 4; 114767a662ecde33c3979bf02b793d392aca0403162Wink Saville /** @hide */ 115767a662ecde33c3979bf02b793d392aca0403162Wink Saville public static final int REGISTRATION_STATE_ROAMING = 5; 116767a662ecde33c3979bf02b793d392aca0403162Wink Saville 1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private int mState = STATE_OUT_OF_SERVICE; 1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private boolean mRoaming; 1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private String mOperatorAlphaLong; 1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private String mOperatorAlphaShort; 1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private String mOperatorNumeric; 1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private boolean mIsManualNetworkSelection; 1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 12456c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang private boolean mIsEmergencyOnly; 12556c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang 126767a662ecde33c3979bf02b793d392aca0403162Wink Saville //***** CDMA 127767a662ecde33c3979bf02b793d392aca0403162Wink Saville private int mRadioTechnology; 128767a662ecde33c3979bf02b793d392aca0403162Wink Saville private boolean mCssIndicator; 129767a662ecde33c3979bf02b793d392aca0403162Wink Saville private int mNetworkId; 130767a662ecde33c3979bf02b793d392aca0403162Wink Saville private int mSystemId; 131e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville private int mCdmaRoamingIndicator; 132e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville private int mCdmaDefaultRoamingIndicator; 13398e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt private int mCdmaEriIconIndex; 13498e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt private int mCdmaEriIconMode; 135767a662ecde33c3979bf02b793d392aca0403162Wink Saville 1369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Create a new ServiceState from a intent notifier Bundle 1389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * This method is used by PhoneStateIntentReceiver and maybe by 1409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * external applications. 1419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param m Bundle from intent notifier 1439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return newly created ServiceState 1449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @hide 1459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static ServiceState newFromBundle(Bundle m) { 1479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ServiceState ret; 1489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ret = new ServiceState(); 1499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ret.setFromNotifierBundle(m); 1509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return ret; 1519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Empty constructor 1559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public ServiceState() { 1579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copy constructors 1619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param s Source service state 1639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public ServiceState(ServiceState s) { 1659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project copyFrom(s); 1669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project protected void copyFrom(ServiceState s) { 1699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mState = s.mState; 1709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRoaming = s.mRoaming; 1719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mOperatorAlphaLong = s.mOperatorAlphaLong; 1729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mOperatorAlphaShort = s.mOperatorAlphaShort; 1739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mOperatorNumeric = s.mOperatorNumeric; 1749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mIsManualNetworkSelection = s.mIsManualNetworkSelection; 175767a662ecde33c3979bf02b793d392aca0403162Wink Saville mRadioTechnology = s.mRadioTechnology; 176767a662ecde33c3979bf02b793d392aca0403162Wink Saville mCssIndicator = s.mCssIndicator; 177767a662ecde33c3979bf02b793d392aca0403162Wink Saville mNetworkId = s.mNetworkId; 178767a662ecde33c3979bf02b793d392aca0403162Wink Saville mSystemId = s.mSystemId; 179e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville mCdmaRoamingIndicator = s.mCdmaRoamingIndicator; 180e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville mCdmaDefaultRoamingIndicator = s.mCdmaDefaultRoamingIndicator; 18198e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt mCdmaEriIconIndex = s.mCdmaEriIconIndex; 18298e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt mCdmaEriIconMode = s.mCdmaEriIconMode; 18356c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang mIsEmergencyOnly = s.mIsEmergencyOnly; 1849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Construct a ServiceState object from the given parcel. 1889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public ServiceState(Parcel in) { 1909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mState = in.readInt(); 1919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRoaming = in.readInt() != 0; 1929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mOperatorAlphaLong = in.readString(); 1939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mOperatorAlphaShort = in.readString(); 1949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mOperatorNumeric = in.readString(); 1959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mIsManualNetworkSelection = in.readInt() != 0; 196767a662ecde33c3979bf02b793d392aca0403162Wink Saville mRadioTechnology = in.readInt(); 197767a662ecde33c3979bf02b793d392aca0403162Wink Saville mCssIndicator = (in.readInt() != 0); 198767a662ecde33c3979bf02b793d392aca0403162Wink Saville mNetworkId = in.readInt(); 199767a662ecde33c3979bf02b793d392aca0403162Wink Saville mSystemId = in.readInt(); 200e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville mCdmaRoamingIndicator = in.readInt(); 201e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville mCdmaDefaultRoamingIndicator = in.readInt(); 20298e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt mCdmaEriIconIndex = in.readInt(); 20398e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt mCdmaEriIconMode = in.readInt(); 20456c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang mIsEmergencyOnly = in.readInt() != 0; 2059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void writeToParcel(Parcel out, int flags) { 2089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project out.writeInt(mState); 2099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project out.writeInt(mRoaming ? 1 : 0); 2109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project out.writeString(mOperatorAlphaLong); 2119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project out.writeString(mOperatorAlphaShort); 2129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project out.writeString(mOperatorNumeric); 2139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project out.writeInt(mIsManualNetworkSelection ? 1 : 0); 214767a662ecde33c3979bf02b793d392aca0403162Wink Saville out.writeInt(mRadioTechnology); 215767a662ecde33c3979bf02b793d392aca0403162Wink Saville out.writeInt(mCssIndicator ? 1 : 0); 216767a662ecde33c3979bf02b793d392aca0403162Wink Saville out.writeInt(mNetworkId); 217767a662ecde33c3979bf02b793d392aca0403162Wink Saville out.writeInt(mSystemId); 218e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville out.writeInt(mCdmaRoamingIndicator); 219e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville out.writeInt(mCdmaDefaultRoamingIndicator); 22098e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt out.writeInt(mCdmaEriIconIndex); 22198e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt out.writeInt(mCdmaEriIconMode); 22256c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang out.writeInt(mIsEmergencyOnly ? 1 : 0); 2239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int describeContents() { 2269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return 0; 2279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 229390de220248d05ccb9dc10a197700ad3c1595937Jake Hamby public static final Parcelable.Creator<ServiceState> CREATOR = 230390de220248d05ccb9dc10a197700ad3c1595937Jake Hamby new Parcelable.Creator<ServiceState>() { 2319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public ServiceState createFromParcel(Parcel in) { 2329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return new ServiceState(in); 2339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public ServiceState[] newArray(int size) { 2369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return new ServiceState[size]; 2379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project }; 2399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 241390de220248d05ccb9dc10a197700ad3c1595937Jake Hamby * Get current service state of phone 2429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 2439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #STATE_IN_SERVICE 2449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #STATE_OUT_OF_SERVICE 2459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #STATE_EMERGENCY_ONLY 2469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #STATE_POWER_OFF 2479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int getState() { 2499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mState; 2509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Get current roaming indicator of phone 2549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * (note: not just decoding from TS 27.007 7.2) 2559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 2569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return true if TS 27.007 7.2 roaming is true 2579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * and ONS is different from SPN 2589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 2599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean getRoaming() { 2619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mRoaming; 2629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 264e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville /** 265e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville * @hide 266e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville */ 26756c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang public boolean isEmergencyOnly() { 26856c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang return mIsEmergencyOnly; 26956c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang } 27056c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang 27156c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang /** 27256c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang * @hide 27356c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang */ 274e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville public int getCdmaRoamingIndicator(){ 275e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville return this.mCdmaRoamingIndicator; 276e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville } 277e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 278e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville /** 279e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville * @hide 280e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville */ 281e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville public int getCdmaDefaultRoamingIndicator(){ 282e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville return this.mCdmaDefaultRoamingIndicator; 283767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 284767a662ecde33c3979bf02b793d392aca0403162Wink Saville 2859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 28698e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt * @hide 28798e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt */ 28898e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt public int getCdmaEriIconIndex() { 28998e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt return this.mCdmaEriIconIndex; 29098e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt } 29198e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt 29298e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt /** 29398e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt * @hide 29498e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt */ 29598e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt public int getCdmaEriIconMode() { 29698e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt return this.mCdmaEriIconMode; 29798e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt } 29898e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt 29998e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt /** 300390de220248d05ccb9dc10a197700ad3c1595937Jake Hamby * Get current registered operator name in long alphanumeric format. 3019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 302390de220248d05ccb9dc10a197700ad3c1595937Jake Hamby * In GSM/UMTS, long format can be up to 16 characters long. 303390de220248d05ccb9dc10a197700ad3c1595937Jake Hamby * In CDMA, returns the ERI text, if set. Otherwise, returns the ONS. 3049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 3059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return long name of operator, null if unregistered or unknown 3069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 3079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String getOperatorAlphaLong() { 3089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mOperatorAlphaLong; 3099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 312390de220248d05ccb9dc10a197700ad3c1595937Jake Hamby * Get current registered operator name in short alphanumeric format. 3139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 314390de220248d05ccb9dc10a197700ad3c1595937Jake Hamby * In GSM/UMTS, short format can be up to 8 characters long. 3159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 3169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return short name of operator, null if unregistered or unknown 3179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 3189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String getOperatorAlphaShort() { 3199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mOperatorAlphaShort; 3209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 323390de220248d05ccb9dc10a197700ad3c1595937Jake Hamby * Get current registered operator numeric id. 3249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 3259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * In GSM/UMTS, numeric format is 3 digit country code plus 2 or 3 digit 326390de220248d05ccb9dc10a197700ad3c1595937Jake Hamby * network code. 3279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 3289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return numeric format of operator, null if unregistered or unknown 3299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 330e25863c9093d3f60a1f6feab1d17d38946a8d020Jean-Baptiste Queru /* 331390de220248d05ccb9dc10a197700ad3c1595937Jake Hamby * The country code can be decoded using 332390de220248d05ccb9dc10a197700ad3c1595937Jake Hamby * {@link com.android.internal.telephony.MccTable#countryCodeForMcc(int)}. 3339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 3349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String getOperatorNumeric() { 3359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mOperatorNumeric; 3369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 339390de220248d05ccb9dc10a197700ad3c1595937Jake Hamby * Get current network selection mode. 3409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 3419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return true if manual mode, false if automatic mode 3429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 3439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean getIsManualSelection() { 3449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mIsManualNetworkSelection; 3459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override 3489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int hashCode() { 349767a662ecde33c3979bf02b793d392aca0403162Wink Saville return ((mState * 0x1234) 3509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + (mRoaming ? 1 : 0) 3519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + (mIsManualNetworkSelection ? 1 : 0) 3529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + ((null == mOperatorAlphaLong) ? 0 : mOperatorAlphaLong.hashCode()) 3539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + ((null == mOperatorAlphaShort) ? 0 : mOperatorAlphaShort.hashCode()) 354767a662ecde33c3979bf02b793d392aca0403162Wink Saville + ((null == mOperatorNumeric) ? 0 : mOperatorNumeric.hashCode()) 355e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville + mCdmaRoamingIndicator 35656c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang + mCdmaDefaultRoamingIndicator 35756c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang + (mIsEmergencyOnly ? 1 : 0)); 3589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override 3619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean equals (Object o) { 3629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ServiceState s; 363767a662ecde33c3979bf02b793d392aca0403162Wink Saville 3649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 3659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project s = (ServiceState) o; 3669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (ClassCastException ex) { 3679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return false; 3689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (o == null) { 3719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return false; 3729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 374767a662ecde33c3979bf02b793d392aca0403162Wink Saville return (mState == s.mState 3759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project && mRoaming == s.mRoaming 3769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project && mIsManualNetworkSelection == s.mIsManualNetworkSelection 3779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project && equalsHandlesNulls(mOperatorAlphaLong, s.mOperatorAlphaLong) 3789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project && equalsHandlesNulls(mOperatorAlphaShort, s.mOperatorAlphaShort) 379767a662ecde33c3979bf02b793d392aca0403162Wink Saville && equalsHandlesNulls(mOperatorNumeric, s.mOperatorNumeric) 380767a662ecde33c3979bf02b793d392aca0403162Wink Saville && equalsHandlesNulls(mRadioTechnology, s.mRadioTechnology) 381767a662ecde33c3979bf02b793d392aca0403162Wink Saville && equalsHandlesNulls(mCssIndicator, s.mCssIndicator) 382767a662ecde33c3979bf02b793d392aca0403162Wink Saville && equalsHandlesNulls(mNetworkId, s.mNetworkId) 383767a662ecde33c3979bf02b793d392aca0403162Wink Saville && equalsHandlesNulls(mSystemId, s.mSystemId) 384e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville && equalsHandlesNulls(mCdmaRoamingIndicator, s.mCdmaRoamingIndicator) 385e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville && equalsHandlesNulls(mCdmaDefaultRoamingIndicator, 38656c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang s.mCdmaDefaultRoamingIndicator) 38756c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang && mIsEmergencyOnly == s.mIsEmergencyOnly); 3889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 390db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville /** 391db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville * Convert radio technology to String 392db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville * 393db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville * @param radioTechnology 394db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville * @return String representation of the RAT 395db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville * 396db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville * @hide 397db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville */ 398db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville public static String radioTechnologyToString(int rt) { 399db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville String rtString; 400db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville 401db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville switch(rt) { 402db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville case 0: 403db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville rtString = "Unknown"; 404db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville break; 405db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville case 1: 406db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville rtString = "GPRS"; 407db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville break; 408db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville case 2: 409db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville rtString = "EDGE"; 410db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville break; 411db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville case 3: 412db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville rtString = "UMTS"; 413db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville break; 414db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville case 4: 415db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville rtString = "CDMA-IS95A"; 416db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville break; 417db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville case 5: 418db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville rtString = "CDMA-IS95B"; 419db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville break; 420db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville case 6: 421db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville rtString = "1xRTT"; 422db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville break; 423db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville case 7: 424db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville rtString = "EvDo-rev.0"; 425db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville break; 426db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville case 8: 427db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville rtString = "EvDo-rev.A"; 428db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville break; 429db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville case 9: 430db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville rtString = "HSDPA"; 431db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville break; 432db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville case 10: 433db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville rtString = "HSUPA"; 434db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville break; 435db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville case 11: 436db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville rtString = "HSPA"; 437db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville break; 438db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville case 12: 439db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville rtString = "EvDo-rev.B"; 440db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville break; 441db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville case 13: 442db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville rtString = "eHRPD"; 443db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville break; 444db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville case 14: 445db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville rtString = "LTE"; 446db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville break; 447db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville case 15: 448db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville rtString = "HSPAP"; 449db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville break; 450db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville default: 451db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville rtString = "Unexpected"; 452db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville Log.w(LOG_TAG, "Unexpected radioTechnology=" + rt); 453db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville break; 454db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville } 455db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville return rtString + ":" + rt; 456db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville } 457db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville 4589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override 4599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String toString() { 460db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville String radioTechnology = radioTechnologyToString(mRadioTechnology); 461767a662ecde33c3979bf02b793d392aca0403162Wink Saville 462767a662ecde33c3979bf02b793d392aca0403162Wink Saville return (mState + " " + (mRoaming ? "roaming" : "home") 4639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + " " + mOperatorAlphaLong 4649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + " " + mOperatorAlphaShort 4659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + " " + mOperatorNumeric 466767a662ecde33c3979bf02b793d392aca0403162Wink Saville + " " + (mIsManualNetworkSelection ? "(manual)" : "") 467767a662ecde33c3979bf02b793d392aca0403162Wink Saville + " " + radioTechnology 468767a662ecde33c3979bf02b793d392aca0403162Wink Saville + " " + (mCssIndicator ? "CSS supported" : "CSS not supported") 469e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville + " " + mNetworkId 470e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville + " " + mSystemId 471e613adcc555731aab2a0684d709da3d0df97a9e5Wink Saville + " RoamInd=" + mCdmaRoamingIndicator 472e613adcc555731aab2a0684d709da3d0df97a9e5Wink Saville + " DefRoamInd=" + mCdmaDefaultRoamingIndicator 473e613adcc555731aab2a0684d709da3d0df97a9e5Wink Saville + " EmergOnly=" + mIsEmergencyOnly); 4749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 476a2267451ddf91cc330f4c283e86811e38328915bRobert Greenwalt private void setNullState(int state) { 477a2267451ddf91cc330f4c283e86811e38328915bRobert Greenwalt mState = state; 4789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRoaming = false; 4799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mOperatorAlphaLong = null; 4809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mOperatorAlphaShort = null; 4819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mOperatorNumeric = null; 4829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mIsManualNetworkSelection = false; 483767a662ecde33c3979bf02b793d392aca0403162Wink Saville mRadioTechnology = 0; 484767a662ecde33c3979bf02b793d392aca0403162Wink Saville mCssIndicator = false; 485767a662ecde33c3979bf02b793d392aca0403162Wink Saville mNetworkId = -1; 486767a662ecde33c3979bf02b793d392aca0403162Wink Saville mSystemId = -1; 487e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville mCdmaRoamingIndicator = -1; 488e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville mCdmaDefaultRoamingIndicator = -1; 48998e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt mCdmaEriIconIndex = -1; 49098e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt mCdmaEriIconMode = -1; 49156c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang mIsEmergencyOnly = false; 4929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 494a2267451ddf91cc330f4c283e86811e38328915bRobert Greenwalt public void setStateOutOfService() { 495a2267451ddf91cc330f4c283e86811e38328915bRobert Greenwalt setNullState(STATE_OUT_OF_SERVICE); 496a2267451ddf91cc330f4c283e86811e38328915bRobert Greenwalt } 497a2267451ddf91cc330f4c283e86811e38328915bRobert Greenwalt 4989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setStateOff() { 499a2267451ddf91cc330f4c283e86811e38328915bRobert Greenwalt setNullState(STATE_POWER_OFF); 5009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setState(int state) { 5039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mState = state; 5049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setRoaming(boolean roaming) { 5079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRoaming = roaming; 5089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 51056c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang 51156c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang /** 51256c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang * @hide 51356c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang */ 51456c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang public void setEmergencyOnly(boolean emergencyOnly) { 51556c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang mIsEmergencyOnly = emergencyOnly; 51656c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang } 51756c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang 518e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville /** 519e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville * @hide 520e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville */ 521e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville public void setCdmaRoamingIndicator(int roaming) { 522e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville this.mCdmaRoamingIndicator = roaming; 523e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville } 524e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 525e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville /** 526e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville * @hide 527e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville */ 528e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville public void setCdmaDefaultRoamingIndicator (int roaming) { 529e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville this.mCdmaDefaultRoamingIndicator = roaming; 530767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 531767a662ecde33c3979bf02b793d392aca0403162Wink Saville 53298e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt /** 53398e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt * @hide 53498e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt */ 53598e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt public void setCdmaEriIconIndex(int index) { 53698e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt this.mCdmaEriIconIndex = index; 53798e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt } 53898e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt 53998e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt /** 54098e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt * @hide 54198e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt */ 54298e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt public void setCdmaEriIconMode(int mode) { 54398e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt this.mCdmaEriIconMode = mode; 54498e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt } 54598e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt 5469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setOperatorName(String longName, String shortName, String numeric) { 5479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mOperatorAlphaLong = longName; 5489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mOperatorAlphaShort = shortName; 5499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mOperatorNumeric = numeric; 5509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 552e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville /** 553390de220248d05ccb9dc10a197700ad3c1595937Jake Hamby * In CDMA, mOperatorAlphaLong can be set from the ERI text. 554390de220248d05ccb9dc10a197700ad3c1595937Jake Hamby * This is done from the CDMAPhone and not from the CdmaServiceStateTracker. 555e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville * 556e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville * @hide 557e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville */ 558c91c7f92c9d2da557d4187fa24519f1dc1f1e2ecKazuhiro Ondo public void setOperatorAlphaLong(String longName) { 559e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville mOperatorAlphaLong = longName; 560e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville } 561e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 5629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setIsManualSelection(boolean isManual) { 5639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mIsManualNetworkSelection = isManual; 5649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 565767a662ecde33c3979bf02b793d392aca0403162Wink Saville 5669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 567390de220248d05ccb9dc10a197700ad3c1595937Jake Hamby * Test whether two objects hold the same data values or both are null. 5689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 5699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param a first obj 5709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param b second obj 5719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return true if two objects equal or both are null 5729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private static boolean equalsHandlesNulls (Object a, Object b) { 5749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return (a == null) ? (b == null) : a.equals (b); 5759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 578390de220248d05ccb9dc10a197700ad3c1595937Jake Hamby * Set ServiceState based on intent notifier map. 5799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 5809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param m intent notifier map 5819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @hide 5829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private void setFromNotifierBundle(Bundle m) { 5849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mState = m.getInt("state"); 5859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRoaming = m.getBoolean("roaming"); 5869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mOperatorAlphaLong = m.getString("operator-alpha-long"); 5879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mOperatorAlphaShort = m.getString("operator-alpha-short"); 5889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mOperatorNumeric = m.getString("operator-numeric"); 5899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mIsManualNetworkSelection = m.getBoolean("manual"); 590767a662ecde33c3979bf02b793d392aca0403162Wink Saville mRadioTechnology = m.getInt("radioTechnology"); 591767a662ecde33c3979bf02b793d392aca0403162Wink Saville mCssIndicator = m.getBoolean("cssIndicator"); 592767a662ecde33c3979bf02b793d392aca0403162Wink Saville mNetworkId = m.getInt("networkId"); 593767a662ecde33c3979bf02b793d392aca0403162Wink Saville mSystemId = m.getInt("systemId"); 594e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville mCdmaRoamingIndicator = m.getInt("cdmaRoamingIndicator"); 595e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville mCdmaDefaultRoamingIndicator = m.getInt("cdmaDefaultRoamingIndicator"); 59656c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang mIsEmergencyOnly = m.getBoolean("emergencyOnly"); 5979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 600390de220248d05ccb9dc10a197700ad3c1595937Jake Hamby * Set intent notifier Bundle based on service state. 6019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 6029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param m intent notifier Bundle 6039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @hide 6049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 6059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void fillInNotifierBundle(Bundle m) { 6069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m.putInt("state", mState); 6079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m.putBoolean("roaming", Boolean.valueOf(mRoaming)); 6089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m.putString("operator-alpha-long", mOperatorAlphaLong); 6099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m.putString("operator-alpha-short", mOperatorAlphaShort); 6109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m.putString("operator-numeric", mOperatorNumeric); 6119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m.putBoolean("manual", Boolean.valueOf(mIsManualNetworkSelection)); 612767a662ecde33c3979bf02b793d392aca0403162Wink Saville m.putInt("radioTechnology", mRadioTechnology); 613767a662ecde33c3979bf02b793d392aca0403162Wink Saville m.putBoolean("cssIndicator", mCssIndicator); 614767a662ecde33c3979bf02b793d392aca0403162Wink Saville m.putInt("networkId", mNetworkId); 615767a662ecde33c3979bf02b793d392aca0403162Wink Saville m.putInt("systemId", mSystemId); 616e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville m.putInt("cdmaRoamingIndicator", mCdmaRoamingIndicator); 617e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville m.putInt("cdmaDefaultRoamingIndicator", mCdmaDefaultRoamingIndicator); 61856c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang m.putBoolean("emergencyOnly", Boolean.valueOf(mIsEmergencyOnly)); 619767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 620767a662ecde33c3979bf02b793d392aca0403162Wink Saville 621767a662ecde33c3979bf02b793d392aca0403162Wink Saville //***** CDMA 622767a662ecde33c3979bf02b793d392aca0403162Wink Saville /** @hide */ 623767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void setRadioTechnology(int state) { 624767a662ecde33c3979bf02b793d392aca0403162Wink Saville this.mRadioTechnology = state; 625767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 626767a662ecde33c3979bf02b793d392aca0403162Wink Saville 627767a662ecde33c3979bf02b793d392aca0403162Wink Saville /** @hide */ 628767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void setCssIndicator(int css) { 629767a662ecde33c3979bf02b793d392aca0403162Wink Saville this.mCssIndicator = (css != 0); 630767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 631767a662ecde33c3979bf02b793d392aca0403162Wink Saville 632767a662ecde33c3979bf02b793d392aca0403162Wink Saville /** @hide */ 633767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void setSystemAndNetworkId(int systemId, int networkId) { 634767a662ecde33c3979bf02b793d392aca0403162Wink Saville this.mSystemId = systemId; 635767a662ecde33c3979bf02b793d392aca0403162Wink Saville this.mNetworkId = networkId; 636767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 637767a662ecde33c3979bf02b793d392aca0403162Wink Saville 638767a662ecde33c3979bf02b793d392aca0403162Wink Saville /** @hide */ 639767a662ecde33c3979bf02b793d392aca0403162Wink Saville public int getRadioTechnology() { 640767a662ecde33c3979bf02b793d392aca0403162Wink Saville return this.mRadioTechnology; 641767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 642767a662ecde33c3979bf02b793d392aca0403162Wink Saville 643767a662ecde33c3979bf02b793d392aca0403162Wink Saville /** @hide */ 644767a662ecde33c3979bf02b793d392aca0403162Wink Saville public int getCssIndicator() { 645767a662ecde33c3979bf02b793d392aca0403162Wink Saville return this.mCssIndicator ? 1 : 0; 646767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 647767a662ecde33c3979bf02b793d392aca0403162Wink Saville 648767a662ecde33c3979bf02b793d392aca0403162Wink Saville /** @hide */ 649767a662ecde33c3979bf02b793d392aca0403162Wink Saville public int getNetworkId() { 650767a662ecde33c3979bf02b793d392aca0403162Wink Saville return this.mNetworkId; 651767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 652767a662ecde33c3979bf02b793d392aca0403162Wink Saville 653767a662ecde33c3979bf02b793d392aca0403162Wink Saville /** @hide */ 654767a662ecde33c3979bf02b793d392aca0403162Wink Saville public int getSystemId() { 655767a662ecde33c3979bf02b793d392aca0403162Wink Saville return this.mSystemId; 6569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 658