1b208a24cf521401912cfce16fce550a995cf1250Wink Saville/* 2b208a24cf521401912cfce16fce550a995cf1250Wink Saville * Copyright (C) 2012 The Android Open Source Project 3b208a24cf521401912cfce16fce550a995cf1250Wink Saville * 4b208a24cf521401912cfce16fce550a995cf1250Wink Saville * Licensed under the Apache License, Version 2.0 (the "License"); 5b208a24cf521401912cfce16fce550a995cf1250Wink Saville * you may not use this file except in compliance with the License. 6b208a24cf521401912cfce16fce550a995cf1250Wink Saville * You may obtain a copy of the License at 7b208a24cf521401912cfce16fce550a995cf1250Wink Saville * 8b208a24cf521401912cfce16fce550a995cf1250Wink Saville * http://www.apache.org/licenses/LICENSE-2.0 9b208a24cf521401912cfce16fce550a995cf1250Wink Saville * 10b208a24cf521401912cfce16fce550a995cf1250Wink Saville * Unless required by applicable law or agreed to in writing, software 11b208a24cf521401912cfce16fce550a995cf1250Wink Saville * distributed under the License is distributed on an "AS IS" BASIS, 12b208a24cf521401912cfce16fce550a995cf1250Wink Saville * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13b208a24cf521401912cfce16fce550a995cf1250Wink Saville * See the License for the specific language governing permissions and 14b208a24cf521401912cfce16fce550a995cf1250Wink Saville * limitations under the License. 15b208a24cf521401912cfce16fce550a995cf1250Wink Saville */ 16b208a24cf521401912cfce16fce550a995cf1250Wink Saville 17b208a24cf521401912cfce16fce550a995cf1250Wink Savillepackage android.telephony; 18b208a24cf521401912cfce16fce550a995cf1250Wink Saville 19b208a24cf521401912cfce16fce550a995cf1250Wink Savilleimport android.os.Parcel; 20b208a24cf521401912cfce16fce550a995cf1250Wink Savilleimport android.os.Parcelable; 21b208a24cf521401912cfce16fce550a995cf1250Wink Savilleimport android.util.Log; 22b208a24cf521401912cfce16fce550a995cf1250Wink Saville 23b208a24cf521401912cfce16fce550a995cf1250Wink Saville/** 24b208a24cf521401912cfce16fce550a995cf1250Wink Saville * LTE signal strength related information. 25b208a24cf521401912cfce16fce550a995cf1250Wink Saville */ 26c6e4917adda19beb780386bcc26b652748b8ab13Wink Savillepublic final class CellSignalStrengthCdma extends CellSignalStrength implements Parcelable { 27b208a24cf521401912cfce16fce550a995cf1250Wink Saville 28b208a24cf521401912cfce16fce550a995cf1250Wink Saville private static final String LOG_TAG = "CellSignalStrengthCdma"; 29b208a24cf521401912cfce16fce550a995cf1250Wink Saville private static final boolean DBG = false; 30b208a24cf521401912cfce16fce550a995cf1250Wink Saville 31b208a24cf521401912cfce16fce550a995cf1250Wink Saville private int mCdmaDbm; // This value is the RSSI value 32b208a24cf521401912cfce16fce550a995cf1250Wink Saville private int mCdmaEcio; // This value is the Ec/Io 33b208a24cf521401912cfce16fce550a995cf1250Wink Saville private int mEvdoDbm; // This value is the EVDO RSSI value 34b208a24cf521401912cfce16fce550a995cf1250Wink Saville private int mEvdoEcio; // This value is the EVDO Ec/Io 35b208a24cf521401912cfce16fce550a995cf1250Wink Saville private int mEvdoSnr; // Valid values are 0-8. 8 is the highest signal to noise ratio 36b208a24cf521401912cfce16fce550a995cf1250Wink Saville 37b208a24cf521401912cfce16fce550a995cf1250Wink Saville /** 38b208a24cf521401912cfce16fce550a995cf1250Wink Saville * Empty constructor 39b208a24cf521401912cfce16fce550a995cf1250Wink Saville * 40b208a24cf521401912cfce16fce550a995cf1250Wink Saville * @hide 41b208a24cf521401912cfce16fce550a995cf1250Wink Saville */ 42b208a24cf521401912cfce16fce550a995cf1250Wink Saville public CellSignalStrengthCdma() { 43b208a24cf521401912cfce16fce550a995cf1250Wink Saville setDefaultValues(); 44b208a24cf521401912cfce16fce550a995cf1250Wink Saville } 45b208a24cf521401912cfce16fce550a995cf1250Wink Saville 46b208a24cf521401912cfce16fce550a995cf1250Wink Saville /** 47b208a24cf521401912cfce16fce550a995cf1250Wink Saville * Constructor 48b208a24cf521401912cfce16fce550a995cf1250Wink Saville * 49b208a24cf521401912cfce16fce550a995cf1250Wink Saville * @hide 50b208a24cf521401912cfce16fce550a995cf1250Wink Saville */ 51b208a24cf521401912cfce16fce550a995cf1250Wink Saville public CellSignalStrengthCdma(int cdmaDbm, int cdmaEcio, int evdoDbm, int evdoEcio, 52b208a24cf521401912cfce16fce550a995cf1250Wink Saville int evdoSnr) { 53b208a24cf521401912cfce16fce550a995cf1250Wink Saville initialize(cdmaDbm, cdmaEcio, evdoDbm, evdoEcio, evdoSnr); 54b208a24cf521401912cfce16fce550a995cf1250Wink Saville } 55b208a24cf521401912cfce16fce550a995cf1250Wink Saville 56b208a24cf521401912cfce16fce550a995cf1250Wink Saville /** 57b208a24cf521401912cfce16fce550a995cf1250Wink Saville * Copy constructors 58b208a24cf521401912cfce16fce550a995cf1250Wink Saville * 59b208a24cf521401912cfce16fce550a995cf1250Wink Saville * @param s Source SignalStrength 60b208a24cf521401912cfce16fce550a995cf1250Wink Saville * 61b208a24cf521401912cfce16fce550a995cf1250Wink Saville * @hide 62b208a24cf521401912cfce16fce550a995cf1250Wink Saville */ 63b208a24cf521401912cfce16fce550a995cf1250Wink Saville public CellSignalStrengthCdma(CellSignalStrengthCdma s) { 64b208a24cf521401912cfce16fce550a995cf1250Wink Saville copyFrom(s); 65b208a24cf521401912cfce16fce550a995cf1250Wink Saville } 66b208a24cf521401912cfce16fce550a995cf1250Wink Saville 67b208a24cf521401912cfce16fce550a995cf1250Wink Saville /** 68b208a24cf521401912cfce16fce550a995cf1250Wink Saville * Initialize all the values 69b208a24cf521401912cfce16fce550a995cf1250Wink Saville * 70b208a24cf521401912cfce16fce550a995cf1250Wink Saville * @param cdmaDbm 71b208a24cf521401912cfce16fce550a995cf1250Wink Saville * @param cdmaEcio 72b208a24cf521401912cfce16fce550a995cf1250Wink Saville * @param evdoDbm 73b208a24cf521401912cfce16fce550a995cf1250Wink Saville * @param evdoEcio 74b208a24cf521401912cfce16fce550a995cf1250Wink Saville * @param evdoSnr 75b208a24cf521401912cfce16fce550a995cf1250Wink Saville * 76b208a24cf521401912cfce16fce550a995cf1250Wink Saville * @hide 77b208a24cf521401912cfce16fce550a995cf1250Wink Saville */ 78b208a24cf521401912cfce16fce550a995cf1250Wink Saville public void initialize(int cdmaDbm, int cdmaEcio, int evdoDbm, int evdoEcio, int evdoSnr) { 79b208a24cf521401912cfce16fce550a995cf1250Wink Saville mCdmaDbm = cdmaDbm; 80b208a24cf521401912cfce16fce550a995cf1250Wink Saville mCdmaEcio = cdmaEcio; 81b208a24cf521401912cfce16fce550a995cf1250Wink Saville mEvdoDbm = evdoDbm; 82b208a24cf521401912cfce16fce550a995cf1250Wink Saville mEvdoEcio = evdoEcio; 83b208a24cf521401912cfce16fce550a995cf1250Wink Saville mEvdoSnr = evdoSnr; 84b208a24cf521401912cfce16fce550a995cf1250Wink Saville } 85b208a24cf521401912cfce16fce550a995cf1250Wink Saville 86b208a24cf521401912cfce16fce550a995cf1250Wink Saville /** 87b208a24cf521401912cfce16fce550a995cf1250Wink Saville * @hide 88b208a24cf521401912cfce16fce550a995cf1250Wink Saville */ 89b208a24cf521401912cfce16fce550a995cf1250Wink Saville protected void copyFrom(CellSignalStrengthCdma s) { 90b208a24cf521401912cfce16fce550a995cf1250Wink Saville mCdmaDbm = s.mCdmaDbm; 91b208a24cf521401912cfce16fce550a995cf1250Wink Saville mCdmaEcio = s.mCdmaEcio; 92b208a24cf521401912cfce16fce550a995cf1250Wink Saville mEvdoDbm = s.mEvdoDbm; 93b208a24cf521401912cfce16fce550a995cf1250Wink Saville mEvdoEcio = s.mEvdoEcio; 94b208a24cf521401912cfce16fce550a995cf1250Wink Saville mEvdoSnr = s.mEvdoSnr; 95b208a24cf521401912cfce16fce550a995cf1250Wink Saville } 96b208a24cf521401912cfce16fce550a995cf1250Wink Saville 97b208a24cf521401912cfce16fce550a995cf1250Wink Saville /** 98b208a24cf521401912cfce16fce550a995cf1250Wink Saville * @hide 99b208a24cf521401912cfce16fce550a995cf1250Wink Saville */ 100b208a24cf521401912cfce16fce550a995cf1250Wink Saville @Override 101b208a24cf521401912cfce16fce550a995cf1250Wink Saville public CellSignalStrengthCdma copy() { 102b208a24cf521401912cfce16fce550a995cf1250Wink Saville return new CellSignalStrengthCdma(this); 103b208a24cf521401912cfce16fce550a995cf1250Wink Saville } 104b208a24cf521401912cfce16fce550a995cf1250Wink Saville 105b208a24cf521401912cfce16fce550a995cf1250Wink Saville /** @hide */ 106b208a24cf521401912cfce16fce550a995cf1250Wink Saville @Override 107b208a24cf521401912cfce16fce550a995cf1250Wink Saville public void setDefaultValues() { 108b208a24cf521401912cfce16fce550a995cf1250Wink Saville mCdmaDbm = Integer.MAX_VALUE; 109b208a24cf521401912cfce16fce550a995cf1250Wink Saville mCdmaEcio = Integer.MAX_VALUE; 110b208a24cf521401912cfce16fce550a995cf1250Wink Saville mEvdoDbm = Integer.MAX_VALUE; 111b208a24cf521401912cfce16fce550a995cf1250Wink Saville mEvdoEcio = Integer.MAX_VALUE; 112b208a24cf521401912cfce16fce550a995cf1250Wink Saville mEvdoSnr = Integer.MAX_VALUE; 113b208a24cf521401912cfce16fce550a995cf1250Wink Saville } 114b208a24cf521401912cfce16fce550a995cf1250Wink Saville 115b208a24cf521401912cfce16fce550a995cf1250Wink Saville /** 11682e6ee62b2be3c716c215e4ba72c8a12c58620fbWink Saville * Get signal level as an int from 0..4 117b208a24cf521401912cfce16fce550a995cf1250Wink Saville */ 118b208a24cf521401912cfce16fce550a995cf1250Wink Saville @Override 119b208a24cf521401912cfce16fce550a995cf1250Wink Saville public int getLevel() { 120b208a24cf521401912cfce16fce550a995cf1250Wink Saville int level; 121b208a24cf521401912cfce16fce550a995cf1250Wink Saville 122b208a24cf521401912cfce16fce550a995cf1250Wink Saville int cdmaLevel = getCdmaLevel(); 123b208a24cf521401912cfce16fce550a995cf1250Wink Saville int evdoLevel = getEvdoLevel(); 124b208a24cf521401912cfce16fce550a995cf1250Wink Saville if (evdoLevel == SIGNAL_STRENGTH_NONE_OR_UNKNOWN) { 125b208a24cf521401912cfce16fce550a995cf1250Wink Saville /* We don't know evdo, use cdma */ 126b208a24cf521401912cfce16fce550a995cf1250Wink Saville level = getCdmaLevel(); 127b208a24cf521401912cfce16fce550a995cf1250Wink Saville } else if (cdmaLevel == SIGNAL_STRENGTH_NONE_OR_UNKNOWN) { 128b208a24cf521401912cfce16fce550a995cf1250Wink Saville /* We don't know cdma, use evdo */ 129b208a24cf521401912cfce16fce550a995cf1250Wink Saville level = getEvdoLevel(); 130b208a24cf521401912cfce16fce550a995cf1250Wink Saville } else { 131b208a24cf521401912cfce16fce550a995cf1250Wink Saville /* We know both, use the lowest level */ 132b208a24cf521401912cfce16fce550a995cf1250Wink Saville level = cdmaLevel < evdoLevel ? cdmaLevel : evdoLevel; 133b208a24cf521401912cfce16fce550a995cf1250Wink Saville } 134b208a24cf521401912cfce16fce550a995cf1250Wink Saville if (DBG) log("getLevel=" + level); 135b208a24cf521401912cfce16fce550a995cf1250Wink Saville return level; 136b208a24cf521401912cfce16fce550a995cf1250Wink Saville } 137b208a24cf521401912cfce16fce550a995cf1250Wink Saville 138b208a24cf521401912cfce16fce550a995cf1250Wink Saville /** 139b208a24cf521401912cfce16fce550a995cf1250Wink Saville * Get the LTE signal level as an asu value between 0..97, 99 is unknown 140b208a24cf521401912cfce16fce550a995cf1250Wink Saville * Asu is calculated based on 3GPP RSRP. Refer to 3GPP 27.007 (Ver 10.3.0) Sec 8.69 141b208a24cf521401912cfce16fce550a995cf1250Wink Saville */ 142b208a24cf521401912cfce16fce550a995cf1250Wink Saville @Override 143b208a24cf521401912cfce16fce550a995cf1250Wink Saville public int getAsuLevel() { 144b208a24cf521401912cfce16fce550a995cf1250Wink Saville final int cdmaDbm = getCdmaDbm(); 145b208a24cf521401912cfce16fce550a995cf1250Wink Saville final int cdmaEcio = getCdmaEcio(); 146b208a24cf521401912cfce16fce550a995cf1250Wink Saville int cdmaAsuLevel; 147b208a24cf521401912cfce16fce550a995cf1250Wink Saville int ecioAsuLevel; 148b208a24cf521401912cfce16fce550a995cf1250Wink Saville 149b208a24cf521401912cfce16fce550a995cf1250Wink Saville if (cdmaDbm >= -75) cdmaAsuLevel = 16; 150b208a24cf521401912cfce16fce550a995cf1250Wink Saville else if (cdmaDbm >= -82) cdmaAsuLevel = 8; 151b208a24cf521401912cfce16fce550a995cf1250Wink Saville else if (cdmaDbm >= -90) cdmaAsuLevel = 4; 152b208a24cf521401912cfce16fce550a995cf1250Wink Saville else if (cdmaDbm >= -95) cdmaAsuLevel = 2; 153b208a24cf521401912cfce16fce550a995cf1250Wink Saville else if (cdmaDbm >= -100) cdmaAsuLevel = 1; 154b208a24cf521401912cfce16fce550a995cf1250Wink Saville else cdmaAsuLevel = 99; 155b208a24cf521401912cfce16fce550a995cf1250Wink Saville 156b208a24cf521401912cfce16fce550a995cf1250Wink Saville // Ec/Io are in dB*10 157b208a24cf521401912cfce16fce550a995cf1250Wink Saville if (cdmaEcio >= -90) ecioAsuLevel = 16; 158b208a24cf521401912cfce16fce550a995cf1250Wink Saville else if (cdmaEcio >= -100) ecioAsuLevel = 8; 159b208a24cf521401912cfce16fce550a995cf1250Wink Saville else if (cdmaEcio >= -115) ecioAsuLevel = 4; 160b208a24cf521401912cfce16fce550a995cf1250Wink Saville else if (cdmaEcio >= -130) ecioAsuLevel = 2; 161b208a24cf521401912cfce16fce550a995cf1250Wink Saville else if (cdmaEcio >= -150) ecioAsuLevel = 1; 162b208a24cf521401912cfce16fce550a995cf1250Wink Saville else ecioAsuLevel = 99; 163b208a24cf521401912cfce16fce550a995cf1250Wink Saville 164b208a24cf521401912cfce16fce550a995cf1250Wink Saville int level = (cdmaAsuLevel < ecioAsuLevel) ? cdmaAsuLevel : ecioAsuLevel; 165b208a24cf521401912cfce16fce550a995cf1250Wink Saville if (DBG) log("getAsuLevel=" + level); 166b208a24cf521401912cfce16fce550a995cf1250Wink Saville return level; 167b208a24cf521401912cfce16fce550a995cf1250Wink Saville } 168b208a24cf521401912cfce16fce550a995cf1250Wink Saville 169b208a24cf521401912cfce16fce550a995cf1250Wink Saville /** 170b208a24cf521401912cfce16fce550a995cf1250Wink Saville * Get cdma as level 0..4 171b208a24cf521401912cfce16fce550a995cf1250Wink Saville */ 172b208a24cf521401912cfce16fce550a995cf1250Wink Saville public int getCdmaLevel() { 173b208a24cf521401912cfce16fce550a995cf1250Wink Saville final int cdmaDbm = getCdmaDbm(); 174b208a24cf521401912cfce16fce550a995cf1250Wink Saville final int cdmaEcio = getCdmaEcio(); 175b208a24cf521401912cfce16fce550a995cf1250Wink Saville int levelDbm; 176b208a24cf521401912cfce16fce550a995cf1250Wink Saville int levelEcio; 177b208a24cf521401912cfce16fce550a995cf1250Wink Saville 178b208a24cf521401912cfce16fce550a995cf1250Wink Saville if (cdmaDbm >= -75) levelDbm = SIGNAL_STRENGTH_GREAT; 179b208a24cf521401912cfce16fce550a995cf1250Wink Saville else if (cdmaDbm >= -85) levelDbm = SIGNAL_STRENGTH_GOOD; 180b208a24cf521401912cfce16fce550a995cf1250Wink Saville else if (cdmaDbm >= -95) levelDbm = SIGNAL_STRENGTH_MODERATE; 181b208a24cf521401912cfce16fce550a995cf1250Wink Saville else if (cdmaDbm >= -100) levelDbm = SIGNAL_STRENGTH_POOR; 182b208a24cf521401912cfce16fce550a995cf1250Wink Saville else levelDbm = SIGNAL_STRENGTH_NONE_OR_UNKNOWN; 183b208a24cf521401912cfce16fce550a995cf1250Wink Saville 184b208a24cf521401912cfce16fce550a995cf1250Wink Saville // Ec/Io are in dB*10 185b208a24cf521401912cfce16fce550a995cf1250Wink Saville if (cdmaEcio >= -90) levelEcio = SIGNAL_STRENGTH_GREAT; 186b208a24cf521401912cfce16fce550a995cf1250Wink Saville else if (cdmaEcio >= -110) levelEcio = SIGNAL_STRENGTH_GOOD; 187b208a24cf521401912cfce16fce550a995cf1250Wink Saville else if (cdmaEcio >= -130) levelEcio = SIGNAL_STRENGTH_MODERATE; 188b208a24cf521401912cfce16fce550a995cf1250Wink Saville else if (cdmaEcio >= -150) levelEcio = SIGNAL_STRENGTH_POOR; 189b208a24cf521401912cfce16fce550a995cf1250Wink Saville else levelEcio = SIGNAL_STRENGTH_NONE_OR_UNKNOWN; 190b208a24cf521401912cfce16fce550a995cf1250Wink Saville 191b208a24cf521401912cfce16fce550a995cf1250Wink Saville int level = (levelDbm < levelEcio) ? levelDbm : levelEcio; 192b208a24cf521401912cfce16fce550a995cf1250Wink Saville if (DBG) log("getCdmaLevel=" + level); 193b208a24cf521401912cfce16fce550a995cf1250Wink Saville return level; 194b208a24cf521401912cfce16fce550a995cf1250Wink Saville } 195b208a24cf521401912cfce16fce550a995cf1250Wink Saville 196b208a24cf521401912cfce16fce550a995cf1250Wink Saville /** 197b208a24cf521401912cfce16fce550a995cf1250Wink Saville * Get Evdo as level 0..4 198b208a24cf521401912cfce16fce550a995cf1250Wink Saville */ 199b208a24cf521401912cfce16fce550a995cf1250Wink Saville public int getEvdoLevel() { 200b208a24cf521401912cfce16fce550a995cf1250Wink Saville int evdoDbm = getEvdoDbm(); 201b208a24cf521401912cfce16fce550a995cf1250Wink Saville int evdoSnr = getEvdoSnr(); 202b208a24cf521401912cfce16fce550a995cf1250Wink Saville int levelEvdoDbm; 203b208a24cf521401912cfce16fce550a995cf1250Wink Saville int levelEvdoSnr; 204b208a24cf521401912cfce16fce550a995cf1250Wink Saville 205b208a24cf521401912cfce16fce550a995cf1250Wink Saville if (evdoDbm >= -65) levelEvdoDbm = SIGNAL_STRENGTH_GREAT; 206b208a24cf521401912cfce16fce550a995cf1250Wink Saville else if (evdoDbm >= -75) levelEvdoDbm = SIGNAL_STRENGTH_GOOD; 207b208a24cf521401912cfce16fce550a995cf1250Wink Saville else if (evdoDbm >= -90) levelEvdoDbm = SIGNAL_STRENGTH_MODERATE; 208b208a24cf521401912cfce16fce550a995cf1250Wink Saville else if (evdoDbm >= -105) levelEvdoDbm = SIGNAL_STRENGTH_POOR; 209b208a24cf521401912cfce16fce550a995cf1250Wink Saville else levelEvdoDbm = SIGNAL_STRENGTH_NONE_OR_UNKNOWN; 210b208a24cf521401912cfce16fce550a995cf1250Wink Saville 211b208a24cf521401912cfce16fce550a995cf1250Wink Saville if (evdoSnr >= 7) levelEvdoSnr = SIGNAL_STRENGTH_GREAT; 212b208a24cf521401912cfce16fce550a995cf1250Wink Saville else if (evdoSnr >= 5) levelEvdoSnr = SIGNAL_STRENGTH_GOOD; 213b208a24cf521401912cfce16fce550a995cf1250Wink Saville else if (evdoSnr >= 3) levelEvdoSnr = SIGNAL_STRENGTH_MODERATE; 214b208a24cf521401912cfce16fce550a995cf1250Wink Saville else if (evdoSnr >= 1) levelEvdoSnr = SIGNAL_STRENGTH_POOR; 215b208a24cf521401912cfce16fce550a995cf1250Wink Saville else levelEvdoSnr = SIGNAL_STRENGTH_NONE_OR_UNKNOWN; 216b208a24cf521401912cfce16fce550a995cf1250Wink Saville 217b208a24cf521401912cfce16fce550a995cf1250Wink Saville int level = (levelEvdoDbm < levelEvdoSnr) ? levelEvdoDbm : levelEvdoSnr; 218b208a24cf521401912cfce16fce550a995cf1250Wink Saville if (DBG) log("getEvdoLevel=" + level); 219b208a24cf521401912cfce16fce550a995cf1250Wink Saville return level; 220b208a24cf521401912cfce16fce550a995cf1250Wink Saville } 221b208a24cf521401912cfce16fce550a995cf1250Wink Saville 222b208a24cf521401912cfce16fce550a995cf1250Wink Saville /** 22382e6ee62b2be3c716c215e4ba72c8a12c58620fbWink Saville * Get the signal strength as dBm 224b208a24cf521401912cfce16fce550a995cf1250Wink Saville */ 225b208a24cf521401912cfce16fce550a995cf1250Wink Saville @Override 226b208a24cf521401912cfce16fce550a995cf1250Wink Saville public int getDbm() { 227b208a24cf521401912cfce16fce550a995cf1250Wink Saville int cdmaDbm = getCdmaDbm(); 228b208a24cf521401912cfce16fce550a995cf1250Wink Saville int evdoDbm = getEvdoDbm(); 229b208a24cf521401912cfce16fce550a995cf1250Wink Saville 230b208a24cf521401912cfce16fce550a995cf1250Wink Saville // Use the lower value to be conservative 231b208a24cf521401912cfce16fce550a995cf1250Wink Saville return (cdmaDbm < evdoDbm) ? cdmaDbm : evdoDbm; 232b208a24cf521401912cfce16fce550a995cf1250Wink Saville } 233b208a24cf521401912cfce16fce550a995cf1250Wink Saville 234b208a24cf521401912cfce16fce550a995cf1250Wink Saville /** 235b208a24cf521401912cfce16fce550a995cf1250Wink Saville * Get the CDMA RSSI value in dBm 236b208a24cf521401912cfce16fce550a995cf1250Wink Saville */ 237b208a24cf521401912cfce16fce550a995cf1250Wink Saville public int getCdmaDbm() { 238b208a24cf521401912cfce16fce550a995cf1250Wink Saville return mCdmaDbm; 239b208a24cf521401912cfce16fce550a995cf1250Wink Saville } 240b208a24cf521401912cfce16fce550a995cf1250Wink Saville /** @hide */ 241b208a24cf521401912cfce16fce550a995cf1250Wink Saville public void setCdmaDbm(int cdmaDbm) { 242b208a24cf521401912cfce16fce550a995cf1250Wink Saville mCdmaDbm = cdmaDbm; 243b208a24cf521401912cfce16fce550a995cf1250Wink Saville } 244b208a24cf521401912cfce16fce550a995cf1250Wink Saville 245b208a24cf521401912cfce16fce550a995cf1250Wink Saville /** 246b208a24cf521401912cfce16fce550a995cf1250Wink Saville * Get the CDMA Ec/Io value in dB*10 247b208a24cf521401912cfce16fce550a995cf1250Wink Saville */ 248b208a24cf521401912cfce16fce550a995cf1250Wink Saville public int getCdmaEcio() { 249b208a24cf521401912cfce16fce550a995cf1250Wink Saville return mCdmaEcio; 250b208a24cf521401912cfce16fce550a995cf1250Wink Saville } 251b208a24cf521401912cfce16fce550a995cf1250Wink Saville /** @hide */ 252b208a24cf521401912cfce16fce550a995cf1250Wink Saville public void setCdmaEcio(int cdmaEcio) { 253b208a24cf521401912cfce16fce550a995cf1250Wink Saville mCdmaEcio = cdmaEcio; 254b208a24cf521401912cfce16fce550a995cf1250Wink Saville } 255b208a24cf521401912cfce16fce550a995cf1250Wink Saville 256b208a24cf521401912cfce16fce550a995cf1250Wink Saville /** 257b208a24cf521401912cfce16fce550a995cf1250Wink Saville * Get the EVDO RSSI value in dBm 258b208a24cf521401912cfce16fce550a995cf1250Wink Saville */ 259b208a24cf521401912cfce16fce550a995cf1250Wink Saville public int getEvdoDbm() { 260b208a24cf521401912cfce16fce550a995cf1250Wink Saville return mEvdoDbm; 261b208a24cf521401912cfce16fce550a995cf1250Wink Saville } 262b208a24cf521401912cfce16fce550a995cf1250Wink Saville /** @hide */ 263b208a24cf521401912cfce16fce550a995cf1250Wink Saville public void setEvdoDbm(int evdoDbm) { 264b208a24cf521401912cfce16fce550a995cf1250Wink Saville mEvdoDbm = evdoDbm; 265b208a24cf521401912cfce16fce550a995cf1250Wink Saville } 266b208a24cf521401912cfce16fce550a995cf1250Wink Saville 267b208a24cf521401912cfce16fce550a995cf1250Wink Saville /** 268b208a24cf521401912cfce16fce550a995cf1250Wink Saville * Get the EVDO Ec/Io value in dB*10 269b208a24cf521401912cfce16fce550a995cf1250Wink Saville */ 270b208a24cf521401912cfce16fce550a995cf1250Wink Saville public int getEvdoEcio() { 271b208a24cf521401912cfce16fce550a995cf1250Wink Saville return mEvdoEcio; 272b208a24cf521401912cfce16fce550a995cf1250Wink Saville } 273b208a24cf521401912cfce16fce550a995cf1250Wink Saville /** @hide */ 274b208a24cf521401912cfce16fce550a995cf1250Wink Saville public void setEvdoEcio(int evdoEcio) { 275b208a24cf521401912cfce16fce550a995cf1250Wink Saville mEvdoEcio = evdoEcio; 276b208a24cf521401912cfce16fce550a995cf1250Wink Saville } 277b208a24cf521401912cfce16fce550a995cf1250Wink Saville 278b208a24cf521401912cfce16fce550a995cf1250Wink Saville /** 279b208a24cf521401912cfce16fce550a995cf1250Wink Saville * Get the signal to noise ratio. Valid values are 0-8. 8 is the highest. 280b208a24cf521401912cfce16fce550a995cf1250Wink Saville */ 281b208a24cf521401912cfce16fce550a995cf1250Wink Saville public int getEvdoSnr() { 282b208a24cf521401912cfce16fce550a995cf1250Wink Saville return mEvdoSnr; 283b208a24cf521401912cfce16fce550a995cf1250Wink Saville } 284b208a24cf521401912cfce16fce550a995cf1250Wink Saville /** @hide */ 285b208a24cf521401912cfce16fce550a995cf1250Wink Saville public void setEvdoSnr(int evdoSnr) { 286b208a24cf521401912cfce16fce550a995cf1250Wink Saville mEvdoSnr = evdoSnr; 287b208a24cf521401912cfce16fce550a995cf1250Wink Saville } 288b208a24cf521401912cfce16fce550a995cf1250Wink Saville 289b208a24cf521401912cfce16fce550a995cf1250Wink Saville @Override 290b208a24cf521401912cfce16fce550a995cf1250Wink Saville public int hashCode() { 291b208a24cf521401912cfce16fce550a995cf1250Wink Saville int primeNum = 31; 292b208a24cf521401912cfce16fce550a995cf1250Wink Saville return ((mCdmaDbm * primeNum) + (mCdmaEcio * primeNum) 293b208a24cf521401912cfce16fce550a995cf1250Wink Saville + (mEvdoDbm * primeNum) + (mEvdoEcio * primeNum) + (mEvdoSnr * primeNum)); 294b208a24cf521401912cfce16fce550a995cf1250Wink Saville } 295b208a24cf521401912cfce16fce550a995cf1250Wink Saville 296b208a24cf521401912cfce16fce550a995cf1250Wink Saville @Override 297b208a24cf521401912cfce16fce550a995cf1250Wink Saville public boolean equals (Object o) { 298b208a24cf521401912cfce16fce550a995cf1250Wink Saville CellSignalStrengthCdma s; 299b208a24cf521401912cfce16fce550a995cf1250Wink Saville 300b208a24cf521401912cfce16fce550a995cf1250Wink Saville try { 301b208a24cf521401912cfce16fce550a995cf1250Wink Saville s = (CellSignalStrengthCdma) o; 302b208a24cf521401912cfce16fce550a995cf1250Wink Saville } catch (ClassCastException ex) { 303b208a24cf521401912cfce16fce550a995cf1250Wink Saville return false; 304b208a24cf521401912cfce16fce550a995cf1250Wink Saville } 305b208a24cf521401912cfce16fce550a995cf1250Wink Saville 306b208a24cf521401912cfce16fce550a995cf1250Wink Saville if (o == null) { 307b208a24cf521401912cfce16fce550a995cf1250Wink Saville return false; 308b208a24cf521401912cfce16fce550a995cf1250Wink Saville } 309b208a24cf521401912cfce16fce550a995cf1250Wink Saville 310b208a24cf521401912cfce16fce550a995cf1250Wink Saville return mCdmaDbm == s.mCdmaDbm 311b208a24cf521401912cfce16fce550a995cf1250Wink Saville && mCdmaEcio == s.mCdmaEcio 312b208a24cf521401912cfce16fce550a995cf1250Wink Saville && mEvdoDbm == s.mEvdoDbm 313b208a24cf521401912cfce16fce550a995cf1250Wink Saville && mEvdoEcio == s.mEvdoEcio 314b208a24cf521401912cfce16fce550a995cf1250Wink Saville && mEvdoSnr == s.mEvdoSnr; 315b208a24cf521401912cfce16fce550a995cf1250Wink Saville } 316b208a24cf521401912cfce16fce550a995cf1250Wink Saville 317b208a24cf521401912cfce16fce550a995cf1250Wink Saville /** 318b208a24cf521401912cfce16fce550a995cf1250Wink Saville * @return string representation. 319b208a24cf521401912cfce16fce550a995cf1250Wink Saville */ 320b208a24cf521401912cfce16fce550a995cf1250Wink Saville @Override 321b208a24cf521401912cfce16fce550a995cf1250Wink Saville public String toString() { 322b208a24cf521401912cfce16fce550a995cf1250Wink Saville return "CellSignalStrengthCdma:" 323b208a24cf521401912cfce16fce550a995cf1250Wink Saville + " cdmaDbm=" + mCdmaDbm 324b208a24cf521401912cfce16fce550a995cf1250Wink Saville + " cdmaEcio=" + mCdmaEcio 325b208a24cf521401912cfce16fce550a995cf1250Wink Saville + " evdoDbm=" + mEvdoDbm 326b208a24cf521401912cfce16fce550a995cf1250Wink Saville + " evdoEcio=" + mEvdoEcio 327b208a24cf521401912cfce16fce550a995cf1250Wink Saville + " evdoSnr=" + mEvdoSnr; 328b208a24cf521401912cfce16fce550a995cf1250Wink Saville } 329b208a24cf521401912cfce16fce550a995cf1250Wink Saville 330b208a24cf521401912cfce16fce550a995cf1250Wink Saville /** Implement the Parcelable interface */ 331b208a24cf521401912cfce16fce550a995cf1250Wink Saville @Override 332b208a24cf521401912cfce16fce550a995cf1250Wink Saville public void writeToParcel(Parcel dest, int flags) { 333b208a24cf521401912cfce16fce550a995cf1250Wink Saville if (DBG) log("writeToParcel(Parcel, int): " + toString()); 334b208a24cf521401912cfce16fce550a995cf1250Wink Saville dest.writeInt(mCdmaDbm); 335b208a24cf521401912cfce16fce550a995cf1250Wink Saville dest.writeInt(mCdmaEcio); 336b208a24cf521401912cfce16fce550a995cf1250Wink Saville dest.writeInt(mEvdoDbm); 337b208a24cf521401912cfce16fce550a995cf1250Wink Saville dest.writeInt(mEvdoEcio); 338b208a24cf521401912cfce16fce550a995cf1250Wink Saville dest.writeInt(mEvdoSnr); 339b208a24cf521401912cfce16fce550a995cf1250Wink Saville } 340b208a24cf521401912cfce16fce550a995cf1250Wink Saville 341b208a24cf521401912cfce16fce550a995cf1250Wink Saville /** 342b208a24cf521401912cfce16fce550a995cf1250Wink Saville * Construct a SignalStrength object from the given parcel 343b208a24cf521401912cfce16fce550a995cf1250Wink Saville * where the TYPE_LTE token is already been processed. 344b208a24cf521401912cfce16fce550a995cf1250Wink Saville */ 345b208a24cf521401912cfce16fce550a995cf1250Wink Saville private CellSignalStrengthCdma(Parcel in) { 346b208a24cf521401912cfce16fce550a995cf1250Wink Saville mCdmaDbm = in.readInt(); 347b208a24cf521401912cfce16fce550a995cf1250Wink Saville mCdmaEcio = in.readInt(); 348b208a24cf521401912cfce16fce550a995cf1250Wink Saville mEvdoDbm = in.readInt(); 349b208a24cf521401912cfce16fce550a995cf1250Wink Saville mEvdoEcio = in.readInt(); 350b208a24cf521401912cfce16fce550a995cf1250Wink Saville mEvdoSnr = in.readInt(); 351b208a24cf521401912cfce16fce550a995cf1250Wink Saville if (DBG) log("CellSignalStrengthCdma(Parcel): " + toString()); 352b208a24cf521401912cfce16fce550a995cf1250Wink Saville } 353b208a24cf521401912cfce16fce550a995cf1250Wink Saville 354b208a24cf521401912cfce16fce550a995cf1250Wink Saville /** Implement the Parcelable interface */ 355b208a24cf521401912cfce16fce550a995cf1250Wink Saville @Override 356b208a24cf521401912cfce16fce550a995cf1250Wink Saville public int describeContents() { 357b208a24cf521401912cfce16fce550a995cf1250Wink Saville return 0; 358b208a24cf521401912cfce16fce550a995cf1250Wink Saville } 359b208a24cf521401912cfce16fce550a995cf1250Wink Saville 360b208a24cf521401912cfce16fce550a995cf1250Wink Saville /** Implement the Parcelable interface */ 361b208a24cf521401912cfce16fce550a995cf1250Wink Saville @SuppressWarnings("hiding") 362b208a24cf521401912cfce16fce550a995cf1250Wink Saville public static final Parcelable.Creator<CellSignalStrengthCdma> CREATOR = 363b208a24cf521401912cfce16fce550a995cf1250Wink Saville new Parcelable.Creator<CellSignalStrengthCdma>() { 364b208a24cf521401912cfce16fce550a995cf1250Wink Saville @Override 365b208a24cf521401912cfce16fce550a995cf1250Wink Saville public CellSignalStrengthCdma createFromParcel(Parcel in) { 366c6e4917adda19beb780386bcc26b652748b8ab13Wink Saville return new CellSignalStrengthCdma(in); 367b208a24cf521401912cfce16fce550a995cf1250Wink Saville } 368b208a24cf521401912cfce16fce550a995cf1250Wink Saville 369b208a24cf521401912cfce16fce550a995cf1250Wink Saville @Override 370b208a24cf521401912cfce16fce550a995cf1250Wink Saville public CellSignalStrengthCdma[] newArray(int size) { 371b208a24cf521401912cfce16fce550a995cf1250Wink Saville return new CellSignalStrengthCdma[size]; 372b208a24cf521401912cfce16fce550a995cf1250Wink Saville } 373b208a24cf521401912cfce16fce550a995cf1250Wink Saville }; 374b208a24cf521401912cfce16fce550a995cf1250Wink Saville 375b208a24cf521401912cfce16fce550a995cf1250Wink Saville /** 376b208a24cf521401912cfce16fce550a995cf1250Wink Saville * log 377b208a24cf521401912cfce16fce550a995cf1250Wink Saville */ 378b208a24cf521401912cfce16fce550a995cf1250Wink Saville private static void log(String s) { 379b208a24cf521401912cfce16fce550a995cf1250Wink Saville Log.w(LOG_TAG, s); 380b208a24cf521401912cfce16fce550a995cf1250Wink Saville } 381b208a24cf521401912cfce16fce550a995cf1250Wink Saville} 382