ServiceState.java revision 56c2d2ff27536a1d8edf0037cd41ff3ea3272fd9
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 /** 609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Radio of telephony is explictly 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; 92767a662ecde33c3979bf02b793d392aca0403162Wink Saville 93767a662ecde33c3979bf02b793d392aca0403162Wink Saville /** 94767a662ecde33c3979bf02b793d392aca0403162Wink Saville * Available registration states for GSM, UMTS and CDMA. 95767a662ecde33c3979bf02b793d392aca0403162Wink Saville */ 96767a662ecde33c3979bf02b793d392aca0403162Wink Saville /** @hide */ 97767a662ecde33c3979bf02b793d392aca0403162Wink Saville public static final int REGISTRATION_STATE_NOT_REGISTERED_AND_NOT_SEARCHING = 0; 98767a662ecde33c3979bf02b793d392aca0403162Wink Saville /** @hide */ 99767a662ecde33c3979bf02b793d392aca0403162Wink Saville public static final int REGISTRATION_STATE_HOME_NETWORK = 1; 100767a662ecde33c3979bf02b793d392aca0403162Wink Saville /** @hide */ 101767a662ecde33c3979bf02b793d392aca0403162Wink Saville public static final int REGISTRATION_STATE_NOT_REGISTERED_AND_SEARCHING = 2; 102767a662ecde33c3979bf02b793d392aca0403162Wink Saville /** @hide */ 103767a662ecde33c3979bf02b793d392aca0403162Wink Saville public static final int REGISTRATION_STATE_REGISTRATION_DENIED = 3; 104767a662ecde33c3979bf02b793d392aca0403162Wink Saville /** @hide */ 105767a662ecde33c3979bf02b793d392aca0403162Wink Saville public static final int REGISTRATION_STATE_UNKNOWN = 4; 106767a662ecde33c3979bf02b793d392aca0403162Wink Saville /** @hide */ 107767a662ecde33c3979bf02b793d392aca0403162Wink Saville public static final int REGISTRATION_STATE_ROAMING = 5; 108767a662ecde33c3979bf02b793d392aca0403162Wink Saville 1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private int mState = STATE_OUT_OF_SERVICE; 1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private boolean mRoaming; 1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private String mOperatorAlphaLong; 1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private String mOperatorAlphaShort; 1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private String mOperatorNumeric; 1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private boolean mIsManualNetworkSelection; 1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11656c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang private boolean mIsEmergencyOnly; 11756c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang 118767a662ecde33c3979bf02b793d392aca0403162Wink Saville //***** CDMA 119767a662ecde33c3979bf02b793d392aca0403162Wink Saville private int mRadioTechnology; 120767a662ecde33c3979bf02b793d392aca0403162Wink Saville private boolean mCssIndicator; 121767a662ecde33c3979bf02b793d392aca0403162Wink Saville private int mNetworkId; 122767a662ecde33c3979bf02b793d392aca0403162Wink Saville private int mSystemId; 123e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville private int mCdmaRoamingIndicator; 124e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville private int mCdmaDefaultRoamingIndicator; 12598e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt private int mCdmaEriIconIndex; 12698e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt private int mCdmaEriIconMode; 127767a662ecde33c3979bf02b793d392aca0403162Wink Saville 1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Create a new ServiceState from a intent notifier Bundle 1309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * This method is used by PhoneStateIntentReceiver and maybe by 1329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * external applications. 1339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param m Bundle from intent notifier 1359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return newly created ServiceState 1369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @hide 1379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static ServiceState newFromBundle(Bundle m) { 1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ServiceState ret; 1409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ret = new ServiceState(); 1419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ret.setFromNotifierBundle(m); 1429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return ret; 1439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Empty constructor 1479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public ServiceState() { 1499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copy constructors 1539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param s Source service state 1559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public ServiceState(ServiceState s) { 1579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project copyFrom(s); 1589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project protected void copyFrom(ServiceState s) { 1619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mState = s.mState; 1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRoaming = s.mRoaming; 1639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mOperatorAlphaLong = s.mOperatorAlphaLong; 1649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mOperatorAlphaShort = s.mOperatorAlphaShort; 1659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mOperatorNumeric = s.mOperatorNumeric; 1669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mIsManualNetworkSelection = s.mIsManualNetworkSelection; 167767a662ecde33c3979bf02b793d392aca0403162Wink Saville mRadioTechnology = s.mRadioTechnology; 168767a662ecde33c3979bf02b793d392aca0403162Wink Saville mCssIndicator = s.mCssIndicator; 169767a662ecde33c3979bf02b793d392aca0403162Wink Saville mNetworkId = s.mNetworkId; 170767a662ecde33c3979bf02b793d392aca0403162Wink Saville mSystemId = s.mSystemId; 171e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville mCdmaRoamingIndicator = s.mCdmaRoamingIndicator; 172e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville mCdmaDefaultRoamingIndicator = s.mCdmaDefaultRoamingIndicator; 17398e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt mCdmaEriIconIndex = s.mCdmaEriIconIndex; 17498e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt mCdmaEriIconMode = s.mCdmaEriIconMode; 17556c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang mIsEmergencyOnly = s.mIsEmergencyOnly; 1769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Construct a ServiceState object from the given parcel. 1809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public ServiceState(Parcel in) { 1829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mState = in.readInt(); 1839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRoaming = in.readInt() != 0; 1849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mOperatorAlphaLong = in.readString(); 1859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mOperatorAlphaShort = in.readString(); 1869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mOperatorNumeric = in.readString(); 1879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mIsManualNetworkSelection = in.readInt() != 0; 188767a662ecde33c3979bf02b793d392aca0403162Wink Saville mRadioTechnology = in.readInt(); 189767a662ecde33c3979bf02b793d392aca0403162Wink Saville mCssIndicator = (in.readInt() != 0); 190767a662ecde33c3979bf02b793d392aca0403162Wink Saville mNetworkId = in.readInt(); 191767a662ecde33c3979bf02b793d392aca0403162Wink Saville mSystemId = in.readInt(); 192e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville mCdmaRoamingIndicator = in.readInt(); 193e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville mCdmaDefaultRoamingIndicator = in.readInt(); 19498e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt mCdmaEriIconIndex = in.readInt(); 19598e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt mCdmaEriIconMode = in.readInt(); 19656c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang mIsEmergencyOnly = in.readInt() != 0; 1979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void writeToParcel(Parcel out, int flags) { 2009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project out.writeInt(mState); 2019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project out.writeInt(mRoaming ? 1 : 0); 2029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project out.writeString(mOperatorAlphaLong); 2039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project out.writeString(mOperatorAlphaShort); 2049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project out.writeString(mOperatorNumeric); 2059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project out.writeInt(mIsManualNetworkSelection ? 1 : 0); 206767a662ecde33c3979bf02b793d392aca0403162Wink Saville out.writeInt(mRadioTechnology); 207767a662ecde33c3979bf02b793d392aca0403162Wink Saville out.writeInt(mCssIndicator ? 1 : 0); 208767a662ecde33c3979bf02b793d392aca0403162Wink Saville out.writeInt(mNetworkId); 209767a662ecde33c3979bf02b793d392aca0403162Wink Saville out.writeInt(mSystemId); 210e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville out.writeInt(mCdmaRoamingIndicator); 211e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville out.writeInt(mCdmaDefaultRoamingIndicator); 21298e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt out.writeInt(mCdmaEriIconIndex); 21398e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt out.writeInt(mCdmaEriIconMode); 21456c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang out.writeInt(mIsEmergencyOnly ? 1 : 0); 2159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int describeContents() { 2189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return 0; 2199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final Parcelable.Creator<ServiceState> CREATOR = new Parcelable.Creator() { 2229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public ServiceState createFromParcel(Parcel in) { 2239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return new ServiceState(in); 2249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public ServiceState[] newArray(int size) { 2279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return new ServiceState[size]; 2289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project }; 2309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Get current servcie state of phone 2339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 2349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #STATE_IN_SERVICE 2359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #STATE_OUT_OF_SERVICE 2369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #STATE_EMERGENCY_ONLY 2379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #STATE_POWER_OFF 2389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int getState() { 2409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mState; 2419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Get current roaming indicator of phone 2459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * (note: not just decoding from TS 27.007 7.2) 2469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 2479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return true if TS 27.007 7.2 roaming is true 2489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * and ONS is different from SPN 2499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 2509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean getRoaming() { 2529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mRoaming; 2539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 255e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville /** 256e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville * @hide 257e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville */ 25856c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang public boolean isEmergencyOnly() { 25956c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang return mIsEmergencyOnly; 26056c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang } 26156c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang 26256c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang /** 26356c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang * @hide 26456c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang */ 265e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville public int getCdmaRoamingIndicator(){ 266e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville return this.mCdmaRoamingIndicator; 267e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville } 268e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 269e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville /** 270e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville * @hide 271e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville */ 272e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville public int getCdmaDefaultRoamingIndicator(){ 273e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville return this.mCdmaDefaultRoamingIndicator; 274767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 275767a662ecde33c3979bf02b793d392aca0403162Wink Saville 2769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 27798e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt * @hide 27898e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt */ 27998e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt public int getCdmaEriIconIndex() { 28098e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt return this.mCdmaEriIconIndex; 28198e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt } 28298e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt 28398e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt /** 28498e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt * @hide 28598e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt */ 28698e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt public int getCdmaEriIconMode() { 28798e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt return this.mCdmaEriIconMode; 28898e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt } 28998e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt 29098e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt /** 2919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Get current registered operator name in long alphanumeric format 2929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 2939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * In GSM/UMTS, long format can be upto 16 characters long 294e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville * In CDMA, returns the ERI text, if set, otherwise the ONS 2959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 2969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return long name of operator, null if unregistered or unknown 2979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String getOperatorAlphaLong() { 2999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mOperatorAlphaLong; 3009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 3039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Get current registered operator name in short lphanumeric format 3049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 3059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * In GSM/UMST, short format can be upto 8 characters long 3069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 3079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return short name of operator, null if unregistered or unknown 3089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 3099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String getOperatorAlphaShort() { 3109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mOperatorAlphaShort; 3119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 3149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Get current registered operator numeric id 3159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 3169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * In GSM/UMTS, numeric format is 3 digit country code plus 2 or 3 digit 3179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * network code 3189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 3199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The country code can be decoded using MccTable.countryCodeForMcc() 3209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 3219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return numeric format of operator, null if unregistered or unknown 3229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 3239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String getOperatorNumeric() { 3249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mOperatorNumeric; 3259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 3289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Get current network selection mode 3299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 3309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return true if manual mode, false if automatic mode 3319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 3329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean getIsManualSelection() { 3339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mIsManualNetworkSelection; 3349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override 3379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int hashCode() { 338767a662ecde33c3979bf02b793d392aca0403162Wink Saville return ((mState * 0x1234) 3399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + (mRoaming ? 1 : 0) 3409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + (mIsManualNetworkSelection ? 1 : 0) 3419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + ((null == mOperatorAlphaLong) ? 0 : mOperatorAlphaLong.hashCode()) 3429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + ((null == mOperatorAlphaShort) ? 0 : mOperatorAlphaShort.hashCode()) 343767a662ecde33c3979bf02b793d392aca0403162Wink Saville + ((null == mOperatorNumeric) ? 0 : mOperatorNumeric.hashCode()) 344e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville + mCdmaRoamingIndicator 34556c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang + mCdmaDefaultRoamingIndicator 34656c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang + (mIsEmergencyOnly ? 1 : 0)); 3479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override 3509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean equals (Object o) { 3519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ServiceState s; 352767a662ecde33c3979bf02b793d392aca0403162Wink Saville 3539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 3549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project s = (ServiceState) o; 3559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (ClassCastException ex) { 3569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return false; 3579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (o == null) { 3609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return false; 3619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 363767a662ecde33c3979bf02b793d392aca0403162Wink Saville return (mState == s.mState 3649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project && mRoaming == s.mRoaming 3659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project && mIsManualNetworkSelection == s.mIsManualNetworkSelection 3669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project && equalsHandlesNulls(mOperatorAlphaLong, s.mOperatorAlphaLong) 3679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project && equalsHandlesNulls(mOperatorAlphaShort, s.mOperatorAlphaShort) 368767a662ecde33c3979bf02b793d392aca0403162Wink Saville && equalsHandlesNulls(mOperatorNumeric, s.mOperatorNumeric) 369767a662ecde33c3979bf02b793d392aca0403162Wink Saville && equalsHandlesNulls(mRadioTechnology, s.mRadioTechnology) 370767a662ecde33c3979bf02b793d392aca0403162Wink Saville && equalsHandlesNulls(mCssIndicator, s.mCssIndicator) 371767a662ecde33c3979bf02b793d392aca0403162Wink Saville && equalsHandlesNulls(mNetworkId, s.mNetworkId) 372767a662ecde33c3979bf02b793d392aca0403162Wink Saville && equalsHandlesNulls(mSystemId, s.mSystemId) 373e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville && equalsHandlesNulls(mCdmaRoamingIndicator, s.mCdmaRoamingIndicator) 374e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville && equalsHandlesNulls(mCdmaDefaultRoamingIndicator, 37556c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang s.mCdmaDefaultRoamingIndicator) 37656c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang && mIsEmergencyOnly == s.mIsEmergencyOnly); 3779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override 3809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String toString() { 381767a662ecde33c3979bf02b793d392aca0403162Wink Saville String radioTechnology = new String("Error in radioTechnology"); 382767a662ecde33c3979bf02b793d392aca0403162Wink Saville 383767a662ecde33c3979bf02b793d392aca0403162Wink Saville switch(this.mRadioTechnology) { 384767a662ecde33c3979bf02b793d392aca0403162Wink Saville case 0: 385767a662ecde33c3979bf02b793d392aca0403162Wink Saville radioTechnology = "Unknown"; 386767a662ecde33c3979bf02b793d392aca0403162Wink Saville break; 387767a662ecde33c3979bf02b793d392aca0403162Wink Saville case 1: 388767a662ecde33c3979bf02b793d392aca0403162Wink Saville radioTechnology = "GPRS"; 389767a662ecde33c3979bf02b793d392aca0403162Wink Saville break; 390767a662ecde33c3979bf02b793d392aca0403162Wink Saville case 2: 391767a662ecde33c3979bf02b793d392aca0403162Wink Saville radioTechnology = "EDGE"; 392767a662ecde33c3979bf02b793d392aca0403162Wink Saville break; 393767a662ecde33c3979bf02b793d392aca0403162Wink Saville case 3: 394767a662ecde33c3979bf02b793d392aca0403162Wink Saville radioTechnology = "UMTS"; 395767a662ecde33c3979bf02b793d392aca0403162Wink Saville break; 396767a662ecde33c3979bf02b793d392aca0403162Wink Saville case 4: 397767a662ecde33c3979bf02b793d392aca0403162Wink Saville radioTechnology = "IS95A"; 398767a662ecde33c3979bf02b793d392aca0403162Wink Saville break; 399767a662ecde33c3979bf02b793d392aca0403162Wink Saville case 5: 400767a662ecde33c3979bf02b793d392aca0403162Wink Saville radioTechnology = "IS95B"; 401767a662ecde33c3979bf02b793d392aca0403162Wink Saville break; 402767a662ecde33c3979bf02b793d392aca0403162Wink Saville case 6: 403767a662ecde33c3979bf02b793d392aca0403162Wink Saville radioTechnology = "1xRTT"; 404767a662ecde33c3979bf02b793d392aca0403162Wink Saville break; 405767a662ecde33c3979bf02b793d392aca0403162Wink Saville case 7: 406767a662ecde33c3979bf02b793d392aca0403162Wink Saville radioTechnology = "EvDo rev. 0"; 407767a662ecde33c3979bf02b793d392aca0403162Wink Saville break; 408767a662ecde33c3979bf02b793d392aca0403162Wink Saville case 8: 409767a662ecde33c3979bf02b793d392aca0403162Wink Saville radioTechnology = "EvDo rev. A"; 410767a662ecde33c3979bf02b793d392aca0403162Wink Saville break; 411ebe66345e7099ca6fc95e8aa4d31a5b5cbbd6224Li Zhe case 9: 412ebe66345e7099ca6fc95e8aa4d31a5b5cbbd6224Li Zhe radioTechnology = "HSDPA"; 413ebe66345e7099ca6fc95e8aa4d31a5b5cbbd6224Li Zhe break; 414ebe66345e7099ca6fc95e8aa4d31a5b5cbbd6224Li Zhe case 10: 415ebe66345e7099ca6fc95e8aa4d31a5b5cbbd6224Li Zhe radioTechnology = "HSUPA"; 416ebe66345e7099ca6fc95e8aa4d31a5b5cbbd6224Li Zhe break; 417ebe66345e7099ca6fc95e8aa4d31a5b5cbbd6224Li Zhe case 11: 418ebe66345e7099ca6fc95e8aa4d31a5b5cbbd6224Li Zhe radioTechnology = "HSPA"; 419ebe66345e7099ca6fc95e8aa4d31a5b5cbbd6224Li Zhe break; 420767a662ecde33c3979bf02b793d392aca0403162Wink Saville default: 421767a662ecde33c3979bf02b793d392aca0403162Wink Saville Log.w(LOG_TAG, "mRadioTechnology variable out of range."); 422767a662ecde33c3979bf02b793d392aca0403162Wink Saville break; 423767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 424767a662ecde33c3979bf02b793d392aca0403162Wink Saville 425767a662ecde33c3979bf02b793d392aca0403162Wink Saville return (mState + " " + (mRoaming ? "roaming" : "home") 4269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + " " + mOperatorAlphaLong 4279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + " " + mOperatorAlphaShort 4289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + " " + mOperatorNumeric 429767a662ecde33c3979bf02b793d392aca0403162Wink Saville + " " + (mIsManualNetworkSelection ? "(manual)" : "") 430767a662ecde33c3979bf02b793d392aca0403162Wink Saville + " " + radioTechnology 431767a662ecde33c3979bf02b793d392aca0403162Wink Saville + " " + (mCssIndicator ? "CSS supported" : "CSS not supported") 432e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville + " " + mNetworkId 433e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville + " " + mSystemId 434e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville + "RoamInd: " + mCdmaRoamingIndicator 43556c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang + "DefRoamInd: " + mCdmaDefaultRoamingIndicator 43656c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang + "EmergOnly: " + mIsEmergencyOnly); 4379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setStateOutOfService() { 4409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mState = STATE_OUT_OF_SERVICE; 4419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRoaming = false; 4429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mOperatorAlphaLong = null; 4439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mOperatorAlphaShort = null; 4449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mOperatorNumeric = null; 4459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mIsManualNetworkSelection = false; 446767a662ecde33c3979bf02b793d392aca0403162Wink Saville mRadioTechnology = 0; 447767a662ecde33c3979bf02b793d392aca0403162Wink Saville mCssIndicator = false; 448767a662ecde33c3979bf02b793d392aca0403162Wink Saville mNetworkId = -1; 449767a662ecde33c3979bf02b793d392aca0403162Wink Saville mSystemId = -1; 450e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville mCdmaRoamingIndicator = -1; 451e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville mCdmaDefaultRoamingIndicator = -1; 45298e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt mCdmaEriIconIndex = -1; 45398e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt mCdmaEriIconMode = -1; 45456c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang mIsEmergencyOnly = false; 4559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 45798e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt // TODO - can't this be combined with the above func.. 4589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setStateOff() { 4599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mState = STATE_POWER_OFF; 4609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRoaming = false; 4619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mOperatorAlphaLong = null; 4629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mOperatorAlphaShort = null; 4639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mOperatorNumeric = null; 4649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mIsManualNetworkSelection = false; 465767a662ecde33c3979bf02b793d392aca0403162Wink Saville mRadioTechnology = 0; 466767a662ecde33c3979bf02b793d392aca0403162Wink Saville mCssIndicator = false; 467767a662ecde33c3979bf02b793d392aca0403162Wink Saville mNetworkId = -1; 468767a662ecde33c3979bf02b793d392aca0403162Wink Saville mSystemId = -1; 469e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville mCdmaRoamingIndicator = -1; 470e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville mCdmaDefaultRoamingIndicator = -1; 47198e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt mCdmaEriIconIndex = -1; 47298e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt mCdmaEriIconMode = -1; 47356c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang mIsEmergencyOnly = false; 4749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setState(int state) { 4779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mState = state; 4789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setRoaming(boolean roaming) { 4819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRoaming = roaming; 4829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 48456c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang 48556c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang /** 48656c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang * @hide 48756c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang */ 48856c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang public void setEmergencyOnly(boolean emergencyOnly) { 48956c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang mIsEmergencyOnly = emergencyOnly; 49056c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang } 49156c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang 492e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville /** 493e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville * @hide 494e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville */ 495e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville public void setCdmaRoamingIndicator(int roaming) { 496e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville this.mCdmaRoamingIndicator = roaming; 497e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville } 498e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 499e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville /** 500e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville * @hide 501e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville */ 502e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville public void setCdmaDefaultRoamingIndicator (int roaming) { 503e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville this.mCdmaDefaultRoamingIndicator = roaming; 504767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 505767a662ecde33c3979bf02b793d392aca0403162Wink Saville 50698e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt /** 50798e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt * @hide 50898e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt */ 50998e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt public void setCdmaEriIconIndex(int index) { 51098e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt this.mCdmaEriIconIndex = index; 51198e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt } 51298e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt 51398e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt /** 51498e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt * @hide 51598e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt */ 51698e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt public void setCdmaEriIconMode(int mode) { 51798e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt this.mCdmaEriIconMode = mode; 51898e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt } 51998e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt 5209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setOperatorName(String longName, String shortName, String numeric) { 5219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mOperatorAlphaLong = longName; 5229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mOperatorAlphaShort = shortName; 5239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mOperatorNumeric = numeric; 5249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 526e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville /** 527e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville * In CDMA mOperatorAlphaLong can be set from the ERI 528e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville * text, this is done from the CDMAPhone and not from the CdmaServiceStateTracker 529e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville * 530e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville * @hide 531e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville */ 532e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville public void setCdmaEriText(String longName) { 533e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville mOperatorAlphaLong = longName; 534e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville } 535e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 5369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setIsManualSelection(boolean isManual) { 5379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mIsManualNetworkSelection = isManual; 5389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 539767a662ecde33c3979bf02b793d392aca0403162Wink Saville 5409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Test whether two objects hold the same data values or both are null 5429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 5439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param a first obj 5449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param b second obj 5459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return true if two objects equal or both are null 5469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private static boolean equalsHandlesNulls (Object a, Object b) { 5489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return (a == null) ? (b == null) : a.equals (b); 5499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set ServiceState based on intent notifier map 5539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 5549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param m intent notifier map 5559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @hide 5569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private void setFromNotifierBundle(Bundle m) { 5589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mState = m.getInt("state"); 5599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRoaming = m.getBoolean("roaming"); 5609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mOperatorAlphaLong = m.getString("operator-alpha-long"); 5619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mOperatorAlphaShort = m.getString("operator-alpha-short"); 5629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mOperatorNumeric = m.getString("operator-numeric"); 5639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mIsManualNetworkSelection = m.getBoolean("manual"); 564767a662ecde33c3979bf02b793d392aca0403162Wink Saville mRadioTechnology = m.getInt("radioTechnology"); 565767a662ecde33c3979bf02b793d392aca0403162Wink Saville mCssIndicator = m.getBoolean("cssIndicator"); 566767a662ecde33c3979bf02b793d392aca0403162Wink Saville mNetworkId = m.getInt("networkId"); 567767a662ecde33c3979bf02b793d392aca0403162Wink Saville mSystemId = m.getInt("systemId"); 568e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville mCdmaRoamingIndicator = m.getInt("cdmaRoamingIndicator"); 569e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville mCdmaDefaultRoamingIndicator = m.getInt("cdmaDefaultRoamingIndicator"); 57056c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang mIsEmergencyOnly = m.getBoolean("emergencyOnly"); 5719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set intent notifier Bundle based on service state 5759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 5769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param m intent notifier Bundle 5779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @hide 5789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void fillInNotifierBundle(Bundle m) { 5809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m.putInt("state", mState); 5819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m.putBoolean("roaming", Boolean.valueOf(mRoaming)); 5829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m.putString("operator-alpha-long", mOperatorAlphaLong); 5839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m.putString("operator-alpha-short", mOperatorAlphaShort); 5849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m.putString("operator-numeric", mOperatorNumeric); 5859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m.putBoolean("manual", Boolean.valueOf(mIsManualNetworkSelection)); 586767a662ecde33c3979bf02b793d392aca0403162Wink Saville m.putInt("radioTechnology", mRadioTechnology); 587767a662ecde33c3979bf02b793d392aca0403162Wink Saville m.putBoolean("cssIndicator", mCssIndicator); 588767a662ecde33c3979bf02b793d392aca0403162Wink Saville m.putInt("networkId", mNetworkId); 589767a662ecde33c3979bf02b793d392aca0403162Wink Saville m.putInt("systemId", mSystemId); 590e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville m.putInt("cdmaRoamingIndicator", mCdmaRoamingIndicator); 591e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville m.putInt("cdmaDefaultRoamingIndicator", mCdmaDefaultRoamingIndicator); 59256c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang m.putBoolean("emergencyOnly", Boolean.valueOf(mIsEmergencyOnly)); 593767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 594767a662ecde33c3979bf02b793d392aca0403162Wink Saville 595767a662ecde33c3979bf02b793d392aca0403162Wink Saville //***** CDMA 596767a662ecde33c3979bf02b793d392aca0403162Wink Saville /** @hide */ 597767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void setRadioTechnology(int state) { 598767a662ecde33c3979bf02b793d392aca0403162Wink Saville this.mRadioTechnology = state; 599767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 600767a662ecde33c3979bf02b793d392aca0403162Wink Saville 601767a662ecde33c3979bf02b793d392aca0403162Wink Saville /** @hide */ 602767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void setCssIndicator(int css) { 603767a662ecde33c3979bf02b793d392aca0403162Wink Saville this.mCssIndicator = (css != 0); 604767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 605767a662ecde33c3979bf02b793d392aca0403162Wink Saville 606767a662ecde33c3979bf02b793d392aca0403162Wink Saville /** @hide */ 607767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void setSystemAndNetworkId(int systemId, int networkId) { 608767a662ecde33c3979bf02b793d392aca0403162Wink Saville this.mSystemId = systemId; 609767a662ecde33c3979bf02b793d392aca0403162Wink Saville this.mNetworkId = networkId; 610767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 611767a662ecde33c3979bf02b793d392aca0403162Wink Saville 612767a662ecde33c3979bf02b793d392aca0403162Wink Saville /** @hide */ 613767a662ecde33c3979bf02b793d392aca0403162Wink Saville public int getRadioTechnology() { 614767a662ecde33c3979bf02b793d392aca0403162Wink Saville return this.mRadioTechnology; 615767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 616767a662ecde33c3979bf02b793d392aca0403162Wink Saville 617767a662ecde33c3979bf02b793d392aca0403162Wink Saville /** @hide */ 618767a662ecde33c3979bf02b793d392aca0403162Wink Saville public int getCssIndicator() { 619767a662ecde33c3979bf02b793d392aca0403162Wink Saville return this.mCssIndicator ? 1 : 0; 620767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 621767a662ecde33c3979bf02b793d392aca0403162Wink Saville 622767a662ecde33c3979bf02b793d392aca0403162Wink Saville /** @hide */ 623767a662ecde33c3979bf02b793d392aca0403162Wink Saville public int getNetworkId() { 624767a662ecde33c3979bf02b793d392aca0403162Wink Saville return this.mNetworkId; 625767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 626767a662ecde33c3979bf02b793d392aca0403162Wink Saville 627767a662ecde33c3979bf02b793d392aca0403162Wink Saville /** @hide */ 628767a662ecde33c3979bf02b793d392aca0403162Wink Saville public int getSystemId() { 629767a662ecde33c3979bf02b793d392aca0403162Wink Saville return this.mSystemId; 6309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 632