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;
22599a90c2a02645a5f2d189b9065b863397a4076eWink Savilleimport android.telephony.Rlog;
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";
390dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville    static final boolean DBG = true;
40767a662ecde33c3979bf02b793d392aca0403162Wink Saville
419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Normal operation condition, the phone is registered
439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * with an operator either in home network or in roaming.
449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int STATE_IN_SERVICE = 0;
469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Phone is not registered with any operator, the phone
499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * can be currently searching a new operator to register to, or not
509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * searching to registration at all, or registration is denied, or radio
519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * signal is not available.
529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int STATE_OUT_OF_SERVICE = 1;
549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The phone is registered and locked.  Only emergency numbers are allowed. {@more}
579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int STATE_EMERGENCY_ONLY = 2;
599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
61390de220248d05ccb9dc10a197700ad3c1595937Jake Hamby     * Radio of telephony is explicitly powered off.
629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int STATE_POWER_OFF = 3;
649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
650dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville    /**
660dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville     * RIL level registration state values from ril.h
670dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville     * ((const char **)response)[0] is registration state 0-6,
680dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville     *              0 - Not registered, MT is not currently searching
690dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville     *                  a new operator to register
700dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville     *              1 - Registered, home network
710dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville     *              2 - Not registered, but MT is currently searching
720dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville     *                  a new operator to register
730dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville     *              3 - Registration denied
740dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville     *              4 - Unknown
750dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville     *              5 - Registered, roaming
760dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville     *             10 - Same as 0, but indicates that emergency calls
770dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville     *                  are enabled.
780dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville     *             12 - Same as 2, but indicates that emergency calls
790dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville     *                  are enabled.
800dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville     *             13 - Same as 3, but indicates that emergency calls
810dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville     *                  are enabled.
820dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville     *             14 - Same as 4, but indicates that emergency calls
830dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville     *                  are enabled.
840dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville     * @hide
850dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville     */
860dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville    public static final int RIL_REG_STATE_NOT_REG = 0;
870dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville    /** @hide */
880dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville    public static final int RIL_REG_STATE_HOME = 1;
890dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville    /** @hide */
900dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville    public static final int RIL_REG_STATE_SEARCHING = 2;
910dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville    /** @hide */
920dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville    public static final int RIL_REG_STATE_DENIED = 3;
930dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville    /** @hide */
940dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville    public static final int RIL_REG_STATE_UNKNOWN = 4;
950dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville    /** @hide */
960dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville    public static final int RIL_REG_STATE_ROAMING = 5;
970dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville    /** @hide */
980dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville    public static final int RIL_REG_STATE_NOT_REG_EMERGENCY_CALL_ENABLED = 10;
990dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville    /** @hide */
1000dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville    public static final int RIL_REG_STATE_SEARCHING_EMERGENCY_CALL_ENABLED = 12;
1010dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville    /** @hide */
1020dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville    public static final int RIL_REG_STATE_DENIED_EMERGENCY_CALL_ENABLED = 13;
1030dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville    /** @hide */
1040dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville    public static final int RIL_REG_STATE_UNKNOWN_EMERGENCY_CALL_ENABLED = 14;
105767a662ecde33c3979bf02b793d392aca0403162Wink Saville
106767a662ecde33c3979bf02b793d392aca0403162Wink Saville    /**
107767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * Available radio technologies for GSM, UMTS and CDMA.
1081434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt     * Duplicates the constants from hardware/radio/include/ril.h
1091434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt     * This should only be used by agents working with the ril.  Others
1101434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt     * should use the equivalent TelephonyManager.NETWORK_TYPE_*
111767a662ecde33c3979bf02b793d392aca0403162Wink Saville     */
112767a662ecde33c3979bf02b793d392aca0403162Wink Saville    /** @hide */
1131434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt    public static final int RIL_RADIO_TECHNOLOGY_UNKNOWN = 0;
114767a662ecde33c3979bf02b793d392aca0403162Wink Saville    /** @hide */
1151434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt    public static final int RIL_RADIO_TECHNOLOGY_GPRS = 1;
116767a662ecde33c3979bf02b793d392aca0403162Wink Saville    /** @hide */
1171434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt    public static final int RIL_RADIO_TECHNOLOGY_EDGE = 2;
118767a662ecde33c3979bf02b793d392aca0403162Wink Saville    /** @hide */
1191434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt    public static final int RIL_RADIO_TECHNOLOGY_UMTS = 3;
120767a662ecde33c3979bf02b793d392aca0403162Wink Saville    /** @hide */
1211434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt    public static final int RIL_RADIO_TECHNOLOGY_IS95A = 4;
122767a662ecde33c3979bf02b793d392aca0403162Wink Saville    /** @hide */
1231434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt    public static final int RIL_RADIO_TECHNOLOGY_IS95B = 5;
124767a662ecde33c3979bf02b793d392aca0403162Wink Saville    /** @hide */
1251434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt    public static final int RIL_RADIO_TECHNOLOGY_1xRTT = 6;
126767a662ecde33c3979bf02b793d392aca0403162Wink Saville    /** @hide */
1271434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt    public static final int RIL_RADIO_TECHNOLOGY_EVDO_0 = 7;
128767a662ecde33c3979bf02b793d392aca0403162Wink Saville    /** @hide */
1291434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt    public static final int RIL_RADIO_TECHNOLOGY_EVDO_A = 8;
130ebe66345e7099ca6fc95e8aa4d31a5b5cbbd6224Li Zhe    /** @hide */
1311434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt    public static final int RIL_RADIO_TECHNOLOGY_HSDPA = 9;
132ebe66345e7099ca6fc95e8aa4d31a5b5cbbd6224Li Zhe    /** @hide */
1331434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt    public static final int RIL_RADIO_TECHNOLOGY_HSUPA = 10;
134ebe66345e7099ca6fc95e8aa4d31a5b5cbbd6224Li Zhe    /** @hide */
1351434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt    public static final int RIL_RADIO_TECHNOLOGY_HSPA = 11;
1360a5174a6e947d5cbeb8846a1273a90b6de065cbfNaveen Kalla    /** @hide */
1371434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt    public static final int RIL_RADIO_TECHNOLOGY_EVDO_B = 12;
1389d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville    /** @hide */
1391434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt    public static final int RIL_RADIO_TECHNOLOGY_EHRPD = 13;
1409d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville    /** @hide */
1411434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt    public static final int RIL_RADIO_TECHNOLOGY_LTE = 14;
142f57276154aaa587524374db8e0d7228383611bf3Ramesh Sudini    /** @hide */
1431434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt    public static final int RIL_RADIO_TECHNOLOGY_HSPAP = 15;
144fc2cbe9b46ab17a401dc50f8e0dbb677ed012299Naveen Kalla    /**
145fc2cbe9b46ab17a401dc50f8e0dbb677ed012299Naveen Kalla     * GSM radio technology only supports voice. It does not support data.
146fc2cbe9b46ab17a401dc50f8e0dbb677ed012299Naveen Kalla     * @hide
147fc2cbe9b46ab17a401dc50f8e0dbb677ed012299Naveen Kalla     */
1481434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt    public static final int RIL_RADIO_TECHNOLOGY_GSM = 16;
149767a662ecde33c3979bf02b793d392aca0403162Wink Saville
150767a662ecde33c3979bf02b793d392aca0403162Wink Saville    /**
151767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * Available registration states for GSM, UMTS and CDMA.
152767a662ecde33c3979bf02b793d392aca0403162Wink Saville     */
153767a662ecde33c3979bf02b793d392aca0403162Wink Saville    /** @hide */
154767a662ecde33c3979bf02b793d392aca0403162Wink Saville    public static final int REGISTRATION_STATE_NOT_REGISTERED_AND_NOT_SEARCHING = 0;
155767a662ecde33c3979bf02b793d392aca0403162Wink Saville    /** @hide */
156767a662ecde33c3979bf02b793d392aca0403162Wink Saville    public static final int REGISTRATION_STATE_HOME_NETWORK = 1;
157767a662ecde33c3979bf02b793d392aca0403162Wink Saville    /** @hide */
158767a662ecde33c3979bf02b793d392aca0403162Wink Saville    public static final int REGISTRATION_STATE_NOT_REGISTERED_AND_SEARCHING = 2;
159767a662ecde33c3979bf02b793d392aca0403162Wink Saville    /** @hide */
160767a662ecde33c3979bf02b793d392aca0403162Wink Saville    public static final int REGISTRATION_STATE_REGISTRATION_DENIED = 3;
161767a662ecde33c3979bf02b793d392aca0403162Wink Saville    /** @hide */
162767a662ecde33c3979bf02b793d392aca0403162Wink Saville    public static final int REGISTRATION_STATE_UNKNOWN = 4;
163767a662ecde33c3979bf02b793d392aca0403162Wink Saville    /** @hide */
164767a662ecde33c3979bf02b793d392aca0403162Wink Saville    public static final int REGISTRATION_STATE_ROAMING = 5;
165767a662ecde33c3979bf02b793d392aca0403162Wink Saville
1660dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville    private int mVoiceRegState = STATE_OUT_OF_SERVICE;
1670dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville    private int mDataRegState = STATE_OUT_OF_SERVICE;
1689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private boolean mRoaming;
1699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private String mOperatorAlphaLong;
1709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private String mOperatorAlphaShort;
1719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private String mOperatorNumeric;
1729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private boolean mIsManualNetworkSelection;
1739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
17456c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang    private boolean mIsEmergencyOnly;
17556c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang
1760dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville    private int mRilVoiceRadioTechnology;
1770dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville    private int mRilDataRadioTechnology;
1780dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville
179767a662ecde33c3979bf02b793d392aca0403162Wink Saville    private boolean mCssIndicator;
180767a662ecde33c3979bf02b793d392aca0403162Wink Saville    private int mNetworkId;
181767a662ecde33c3979bf02b793d392aca0403162Wink Saville    private int mSystemId;
182e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    private int mCdmaRoamingIndicator;
183e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    private int mCdmaDefaultRoamingIndicator;
18498e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt    private int mCdmaEriIconIndex;
18598e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt    private int mCdmaEriIconMode;
186767a662ecde33c3979bf02b793d392aca0403162Wink Saville
1879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Create a new ServiceState from a intent notifier Bundle
1899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * This method is used by PhoneStateIntentReceiver and maybe by
1919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * external applications.
1929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param m Bundle from intent notifier
1949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return newly created ServiceState
1959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @hide
1969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static ServiceState newFromBundle(Bundle m) {
1989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        ServiceState ret;
1999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        ret = new ServiceState();
2009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        ret.setFromNotifierBundle(m);
2019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return ret;
2029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Empty constructor
2069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public ServiceState() {
2089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Copy constructors
2129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
2139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param s Source service state
2149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public ServiceState(ServiceState s) {
2169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        copyFrom(s);
2179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    protected void copyFrom(ServiceState s) {
2200dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville        mVoiceRegState = s.mVoiceRegState;
2210dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville        mDataRegState = s.mDataRegState;
2229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mRoaming = s.mRoaming;
2239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mOperatorAlphaLong = s.mOperatorAlphaLong;
2249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mOperatorAlphaShort = s.mOperatorAlphaShort;
2259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mOperatorNumeric = s.mOperatorNumeric;
2269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mIsManualNetworkSelection = s.mIsManualNetworkSelection;
2270dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville        mRilVoiceRadioTechnology = s.mRilVoiceRadioTechnology;
2280dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville        mRilDataRadioTechnology = s.mRilDataRadioTechnology;
229767a662ecde33c3979bf02b793d392aca0403162Wink Saville        mCssIndicator = s.mCssIndicator;
230767a662ecde33c3979bf02b793d392aca0403162Wink Saville        mNetworkId = s.mNetworkId;
231767a662ecde33c3979bf02b793d392aca0403162Wink Saville        mSystemId = s.mSystemId;
232e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville        mCdmaRoamingIndicator = s.mCdmaRoamingIndicator;
233e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville        mCdmaDefaultRoamingIndicator = s.mCdmaDefaultRoamingIndicator;
23498e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt        mCdmaEriIconIndex = s.mCdmaEriIconIndex;
23598e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt        mCdmaEriIconMode = s.mCdmaEriIconMode;
23656c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang        mIsEmergencyOnly = s.mIsEmergencyOnly;
2379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Construct a ServiceState object from the given parcel.
2419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public ServiceState(Parcel in) {
2430dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville        mVoiceRegState = in.readInt();
2440dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville        mDataRegState = in.readInt();
2459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mRoaming = in.readInt() != 0;
2469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mOperatorAlphaLong = in.readString();
2479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mOperatorAlphaShort = in.readString();
2489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mOperatorNumeric = in.readString();
2499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mIsManualNetworkSelection = in.readInt() != 0;
2500dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville        mRilVoiceRadioTechnology = in.readInt();
2510dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville        mRilDataRadioTechnology = in.readInt();
252767a662ecde33c3979bf02b793d392aca0403162Wink Saville        mCssIndicator = (in.readInt() != 0);
253767a662ecde33c3979bf02b793d392aca0403162Wink Saville        mNetworkId = in.readInt();
254767a662ecde33c3979bf02b793d392aca0403162Wink Saville        mSystemId = in.readInt();
255e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville        mCdmaRoamingIndicator = in.readInt();
256e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville        mCdmaDefaultRoamingIndicator = in.readInt();
25798e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt        mCdmaEriIconIndex = in.readInt();
25898e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt        mCdmaEriIconMode = in.readInt();
25956c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang        mIsEmergencyOnly = in.readInt() != 0;
2609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void writeToParcel(Parcel out, int flags) {
2630dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville        out.writeInt(mVoiceRegState);
2640dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville        out.writeInt(mDataRegState);
2659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        out.writeInt(mRoaming ? 1 : 0);
2669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        out.writeString(mOperatorAlphaLong);
2679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        out.writeString(mOperatorAlphaShort);
2689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        out.writeString(mOperatorNumeric);
2699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        out.writeInt(mIsManualNetworkSelection ? 1 : 0);
2700dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville        out.writeInt(mRilVoiceRadioTechnology);
2710dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville        out.writeInt(mRilDataRadioTechnology);
272767a662ecde33c3979bf02b793d392aca0403162Wink Saville        out.writeInt(mCssIndicator ? 1 : 0);
273767a662ecde33c3979bf02b793d392aca0403162Wink Saville        out.writeInt(mNetworkId);
274767a662ecde33c3979bf02b793d392aca0403162Wink Saville        out.writeInt(mSystemId);
275e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville        out.writeInt(mCdmaRoamingIndicator);
276e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville        out.writeInt(mCdmaDefaultRoamingIndicator);
27798e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt        out.writeInt(mCdmaEriIconIndex);
27898e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt        out.writeInt(mCdmaEriIconMode);
27956c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang        out.writeInt(mIsEmergencyOnly ? 1 : 0);
2809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int describeContents() {
2839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return 0;
2849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
286390de220248d05ccb9dc10a197700ad3c1595937Jake Hamby    public static final Parcelable.Creator<ServiceState> CREATOR =
287390de220248d05ccb9dc10a197700ad3c1595937Jake Hamby            new Parcelable.Creator<ServiceState>() {
2889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        public ServiceState createFromParcel(Parcel in) {
2899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return new ServiceState(in);
2909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
2919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        public ServiceState[] newArray(int size) {
2939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return new ServiceState[size];
2949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
2959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    };
2969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2980dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville     * Get current voice service state
2990dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville     */
3000dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville    public int getState() {
3010dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville        return getVoiceRegState();
3020dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville    }
3030dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville
3040dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville    /**
3050dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville     * Get current voice service state
306b690ac3b27d9b782a23a5f9a82bb3421e88716e3Wink Saville     *
307b690ac3b27d9b782a23a5f9a82bb3421e88716e3Wink Saville     * @see #STATE_IN_SERVICE
308b690ac3b27d9b782a23a5f9a82bb3421e88716e3Wink Saville     * @see #STATE_OUT_OF_SERVICE
309b690ac3b27d9b782a23a5f9a82bb3421e88716e3Wink Saville     * @see #STATE_EMERGENCY_ONLY
310b690ac3b27d9b782a23a5f9a82bb3421e88716e3Wink Saville     * @see #STATE_POWER_OFF
3110dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville     *
3120dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville     * @hide
313b690ac3b27d9b782a23a5f9a82bb3421e88716e3Wink Saville     */
3140dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville    public int getVoiceRegState() {
3150dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville        return mVoiceRegState;
3160dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville    }
3170dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville
3180dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville    /**
3190dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville     * Get current data service state
3200dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville     *
3210dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville     * @see #STATE_IN_SERVICE
3220dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville     * @see #STATE_OUT_OF_SERVICE
3230dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville     * @see #STATE_EMERGENCY_ONLY
3240dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville     * @see #STATE_POWER_OFF
3250dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville     *
3260dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville     * @hide
3270dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville     */
3280dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville    public int getDataRegState() {
3290dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville        return mDataRegState;
3309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
3319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Get current roaming indicator of phone
3349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * (note: not just decoding from TS 27.007 7.2)
3359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return true if TS 27.007 7.2 roaming is true
3379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *              and ONS is different from SPN
3389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public boolean getRoaming() {
3419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mRoaming;
3429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
3439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
344e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    /**
345e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     * @hide
346e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     */
34756c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang    public boolean isEmergencyOnly() {
34856c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang        return mIsEmergencyOnly;
34956c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang    }
35056c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang
35156c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang    /**
35256c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang     * @hide
35356c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang     */
354e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    public int getCdmaRoamingIndicator(){
355e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville        return this.mCdmaRoamingIndicator;
356e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    }
357e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville
358e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    /**
359e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     * @hide
360e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     */
361e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    public int getCdmaDefaultRoamingIndicator(){
362e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville        return this.mCdmaDefaultRoamingIndicator;
363767a662ecde33c3979bf02b793d392aca0403162Wink Saville    }
364767a662ecde33c3979bf02b793d392aca0403162Wink Saville
3659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
36698e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt     * @hide
36798e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt     */
36898e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt    public int getCdmaEriIconIndex() {
36998e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt        return this.mCdmaEriIconIndex;
37098e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt    }
37198e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt
37298e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt    /**
37398e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt     * @hide
37498e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt     */
37598e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt    public int getCdmaEriIconMode() {
37698e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt        return this.mCdmaEriIconMode;
37798e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt    }
37898e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt
37998e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt    /**
380390de220248d05ccb9dc10a197700ad3c1595937Jake Hamby     * Get current registered operator name in long alphanumeric format.
3819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
382390de220248d05ccb9dc10a197700ad3c1595937Jake Hamby     * In GSM/UMTS, long format can be up to 16 characters long.
383390de220248d05ccb9dc10a197700ad3c1595937Jake Hamby     * In CDMA, returns the ERI text, if set. Otherwise, returns the ONS.
3849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return long name of operator, null if unregistered or unknown
3869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public String getOperatorAlphaLong() {
3889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mOperatorAlphaLong;
3899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
3909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
392390de220248d05ccb9dc10a197700ad3c1595937Jake Hamby     * Get current registered operator name in short alphanumeric format.
3939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
394390de220248d05ccb9dc10a197700ad3c1595937Jake Hamby     * In GSM/UMTS, short format can be up to 8 characters long.
3959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return short name of operator, null if unregistered or unknown
3979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public String getOperatorAlphaShort() {
3999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mOperatorAlphaShort;
4009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
4019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
403390de220248d05ccb9dc10a197700ad3c1595937Jake Hamby     * Get current registered operator numeric id.
4049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
4059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * In GSM/UMTS, numeric format is 3 digit country code plus 2 or 3 digit
406390de220248d05ccb9dc10a197700ad3c1595937Jake Hamby     * network code.
4079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
4089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return numeric format of operator, null if unregistered or unknown
4099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
410e25863c9093d3f60a1f6feab1d17d38946a8d020Jean-Baptiste Queru    /*
411390de220248d05ccb9dc10a197700ad3c1595937Jake Hamby     * The country code can be decoded using
412390de220248d05ccb9dc10a197700ad3c1595937Jake Hamby     * {@link com.android.internal.telephony.MccTable#countryCodeForMcc(int)}.
4139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public String getOperatorNumeric() {
4159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mOperatorNumeric;
4169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
4179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
419390de220248d05ccb9dc10a197700ad3c1595937Jake Hamby     * Get current network selection mode.
4209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
4219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return true if manual mode, false if automatic mode
4229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public boolean getIsManualSelection() {
4249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mIsManualNetworkSelection;
4259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
4269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @Override
4289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int hashCode() {
4290dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville        return ((mVoiceRegState * 31)
4300dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville                + (mDataRegState * 37)
4319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                + (mRoaming ? 1 : 0)
4329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                + (mIsManualNetworkSelection ? 1 : 0)
4339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                + ((null == mOperatorAlphaLong) ? 0 : mOperatorAlphaLong.hashCode())
4349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                + ((null == mOperatorAlphaShort) ? 0 : mOperatorAlphaShort.hashCode())
435767a662ecde33c3979bf02b793d392aca0403162Wink Saville                + ((null == mOperatorNumeric) ? 0 : mOperatorNumeric.hashCode())
436e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville                + mCdmaRoamingIndicator
43756c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang                + mCdmaDefaultRoamingIndicator
43856c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang                + (mIsEmergencyOnly ? 1 : 0));
4399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
4409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @Override
4429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public boolean equals (Object o) {
4439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        ServiceState s;
444767a662ecde33c3979bf02b793d392aca0403162Wink Saville
4459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        try {
4469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            s = (ServiceState) o;
4479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        } catch (ClassCastException ex) {
4489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return false;
4499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
4509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        if (o == null) {
4529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return false;
4539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
4549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4550dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville        return (mVoiceRegState == s.mVoiceRegState
4560dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville                && mDataRegState == s.mDataRegState
4579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                && mRoaming == s.mRoaming
4589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                && mIsManualNetworkSelection == s.mIsManualNetworkSelection
4599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                && equalsHandlesNulls(mOperatorAlphaLong, s.mOperatorAlphaLong)
4609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                && equalsHandlesNulls(mOperatorAlphaShort, s.mOperatorAlphaShort)
461767a662ecde33c3979bf02b793d392aca0403162Wink Saville                && equalsHandlesNulls(mOperatorNumeric, s.mOperatorNumeric)
4620dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville                && equalsHandlesNulls(mRilVoiceRadioTechnology, s.mRilVoiceRadioTechnology)
4630dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville                && equalsHandlesNulls(mRilDataRadioTechnology, s.mRilDataRadioTechnology)
464767a662ecde33c3979bf02b793d392aca0403162Wink Saville                && equalsHandlesNulls(mCssIndicator, s.mCssIndicator)
465767a662ecde33c3979bf02b793d392aca0403162Wink Saville                && equalsHandlesNulls(mNetworkId, s.mNetworkId)
466767a662ecde33c3979bf02b793d392aca0403162Wink Saville                && equalsHandlesNulls(mSystemId, s.mSystemId)
467e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville                && equalsHandlesNulls(mCdmaRoamingIndicator, s.mCdmaRoamingIndicator)
468e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville                && equalsHandlesNulls(mCdmaDefaultRoamingIndicator,
46956c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang                        s.mCdmaDefaultRoamingIndicator)
47056c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang                && mIsEmergencyOnly == s.mIsEmergencyOnly);
4719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
4729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
473db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville    /**
474db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville     * Convert radio technology to String
475db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville     *
476db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville     * @param radioTechnology
477db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville     * @return String representation of the RAT
478db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville     *
479db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville     * @hide
480db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville     */
4811434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt    public static String rilRadioTechnologyToString(int rt) {
482db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville        String rtString;
483db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville
484db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville        switch(rt) {
4851434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt            case RIL_RADIO_TECHNOLOGY_UNKNOWN:
486db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville                rtString = "Unknown";
487db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville                break;
4881434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt            case RIL_RADIO_TECHNOLOGY_GPRS:
489db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville                rtString = "GPRS";
490db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville                break;
4911434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt            case RIL_RADIO_TECHNOLOGY_EDGE:
492db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville                rtString = "EDGE";
493db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville                break;
4941434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt            case RIL_RADIO_TECHNOLOGY_UMTS:
495db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville                rtString = "UMTS";
496db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville                break;
4971434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt            case RIL_RADIO_TECHNOLOGY_IS95A:
498db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville                rtString = "CDMA-IS95A";
499db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville                break;
5001434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt            case RIL_RADIO_TECHNOLOGY_IS95B:
501db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville                rtString = "CDMA-IS95B";
502db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville                break;
5031434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt            case RIL_RADIO_TECHNOLOGY_1xRTT:
504db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville                rtString = "1xRTT";
505db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville                break;
5061434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt            case RIL_RADIO_TECHNOLOGY_EVDO_0:
507db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville                rtString = "EvDo-rev.0";
508db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville                break;
5091434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt            case RIL_RADIO_TECHNOLOGY_EVDO_A:
510db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville                rtString = "EvDo-rev.A";
511db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville                break;
5121434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt            case RIL_RADIO_TECHNOLOGY_HSDPA:
513db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville                rtString = "HSDPA";
514db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville                break;
5151434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt            case RIL_RADIO_TECHNOLOGY_HSUPA:
516db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville                rtString = "HSUPA";
517db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville                break;
5181434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt            case RIL_RADIO_TECHNOLOGY_HSPA:
519db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville                rtString = "HSPA";
520db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville                break;
5211434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt            case RIL_RADIO_TECHNOLOGY_EVDO_B:
522db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville                rtString = "EvDo-rev.B";
523db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville                break;
5241434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt            case RIL_RADIO_TECHNOLOGY_EHRPD:
525db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville                rtString = "eHRPD";
526db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville                break;
5271434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt            case RIL_RADIO_TECHNOLOGY_LTE:
528db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville                rtString = "LTE";
529db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville                break;
5301434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt            case RIL_RADIO_TECHNOLOGY_HSPAP:
531db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville                rtString = "HSPAP";
532db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville                break;
5331434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt            case RIL_RADIO_TECHNOLOGY_GSM:
534fc2cbe9b46ab17a401dc50f8e0dbb677ed012299Naveen Kalla                rtString = "GSM";
535fc2cbe9b46ab17a401dc50f8e0dbb677ed012299Naveen Kalla                break;
536db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville            default:
537db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville                rtString = "Unexpected";
538599a90c2a02645a5f2d189b9065b863397a4076eWink Saville                Rlog.w(LOG_TAG, "Unexpected radioTechnology=" + rt);
539db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville                break;
540db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville        }
5411434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt        return rtString;
542db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville    }
543db09b5db60fa05ba65662faa86422b9ec69493a1Wink Saville
5449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @Override
5459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public String toString() {
5460dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville        String radioTechnology = rilRadioTechnologyToString(mRilVoiceRadioTechnology);
5470dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville        String dataRadioTechnology = rilRadioTechnologyToString(mRilDataRadioTechnology);
548767a662ecde33c3979bf02b793d392aca0403162Wink Saville
5490dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville        return (mVoiceRegState + " " + mDataRegState + " " + (mRoaming ? "roaming" : "home")
5509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                + " " + mOperatorAlphaLong
5519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                + " " + mOperatorAlphaShort
5529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                + " " + mOperatorNumeric
553767a662ecde33c3979bf02b793d392aca0403162Wink Saville                + " " + (mIsManualNetworkSelection ? "(manual)" : "")
554767a662ecde33c3979bf02b793d392aca0403162Wink Saville                + " " + radioTechnology
5550dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville                + " " + dataRadioTechnology
556767a662ecde33c3979bf02b793d392aca0403162Wink Saville                + " " + (mCssIndicator ? "CSS supported" : "CSS not supported")
557e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville                + " " + mNetworkId
558e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville                + " " + mSystemId
559e613adcc555731aab2a0684d709da3d0df97a9e5Wink Saville                + " RoamInd=" + mCdmaRoamingIndicator
560e613adcc555731aab2a0684d709da3d0df97a9e5Wink Saville                + " DefRoamInd=" + mCdmaDefaultRoamingIndicator
561e613adcc555731aab2a0684d709da3d0df97a9e5Wink Saville                + " EmergOnly=" + mIsEmergencyOnly);
5629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
5639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
564a2267451ddf91cc330f4c283e86811e38328915bRobert Greenwalt    private void setNullState(int state) {
565599a90c2a02645a5f2d189b9065b863397a4076eWink Saville        if (DBG) Rlog.d(LOG_TAG, "[ServiceState] setNullState=" + state);
5660dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville        mVoiceRegState = state;
5670dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville        mDataRegState = state;
5689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mRoaming = false;
5699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mOperatorAlphaLong = null;
5709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mOperatorAlphaShort = null;
5719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mOperatorNumeric = null;
5729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mIsManualNetworkSelection = false;
5730dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville        mRilVoiceRadioTechnology = 0;
5740dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville        mRilDataRadioTechnology = 0;
575767a662ecde33c3979bf02b793d392aca0403162Wink Saville        mCssIndicator = false;
576767a662ecde33c3979bf02b793d392aca0403162Wink Saville        mNetworkId = -1;
577767a662ecde33c3979bf02b793d392aca0403162Wink Saville        mSystemId = -1;
578e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville        mCdmaRoamingIndicator = -1;
579e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville        mCdmaDefaultRoamingIndicator = -1;
58098e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt        mCdmaEriIconIndex = -1;
58198e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt        mCdmaEriIconMode = -1;
58256c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang        mIsEmergencyOnly = false;
5839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
5849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
585a2267451ddf91cc330f4c283e86811e38328915bRobert Greenwalt    public void setStateOutOfService() {
586a2267451ddf91cc330f4c283e86811e38328915bRobert Greenwalt        setNullState(STATE_OUT_OF_SERVICE);
587a2267451ddf91cc330f4c283e86811e38328915bRobert Greenwalt    }
588a2267451ddf91cc330f4c283e86811e38328915bRobert Greenwalt
5899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void setStateOff() {
590a2267451ddf91cc330f4c283e86811e38328915bRobert Greenwalt        setNullState(STATE_POWER_OFF);
5919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
5929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void setState(int state) {
5940dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville        setVoiceRegState(state);
595599a90c2a02645a5f2d189b9065b863397a4076eWink Saville        if (DBG) Rlog.e(LOG_TAG, "[ServiceState] setState deprecated use setVoiceRegState()");
5960dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville    }
5970dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville
5980dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville    /** @hide */
5990dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville    public void setVoiceRegState(int state) {
6000dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville        mVoiceRegState = state;
601599a90c2a02645a5f2d189b9065b863397a4076eWink Saville        if (DBG) Rlog.d(LOG_TAG, "[ServiceState] setVoiceRegState=" + mVoiceRegState);
6020dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville    }
6030dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville
6040dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville    /** @hide */
6050dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville    public void setDataRegState(int state) {
6060dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville        mDataRegState = state;
607599a90c2a02645a5f2d189b9065b863397a4076eWink Saville        if (DBG) Rlog.d(LOG_TAG, "[ServiceState] setDataRegState=" + mDataRegState);
6089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
6099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void setRoaming(boolean roaming) {
6119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mRoaming = roaming;
6129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
6139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
61456c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang
61556c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang    /**
61656c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang     * @hide
61756c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang     */
61856c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang    public void setEmergencyOnly(boolean emergencyOnly) {
61956c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang        mIsEmergencyOnly = emergencyOnly;
62056c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang    }
62156c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang
622e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    /**
623e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     * @hide
624e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     */
625e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    public void setCdmaRoamingIndicator(int roaming) {
626e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville        this.mCdmaRoamingIndicator = roaming;
627e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    }
628e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville
629e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    /**
630e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     * @hide
631e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     */
632e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    public void setCdmaDefaultRoamingIndicator (int roaming) {
633e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville        this.mCdmaDefaultRoamingIndicator = roaming;
634767a662ecde33c3979bf02b793d392aca0403162Wink Saville    }
635767a662ecde33c3979bf02b793d392aca0403162Wink Saville
63698e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt    /**
63798e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt     * @hide
63898e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt     */
63998e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt    public void setCdmaEriIconIndex(int index) {
64098e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt        this.mCdmaEriIconIndex = index;
64198e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt    }
64298e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt
64398e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt    /**
64498e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt     * @hide
64598e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt     */
64698e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt    public void setCdmaEriIconMode(int mode) {
64798e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt        this.mCdmaEriIconMode = mode;
64898e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt    }
64998e0b146b80670b52805b4b210ef5582dad6bb68Robert Greenwalt
6509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void setOperatorName(String longName, String shortName, String numeric) {
6519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mOperatorAlphaLong = longName;
6529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mOperatorAlphaShort = shortName;
6539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mOperatorNumeric = numeric;
6549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
6559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
656e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    /**
657390de220248d05ccb9dc10a197700ad3c1595937Jake Hamby     * In CDMA, mOperatorAlphaLong can be set from the ERI text.
658390de220248d05ccb9dc10a197700ad3c1595937Jake Hamby     * This is done from the CDMAPhone and not from the CdmaServiceStateTracker.
659e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     *
660e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     * @hide
661e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     */
662c91c7f92c9d2da557d4187fa24519f1dc1f1e2ecKazuhiro Ondo    public void setOperatorAlphaLong(String longName) {
663e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville        mOperatorAlphaLong = longName;
664e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    }
665e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville
6669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void setIsManualSelection(boolean isManual) {
6679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mIsManualNetworkSelection = isManual;
6689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
669767a662ecde33c3979bf02b793d392aca0403162Wink Saville
6709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
671390de220248d05ccb9dc10a197700ad3c1595937Jake Hamby     * Test whether two objects hold the same data values or both are null.
6729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
6739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param a first obj
6749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param b second obj
6759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return true if two objects equal or both are null
6769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
6779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private static boolean equalsHandlesNulls (Object a, Object b) {
6789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return (a == null) ? (b == null) : a.equals (b);
6799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
6809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
682390de220248d05ccb9dc10a197700ad3c1595937Jake Hamby     * Set ServiceState based on intent notifier map.
6839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
6849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param m intent notifier map
6859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @hide
6869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
6879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private void setFromNotifierBundle(Bundle m) {
6880dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville        mVoiceRegState = m.getInt("voiceRegState");
6890dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville        mDataRegState = m.getInt("dataRegState");
6909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mRoaming = m.getBoolean("roaming");
6919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mOperatorAlphaLong = m.getString("operator-alpha-long");
6929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mOperatorAlphaShort = m.getString("operator-alpha-short");
6939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mOperatorNumeric = m.getString("operator-numeric");
6949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mIsManualNetworkSelection = m.getBoolean("manual");
6950dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville        mRilVoiceRadioTechnology = m.getInt("radioTechnology");
69646401a312dd18ec738295e7796a8014f60080bf1Sungmin Choi        mRilDataRadioTechnology = m.getInt("dataRadioTechnology");
697767a662ecde33c3979bf02b793d392aca0403162Wink Saville        mCssIndicator = m.getBoolean("cssIndicator");
698767a662ecde33c3979bf02b793d392aca0403162Wink Saville        mNetworkId = m.getInt("networkId");
699767a662ecde33c3979bf02b793d392aca0403162Wink Saville        mSystemId = m.getInt("systemId");
700e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville        mCdmaRoamingIndicator = m.getInt("cdmaRoamingIndicator");
701e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville        mCdmaDefaultRoamingIndicator = m.getInt("cdmaDefaultRoamingIndicator");
70256c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang        mIsEmergencyOnly = m.getBoolean("emergencyOnly");
7039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
7049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
7059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
706390de220248d05ccb9dc10a197700ad3c1595937Jake Hamby     * Set intent notifier Bundle based on service state.
7079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
7089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param m intent notifier Bundle
7099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @hide
7109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
7119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void fillInNotifierBundle(Bundle m) {
7120dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville        m.putInt("voiceRegState", mVoiceRegState);
7130dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville        m.putInt("dataRegState", mDataRegState);
7149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        m.putBoolean("roaming", Boolean.valueOf(mRoaming));
7159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        m.putString("operator-alpha-long", mOperatorAlphaLong);
7169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        m.putString("operator-alpha-short", mOperatorAlphaShort);
7179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        m.putString("operator-numeric", mOperatorNumeric);
7189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        m.putBoolean("manual", Boolean.valueOf(mIsManualNetworkSelection));
7190dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville        m.putInt("radioTechnology", mRilVoiceRadioTechnology);
7200dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville        m.putInt("dataRadioTechnology", mRilDataRadioTechnology);
721767a662ecde33c3979bf02b793d392aca0403162Wink Saville        m.putBoolean("cssIndicator", mCssIndicator);
722767a662ecde33c3979bf02b793d392aca0403162Wink Saville        m.putInt("networkId", mNetworkId);
723767a662ecde33c3979bf02b793d392aca0403162Wink Saville        m.putInt("systemId", mSystemId);
724e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville        m.putInt("cdmaRoamingIndicator", mCdmaRoamingIndicator);
725e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville        m.putInt("cdmaDefaultRoamingIndicator", mCdmaDefaultRoamingIndicator);
72656c2d2ff27536a1d8edf0037cd41ff3ea3272fd9John Wang        m.putBoolean("emergencyOnly", Boolean.valueOf(mIsEmergencyOnly));
727767a662ecde33c3979bf02b793d392aca0403162Wink Saville    }
728767a662ecde33c3979bf02b793d392aca0403162Wink Saville
729767a662ecde33c3979bf02b793d392aca0403162Wink Saville    /** @hide */
7300dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville    public void setRilVoiceRadioTechnology(int rt) {
7310dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville        this.mRilVoiceRadioTechnology = rt;
7320dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville    }
7330dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville
7340dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville    /** @hide */
7350dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville    public void setRilDataRadioTechnology(int rt) {
7360dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville        this.mRilDataRadioTechnology = rt;
737599a90c2a02645a5f2d189b9065b863397a4076eWink Saville        if (DBG) Rlog.d(LOG_TAG, "[ServiceState] setDataRadioTechnology=" + mRilDataRadioTechnology);
738767a662ecde33c3979bf02b793d392aca0403162Wink Saville    }
739767a662ecde33c3979bf02b793d392aca0403162Wink Saville
740767a662ecde33c3979bf02b793d392aca0403162Wink Saville    /** @hide */
741767a662ecde33c3979bf02b793d392aca0403162Wink Saville    public void setCssIndicator(int css) {
742767a662ecde33c3979bf02b793d392aca0403162Wink Saville        this.mCssIndicator = (css != 0);
743767a662ecde33c3979bf02b793d392aca0403162Wink Saville    }
744767a662ecde33c3979bf02b793d392aca0403162Wink Saville
745767a662ecde33c3979bf02b793d392aca0403162Wink Saville    /** @hide */
746767a662ecde33c3979bf02b793d392aca0403162Wink Saville    public void setSystemAndNetworkId(int systemId, int networkId) {
747767a662ecde33c3979bf02b793d392aca0403162Wink Saville        this.mSystemId = systemId;
748767a662ecde33c3979bf02b793d392aca0403162Wink Saville        this.mNetworkId = networkId;
749767a662ecde33c3979bf02b793d392aca0403162Wink Saville    }
750767a662ecde33c3979bf02b793d392aca0403162Wink Saville
751767a662ecde33c3979bf02b793d392aca0403162Wink Saville    /** @hide */
7520dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville    public int getRilVoiceRadioTechnology() {
7530dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville        return this.mRilVoiceRadioTechnology;
754767a662ecde33c3979bf02b793d392aca0403162Wink Saville    }
755d13f9aa8b1d59f4d8baf21960f18f5f7dc75dad7Mathias Agopian    /** @hide */
7560dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville    public int getRilDataRadioTechnology() {
7570dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville        return this.mRilDataRadioTechnology;
7580dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville    }
7590dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville    /**
7600dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville     * @hide
7610dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville     * @Deprecated to be removed Q3 2013 use {@link #getRilDataRadioTechnology} or
7620dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville     * {@link #getRilVoiceRadioTechnology}
7630dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville     */
764d13f9aa8b1d59f4d8baf21960f18f5f7dc75dad7Mathias Agopian    public int getRadioTechnology() {
765599a90c2a02645a5f2d189b9065b863397a4076eWink Saville        Rlog.e(LOG_TAG, "ServiceState.getRadioTechnology() DEPRECATED will be removed *******");
7660dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville        return getRilDataRadioTechnology();
767d13f9aa8b1d59f4d8baf21960f18f5f7dc75dad7Mathias Agopian    }
768767a662ecde33c3979bf02b793d392aca0403162Wink Saville
7690dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville    private int rilRadioTechnologyToNetworkType(int rt) {
7700dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville        switch(rt) {
7711434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt        case ServiceState.RIL_RADIO_TECHNOLOGY_GPRS:
7721434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt            return TelephonyManager.NETWORK_TYPE_GPRS;
7731434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt        case ServiceState.RIL_RADIO_TECHNOLOGY_EDGE:
7741434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt            return TelephonyManager.NETWORK_TYPE_EDGE;
7751434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt        case ServiceState.RIL_RADIO_TECHNOLOGY_UMTS:
7761434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt            return TelephonyManager.NETWORK_TYPE_UMTS;
7771434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt        case ServiceState.RIL_RADIO_TECHNOLOGY_HSDPA:
7781434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt            return TelephonyManager.NETWORK_TYPE_HSDPA;
7791434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt        case ServiceState.RIL_RADIO_TECHNOLOGY_HSUPA:
7801434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt            return TelephonyManager.NETWORK_TYPE_HSUPA;
7811434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt        case ServiceState.RIL_RADIO_TECHNOLOGY_HSPA:
7821434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt            return TelephonyManager.NETWORK_TYPE_HSPA;
7831434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt        case ServiceState.RIL_RADIO_TECHNOLOGY_IS95A:
7841434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt        case ServiceState.RIL_RADIO_TECHNOLOGY_IS95B:
7851434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt            return TelephonyManager.NETWORK_TYPE_CDMA;
7861434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt        case ServiceState.RIL_RADIO_TECHNOLOGY_1xRTT:
7871434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt            return TelephonyManager.NETWORK_TYPE_1xRTT;
7881434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt        case ServiceState.RIL_RADIO_TECHNOLOGY_EVDO_0:
7891434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt            return TelephonyManager.NETWORK_TYPE_EVDO_0;
7901434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt        case ServiceState.RIL_RADIO_TECHNOLOGY_EVDO_A:
7911434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt            return TelephonyManager.NETWORK_TYPE_EVDO_A;
7921434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt        case ServiceState.RIL_RADIO_TECHNOLOGY_EVDO_B:
7931434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt            return TelephonyManager.NETWORK_TYPE_EVDO_B;
7941434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt        case ServiceState.RIL_RADIO_TECHNOLOGY_EHRPD:
7951434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt            return TelephonyManager.NETWORK_TYPE_EHRPD;
7961434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt        case ServiceState.RIL_RADIO_TECHNOLOGY_LTE:
7971434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt            return TelephonyManager.NETWORK_TYPE_LTE;
7981434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt        case ServiceState.RIL_RADIO_TECHNOLOGY_HSPAP:
7991434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt            return TelephonyManager.NETWORK_TYPE_HSPAP;
8001434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt        default:
8011434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt            return TelephonyManager.NETWORK_TYPE_UNKNOWN;
8021434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt        }
8031434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt    }
8041434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt
8050dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville    /**
8060dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville     * @Deprecated to be removed Q3 2013 use {@link #getVoiceNetworkType}
8070dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville     * @hide
8080dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville     */
8090dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville    public int getNetworkType() {
810599a90c2a02645a5f2d189b9065b863397a4076eWink Saville        Rlog.e(LOG_TAG, "ServiceState.getNetworkType() DEPRECATED will be removed *******");
8110dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville        return rilRadioTechnologyToNetworkType(mRilVoiceRadioTechnology);
8120dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville    }
8130dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville
8140dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville    /** @hide */
8150dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville    public int getDataNetworkType() {
8160dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville        return rilRadioTechnologyToNetworkType(mRilDataRadioTechnology);
8170dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville    }
8180dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville
8190dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville    /** @hide */
8200dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville    public int getVoiceNetworkType() {
8210dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville        return rilRadioTechnologyToNetworkType(mRilVoiceRadioTechnology);
8220dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville    }
8230dde2c20a07770bc2f1b21e49222c968f3d8b39aWink Saville
8241434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt    /** @hide */
825767a662ecde33c3979bf02b793d392aca0403162Wink Saville    public int getCssIndicator() {
826767a662ecde33c3979bf02b793d392aca0403162Wink Saville        return this.mCssIndicator ? 1 : 0;
827767a662ecde33c3979bf02b793d392aca0403162Wink Saville    }
828767a662ecde33c3979bf02b793d392aca0403162Wink Saville
829767a662ecde33c3979bf02b793d392aca0403162Wink Saville    /** @hide */
830767a662ecde33c3979bf02b793d392aca0403162Wink Saville    public int getNetworkId() {
831767a662ecde33c3979bf02b793d392aca0403162Wink Saville        return this.mNetworkId;
832767a662ecde33c3979bf02b793d392aca0403162Wink Saville    }
833767a662ecde33c3979bf02b793d392aca0403162Wink Saville
834767a662ecde33c3979bf02b793d392aca0403162Wink Saville    /** @hide */
835767a662ecde33c3979bf02b793d392aca0403162Wink Saville    public int getSystemId() {
836767a662ecde33c3979bf02b793d392aca0403162Wink Saville        return this.mSystemId;
8379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
838fc2cbe9b46ab17a401dc50f8e0dbb677ed012299Naveen Kalla
839fc2cbe9b46ab17a401dc50f8e0dbb677ed012299Naveen Kalla    /** @hide */
840fc2cbe9b46ab17a401dc50f8e0dbb677ed012299Naveen Kalla    public static boolean isGsm(int radioTechnology) {
8411434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt        return radioTechnology == RIL_RADIO_TECHNOLOGY_GPRS
8421434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt                || radioTechnology == RIL_RADIO_TECHNOLOGY_EDGE
8431434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt                || radioTechnology == RIL_RADIO_TECHNOLOGY_UMTS
8441434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt                || radioTechnology == RIL_RADIO_TECHNOLOGY_HSDPA
8451434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt                || radioTechnology == RIL_RADIO_TECHNOLOGY_HSUPA
8461434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt                || radioTechnology == RIL_RADIO_TECHNOLOGY_HSPA
8471434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt                || radioTechnology == RIL_RADIO_TECHNOLOGY_LTE
8481434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt                || radioTechnology == RIL_RADIO_TECHNOLOGY_HSPAP
8491434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt                || radioTechnology == RIL_RADIO_TECHNOLOGY_GSM;
850fc2cbe9b46ab17a401dc50f8e0dbb677ed012299Naveen Kalla    }
851fc2cbe9b46ab17a401dc50f8e0dbb677ed012299Naveen Kalla
852fc2cbe9b46ab17a401dc50f8e0dbb677ed012299Naveen Kalla    /** @hide */
853fc2cbe9b46ab17a401dc50f8e0dbb677ed012299Naveen Kalla    public static boolean isCdma(int radioTechnology) {
8541434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt        return radioTechnology == RIL_RADIO_TECHNOLOGY_IS95A
8551434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt                || radioTechnology == RIL_RADIO_TECHNOLOGY_IS95B
8561434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt                || radioTechnology == RIL_RADIO_TECHNOLOGY_1xRTT
8571434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt                || radioTechnology == RIL_RADIO_TECHNOLOGY_EVDO_0
8581434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt                || radioTechnology == RIL_RADIO_TECHNOLOGY_EVDO_A
8591434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt                || radioTechnology == RIL_RADIO_TECHNOLOGY_EVDO_B
8601434d7b855108cb14c210b26cabb7bdb15f31887Robert Greenwalt                || radioTechnology == RIL_RADIO_TECHNOLOGY_EHRPD;
861fc2cbe9b46ab17a401dc50f8e0dbb677ed012299Naveen Kalla    }
8629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}
863