1e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville/* 2b208a24cf521401912cfce16fce550a995cf1250Wink Saville * Copyright (C) 2012 The Android Open Source Project 3e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville * 4e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville * Licensed under the Apache License, Version 2.0 (the "License"); 5e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville * you may not use this file except in compliance with the License. 6e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville * You may obtain a copy of the License at 7e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville * 8e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville * http://www.apache.org/licenses/LICENSE-2.0 9e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville * 10e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville * Unless required by applicable law or agreed to in writing, software 11e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville * distributed under the License is distributed on an "AS IS" BASIS, 12e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville * See the License for the specific language governing permissions and 14e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville * limitations under the License. 15e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville */ 16e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 17e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Savillepackage android.telephony; 18e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 19e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Savilleimport android.os.Bundle; 20e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Savilleimport android.os.Parcel; 21e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Savilleimport android.os.Parcelable; 2222b1e80c24c5fbd702a19f2511ee2897baaf3e98Wink Savilleimport android.telephony.Rlog; 23e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 24e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville/** 25e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville * Contains phone signal strength related information. 26e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville */ 27e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Savillepublic class SignalStrength implements Parcelable { 28e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 295284090631e638b916d9a453212e9dc802656a67Wink Saville private static final String LOG_TAG = "SignalStrength"; 30432139b5c3bcbb3762fb7de1717e816d2b7c90f0Robert Greenwalt private static final boolean DBG = false; 315284090631e638b916d9a453212e9dc802656a67Wink Saville 325284090631e638b916d9a453212e9dc802656a67Wink Saville /** @hide */ 335284090631e638b916d9a453212e9dc802656a67Wink Saville public static final int SIGNAL_STRENGTH_NONE_OR_UNKNOWN = 0; 345284090631e638b916d9a453212e9dc802656a67Wink Saville /** @hide */ 355284090631e638b916d9a453212e9dc802656a67Wink Saville public static final int SIGNAL_STRENGTH_POOR = 1; 365284090631e638b916d9a453212e9dc802656a67Wink Saville /** @hide */ 375284090631e638b916d9a453212e9dc802656a67Wink Saville public static final int SIGNAL_STRENGTH_MODERATE = 2; 385284090631e638b916d9a453212e9dc802656a67Wink Saville /** @hide */ 395284090631e638b916d9a453212e9dc802656a67Wink Saville public static final int SIGNAL_STRENGTH_GOOD = 3; 405284090631e638b916d9a453212e9dc802656a67Wink Saville /** @hide */ 415284090631e638b916d9a453212e9dc802656a67Wink Saville public static final int SIGNAL_STRENGTH_GREAT = 4; 425284090631e638b916d9a453212e9dc802656a67Wink Saville /** @hide */ 435284090631e638b916d9a453212e9dc802656a67Wink Saville public static final int NUM_SIGNAL_STRENGTH_BINS = 5; 445284090631e638b916d9a453212e9dc802656a67Wink Saville /** @hide */ 455284090631e638b916d9a453212e9dc802656a67Wink Saville public static final String[] SIGNAL_STRENGTH_NAMES = { 465284090631e638b916d9a453212e9dc802656a67Wink Saville "none", "poor", "moderate", "good", "great" 475284090631e638b916d9a453212e9dc802656a67Wink Saville }; 48e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 495e39519396918f9e2312d1c355a9b6889851d887John Wang /** @hide */ 50a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam //Use int max, as -1 is a valid value in signal strength 51a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam public static final int INVALID = 0x7FFFFFFF; 525e39519396918f9e2312d1c355a9b6889851d887John Wang 53e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville private int mGsmSignalStrength; // Valid values are (0-31, 99) as defined in TS 27.007 8.5 54e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville private int mGsmBitErrorRate; // bit error rate (0-7, 99) as defined in TS 27.007 8.5 55e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville private int mCdmaDbm; // This value is the RSSI value 56e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville private int mCdmaEcio; // This value is the Ec/Io 57e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville private int mEvdoDbm; // This value is the EVDO RSSI value 58e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville private int mEvdoEcio; // This value is the EVDO Ec/Io 59e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville private int mEvdoSnr; // Valid values are 0-8. 8 is the highest signal to noise ratio 605284090631e638b916d9a453212e9dc802656a67Wink Saville private int mLteSignalStrength; 615284090631e638b916d9a453212e9dc802656a67Wink Saville private int mLteRsrp; 625284090631e638b916d9a453212e9dc802656a67Wink Saville private int mLteRsrq; 635284090631e638b916d9a453212e9dc802656a67Wink Saville private int mLteRssnr; 645284090631e638b916d9a453212e9dc802656a67Wink Saville private int mLteCqi; 65e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 66e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville private boolean isGsm; // This value is set by the ServiceStateTracker onSignalStrengthResult 672900a3fae6e3da65522ffc16673ab1757352afbbWink Saville 68e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville /** 69e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville * Create a new SignalStrength from a intent notifier Bundle 70e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville * 71e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville * This method is used by PhoneStateIntentReceiver and maybe by 72e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville * external applications. 73e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville * 74e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville * @param m Bundle from intent notifier 75e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville * @return newly created SignalStrength 76e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville * 77cc6ff2bc6011294367d9a8c644f811449e952eb7Wink Saville * @hide 78e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville */ 79e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville public static SignalStrength newFromBundle(Bundle m) { 80e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville SignalStrength ret; 81e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville ret = new SignalStrength(); 82e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville ret.setFromNotifierBundle(m); 83e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville return ret; 84e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville } 85e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 86e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville /** 87e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville * Empty constructor 88e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville * 89cc6ff2bc6011294367d9a8c644f811449e952eb7Wink Saville * @hide 90e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville */ 91e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville public SignalStrength() { 92e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville mGsmSignalStrength = 99; 93e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville mGsmBitErrorRate = -1; 94e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville mCdmaDbm = -1; 95e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville mCdmaEcio = -1; 96e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville mEvdoDbm = -1; 97e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville mEvdoEcio = -1; 98e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville mEvdoSnr = -1; 99a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam mLteSignalStrength = 99; 100a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam mLteRsrp = INVALID; 101a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam mLteRsrq = INVALID; 102a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam mLteRssnr = INVALID; 103a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam mLteCqi = INVALID; 104e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville isGsm = true; 105e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville } 106e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 107e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville /** 108a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam * This constructor is used to create SignalStrength with default 109a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam * values and set the isGsmFlag with the value passed in the input 110e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville * 111a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam * @param gsmFlag true if Gsm Phone,false if Cdma phone 112a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam * @return newly created SignalStrength 113cc6ff2bc6011294367d9a8c644f811449e952eb7Wink Saville * @hide 114e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville */ 115a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam public SignalStrength(boolean gsmFlag) { 116a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam mGsmSignalStrength = 99; 117a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam mGsmBitErrorRate = -1; 118a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam mCdmaDbm = -1; 119a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam mCdmaEcio = -1; 120a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam mEvdoDbm = -1; 121a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam mEvdoEcio = -1; 122a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam mEvdoSnr = -1; 123a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam mLteSignalStrength = 99; 124a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam mLteRsrp = INVALID; 125a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam mLteRsrq = INVALID; 126a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam mLteRssnr = INVALID; 127a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam mLteCqi = INVALID; 128a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam isGsm = gsmFlag; 129e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville } 130e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 131e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville /** 1325284090631e638b916d9a453212e9dc802656a67Wink Saville * Constructor 1335284090631e638b916d9a453212e9dc802656a67Wink Saville * 1345284090631e638b916d9a453212e9dc802656a67Wink Saville * @hide 1355284090631e638b916d9a453212e9dc802656a67Wink Saville */ 1365284090631e638b916d9a453212e9dc802656a67Wink Saville public SignalStrength(int gsmSignalStrength, int gsmBitErrorRate, 1375284090631e638b916d9a453212e9dc802656a67Wink Saville int cdmaDbm, int cdmaEcio, 1385284090631e638b916d9a453212e9dc802656a67Wink Saville int evdoDbm, int evdoEcio, int evdoSnr, 139b208a24cf521401912cfce16fce550a995cf1250Wink Saville int lteSignalStrength, int lteRsrp, int lteRsrq, int lteRssnr, int lteCqi, 1402900a3fae6e3da65522ffc16673ab1757352afbbWink Saville boolean gsmFlag) { 1412900a3fae6e3da65522ffc16673ab1757352afbbWink Saville initialize(gsmSignalStrength, gsmBitErrorRate, cdmaDbm, cdmaEcio, 1422900a3fae6e3da65522ffc16673ab1757352afbbWink Saville evdoDbm, evdoEcio, evdoSnr, lteSignalStrength, lteRsrp, 1432900a3fae6e3da65522ffc16673ab1757352afbbWink Saville lteRsrq, lteRssnr, lteCqi, gsmFlag); 1442900a3fae6e3da65522ffc16673ab1757352afbbWink Saville } 1452900a3fae6e3da65522ffc16673ab1757352afbbWink Saville 1462900a3fae6e3da65522ffc16673ab1757352afbbWink Saville /** 1472900a3fae6e3da65522ffc16673ab1757352afbbWink Saville * Constructor 1482900a3fae6e3da65522ffc16673ab1757352afbbWink Saville * 1492900a3fae6e3da65522ffc16673ab1757352afbbWink Saville * @hide 1502900a3fae6e3da65522ffc16673ab1757352afbbWink Saville */ 1512900a3fae6e3da65522ffc16673ab1757352afbbWink Saville public SignalStrength(int gsmSignalStrength, int gsmBitErrorRate, 1522900a3fae6e3da65522ffc16673ab1757352afbbWink Saville int cdmaDbm, int cdmaEcio, 1532900a3fae6e3da65522ffc16673ab1757352afbbWink Saville int evdoDbm, int evdoEcio, int evdoSnr, 1542900a3fae6e3da65522ffc16673ab1757352afbbWink Saville boolean gsmFlag) { 1552900a3fae6e3da65522ffc16673ab1757352afbbWink Saville initialize(gsmSignalStrength, gsmBitErrorRate, cdmaDbm, cdmaEcio, 1562900a3fae6e3da65522ffc16673ab1757352afbbWink Saville evdoDbm, evdoEcio, evdoSnr, 99, INVALID, 1572900a3fae6e3da65522ffc16673ab1757352afbbWink Saville INVALID, INVALID, INVALID, gsmFlag); 1582900a3fae6e3da65522ffc16673ab1757352afbbWink Saville } 1592900a3fae6e3da65522ffc16673ab1757352afbbWink Saville 1602900a3fae6e3da65522ffc16673ab1757352afbbWink Saville /** 1612900a3fae6e3da65522ffc16673ab1757352afbbWink Saville * Copy constructors 1622900a3fae6e3da65522ffc16673ab1757352afbbWink Saville * 1632900a3fae6e3da65522ffc16673ab1757352afbbWink Saville * @param s Source SignalStrength 1642900a3fae6e3da65522ffc16673ab1757352afbbWink Saville * 1652900a3fae6e3da65522ffc16673ab1757352afbbWink Saville * @hide 1662900a3fae6e3da65522ffc16673ab1757352afbbWink Saville */ 1672900a3fae6e3da65522ffc16673ab1757352afbbWink Saville public SignalStrength(SignalStrength s) { 1682900a3fae6e3da65522ffc16673ab1757352afbbWink Saville copyFrom(s); 1692900a3fae6e3da65522ffc16673ab1757352afbbWink Saville } 1702900a3fae6e3da65522ffc16673ab1757352afbbWink Saville 1712900a3fae6e3da65522ffc16673ab1757352afbbWink Saville /** 1722900a3fae6e3da65522ffc16673ab1757352afbbWink Saville * Initialize gsm/cdma values, sets lte values to defaults. 1732900a3fae6e3da65522ffc16673ab1757352afbbWink Saville * 1742900a3fae6e3da65522ffc16673ab1757352afbbWink Saville * @param gsmSignalStrength 1752900a3fae6e3da65522ffc16673ab1757352afbbWink Saville * @param gsmBitErrorRate 1762900a3fae6e3da65522ffc16673ab1757352afbbWink Saville * @param cdmaDbm 1772900a3fae6e3da65522ffc16673ab1757352afbbWink Saville * @param cdmaEcio 1782900a3fae6e3da65522ffc16673ab1757352afbbWink Saville * @param evdoDbm 1792900a3fae6e3da65522ffc16673ab1757352afbbWink Saville * @param evdoEcio 1802900a3fae6e3da65522ffc16673ab1757352afbbWink Saville * @param evdoSnr 1812900a3fae6e3da65522ffc16673ab1757352afbbWink Saville * @param gsm 1822900a3fae6e3da65522ffc16673ab1757352afbbWink Saville * 1832900a3fae6e3da65522ffc16673ab1757352afbbWink Saville * @hide 1842900a3fae6e3da65522ffc16673ab1757352afbbWink Saville */ 1852900a3fae6e3da65522ffc16673ab1757352afbbWink Saville public void initialize(int gsmSignalStrength, int gsmBitErrorRate, 1862900a3fae6e3da65522ffc16673ab1757352afbbWink Saville int cdmaDbm, int cdmaEcio, 1872900a3fae6e3da65522ffc16673ab1757352afbbWink Saville int evdoDbm, int evdoEcio, int evdoSnr, 1882900a3fae6e3da65522ffc16673ab1757352afbbWink Saville boolean gsm) { 1892900a3fae6e3da65522ffc16673ab1757352afbbWink Saville initialize(gsmSignalStrength, gsmBitErrorRate, cdmaDbm, cdmaEcio, 1902900a3fae6e3da65522ffc16673ab1757352afbbWink Saville evdoDbm, evdoEcio, evdoSnr, 99, INVALID, 1912900a3fae6e3da65522ffc16673ab1757352afbbWink Saville INVALID, INVALID, INVALID, gsm); 1922900a3fae6e3da65522ffc16673ab1757352afbbWink Saville } 1932900a3fae6e3da65522ffc16673ab1757352afbbWink Saville 1942900a3fae6e3da65522ffc16673ab1757352afbbWink Saville /** 1952900a3fae6e3da65522ffc16673ab1757352afbbWink Saville * Initialize all the values 1962900a3fae6e3da65522ffc16673ab1757352afbbWink Saville * 1972900a3fae6e3da65522ffc16673ab1757352afbbWink Saville * @param gsmSignalStrength 1982900a3fae6e3da65522ffc16673ab1757352afbbWink Saville * @param gsmBitErrorRate 1992900a3fae6e3da65522ffc16673ab1757352afbbWink Saville * @param cdmaDbm 2002900a3fae6e3da65522ffc16673ab1757352afbbWink Saville * @param cdmaEcio 2012900a3fae6e3da65522ffc16673ab1757352afbbWink Saville * @param evdoDbm 2022900a3fae6e3da65522ffc16673ab1757352afbbWink Saville * @param evdoEcio 2032900a3fae6e3da65522ffc16673ab1757352afbbWink Saville * @param evdoSnr 2042900a3fae6e3da65522ffc16673ab1757352afbbWink Saville * @param lteSignalStrength 2052900a3fae6e3da65522ffc16673ab1757352afbbWink Saville * @param lteRsrp 2062900a3fae6e3da65522ffc16673ab1757352afbbWink Saville * @param lteRsrq 2072900a3fae6e3da65522ffc16673ab1757352afbbWink Saville * @param lteRssnr 2082900a3fae6e3da65522ffc16673ab1757352afbbWink Saville * @param lteCqi 2092900a3fae6e3da65522ffc16673ab1757352afbbWink Saville * @param gsm 2102900a3fae6e3da65522ffc16673ab1757352afbbWink Saville * 2112900a3fae6e3da65522ffc16673ab1757352afbbWink Saville * @hide 2122900a3fae6e3da65522ffc16673ab1757352afbbWink Saville */ 2132900a3fae6e3da65522ffc16673ab1757352afbbWink Saville public void initialize(int gsmSignalStrength, int gsmBitErrorRate, 2142900a3fae6e3da65522ffc16673ab1757352afbbWink Saville int cdmaDbm, int cdmaEcio, 2152900a3fae6e3da65522ffc16673ab1757352afbbWink Saville int evdoDbm, int evdoEcio, int evdoSnr, 2162900a3fae6e3da65522ffc16673ab1757352afbbWink Saville int lteSignalStrength, int lteRsrp, int lteRsrq, int lteRssnr, int lteCqi, 217b208a24cf521401912cfce16fce550a995cf1250Wink Saville boolean gsm) { 218b208a24cf521401912cfce16fce550a995cf1250Wink Saville mGsmSignalStrength = gsmSignalStrength; 219b208a24cf521401912cfce16fce550a995cf1250Wink Saville mGsmBitErrorRate = gsmBitErrorRate; 220b208a24cf521401912cfce16fce550a995cf1250Wink Saville mCdmaDbm = cdmaDbm; 221b208a24cf521401912cfce16fce550a995cf1250Wink Saville mCdmaEcio = cdmaEcio; 222b208a24cf521401912cfce16fce550a995cf1250Wink Saville mEvdoDbm = evdoDbm; 223b208a24cf521401912cfce16fce550a995cf1250Wink Saville mEvdoEcio = evdoEcio; 224b208a24cf521401912cfce16fce550a995cf1250Wink Saville mEvdoSnr = evdoSnr; 225b208a24cf521401912cfce16fce550a995cf1250Wink Saville mLteSignalStrength = lteSignalStrength; 226b208a24cf521401912cfce16fce550a995cf1250Wink Saville mLteRsrp = lteRsrp; 227b208a24cf521401912cfce16fce550a995cf1250Wink Saville mLteRsrq = lteRsrq; 228b208a24cf521401912cfce16fce550a995cf1250Wink Saville mLteRssnr = lteRssnr; 229b208a24cf521401912cfce16fce550a995cf1250Wink Saville mLteCqi = lteCqi; 230b208a24cf521401912cfce16fce550a995cf1250Wink Saville isGsm = gsm; 231b208a24cf521401912cfce16fce550a995cf1250Wink Saville if (DBG) log("initialize: " + toString()); 232b208a24cf521401912cfce16fce550a995cf1250Wink Saville } 233b208a24cf521401912cfce16fce550a995cf1250Wink Saville 234b208a24cf521401912cfce16fce550a995cf1250Wink Saville /** 235e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville * @hide 236e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville */ 237e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville protected void copyFrom(SignalStrength s) { 238e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville mGsmSignalStrength = s.mGsmSignalStrength; 239e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville mGsmBitErrorRate = s.mGsmBitErrorRate; 240e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville mCdmaDbm = s.mCdmaDbm; 241e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville mCdmaEcio = s.mCdmaEcio; 242e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville mEvdoDbm = s.mEvdoDbm; 243e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville mEvdoEcio = s.mEvdoEcio; 244e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville mEvdoSnr = s.mEvdoSnr; 2455284090631e638b916d9a453212e9dc802656a67Wink Saville mLteSignalStrength = s.mLteSignalStrength; 2465284090631e638b916d9a453212e9dc802656a67Wink Saville mLteRsrp = s.mLteRsrp; 2475284090631e638b916d9a453212e9dc802656a67Wink Saville mLteRsrq = s.mLteRsrq; 2485284090631e638b916d9a453212e9dc802656a67Wink Saville mLteRssnr = s.mLteRssnr; 2495284090631e638b916d9a453212e9dc802656a67Wink Saville mLteCqi = s.mLteCqi; 250e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville isGsm = s.isGsm; 251e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville } 252e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 253e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville /** 254e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville * Construct a SignalStrength object from the given parcel. 255cc6ff2bc6011294367d9a8c644f811449e952eb7Wink Saville * 256cc6ff2bc6011294367d9a8c644f811449e952eb7Wink Saville * @hide 257e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville */ 258e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville public SignalStrength(Parcel in) { 2592900a3fae6e3da65522ffc16673ab1757352afbbWink Saville if (DBG) log("Size of signalstrength parcel:" + in.dataSize()); 2602900a3fae6e3da65522ffc16673ab1757352afbbWink Saville 261e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville mGsmSignalStrength = in.readInt(); 262e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville mGsmBitErrorRate = in.readInt(); 263e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville mCdmaDbm = in.readInt(); 264e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville mCdmaEcio = in.readInt(); 265e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville mEvdoDbm = in.readInt(); 266e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville mEvdoEcio = in.readInt(); 267e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville mEvdoSnr = in.readInt(); 2685284090631e638b916d9a453212e9dc802656a67Wink Saville mLteSignalStrength = in.readInt(); 2695284090631e638b916d9a453212e9dc802656a67Wink Saville mLteRsrp = in.readInt(); 2705284090631e638b916d9a453212e9dc802656a67Wink Saville mLteRsrq = in.readInt(); 2715284090631e638b916d9a453212e9dc802656a67Wink Saville mLteRssnr = in.readInt(); 2725284090631e638b916d9a453212e9dc802656a67Wink Saville mLteCqi = in.readInt(); 273e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville isGsm = (in.readInt() != 0); 274e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville } 275e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 276cc6ff2bc6011294367d9a8c644f811449e952eb7Wink Saville /** 277efbca4d01d2fe6ecb9e697aea71da44fefcfc094Wink Saville * Make a SignalStrength object from the given parcel as passed up by 278efbca4d01d2fe6ecb9e697aea71da44fefcfc094Wink Saville * the ril which does not have isGsm. isGsm will be changed by ServiceStateTracker 279efbca4d01d2fe6ecb9e697aea71da44fefcfc094Wink Saville * so the default is a don't care. 280efbca4d01d2fe6ecb9e697aea71da44fefcfc094Wink Saville * 281efbca4d01d2fe6ecb9e697aea71da44fefcfc094Wink Saville * @hide 282efbca4d01d2fe6ecb9e697aea71da44fefcfc094Wink Saville */ 283efbca4d01d2fe6ecb9e697aea71da44fefcfc094Wink Saville public static SignalStrength makeSignalStrengthFromRilParcel(Parcel in) { 284efbca4d01d2fe6ecb9e697aea71da44fefcfc094Wink Saville if (DBG) log("Size of signalstrength parcel:" + in.dataSize()); 285efbca4d01d2fe6ecb9e697aea71da44fefcfc094Wink Saville 286efbca4d01d2fe6ecb9e697aea71da44fefcfc094Wink Saville SignalStrength ss = new SignalStrength(); 287efbca4d01d2fe6ecb9e697aea71da44fefcfc094Wink Saville ss.mGsmSignalStrength = in.readInt(); 288efbca4d01d2fe6ecb9e697aea71da44fefcfc094Wink Saville ss.mGsmBitErrorRate = in.readInt(); 289efbca4d01d2fe6ecb9e697aea71da44fefcfc094Wink Saville ss.mCdmaDbm = in.readInt(); 290efbca4d01d2fe6ecb9e697aea71da44fefcfc094Wink Saville ss.mCdmaEcio = in.readInt(); 291efbca4d01d2fe6ecb9e697aea71da44fefcfc094Wink Saville ss.mEvdoDbm = in.readInt(); 292efbca4d01d2fe6ecb9e697aea71da44fefcfc094Wink Saville ss.mEvdoEcio = in.readInt(); 293efbca4d01d2fe6ecb9e697aea71da44fefcfc094Wink Saville ss.mEvdoSnr = in.readInt(); 294efbca4d01d2fe6ecb9e697aea71da44fefcfc094Wink Saville ss.mLteSignalStrength = in.readInt(); 295efbca4d01d2fe6ecb9e697aea71da44fefcfc094Wink Saville ss.mLteRsrp = in.readInt(); 296efbca4d01d2fe6ecb9e697aea71da44fefcfc094Wink Saville ss.mLteRsrq = in.readInt(); 297efbca4d01d2fe6ecb9e697aea71da44fefcfc094Wink Saville ss.mLteRssnr = in.readInt(); 298efbca4d01d2fe6ecb9e697aea71da44fefcfc094Wink Saville ss.mLteCqi = in.readInt(); 299efbca4d01d2fe6ecb9e697aea71da44fefcfc094Wink Saville 300efbca4d01d2fe6ecb9e697aea71da44fefcfc094Wink Saville return ss; 301efbca4d01d2fe6ecb9e697aea71da44fefcfc094Wink Saville } 302efbca4d01d2fe6ecb9e697aea71da44fefcfc094Wink Saville 303efbca4d01d2fe6ecb9e697aea71da44fefcfc094Wink Saville /** 304cc6ff2bc6011294367d9a8c644f811449e952eb7Wink Saville * {@link Parcelable#writeToParcel} 305cc6ff2bc6011294367d9a8c644f811449e952eb7Wink Saville */ 306e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville public void writeToParcel(Parcel out, int flags) { 307e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville out.writeInt(mGsmSignalStrength); 308e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville out.writeInt(mGsmBitErrorRate); 309e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville out.writeInt(mCdmaDbm); 310e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville out.writeInt(mCdmaEcio); 311e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville out.writeInt(mEvdoDbm); 312e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville out.writeInt(mEvdoEcio); 313e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville out.writeInt(mEvdoSnr); 3145284090631e638b916d9a453212e9dc802656a67Wink Saville out.writeInt(mLteSignalStrength); 3155284090631e638b916d9a453212e9dc802656a67Wink Saville out.writeInt(mLteRsrp); 3165284090631e638b916d9a453212e9dc802656a67Wink Saville out.writeInt(mLteRsrq); 3175284090631e638b916d9a453212e9dc802656a67Wink Saville out.writeInt(mLteRssnr); 3185284090631e638b916d9a453212e9dc802656a67Wink Saville out.writeInt(mLteCqi); 319e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville out.writeInt(isGsm ? 1 : 0); 320e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville } 321e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 322cc6ff2bc6011294367d9a8c644f811449e952eb7Wink Saville /** 323cc6ff2bc6011294367d9a8c644f811449e952eb7Wink Saville * {@link Parcelable#describeContents} 324cc6ff2bc6011294367d9a8c644f811449e952eb7Wink Saville */ 325e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville public int describeContents() { 326e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville return 0; 327e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville } 328e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 329cc6ff2bc6011294367d9a8c644f811449e952eb7Wink Saville /** 330cc6ff2bc6011294367d9a8c644f811449e952eb7Wink Saville * {@link Parcelable.Creator} 331cc6ff2bc6011294367d9a8c644f811449e952eb7Wink Saville * 332cc6ff2bc6011294367d9a8c644f811449e952eb7Wink Saville * @hide 333cc6ff2bc6011294367d9a8c644f811449e952eb7Wink Saville */ 334e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville public static final Parcelable.Creator<SignalStrength> CREATOR = new Parcelable.Creator() { 335e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville public SignalStrength createFromParcel(Parcel in) { 336e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville return new SignalStrength(in); 337e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville } 338e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 339e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville public SignalStrength[] newArray(int size) { 340e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville return new SignalStrength[size]; 341e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville } 342e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville }; 343e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 344e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville /** 345a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam * Validate the individual signal strength fields as per the range 346a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam * specified in ril.h 347a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam * Set to invalid any field that is not in the valid range 348a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam * Cdma, evdo, lte rsrp & rsrq values are sign converted 349a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam * when received from ril interface 350a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam * 351a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam * @return 352a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam * Valid values for all signalstrength fields 353a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam * @hide 354a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam */ 355a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam public void validateInput() { 356a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam if (DBG) log("Signal before validate=" + this); 357a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam // TS 27.007 8.5 358a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam mGsmSignalStrength = mGsmSignalStrength >= 0 ? mGsmSignalStrength : 99; 359a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam // BER no change; 360a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam 361a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam mCdmaDbm = mCdmaDbm > 0 ? -mCdmaDbm : -120; 362a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam mCdmaEcio = (mCdmaEcio > 0) ? -mCdmaEcio : -160; 363a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam 364a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam mEvdoDbm = (mEvdoDbm > 0) ? -mEvdoDbm : -120; 3658ab862cbd4eeeb52ab921a555b7a006e89fd2abcBanavathu, Srinivas Naik mEvdoEcio = (mEvdoEcio >= 0) ? -mEvdoEcio : -1; 366a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam mEvdoSnr = ((mEvdoSnr > 0) && (mEvdoSnr <= 8)) ? mEvdoSnr : -1; 367a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam 368a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam // TS 36.214 Physical Layer Section 5.1.3, TS 36.331 RRC 369a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam mLteSignalStrength = (mLteSignalStrength >= 0) ? mLteSignalStrength : 99; 370a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam mLteRsrp = ((mLteRsrp >= 44) && (mLteRsrp <= 140)) ? -mLteRsrp : SignalStrength.INVALID; 371a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam mLteRsrq = ((mLteRsrq >= 3) && (mLteRsrq <= 20)) ? -mLteRsrq : SignalStrength.INVALID; 372a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam mLteRssnr = ((mLteRssnr >= -200) && (mLteRssnr <= 300)) ? mLteRssnr 373a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam : SignalStrength.INVALID; 374a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam // Cqi no change 375a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam if (DBG) log("Signal after validate=" + this); 376a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam } 377a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam 378a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam /** 379a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam * @param true - Gsm, Lte phones 380a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam * false - Cdma phones 381a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam * 382a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam * Used by voice phone to set the isGsm 383a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam * flag 384a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam * @hide 385a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam */ 386a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam public void setGsm(boolean gsmFlag) { 387a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam isGsm = gsmFlag; 388a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam } 389a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam 390a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam /** 391a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam * Get the GSM Signal Strength, valid values are (0-31, 99) as defined in TS 392a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam * 27.007 8.5 393e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville */ 394e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville public int getGsmSignalStrength() { 395e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville return this.mGsmSignalStrength; 396e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville } 397e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 398e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville /** 399e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville * Get the GSM bit error rate (0-7, 99) as defined in TS 27.007 8.5 400e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville */ 401e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville public int getGsmBitErrorRate() { 402e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville return this.mGsmBitErrorRate; 403e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville } 404e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 405e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville /** 406e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville * Get the CDMA RSSI value in dBm 407e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville */ 408e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville public int getCdmaDbm() { 409e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville return this.mCdmaDbm; 410e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville } 411e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 412e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville /** 413e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville * Get the CDMA Ec/Io value in dB*10 414e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville */ 415e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville public int getCdmaEcio() { 416e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville return this.mCdmaEcio; 417e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville } 418e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 419e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville /** 420e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville * Get the EVDO RSSI value in dBm 421e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville */ 422e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville public int getEvdoDbm() { 423e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville return this.mEvdoDbm; 424e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville } 425e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 426e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville /** 427e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville * Get the EVDO Ec/Io value in dB*10 428e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville */ 429e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville public int getEvdoEcio() { 430e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville return this.mEvdoEcio; 431e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville } 432e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 433e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville /** 434e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville * Get the signal to noise ratio. Valid values are 0-8. 8 is the highest. 435e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville */ 436e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville public int getEvdoSnr() { 437e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville return this.mEvdoSnr; 438e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville } 439e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 4402900a3fae6e3da65522ffc16673ab1757352afbbWink Saville /** @hide */ 44129c8b00f14675aa35ef44a58a60947f477247a1aWink Saville public int getLteSignalStrength() { 4422900a3fae6e3da65522ffc16673ab1757352afbbWink Saville return mLteSignalStrength; 4432900a3fae6e3da65522ffc16673ab1757352afbbWink Saville } 4442900a3fae6e3da65522ffc16673ab1757352afbbWink Saville 4452900a3fae6e3da65522ffc16673ab1757352afbbWink Saville /** @hide */ 4462900a3fae6e3da65522ffc16673ab1757352afbbWink Saville public int getLteRsrp() { 4472900a3fae6e3da65522ffc16673ab1757352afbbWink Saville return mLteRsrp; 4482900a3fae6e3da65522ffc16673ab1757352afbbWink Saville } 4492900a3fae6e3da65522ffc16673ab1757352afbbWink Saville 4502900a3fae6e3da65522ffc16673ab1757352afbbWink Saville /** @hide */ 4512900a3fae6e3da65522ffc16673ab1757352afbbWink Saville public int getLteRsrq() { 4522900a3fae6e3da65522ffc16673ab1757352afbbWink Saville return mLteRsrq; 4532900a3fae6e3da65522ffc16673ab1757352afbbWink Saville } 4542900a3fae6e3da65522ffc16673ab1757352afbbWink Saville 4552900a3fae6e3da65522ffc16673ab1757352afbbWink Saville /** @hide */ 4562900a3fae6e3da65522ffc16673ab1757352afbbWink Saville public int getLteRssnr() { 4572900a3fae6e3da65522ffc16673ab1757352afbbWink Saville return mLteRssnr; 4582900a3fae6e3da65522ffc16673ab1757352afbbWink Saville } 4592900a3fae6e3da65522ffc16673ab1757352afbbWink Saville 4602900a3fae6e3da65522ffc16673ab1757352afbbWink Saville /** @hide */ 4612900a3fae6e3da65522ffc16673ab1757352afbbWink Saville public int getLteCqi() { 4622900a3fae6e3da65522ffc16673ab1757352afbbWink Saville return mLteCqi; 4632900a3fae6e3da65522ffc16673ab1757352afbbWink Saville } 4642900a3fae6e3da65522ffc16673ab1757352afbbWink Saville 465e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville /** 4665284090631e638b916d9a453212e9dc802656a67Wink Saville * Get signal level as an int from 0..4 4675284090631e638b916d9a453212e9dc802656a67Wink Saville * 4685284090631e638b916d9a453212e9dc802656a67Wink Saville * @hide 4695284090631e638b916d9a453212e9dc802656a67Wink Saville */ 4705284090631e638b916d9a453212e9dc802656a67Wink Saville public int getLevel() { 4715284090631e638b916d9a453212e9dc802656a67Wink Saville int level; 4725284090631e638b916d9a453212e9dc802656a67Wink Saville 4735284090631e638b916d9a453212e9dc802656a67Wink Saville if (isGsm) { 474a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam level = getLteLevel(); 475a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam if (level == SIGNAL_STRENGTH_NONE_OR_UNKNOWN) { 4765284090631e638b916d9a453212e9dc802656a67Wink Saville level = getGsmLevel(); 4775284090631e638b916d9a453212e9dc802656a67Wink Saville } 4785284090631e638b916d9a453212e9dc802656a67Wink Saville } else { 4795284090631e638b916d9a453212e9dc802656a67Wink Saville int cdmaLevel = getCdmaLevel(); 4805284090631e638b916d9a453212e9dc802656a67Wink Saville int evdoLevel = getEvdoLevel(); 4815284090631e638b916d9a453212e9dc802656a67Wink Saville if (evdoLevel == SIGNAL_STRENGTH_NONE_OR_UNKNOWN) { 4825284090631e638b916d9a453212e9dc802656a67Wink Saville /* We don't know evdo, use cdma */ 483a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam level = cdmaLevel; 4845284090631e638b916d9a453212e9dc802656a67Wink Saville } else if (cdmaLevel == SIGNAL_STRENGTH_NONE_OR_UNKNOWN) { 4855284090631e638b916d9a453212e9dc802656a67Wink Saville /* We don't know cdma, use evdo */ 486a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam level = evdoLevel; 4875284090631e638b916d9a453212e9dc802656a67Wink Saville } else { 4885284090631e638b916d9a453212e9dc802656a67Wink Saville /* We know both, use the lowest level */ 4895284090631e638b916d9a453212e9dc802656a67Wink Saville level = cdmaLevel < evdoLevel ? cdmaLevel : evdoLevel; 4905284090631e638b916d9a453212e9dc802656a67Wink Saville } 4915284090631e638b916d9a453212e9dc802656a67Wink Saville } 4925284090631e638b916d9a453212e9dc802656a67Wink Saville if (DBG) log("getLevel=" + level); 4935284090631e638b916d9a453212e9dc802656a67Wink Saville return level; 4945284090631e638b916d9a453212e9dc802656a67Wink Saville } 4955284090631e638b916d9a453212e9dc802656a67Wink Saville 4965284090631e638b916d9a453212e9dc802656a67Wink Saville /** 4975284090631e638b916d9a453212e9dc802656a67Wink Saville * Get the signal level as an asu value between 0..31, 99 is unknown 4985284090631e638b916d9a453212e9dc802656a67Wink Saville * 4995284090631e638b916d9a453212e9dc802656a67Wink Saville * @hide 5005284090631e638b916d9a453212e9dc802656a67Wink Saville */ 5015284090631e638b916d9a453212e9dc802656a67Wink Saville public int getAsuLevel() { 5025284090631e638b916d9a453212e9dc802656a67Wink Saville int asuLevel; 5035284090631e638b916d9a453212e9dc802656a67Wink Saville if (isGsm) { 504a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam if (getLteLevel() == SIGNAL_STRENGTH_NONE_OR_UNKNOWN) { 5055284090631e638b916d9a453212e9dc802656a67Wink Saville asuLevel = getGsmAsuLevel(); 5065284090631e638b916d9a453212e9dc802656a67Wink Saville } else { 5075284090631e638b916d9a453212e9dc802656a67Wink Saville asuLevel = getLteAsuLevel(); 5085284090631e638b916d9a453212e9dc802656a67Wink Saville } 5095284090631e638b916d9a453212e9dc802656a67Wink Saville } else { 5105284090631e638b916d9a453212e9dc802656a67Wink Saville int cdmaAsuLevel = getCdmaAsuLevel(); 5115284090631e638b916d9a453212e9dc802656a67Wink Saville int evdoAsuLevel = getEvdoAsuLevel(); 5125284090631e638b916d9a453212e9dc802656a67Wink Saville if (evdoAsuLevel == 0) { 5135284090631e638b916d9a453212e9dc802656a67Wink Saville /* We don't know evdo use, cdma */ 5145284090631e638b916d9a453212e9dc802656a67Wink Saville asuLevel = cdmaAsuLevel; 5155284090631e638b916d9a453212e9dc802656a67Wink Saville } else if (cdmaAsuLevel == 0) { 5165284090631e638b916d9a453212e9dc802656a67Wink Saville /* We don't know cdma use, evdo */ 5175284090631e638b916d9a453212e9dc802656a67Wink Saville asuLevel = evdoAsuLevel; 5185284090631e638b916d9a453212e9dc802656a67Wink Saville } else { 5195284090631e638b916d9a453212e9dc802656a67Wink Saville /* We know both, use the lowest level */ 5205284090631e638b916d9a453212e9dc802656a67Wink Saville asuLevel = cdmaAsuLevel < evdoAsuLevel ? cdmaAsuLevel : evdoAsuLevel; 5215284090631e638b916d9a453212e9dc802656a67Wink Saville } 5225284090631e638b916d9a453212e9dc802656a67Wink Saville } 5235284090631e638b916d9a453212e9dc802656a67Wink Saville if (DBG) log("getAsuLevel=" + asuLevel); 5245284090631e638b916d9a453212e9dc802656a67Wink Saville return asuLevel; 5255284090631e638b916d9a453212e9dc802656a67Wink Saville } 5265284090631e638b916d9a453212e9dc802656a67Wink Saville 5275284090631e638b916d9a453212e9dc802656a67Wink Saville /** 5285284090631e638b916d9a453212e9dc802656a67Wink Saville * Get the signal strength as dBm 5295284090631e638b916d9a453212e9dc802656a67Wink Saville * 5305284090631e638b916d9a453212e9dc802656a67Wink Saville * @hide 5315284090631e638b916d9a453212e9dc802656a67Wink Saville */ 5325284090631e638b916d9a453212e9dc802656a67Wink Saville public int getDbm() { 5335284090631e638b916d9a453212e9dc802656a67Wink Saville int dBm; 5345284090631e638b916d9a453212e9dc802656a67Wink Saville 5355284090631e638b916d9a453212e9dc802656a67Wink Saville if(isGsm()) { 536a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam if (getLteLevel() == SIGNAL_STRENGTH_NONE_OR_UNKNOWN) { 5375284090631e638b916d9a453212e9dc802656a67Wink Saville dBm = getGsmDbm(); 5385284090631e638b916d9a453212e9dc802656a67Wink Saville } else { 5395284090631e638b916d9a453212e9dc802656a67Wink Saville dBm = getLteDbm(); 5405284090631e638b916d9a453212e9dc802656a67Wink Saville } 5415284090631e638b916d9a453212e9dc802656a67Wink Saville } else { 542a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam int cdmaDbm = getCdmaDbm(); 543a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam int evdoDbm = getEvdoDbm(); 544a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam 545a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam return (evdoDbm == -120) ? cdmaDbm : ((cdmaDbm == -120) ? evdoDbm 546a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam : (cdmaDbm < evdoDbm ? cdmaDbm : evdoDbm)); 5475284090631e638b916d9a453212e9dc802656a67Wink Saville } 5485284090631e638b916d9a453212e9dc802656a67Wink Saville if (DBG) log("getDbm=" + dBm); 5495284090631e638b916d9a453212e9dc802656a67Wink Saville return dBm; 5505284090631e638b916d9a453212e9dc802656a67Wink Saville } 5515284090631e638b916d9a453212e9dc802656a67Wink Saville 5525284090631e638b916d9a453212e9dc802656a67Wink Saville /** 5535284090631e638b916d9a453212e9dc802656a67Wink Saville * Get Gsm signal strength as dBm 5545284090631e638b916d9a453212e9dc802656a67Wink Saville * 5555284090631e638b916d9a453212e9dc802656a67Wink Saville * @hide 5565284090631e638b916d9a453212e9dc802656a67Wink Saville */ 5575284090631e638b916d9a453212e9dc802656a67Wink Saville public int getGsmDbm() { 5585284090631e638b916d9a453212e9dc802656a67Wink Saville int dBm; 5595284090631e638b916d9a453212e9dc802656a67Wink Saville 5605284090631e638b916d9a453212e9dc802656a67Wink Saville int gsmSignalStrength = getGsmSignalStrength(); 5615284090631e638b916d9a453212e9dc802656a67Wink Saville int asu = (gsmSignalStrength == 99 ? -1 : gsmSignalStrength); 5625284090631e638b916d9a453212e9dc802656a67Wink Saville if (asu != -1) { 5635284090631e638b916d9a453212e9dc802656a67Wink Saville dBm = -113 + (2 * asu); 5645284090631e638b916d9a453212e9dc802656a67Wink Saville } else { 5655284090631e638b916d9a453212e9dc802656a67Wink Saville dBm = -1; 5665284090631e638b916d9a453212e9dc802656a67Wink Saville } 5675284090631e638b916d9a453212e9dc802656a67Wink Saville if (DBG) log("getGsmDbm=" + dBm); 5685284090631e638b916d9a453212e9dc802656a67Wink Saville return dBm; 5695284090631e638b916d9a453212e9dc802656a67Wink Saville } 5705284090631e638b916d9a453212e9dc802656a67Wink Saville 5715284090631e638b916d9a453212e9dc802656a67Wink Saville /** 5725284090631e638b916d9a453212e9dc802656a67Wink Saville * Get gsm as level 0..4 5735284090631e638b916d9a453212e9dc802656a67Wink Saville * 5745284090631e638b916d9a453212e9dc802656a67Wink Saville * @hide 5755284090631e638b916d9a453212e9dc802656a67Wink Saville */ 5765284090631e638b916d9a453212e9dc802656a67Wink Saville public int getGsmLevel() { 5775284090631e638b916d9a453212e9dc802656a67Wink Saville int level; 5785284090631e638b916d9a453212e9dc802656a67Wink Saville 5795284090631e638b916d9a453212e9dc802656a67Wink Saville // ASU ranges from 0 to 31 - TS 27.007 Sec 8.5 5805284090631e638b916d9a453212e9dc802656a67Wink Saville // asu = 0 (-113dB or less) is very weak 5815284090631e638b916d9a453212e9dc802656a67Wink Saville // signal, its better to show 0 bars to the user in such cases. 5825284090631e638b916d9a453212e9dc802656a67Wink Saville // asu = 99 is a special case, where the signal strength is unknown. 5835284090631e638b916d9a453212e9dc802656a67Wink Saville int asu = getGsmSignalStrength(); 5845284090631e638b916d9a453212e9dc802656a67Wink Saville if (asu <= 2 || asu == 99) level = SIGNAL_STRENGTH_NONE_OR_UNKNOWN; 5855284090631e638b916d9a453212e9dc802656a67Wink Saville else if (asu >= 12) level = SIGNAL_STRENGTH_GREAT; 5865284090631e638b916d9a453212e9dc802656a67Wink Saville else if (asu >= 8) level = SIGNAL_STRENGTH_GOOD; 5875284090631e638b916d9a453212e9dc802656a67Wink Saville else if (asu >= 5) level = SIGNAL_STRENGTH_MODERATE; 5885284090631e638b916d9a453212e9dc802656a67Wink Saville else level = SIGNAL_STRENGTH_POOR; 5895284090631e638b916d9a453212e9dc802656a67Wink Saville if (DBG) log("getGsmLevel=" + level); 5905284090631e638b916d9a453212e9dc802656a67Wink Saville return level; 5915284090631e638b916d9a453212e9dc802656a67Wink Saville } 5925284090631e638b916d9a453212e9dc802656a67Wink Saville 5935284090631e638b916d9a453212e9dc802656a67Wink Saville /** 5945284090631e638b916d9a453212e9dc802656a67Wink Saville * Get the gsm signal level as an asu value between 0..31, 99 is unknown 5955284090631e638b916d9a453212e9dc802656a67Wink Saville * 5965284090631e638b916d9a453212e9dc802656a67Wink Saville * @hide 5975284090631e638b916d9a453212e9dc802656a67Wink Saville */ 5985284090631e638b916d9a453212e9dc802656a67Wink Saville public int getGsmAsuLevel() { 5995284090631e638b916d9a453212e9dc802656a67Wink Saville // ASU ranges from 0 to 31 - TS 27.007 Sec 8.5 6005284090631e638b916d9a453212e9dc802656a67Wink Saville // asu = 0 (-113dB or less) is very weak 6015284090631e638b916d9a453212e9dc802656a67Wink Saville // signal, its better to show 0 bars to the user in such cases. 6025284090631e638b916d9a453212e9dc802656a67Wink Saville // asu = 99 is a special case, where the signal strength is unknown. 6035284090631e638b916d9a453212e9dc802656a67Wink Saville int level = getGsmSignalStrength(); 6045284090631e638b916d9a453212e9dc802656a67Wink Saville if (DBG) log("getGsmAsuLevel=" + level); 6055284090631e638b916d9a453212e9dc802656a67Wink Saville return level; 6065284090631e638b916d9a453212e9dc802656a67Wink Saville } 6075284090631e638b916d9a453212e9dc802656a67Wink Saville 6085284090631e638b916d9a453212e9dc802656a67Wink Saville /** 6095284090631e638b916d9a453212e9dc802656a67Wink Saville * Get cdma as level 0..4 6105284090631e638b916d9a453212e9dc802656a67Wink Saville * 6115284090631e638b916d9a453212e9dc802656a67Wink Saville * @hide 6125284090631e638b916d9a453212e9dc802656a67Wink Saville */ 6135284090631e638b916d9a453212e9dc802656a67Wink Saville public int getCdmaLevel() { 6145284090631e638b916d9a453212e9dc802656a67Wink Saville final int cdmaDbm = getCdmaDbm(); 6155284090631e638b916d9a453212e9dc802656a67Wink Saville final int cdmaEcio = getCdmaEcio(); 6165284090631e638b916d9a453212e9dc802656a67Wink Saville int levelDbm; 6175284090631e638b916d9a453212e9dc802656a67Wink Saville int levelEcio; 6185284090631e638b916d9a453212e9dc802656a67Wink Saville 6195284090631e638b916d9a453212e9dc802656a67Wink Saville if (cdmaDbm >= -75) levelDbm = SIGNAL_STRENGTH_GREAT; 6205284090631e638b916d9a453212e9dc802656a67Wink Saville else if (cdmaDbm >= -85) levelDbm = SIGNAL_STRENGTH_GOOD; 6215284090631e638b916d9a453212e9dc802656a67Wink Saville else if (cdmaDbm >= -95) levelDbm = SIGNAL_STRENGTH_MODERATE; 6225284090631e638b916d9a453212e9dc802656a67Wink Saville else if (cdmaDbm >= -100) levelDbm = SIGNAL_STRENGTH_POOR; 6235284090631e638b916d9a453212e9dc802656a67Wink Saville else levelDbm = SIGNAL_STRENGTH_NONE_OR_UNKNOWN; 6245284090631e638b916d9a453212e9dc802656a67Wink Saville 6255284090631e638b916d9a453212e9dc802656a67Wink Saville // Ec/Io are in dB*10 6265284090631e638b916d9a453212e9dc802656a67Wink Saville if (cdmaEcio >= -90) levelEcio = SIGNAL_STRENGTH_GREAT; 6275284090631e638b916d9a453212e9dc802656a67Wink Saville else if (cdmaEcio >= -110) levelEcio = SIGNAL_STRENGTH_GOOD; 6285284090631e638b916d9a453212e9dc802656a67Wink Saville else if (cdmaEcio >= -130) levelEcio = SIGNAL_STRENGTH_MODERATE; 6295284090631e638b916d9a453212e9dc802656a67Wink Saville else if (cdmaEcio >= -150) levelEcio = SIGNAL_STRENGTH_POOR; 6305284090631e638b916d9a453212e9dc802656a67Wink Saville else levelEcio = SIGNAL_STRENGTH_NONE_OR_UNKNOWN; 6315284090631e638b916d9a453212e9dc802656a67Wink Saville 6325284090631e638b916d9a453212e9dc802656a67Wink Saville int level = (levelDbm < levelEcio) ? levelDbm : levelEcio; 6335284090631e638b916d9a453212e9dc802656a67Wink Saville if (DBG) log("getCdmaLevel=" + level); 6345284090631e638b916d9a453212e9dc802656a67Wink Saville return level; 6355284090631e638b916d9a453212e9dc802656a67Wink Saville } 6365284090631e638b916d9a453212e9dc802656a67Wink Saville 6375284090631e638b916d9a453212e9dc802656a67Wink Saville /** 6385284090631e638b916d9a453212e9dc802656a67Wink Saville * Get the cdma signal level as an asu value between 0..31, 99 is unknown 6395284090631e638b916d9a453212e9dc802656a67Wink Saville * 6405284090631e638b916d9a453212e9dc802656a67Wink Saville * @hide 6415284090631e638b916d9a453212e9dc802656a67Wink Saville */ 6425284090631e638b916d9a453212e9dc802656a67Wink Saville public int getCdmaAsuLevel() { 6435284090631e638b916d9a453212e9dc802656a67Wink Saville final int cdmaDbm = getCdmaDbm(); 6445284090631e638b916d9a453212e9dc802656a67Wink Saville final int cdmaEcio = getCdmaEcio(); 6455284090631e638b916d9a453212e9dc802656a67Wink Saville int cdmaAsuLevel; 6465284090631e638b916d9a453212e9dc802656a67Wink Saville int ecioAsuLevel; 6475284090631e638b916d9a453212e9dc802656a67Wink Saville 6485284090631e638b916d9a453212e9dc802656a67Wink Saville if (cdmaDbm >= -75) cdmaAsuLevel = 16; 6495284090631e638b916d9a453212e9dc802656a67Wink Saville else if (cdmaDbm >= -82) cdmaAsuLevel = 8; 6505284090631e638b916d9a453212e9dc802656a67Wink Saville else if (cdmaDbm >= -90) cdmaAsuLevel = 4; 6515284090631e638b916d9a453212e9dc802656a67Wink Saville else if (cdmaDbm >= -95) cdmaAsuLevel = 2; 6525284090631e638b916d9a453212e9dc802656a67Wink Saville else if (cdmaDbm >= -100) cdmaAsuLevel = 1; 6535284090631e638b916d9a453212e9dc802656a67Wink Saville else cdmaAsuLevel = 99; 6545284090631e638b916d9a453212e9dc802656a67Wink Saville 6555284090631e638b916d9a453212e9dc802656a67Wink Saville // Ec/Io are in dB*10 6565284090631e638b916d9a453212e9dc802656a67Wink Saville if (cdmaEcio >= -90) ecioAsuLevel = 16; 6575284090631e638b916d9a453212e9dc802656a67Wink Saville else if (cdmaEcio >= -100) ecioAsuLevel = 8; 6585284090631e638b916d9a453212e9dc802656a67Wink Saville else if (cdmaEcio >= -115) ecioAsuLevel = 4; 6595284090631e638b916d9a453212e9dc802656a67Wink Saville else if (cdmaEcio >= -130) ecioAsuLevel = 2; 6605284090631e638b916d9a453212e9dc802656a67Wink Saville else if (cdmaEcio >= -150) ecioAsuLevel = 1; 6615284090631e638b916d9a453212e9dc802656a67Wink Saville else ecioAsuLevel = 99; 6625284090631e638b916d9a453212e9dc802656a67Wink Saville 6635284090631e638b916d9a453212e9dc802656a67Wink Saville int level = (cdmaAsuLevel < ecioAsuLevel) ? cdmaAsuLevel : ecioAsuLevel; 6645284090631e638b916d9a453212e9dc802656a67Wink Saville if (DBG) log("getCdmaAsuLevel=" + level); 6655284090631e638b916d9a453212e9dc802656a67Wink Saville return level; 6665284090631e638b916d9a453212e9dc802656a67Wink Saville } 6675284090631e638b916d9a453212e9dc802656a67Wink Saville 6685284090631e638b916d9a453212e9dc802656a67Wink Saville /** 6695284090631e638b916d9a453212e9dc802656a67Wink Saville * Get Evdo as level 0..4 6705284090631e638b916d9a453212e9dc802656a67Wink Saville * 6715284090631e638b916d9a453212e9dc802656a67Wink Saville * @hide 6725284090631e638b916d9a453212e9dc802656a67Wink Saville */ 6735284090631e638b916d9a453212e9dc802656a67Wink Saville public int getEvdoLevel() { 6745284090631e638b916d9a453212e9dc802656a67Wink Saville int evdoDbm = getEvdoDbm(); 6755284090631e638b916d9a453212e9dc802656a67Wink Saville int evdoSnr = getEvdoSnr(); 6765284090631e638b916d9a453212e9dc802656a67Wink Saville int levelEvdoDbm; 6775284090631e638b916d9a453212e9dc802656a67Wink Saville int levelEvdoSnr; 6785284090631e638b916d9a453212e9dc802656a67Wink Saville 6795284090631e638b916d9a453212e9dc802656a67Wink Saville if (evdoDbm >= -65) levelEvdoDbm = SIGNAL_STRENGTH_GREAT; 6805284090631e638b916d9a453212e9dc802656a67Wink Saville else if (evdoDbm >= -75) levelEvdoDbm = SIGNAL_STRENGTH_GOOD; 6815284090631e638b916d9a453212e9dc802656a67Wink Saville else if (evdoDbm >= -90) levelEvdoDbm = SIGNAL_STRENGTH_MODERATE; 6825284090631e638b916d9a453212e9dc802656a67Wink Saville else if (evdoDbm >= -105) levelEvdoDbm = SIGNAL_STRENGTH_POOR; 6835284090631e638b916d9a453212e9dc802656a67Wink Saville else levelEvdoDbm = SIGNAL_STRENGTH_NONE_OR_UNKNOWN; 6845284090631e638b916d9a453212e9dc802656a67Wink Saville 6855284090631e638b916d9a453212e9dc802656a67Wink Saville if (evdoSnr >= 7) levelEvdoSnr = SIGNAL_STRENGTH_GREAT; 6865284090631e638b916d9a453212e9dc802656a67Wink Saville else if (evdoSnr >= 5) levelEvdoSnr = SIGNAL_STRENGTH_GOOD; 6875284090631e638b916d9a453212e9dc802656a67Wink Saville else if (evdoSnr >= 3) levelEvdoSnr = SIGNAL_STRENGTH_MODERATE; 6885284090631e638b916d9a453212e9dc802656a67Wink Saville else if (evdoSnr >= 1) levelEvdoSnr = SIGNAL_STRENGTH_POOR; 6895284090631e638b916d9a453212e9dc802656a67Wink Saville else levelEvdoSnr = SIGNAL_STRENGTH_NONE_OR_UNKNOWN; 6905284090631e638b916d9a453212e9dc802656a67Wink Saville 6915284090631e638b916d9a453212e9dc802656a67Wink Saville int level = (levelEvdoDbm < levelEvdoSnr) ? levelEvdoDbm : levelEvdoSnr; 6925284090631e638b916d9a453212e9dc802656a67Wink Saville if (DBG) log("getEvdoLevel=" + level); 6935284090631e638b916d9a453212e9dc802656a67Wink Saville return level; 6945284090631e638b916d9a453212e9dc802656a67Wink Saville } 6955284090631e638b916d9a453212e9dc802656a67Wink Saville 6965284090631e638b916d9a453212e9dc802656a67Wink Saville /** 6975284090631e638b916d9a453212e9dc802656a67Wink Saville * Get the evdo signal level as an asu value between 0..31, 99 is unknown 6985284090631e638b916d9a453212e9dc802656a67Wink Saville * 6995284090631e638b916d9a453212e9dc802656a67Wink Saville * @hide 7005284090631e638b916d9a453212e9dc802656a67Wink Saville */ 7015284090631e638b916d9a453212e9dc802656a67Wink Saville public int getEvdoAsuLevel() { 7025284090631e638b916d9a453212e9dc802656a67Wink Saville int evdoDbm = getEvdoDbm(); 7035284090631e638b916d9a453212e9dc802656a67Wink Saville int evdoSnr = getEvdoSnr(); 7045284090631e638b916d9a453212e9dc802656a67Wink Saville int levelEvdoDbm; 7055284090631e638b916d9a453212e9dc802656a67Wink Saville int levelEvdoSnr; 7065284090631e638b916d9a453212e9dc802656a67Wink Saville 7075284090631e638b916d9a453212e9dc802656a67Wink Saville if (evdoDbm >= -65) levelEvdoDbm = 16; 7085284090631e638b916d9a453212e9dc802656a67Wink Saville else if (evdoDbm >= -75) levelEvdoDbm = 8; 7095284090631e638b916d9a453212e9dc802656a67Wink Saville else if (evdoDbm >= -85) levelEvdoDbm = 4; 7105284090631e638b916d9a453212e9dc802656a67Wink Saville else if (evdoDbm >= -95) levelEvdoDbm = 2; 7115284090631e638b916d9a453212e9dc802656a67Wink Saville else if (evdoDbm >= -105) levelEvdoDbm = 1; 7125284090631e638b916d9a453212e9dc802656a67Wink Saville else levelEvdoDbm = 99; 7135284090631e638b916d9a453212e9dc802656a67Wink Saville 7145284090631e638b916d9a453212e9dc802656a67Wink Saville if (evdoSnr >= 7) levelEvdoSnr = 16; 7155284090631e638b916d9a453212e9dc802656a67Wink Saville else if (evdoSnr >= 6) levelEvdoSnr = 8; 7165284090631e638b916d9a453212e9dc802656a67Wink Saville else if (evdoSnr >= 5) levelEvdoSnr = 4; 7175284090631e638b916d9a453212e9dc802656a67Wink Saville else if (evdoSnr >= 3) levelEvdoSnr = 2; 7185284090631e638b916d9a453212e9dc802656a67Wink Saville else if (evdoSnr >= 1) levelEvdoSnr = 1; 7195284090631e638b916d9a453212e9dc802656a67Wink Saville else levelEvdoSnr = 99; 7205284090631e638b916d9a453212e9dc802656a67Wink Saville 7215284090631e638b916d9a453212e9dc802656a67Wink Saville int level = (levelEvdoDbm < levelEvdoSnr) ? levelEvdoDbm : levelEvdoSnr; 7225284090631e638b916d9a453212e9dc802656a67Wink Saville if (DBG) log("getEvdoAsuLevel=" + level); 7235284090631e638b916d9a453212e9dc802656a67Wink Saville return level; 7245284090631e638b916d9a453212e9dc802656a67Wink Saville } 7255284090631e638b916d9a453212e9dc802656a67Wink Saville 7265284090631e638b916d9a453212e9dc802656a67Wink Saville /** 7275284090631e638b916d9a453212e9dc802656a67Wink Saville * Get LTE as dBm 7285284090631e638b916d9a453212e9dc802656a67Wink Saville * 7295284090631e638b916d9a453212e9dc802656a67Wink Saville * @hide 7305284090631e638b916d9a453212e9dc802656a67Wink Saville */ 7315284090631e638b916d9a453212e9dc802656a67Wink Saville public int getLteDbm() { 7325d7b9271b3f8a5f27c789a2b673e4bfd532b280cRamesh Sudini return mLteRsrp; 7335284090631e638b916d9a453212e9dc802656a67Wink Saville } 7345284090631e638b916d9a453212e9dc802656a67Wink Saville 7355284090631e638b916d9a453212e9dc802656a67Wink Saville /** 7365284090631e638b916d9a453212e9dc802656a67Wink Saville * Get LTE as level 0..4 7375284090631e638b916d9a453212e9dc802656a67Wink Saville * 7385284090631e638b916d9a453212e9dc802656a67Wink Saville * @hide 7395284090631e638b916d9a453212e9dc802656a67Wink Saville */ 7405284090631e638b916d9a453212e9dc802656a67Wink Saville public int getLteLevel() { 741a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam /* 742a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam * TS 36.214 Physical Layer Section 5.1.3 TS 36.331 RRC RSSI = received 743a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam * signal + noise RSRP = reference signal dBm RSRQ = quality of signal 744a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam * dB= Number of Resource blocksxRSRP/RSSI SNR = gain=signal/noise ratio 745a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam * = -10log P1/P2 dB 746a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam */ 747a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam int rssiIconLevel = SIGNAL_STRENGTH_NONE_OR_UNKNOWN, rsrpIconLevel = -1, snrIconLevel = -1; 748a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam 749a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam if (mLteRsrp > -44) rsrpIconLevel = -1; 750a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam else if (mLteRsrp >= -85) rsrpIconLevel = SIGNAL_STRENGTH_GREAT; 751a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam else if (mLteRsrp >= -95) rsrpIconLevel = SIGNAL_STRENGTH_GOOD; 752a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam else if (mLteRsrp >= -105) rsrpIconLevel = SIGNAL_STRENGTH_MODERATE; 753a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam else if (mLteRsrp >= -115) rsrpIconLevel = SIGNAL_STRENGTH_POOR; 754a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam else if (mLteRsrp >= -140) rsrpIconLevel = SIGNAL_STRENGTH_NONE_OR_UNKNOWN; 755a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam 756a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam /* 757a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam * Values are -200 dB to +300 (SNR*10dB) RS_SNR >= 13.0 dB =>4 bars 4.5 758a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam * dB <= RS_SNR < 13.0 dB => 3 bars 1.0 dB <= RS_SNR < 4.5 dB => 2 bars 759a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam * -3.0 dB <= RS_SNR < 1.0 dB 1 bar RS_SNR < -3.0 dB/No Service Antenna 760a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam * Icon Only 761a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam */ 762a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam if (mLteRssnr > 300) snrIconLevel = -1; 763a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam else if (mLteRssnr >= 130) snrIconLevel = SIGNAL_STRENGTH_GREAT; 764a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam else if (mLteRssnr >= 45) snrIconLevel = SIGNAL_STRENGTH_GOOD; 765a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam else if (mLteRssnr >= 10) snrIconLevel = SIGNAL_STRENGTH_MODERATE; 766a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam else if (mLteRssnr >= -30) snrIconLevel = SIGNAL_STRENGTH_POOR; 767a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam else if (mLteRssnr >= -200) 768a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam snrIconLevel = SIGNAL_STRENGTH_NONE_OR_UNKNOWN; 769a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam 770a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam if (DBG) log("getLTELevel - rsrp:" + mLteRsrp + " snr:" + mLteRssnr + " rsrpIconLevel:" 771a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam + rsrpIconLevel + " snrIconLevel:" + snrIconLevel); 772a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam 773a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam /* Choose a measurement type to use for notification */ 774a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam if (snrIconLevel != -1 && rsrpIconLevel != -1) { 775a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam /* 776a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam * The number of bars displayed shall be the smaller of the bars 777a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam * associated with LTE RSRP and the bars associated with the LTE 778a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam * RS_SNR 779a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam */ 780a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam return (rsrpIconLevel < snrIconLevel ? rsrpIconLevel : snrIconLevel); 781a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam } 7825d7b9271b3f8a5f27c789a2b673e4bfd532b280cRamesh Sudini 783a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam if (snrIconLevel != -1) return snrIconLevel; 7845d7b9271b3f8a5f27c789a2b673e4bfd532b280cRamesh Sudini 785a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam if (rsrpIconLevel != -1) return rsrpIconLevel; 7865e39519396918f9e2312d1c355a9b6889851d887John Wang 787a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam /* Valid values are (0-63, 99) as defined in TS 36.331 */ 788a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam if (mLteSignalStrength > 63) rssiIconLevel = SIGNAL_STRENGTH_NONE_OR_UNKNOWN; 789a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam else if (mLteSignalStrength >= 12) rssiIconLevel = SIGNAL_STRENGTH_GREAT; 790a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam else if (mLteSignalStrength >= 8) rssiIconLevel = SIGNAL_STRENGTH_GOOD; 791a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam else if (mLteSignalStrength >= 5) rssiIconLevel = SIGNAL_STRENGTH_MODERATE; 792a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam else if (mLteSignalStrength >= 0) rssiIconLevel = SIGNAL_STRENGTH_POOR; 793a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam if (DBG) log("getLTELevel - rssi:" + mLteSignalStrength + " rssiIconLevel:" 794a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam + rssiIconLevel); 795a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam return rssiIconLevel; 7965284090631e638b916d9a453212e9dc802656a67Wink Saville 797a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam } 7985284090631e638b916d9a453212e9dc802656a67Wink Saville /** 7995d7b9271b3f8a5f27c789a2b673e4bfd532b280cRamesh Sudini * Get the LTE signal level as an asu value between 0..97, 99 is unknown 8005d7b9271b3f8a5f27c789a2b673e4bfd532b280cRamesh Sudini * Asu is calculated based on 3GPP RSRP. Refer to 3GPP 27.007 (Ver 10.3.0) Sec 8.69 8015284090631e638b916d9a453212e9dc802656a67Wink Saville * 8025284090631e638b916d9a453212e9dc802656a67Wink Saville * @hide 8035284090631e638b916d9a453212e9dc802656a67Wink Saville */ 8045284090631e638b916d9a453212e9dc802656a67Wink Saville public int getLteAsuLevel() { 8055d7b9271b3f8a5f27c789a2b673e4bfd532b280cRamesh Sudini int lteAsuLevel = 99; 8065d7b9271b3f8a5f27c789a2b673e4bfd532b280cRamesh Sudini int lteDbm = getLteDbm(); 807a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam /* 808a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam * 3GPP 27.007 (Ver 10.3.0) Sec 8.69 809a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam * 0 -140 dBm or less 810a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam * 1 -139 dBm 811a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam * 2...96 -138... -44 dBm 812a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam * 97 -43 dBm or greater 813a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam * 255 not known or not detectable 814a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam */ 815a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam /* 816a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam * validateInput will always give a valid range between -140 t0 -44 as 817a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam * per ril.h. so RSRP >= -43 & <-140 will fall under asu level 255 818a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam * and not 97 or 0 819a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam */ 820a44b137648c44cc29a8ce43f44a7934ff8045135Uma Maheswari Ramalingam if (lteDbm == SignalStrength.INVALID) lteAsuLevel = 255; 8215d7b9271b3f8a5f27c789a2b673e4bfd532b280cRamesh Sudini else lteAsuLevel = lteDbm + 140; 8225d7b9271b3f8a5f27c789a2b673e4bfd532b280cRamesh Sudini if (DBG) log("Lte Asu level: "+lteAsuLevel); 8235d7b9271b3f8a5f27c789a2b673e4bfd532b280cRamesh Sudini return lteAsuLevel; 8245284090631e638b916d9a453212e9dc802656a67Wink Saville } 8255284090631e638b916d9a453212e9dc802656a67Wink Saville 8265284090631e638b916d9a453212e9dc802656a67Wink Saville /** 827cc6ff2bc6011294367d9a8c644f811449e952eb7Wink Saville * @return true if this is for GSM 828e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville */ 829e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville public boolean isGsm() { 830e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville return this.isGsm; 831e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville } 832e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 833e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville /** 834cc6ff2bc6011294367d9a8c644f811449e952eb7Wink Saville * @return hash code 835e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville */ 836e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville @Override 837e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville public int hashCode() { 8385284090631e638b916d9a453212e9dc802656a67Wink Saville int primeNum = 31; 8395284090631e638b916d9a453212e9dc802656a67Wink Saville return ((mGsmSignalStrength * primeNum) 8405284090631e638b916d9a453212e9dc802656a67Wink Saville + (mGsmBitErrorRate * primeNum) 8415284090631e638b916d9a453212e9dc802656a67Wink Saville + (mCdmaDbm * primeNum) + (mCdmaEcio * primeNum) 8425284090631e638b916d9a453212e9dc802656a67Wink Saville + (mEvdoDbm * primeNum) + (mEvdoEcio * primeNum) + (mEvdoSnr * primeNum) 8435284090631e638b916d9a453212e9dc802656a67Wink Saville + (mLteSignalStrength * primeNum) + (mLteRsrp * primeNum) 8445284090631e638b916d9a453212e9dc802656a67Wink Saville + (mLteRsrq * primeNum) + (mLteRssnr * primeNum) + (mLteCqi * primeNum) 845e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville + (isGsm ? 1 : 0)); 846e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville } 847e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 848e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville /** 849cc6ff2bc6011294367d9a8c644f811449e952eb7Wink Saville * @return true if the signal strengths are the same 850e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville */ 851e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville @Override 852e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville public boolean equals (Object o) { 853e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville SignalStrength s; 854e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 855e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville try { 856e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville s = (SignalStrength) o; 857e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville } catch (ClassCastException ex) { 858e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville return false; 859e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville } 860e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 861e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville if (o == null) { 862e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville return false; 863e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville } 864e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 865e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville return (mGsmSignalStrength == s.mGsmSignalStrength 866e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville && mGsmBitErrorRate == s.mGsmBitErrorRate 867e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville && mCdmaDbm == s.mCdmaDbm 868e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville && mCdmaEcio == s.mCdmaEcio 869e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville && mEvdoDbm == s.mEvdoDbm 870e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville && mEvdoEcio == s.mEvdoEcio 871e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville && mEvdoSnr == s.mEvdoSnr 8725284090631e638b916d9a453212e9dc802656a67Wink Saville && mLteSignalStrength == s.mLteSignalStrength 8735284090631e638b916d9a453212e9dc802656a67Wink Saville && mLteRsrp == s.mLteRsrp 8745284090631e638b916d9a453212e9dc802656a67Wink Saville && mLteRsrq == s.mLteRsrq 8755284090631e638b916d9a453212e9dc802656a67Wink Saville && mLteRssnr == s.mLteRssnr 8765284090631e638b916d9a453212e9dc802656a67Wink Saville && mLteCqi == s.mLteCqi 877e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville && isGsm == s.isGsm); 878e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville } 879e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 880e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville /** 881cc6ff2bc6011294367d9a8c644f811449e952eb7Wink Saville * @return string representation. 882e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville */ 883e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville @Override 884e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville public String toString() { 885e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville return ("SignalStrength:" 886e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville + " " + mGsmSignalStrength 887e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville + " " + mGsmBitErrorRate 888e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville + " " + mCdmaDbm 889e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville + " " + mCdmaEcio 890e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville + " " + mEvdoDbm 891e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville + " " + mEvdoEcio 892e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville + " " + mEvdoSnr 8935284090631e638b916d9a453212e9dc802656a67Wink Saville + " " + mLteSignalStrength 8945284090631e638b916d9a453212e9dc802656a67Wink Saville + " " + mLteRsrp 8955284090631e638b916d9a453212e9dc802656a67Wink Saville + " " + mLteRsrq 8965284090631e638b916d9a453212e9dc802656a67Wink Saville + " " + mLteRssnr 8975284090631e638b916d9a453212e9dc802656a67Wink Saville + " " + mLteCqi 8985284090631e638b916d9a453212e9dc802656a67Wink Saville + " " + (isGsm ? "gsm|lte" : "cdma")); 899e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville } 900e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 901e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville /** 902e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville * Set SignalStrength based on intent notifier map 903e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville * 904e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville * @param m intent notifier map 905e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville * @hide 906e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville */ 907e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville private void setFromNotifierBundle(Bundle m) { 908e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville mGsmSignalStrength = m.getInt("GsmSignalStrength"); 909e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville mGsmBitErrorRate = m.getInt("GsmBitErrorRate"); 910e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville mCdmaDbm = m.getInt("CdmaDbm"); 911e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville mCdmaEcio = m.getInt("CdmaEcio"); 912e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville mEvdoDbm = m.getInt("EvdoDbm"); 913e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville mEvdoEcio = m.getInt("EvdoEcio"); 914e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville mEvdoSnr = m.getInt("EvdoSnr"); 9155284090631e638b916d9a453212e9dc802656a67Wink Saville mLteSignalStrength = m.getInt("LteSignalStrength"); 9165284090631e638b916d9a453212e9dc802656a67Wink Saville mLteRsrp = m.getInt("LteRsrp"); 9175284090631e638b916d9a453212e9dc802656a67Wink Saville mLteRsrq = m.getInt("LteRsrq"); 9185284090631e638b916d9a453212e9dc802656a67Wink Saville mLteRssnr = m.getInt("LteRssnr"); 9195284090631e638b916d9a453212e9dc802656a67Wink Saville mLteCqi = m.getInt("LteCqi"); 920e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville isGsm = m.getBoolean("isGsm"); 921e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville } 922e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 923e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville /** 924e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville * Set intent notifier Bundle based on SignalStrength 925e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville * 926e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville * @param m intent notifier Bundle 927e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville * @hide 928e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville */ 929e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville public void fillInNotifierBundle(Bundle m) { 930e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville m.putInt("GsmSignalStrength", mGsmSignalStrength); 931e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville m.putInt("GsmBitErrorRate", mGsmBitErrorRate); 932e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville m.putInt("CdmaDbm", mCdmaDbm); 933e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville m.putInt("CdmaEcio", mCdmaEcio); 934e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville m.putInt("EvdoDbm", mEvdoDbm); 935e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville m.putInt("EvdoEcio", mEvdoEcio); 936e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville m.putInt("EvdoSnr", mEvdoSnr); 9375284090631e638b916d9a453212e9dc802656a67Wink Saville m.putInt("LteSignalStrength", mLteSignalStrength); 9385284090631e638b916d9a453212e9dc802656a67Wink Saville m.putInt("LteRsrp", mLteRsrp); 9395284090631e638b916d9a453212e9dc802656a67Wink Saville m.putInt("LteRsrq", mLteRsrq); 9405284090631e638b916d9a453212e9dc802656a67Wink Saville m.putInt("LteRssnr", mLteRssnr); 9415284090631e638b916d9a453212e9dc802656a67Wink Saville m.putInt("LteCqi", mLteCqi); 942e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville m.putBoolean("isGsm", Boolean.valueOf(isGsm)); 943e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville } 9445284090631e638b916d9a453212e9dc802656a67Wink Saville 9455284090631e638b916d9a453212e9dc802656a67Wink Saville /** 9465284090631e638b916d9a453212e9dc802656a67Wink Saville * log 9475284090631e638b916d9a453212e9dc802656a67Wink Saville */ 9485284090631e638b916d9a453212e9dc802656a67Wink Saville private static void log(String s) { 94922b1e80c24c5fbd702a19f2511ee2897baaf3e98Wink Saville Rlog.w(LOG_TAG, s); 9505284090631e638b916d9a453212e9dc802656a67Wink Saville } 951e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville} 952