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; 2122b1e80c24c5fbd702a19f2511ee2897baaf3e98Wink Savilleimport android.telephony.Rlog; 22b208a24cf521401912cfce16fce550a995cf1250Wink Saville 23b208a24cf521401912cfce16fce550a995cf1250Wink Saville/** 24b208a24cf521401912cfce16fce550a995cf1250Wink Saville * LTE signal strength related information. 25b208a24cf521401912cfce16fce550a995cf1250Wink Saville */ 26c6e4917adda19beb780386bcc26b652748b8ab13Wink Savillepublic final class CellSignalStrengthLte extends CellSignalStrength implements Parcelable { 27b208a24cf521401912cfce16fce550a995cf1250Wink Saville 28b208a24cf521401912cfce16fce550a995cf1250Wink Saville private static final String LOG_TAG = "CellSignalStrengthLte"; 29b208a24cf521401912cfce16fce550a995cf1250Wink Saville private static final boolean DBG = false; 30b208a24cf521401912cfce16fce550a995cf1250Wink Saville 31b208a24cf521401912cfce16fce550a995cf1250Wink Saville private int mSignalStrength; 32b208a24cf521401912cfce16fce550a995cf1250Wink Saville private int mRsrp; 33b208a24cf521401912cfce16fce550a995cf1250Wink Saville private int mRsrq; 34b208a24cf521401912cfce16fce550a995cf1250Wink Saville private int mRssnr; 35b208a24cf521401912cfce16fce550a995cf1250Wink Saville private int mCqi; 36b208a24cf521401912cfce16fce550a995cf1250Wink Saville private int mTimingAdvance; 37b208a24cf521401912cfce16fce550a995cf1250Wink Saville 38b208a24cf521401912cfce16fce550a995cf1250Wink Saville /** 39b208a24cf521401912cfce16fce550a995cf1250Wink Saville * Empty constructor 40b208a24cf521401912cfce16fce550a995cf1250Wink Saville * 41b208a24cf521401912cfce16fce550a995cf1250Wink Saville * @hide 42b208a24cf521401912cfce16fce550a995cf1250Wink Saville */ 43b208a24cf521401912cfce16fce550a995cf1250Wink Saville public CellSignalStrengthLte() { 44b208a24cf521401912cfce16fce550a995cf1250Wink Saville setDefaultValues(); 45b208a24cf521401912cfce16fce550a995cf1250Wink Saville } 46b208a24cf521401912cfce16fce550a995cf1250Wink Saville 47b208a24cf521401912cfce16fce550a995cf1250Wink Saville /** 48b208a24cf521401912cfce16fce550a995cf1250Wink Saville * Constructor 49b208a24cf521401912cfce16fce550a995cf1250Wink Saville * 50b208a24cf521401912cfce16fce550a995cf1250Wink Saville * @hide 51b208a24cf521401912cfce16fce550a995cf1250Wink Saville */ 52b208a24cf521401912cfce16fce550a995cf1250Wink Saville public CellSignalStrengthLte(int signalStrength, int rsrp, int rsrq, int rssnr, int cqi, 53b208a24cf521401912cfce16fce550a995cf1250Wink Saville int timingAdvance) { 54b208a24cf521401912cfce16fce550a995cf1250Wink Saville initialize(signalStrength, rsrp, rsrq, rssnr, cqi, timingAdvance); 55b208a24cf521401912cfce16fce550a995cf1250Wink Saville } 56b208a24cf521401912cfce16fce550a995cf1250Wink Saville 57b208a24cf521401912cfce16fce550a995cf1250Wink Saville /** 58b208a24cf521401912cfce16fce550a995cf1250Wink Saville * Copy constructors 59b208a24cf521401912cfce16fce550a995cf1250Wink Saville * 60b208a24cf521401912cfce16fce550a995cf1250Wink Saville * @param s Source SignalStrength 61b208a24cf521401912cfce16fce550a995cf1250Wink Saville * 62b208a24cf521401912cfce16fce550a995cf1250Wink Saville * @hide 63b208a24cf521401912cfce16fce550a995cf1250Wink Saville */ 64b208a24cf521401912cfce16fce550a995cf1250Wink Saville public CellSignalStrengthLte(CellSignalStrengthLte s) { 65b208a24cf521401912cfce16fce550a995cf1250Wink Saville copyFrom(s); 66b208a24cf521401912cfce16fce550a995cf1250Wink Saville } 67b208a24cf521401912cfce16fce550a995cf1250Wink Saville 68b208a24cf521401912cfce16fce550a995cf1250Wink Saville /** 69b208a24cf521401912cfce16fce550a995cf1250Wink Saville * Initialize all the values 70b208a24cf521401912cfce16fce550a995cf1250Wink Saville * 71b208a24cf521401912cfce16fce550a995cf1250Wink Saville * @param lteSignalStrength 72b208a24cf521401912cfce16fce550a995cf1250Wink Saville * @param rsrp 73b208a24cf521401912cfce16fce550a995cf1250Wink Saville * @param rsrq 74b208a24cf521401912cfce16fce550a995cf1250Wink Saville * @param rssnr 75b208a24cf521401912cfce16fce550a995cf1250Wink Saville * @param cqi 76b208a24cf521401912cfce16fce550a995cf1250Wink Saville * 77b208a24cf521401912cfce16fce550a995cf1250Wink Saville * @hide 78b208a24cf521401912cfce16fce550a995cf1250Wink Saville */ 79b208a24cf521401912cfce16fce550a995cf1250Wink Saville public void initialize(int lteSignalStrength, int rsrp, int rsrq, int rssnr, int cqi, 80b208a24cf521401912cfce16fce550a995cf1250Wink Saville int timingAdvance) { 81b208a24cf521401912cfce16fce550a995cf1250Wink Saville mSignalStrength = lteSignalStrength; 82b208a24cf521401912cfce16fce550a995cf1250Wink Saville mRsrp = rsrp; 83b208a24cf521401912cfce16fce550a995cf1250Wink Saville mRsrq = rsrq; 84b208a24cf521401912cfce16fce550a995cf1250Wink Saville mRssnr = rssnr; 85b208a24cf521401912cfce16fce550a995cf1250Wink Saville mCqi = cqi; 86b208a24cf521401912cfce16fce550a995cf1250Wink Saville mTimingAdvance = timingAdvance; 87b208a24cf521401912cfce16fce550a995cf1250Wink Saville } 88b208a24cf521401912cfce16fce550a995cf1250Wink Saville 89b208a24cf521401912cfce16fce550a995cf1250Wink Saville /** 902900a3fae6e3da65522ffc16673ab1757352afbbWink Saville * Initialize from the SignalStrength structure. 912900a3fae6e3da65522ffc16673ab1757352afbbWink Saville * 922900a3fae6e3da65522ffc16673ab1757352afbbWink Saville * @param ss 932900a3fae6e3da65522ffc16673ab1757352afbbWink Saville * 942900a3fae6e3da65522ffc16673ab1757352afbbWink Saville * @hide 952900a3fae6e3da65522ffc16673ab1757352afbbWink Saville */ 962900a3fae6e3da65522ffc16673ab1757352afbbWink Saville public void initialize(SignalStrength ss, int timingAdvance) { 9729c8b00f14675aa35ef44a58a60947f477247a1aWink Saville mSignalStrength = ss.getLteSignalStrength(); 982900a3fae6e3da65522ffc16673ab1757352afbbWink Saville mRsrp = ss.getLteRsrp(); 992900a3fae6e3da65522ffc16673ab1757352afbbWink Saville mRsrq = ss.getLteRsrq(); 1002900a3fae6e3da65522ffc16673ab1757352afbbWink Saville mRssnr = ss.getLteRssnr(); 1012900a3fae6e3da65522ffc16673ab1757352afbbWink Saville mCqi = ss.getLteCqi(); 1022900a3fae6e3da65522ffc16673ab1757352afbbWink Saville mTimingAdvance = timingAdvance; 1032900a3fae6e3da65522ffc16673ab1757352afbbWink Saville } 1042900a3fae6e3da65522ffc16673ab1757352afbbWink Saville 1052900a3fae6e3da65522ffc16673ab1757352afbbWink Saville /** 106b208a24cf521401912cfce16fce550a995cf1250Wink Saville * @hide 107b208a24cf521401912cfce16fce550a995cf1250Wink Saville */ 108b208a24cf521401912cfce16fce550a995cf1250Wink Saville protected void copyFrom(CellSignalStrengthLte s) { 109b208a24cf521401912cfce16fce550a995cf1250Wink Saville mSignalStrength = s.mSignalStrength; 110b208a24cf521401912cfce16fce550a995cf1250Wink Saville mRsrp = s.mRsrp; 111b208a24cf521401912cfce16fce550a995cf1250Wink Saville mRsrq = s.mRsrq; 112b208a24cf521401912cfce16fce550a995cf1250Wink Saville mRssnr = s.mRssnr; 113b208a24cf521401912cfce16fce550a995cf1250Wink Saville mCqi = s.mCqi; 114b208a24cf521401912cfce16fce550a995cf1250Wink Saville mTimingAdvance = s.mTimingAdvance; 115b208a24cf521401912cfce16fce550a995cf1250Wink Saville } 116b208a24cf521401912cfce16fce550a995cf1250Wink Saville 117b208a24cf521401912cfce16fce550a995cf1250Wink Saville /** 118b208a24cf521401912cfce16fce550a995cf1250Wink Saville * @hide 119b208a24cf521401912cfce16fce550a995cf1250Wink Saville */ 120b208a24cf521401912cfce16fce550a995cf1250Wink Saville @Override 121b208a24cf521401912cfce16fce550a995cf1250Wink Saville public CellSignalStrengthLte copy() { 122b208a24cf521401912cfce16fce550a995cf1250Wink Saville return new CellSignalStrengthLte(this); 123b208a24cf521401912cfce16fce550a995cf1250Wink Saville } 124b208a24cf521401912cfce16fce550a995cf1250Wink Saville 125b208a24cf521401912cfce16fce550a995cf1250Wink Saville /** @hide */ 126b208a24cf521401912cfce16fce550a995cf1250Wink Saville @Override 127b208a24cf521401912cfce16fce550a995cf1250Wink Saville public void setDefaultValues() { 128b208a24cf521401912cfce16fce550a995cf1250Wink Saville mSignalStrength = Integer.MAX_VALUE; 129b208a24cf521401912cfce16fce550a995cf1250Wink Saville mRsrp = Integer.MAX_VALUE; 130b208a24cf521401912cfce16fce550a995cf1250Wink Saville mRsrq = Integer.MAX_VALUE; 131b208a24cf521401912cfce16fce550a995cf1250Wink Saville mRssnr = Integer.MAX_VALUE; 132b208a24cf521401912cfce16fce550a995cf1250Wink Saville mCqi = Integer.MAX_VALUE; 133b208a24cf521401912cfce16fce550a995cf1250Wink Saville mTimingAdvance = Integer.MAX_VALUE; 134b208a24cf521401912cfce16fce550a995cf1250Wink Saville } 135b208a24cf521401912cfce16fce550a995cf1250Wink Saville 136b208a24cf521401912cfce16fce550a995cf1250Wink Saville /** 13782e6ee62b2be3c716c215e4ba72c8a12c58620fbWink Saville * Get signal level as an int from 0..4 138b208a24cf521401912cfce16fce550a995cf1250Wink Saville */ 139b208a24cf521401912cfce16fce550a995cf1250Wink Saville @Override 140b208a24cf521401912cfce16fce550a995cf1250Wink Saville public int getLevel() { 141b208a24cf521401912cfce16fce550a995cf1250Wink Saville int levelRsrp = 0; 142b208a24cf521401912cfce16fce550a995cf1250Wink Saville int levelRssnr = 0; 143b208a24cf521401912cfce16fce550a995cf1250Wink Saville 144b208a24cf521401912cfce16fce550a995cf1250Wink Saville if (mRsrp == Integer.MAX_VALUE) levelRsrp = 0; 145b208a24cf521401912cfce16fce550a995cf1250Wink Saville else if (mRsrp >= -95) levelRsrp = SIGNAL_STRENGTH_GREAT; 146b208a24cf521401912cfce16fce550a995cf1250Wink Saville else if (mRsrp >= -105) levelRsrp = SIGNAL_STRENGTH_GOOD; 147b208a24cf521401912cfce16fce550a995cf1250Wink Saville else if (mRsrp >= -115) levelRsrp = SIGNAL_STRENGTH_MODERATE; 148b208a24cf521401912cfce16fce550a995cf1250Wink Saville else levelRsrp = SIGNAL_STRENGTH_POOR; 149b208a24cf521401912cfce16fce550a995cf1250Wink Saville 150b208a24cf521401912cfce16fce550a995cf1250Wink Saville // See RIL_LTE_SignalStrength in ril.h 151b208a24cf521401912cfce16fce550a995cf1250Wink Saville if (mRssnr == Integer.MAX_VALUE) levelRssnr = 0; 152b208a24cf521401912cfce16fce550a995cf1250Wink Saville else if (mRssnr >= 45) levelRssnr = SIGNAL_STRENGTH_GREAT; 153b208a24cf521401912cfce16fce550a995cf1250Wink Saville else if (mRssnr >= 10) levelRssnr = SIGNAL_STRENGTH_GOOD; 154b208a24cf521401912cfce16fce550a995cf1250Wink Saville else if (mRssnr >= -30) levelRssnr = SIGNAL_STRENGTH_MODERATE; 155b208a24cf521401912cfce16fce550a995cf1250Wink Saville else levelRssnr = SIGNAL_STRENGTH_POOR; 156b208a24cf521401912cfce16fce550a995cf1250Wink Saville 157b208a24cf521401912cfce16fce550a995cf1250Wink Saville int level; 158b208a24cf521401912cfce16fce550a995cf1250Wink Saville if (mRsrp == Integer.MAX_VALUE) 159b208a24cf521401912cfce16fce550a995cf1250Wink Saville level = levelRssnr; 160b208a24cf521401912cfce16fce550a995cf1250Wink Saville else if (mRssnr == Integer.MAX_VALUE) 161b208a24cf521401912cfce16fce550a995cf1250Wink Saville level = levelRsrp; 162b208a24cf521401912cfce16fce550a995cf1250Wink Saville else 163b208a24cf521401912cfce16fce550a995cf1250Wink Saville level = (levelRssnr < levelRsrp) ? levelRssnr : levelRsrp; 164b208a24cf521401912cfce16fce550a995cf1250Wink Saville 165b208a24cf521401912cfce16fce550a995cf1250Wink Saville if (DBG) log("Lte rsrp level: " + levelRsrp 166b208a24cf521401912cfce16fce550a995cf1250Wink Saville + " snr level: " + levelRssnr + " level: " + level); 167b208a24cf521401912cfce16fce550a995cf1250Wink Saville return level; 168b208a24cf521401912cfce16fce550a995cf1250Wink Saville } 169b208a24cf521401912cfce16fce550a995cf1250Wink Saville 170b208a24cf521401912cfce16fce550a995cf1250Wink Saville /** 17114388588268596c72cff1dbabfb97b1bd4c58ea1Nathan Harold * @hide 17214388588268596c72cff1dbabfb97b1bd4c58ea1Nathan Harold */ 17314388588268596c72cff1dbabfb97b1bd4c58ea1Nathan Harold public int getRsrq() { 17414388588268596c72cff1dbabfb97b1bd4c58ea1Nathan Harold return mRsrq; 17514388588268596c72cff1dbabfb97b1bd4c58ea1Nathan Harold } 17614388588268596c72cff1dbabfb97b1bd4c58ea1Nathan Harold 17714388588268596c72cff1dbabfb97b1bd4c58ea1Nathan Harold /** 17814388588268596c72cff1dbabfb97b1bd4c58ea1Nathan Harold * @hide 17914388588268596c72cff1dbabfb97b1bd4c58ea1Nathan Harold */ 18014388588268596c72cff1dbabfb97b1bd4c58ea1Nathan Harold public int getRssnr() { 18114388588268596c72cff1dbabfb97b1bd4c58ea1Nathan Harold return mRssnr; 18214388588268596c72cff1dbabfb97b1bd4c58ea1Nathan Harold } 18314388588268596c72cff1dbabfb97b1bd4c58ea1Nathan Harold 18414388588268596c72cff1dbabfb97b1bd4c58ea1Nathan Harold /** 18582e6ee62b2be3c716c215e4ba72c8a12c58620fbWink Saville * Get signal strength as dBm 186b208a24cf521401912cfce16fce550a995cf1250Wink Saville */ 187b208a24cf521401912cfce16fce550a995cf1250Wink Saville @Override 188b208a24cf521401912cfce16fce550a995cf1250Wink Saville public int getDbm() { 189b208a24cf521401912cfce16fce550a995cf1250Wink Saville return mRsrp; 190b208a24cf521401912cfce16fce550a995cf1250Wink Saville } 191b208a24cf521401912cfce16fce550a995cf1250Wink Saville 192b208a24cf521401912cfce16fce550a995cf1250Wink Saville /** 193b208a24cf521401912cfce16fce550a995cf1250Wink Saville * Get the LTE signal level as an asu value between 0..97, 99 is unknown 194b208a24cf521401912cfce16fce550a995cf1250Wink Saville * Asu is calculated based on 3GPP RSRP. Refer to 3GPP 27.007 (Ver 10.3.0) Sec 8.69 195b208a24cf521401912cfce16fce550a995cf1250Wink Saville */ 196b208a24cf521401912cfce16fce550a995cf1250Wink Saville @Override 197b208a24cf521401912cfce16fce550a995cf1250Wink Saville public int getAsuLevel() { 198b208a24cf521401912cfce16fce550a995cf1250Wink Saville int lteAsuLevel = 99; 199b208a24cf521401912cfce16fce550a995cf1250Wink Saville int lteDbm = getDbm(); 200efbb8f337658f417a3af5f8e656eb5d23372596eNathan Harold if (lteDbm == Integer.MAX_VALUE) lteAsuLevel = 99; 201efbb8f337658f417a3af5f8e656eb5d23372596eNathan Harold else if (lteDbm <= -140) lteAsuLevel = 0; 202b208a24cf521401912cfce16fce550a995cf1250Wink Saville else if (lteDbm >= -43) lteAsuLevel = 97; 203b208a24cf521401912cfce16fce550a995cf1250Wink Saville else lteAsuLevel = lteDbm + 140; 204b208a24cf521401912cfce16fce550a995cf1250Wink Saville if (DBG) log("Lte Asu level: "+lteAsuLevel); 205b208a24cf521401912cfce16fce550a995cf1250Wink Saville return lteAsuLevel; 206b208a24cf521401912cfce16fce550a995cf1250Wink Saville } 207b208a24cf521401912cfce16fce550a995cf1250Wink Saville 208b208a24cf521401912cfce16fce550a995cf1250Wink Saville /** 209b208a24cf521401912cfce16fce550a995cf1250Wink Saville * Get the timing advance value for LTE. 210b208a24cf521401912cfce16fce550a995cf1250Wink Saville * See 3GPP xxxx 211b208a24cf521401912cfce16fce550a995cf1250Wink Saville */ 212b208a24cf521401912cfce16fce550a995cf1250Wink Saville public int getTimingAdvance() { 213b208a24cf521401912cfce16fce550a995cf1250Wink Saville return mTimingAdvance; 214b208a24cf521401912cfce16fce550a995cf1250Wink Saville } 215b208a24cf521401912cfce16fce550a995cf1250Wink Saville 216b208a24cf521401912cfce16fce550a995cf1250Wink Saville @Override 217b208a24cf521401912cfce16fce550a995cf1250Wink Saville public int hashCode() { 218b208a24cf521401912cfce16fce550a995cf1250Wink Saville int primeNum = 31; 219b208a24cf521401912cfce16fce550a995cf1250Wink Saville return (mSignalStrength * primeNum) + (mRsrp * primeNum) 220b208a24cf521401912cfce16fce550a995cf1250Wink Saville + (mRsrq * primeNum) + (mRssnr * primeNum) + (mCqi * primeNum) 221b208a24cf521401912cfce16fce550a995cf1250Wink Saville + (mTimingAdvance * primeNum); 222b208a24cf521401912cfce16fce550a995cf1250Wink Saville } 223b208a24cf521401912cfce16fce550a995cf1250Wink Saville 224b208a24cf521401912cfce16fce550a995cf1250Wink Saville @Override 225b208a24cf521401912cfce16fce550a995cf1250Wink Saville public boolean equals (Object o) { 226b208a24cf521401912cfce16fce550a995cf1250Wink Saville CellSignalStrengthLte s; 227b208a24cf521401912cfce16fce550a995cf1250Wink Saville 228b208a24cf521401912cfce16fce550a995cf1250Wink Saville try { 229b208a24cf521401912cfce16fce550a995cf1250Wink Saville s = (CellSignalStrengthLte) o; 230b208a24cf521401912cfce16fce550a995cf1250Wink Saville } catch (ClassCastException ex) { 231b208a24cf521401912cfce16fce550a995cf1250Wink Saville return false; 232b208a24cf521401912cfce16fce550a995cf1250Wink Saville } 233b208a24cf521401912cfce16fce550a995cf1250Wink Saville 234b208a24cf521401912cfce16fce550a995cf1250Wink Saville if (o == null) { 235b208a24cf521401912cfce16fce550a995cf1250Wink Saville return false; 236b208a24cf521401912cfce16fce550a995cf1250Wink Saville } 237b208a24cf521401912cfce16fce550a995cf1250Wink Saville 238b208a24cf521401912cfce16fce550a995cf1250Wink Saville return mSignalStrength == s.mSignalStrength 239b208a24cf521401912cfce16fce550a995cf1250Wink Saville && mRsrp == s.mRsrp 240b208a24cf521401912cfce16fce550a995cf1250Wink Saville && mRsrq == s.mRsrq 241b208a24cf521401912cfce16fce550a995cf1250Wink Saville && mRssnr == s.mRssnr 242b208a24cf521401912cfce16fce550a995cf1250Wink Saville && mCqi == s.mCqi 243b208a24cf521401912cfce16fce550a995cf1250Wink Saville && mTimingAdvance == s.mTimingAdvance; 244b208a24cf521401912cfce16fce550a995cf1250Wink Saville } 245b208a24cf521401912cfce16fce550a995cf1250Wink Saville 246b208a24cf521401912cfce16fce550a995cf1250Wink Saville /** 247b208a24cf521401912cfce16fce550a995cf1250Wink Saville * @return string representation. 248b208a24cf521401912cfce16fce550a995cf1250Wink Saville */ 249b208a24cf521401912cfce16fce550a995cf1250Wink Saville @Override 250b208a24cf521401912cfce16fce550a995cf1250Wink Saville public String toString() { 251b208a24cf521401912cfce16fce550a995cf1250Wink Saville return "CellSignalStrengthLte:" 252b208a24cf521401912cfce16fce550a995cf1250Wink Saville + " ss=" + mSignalStrength 253b208a24cf521401912cfce16fce550a995cf1250Wink Saville + " rsrp=" + mRsrp 254b208a24cf521401912cfce16fce550a995cf1250Wink Saville + " rsrq=" + mRsrq 255b208a24cf521401912cfce16fce550a995cf1250Wink Saville + " rssnr=" + mRssnr 256b208a24cf521401912cfce16fce550a995cf1250Wink Saville + " cqi=" + mCqi 257b208a24cf521401912cfce16fce550a995cf1250Wink Saville + " ta=" + mTimingAdvance; 258b208a24cf521401912cfce16fce550a995cf1250Wink Saville } 259b208a24cf521401912cfce16fce550a995cf1250Wink Saville 260b208a24cf521401912cfce16fce550a995cf1250Wink Saville /** Implement the Parcelable interface */ 261b208a24cf521401912cfce16fce550a995cf1250Wink Saville @Override 262b208a24cf521401912cfce16fce550a995cf1250Wink Saville public void writeToParcel(Parcel dest, int flags) { 263b208a24cf521401912cfce16fce550a995cf1250Wink Saville if (DBG) log("writeToParcel(Parcel, int): " + toString()); 264b208a24cf521401912cfce16fce550a995cf1250Wink Saville dest.writeInt(mSignalStrength); 265dbf09ffed27b35cf310e3c53402edf0f56f5e7d1Jaime Lopez // Need to multiply rsrp and rsrq by -1 266dbf09ffed27b35cf310e3c53402edf0f56f5e7d1Jaime Lopez // to ensure consistency when reading values written here 267efbb8f337658f417a3af5f8e656eb5d23372596eNathan Harold // unless the values are invalid 268efbb8f337658f417a3af5f8e656eb5d23372596eNathan Harold dest.writeInt(mRsrp * (mRsrp != Integer.MAX_VALUE ? -1 : 1)); 269efbb8f337658f417a3af5f8e656eb5d23372596eNathan Harold dest.writeInt(mRsrq * (mRsrq != Integer.MAX_VALUE ? -1 : 1)); 270b208a24cf521401912cfce16fce550a995cf1250Wink Saville dest.writeInt(mRssnr); 271b208a24cf521401912cfce16fce550a995cf1250Wink Saville dest.writeInt(mCqi); 272b208a24cf521401912cfce16fce550a995cf1250Wink Saville dest.writeInt(mTimingAdvance); 273b208a24cf521401912cfce16fce550a995cf1250Wink Saville } 274b208a24cf521401912cfce16fce550a995cf1250Wink Saville 275b208a24cf521401912cfce16fce550a995cf1250Wink Saville /** 276b208a24cf521401912cfce16fce550a995cf1250Wink Saville * Construct a SignalStrength object from the given parcel 277b208a24cf521401912cfce16fce550a995cf1250Wink Saville * where the token is already been processed. 278b208a24cf521401912cfce16fce550a995cf1250Wink Saville */ 279b208a24cf521401912cfce16fce550a995cf1250Wink Saville private CellSignalStrengthLte(Parcel in) { 280b208a24cf521401912cfce16fce550a995cf1250Wink Saville mSignalStrength = in.readInt(); 281dbf09ffed27b35cf310e3c53402edf0f56f5e7d1Jaime Lopez // rsrp and rsrq are written into the parcel as positive values. 282efbb8f337658f417a3af5f8e656eb5d23372596eNathan Harold // Need to convert into negative values unless the values are invalid 283efbb8f337658f417a3af5f8e656eb5d23372596eNathan Harold mRsrp = in.readInt(); 284efbb8f337658f417a3af5f8e656eb5d23372596eNathan Harold if (mRsrp != Integer.MAX_VALUE) mRsrp *= -1; 285efbb8f337658f417a3af5f8e656eb5d23372596eNathan Harold mRsrq = in.readInt(); 286efbb8f337658f417a3af5f8e656eb5d23372596eNathan Harold if (mRsrq != Integer.MAX_VALUE) mRsrq *= -1; 287b208a24cf521401912cfce16fce550a995cf1250Wink Saville mRssnr = in.readInt(); 288b208a24cf521401912cfce16fce550a995cf1250Wink Saville mCqi = in.readInt(); 289b208a24cf521401912cfce16fce550a995cf1250Wink Saville mTimingAdvance = in.readInt(); 290b208a24cf521401912cfce16fce550a995cf1250Wink Saville if (DBG) log("CellSignalStrengthLte(Parcel): " + toString()); 291b208a24cf521401912cfce16fce550a995cf1250Wink Saville } 292b208a24cf521401912cfce16fce550a995cf1250Wink Saville 293b208a24cf521401912cfce16fce550a995cf1250Wink Saville /** Implement the Parcelable interface */ 294b208a24cf521401912cfce16fce550a995cf1250Wink Saville @Override 295b208a24cf521401912cfce16fce550a995cf1250Wink Saville public int describeContents() { 296b208a24cf521401912cfce16fce550a995cf1250Wink Saville return 0; 297b208a24cf521401912cfce16fce550a995cf1250Wink Saville } 298b208a24cf521401912cfce16fce550a995cf1250Wink Saville 299b208a24cf521401912cfce16fce550a995cf1250Wink Saville /** Implement the Parcelable interface */ 300b208a24cf521401912cfce16fce550a995cf1250Wink Saville @SuppressWarnings("hiding") 301b208a24cf521401912cfce16fce550a995cf1250Wink Saville public static final Parcelable.Creator<CellSignalStrengthLte> CREATOR = 302b208a24cf521401912cfce16fce550a995cf1250Wink Saville new Parcelable.Creator<CellSignalStrengthLte>() { 303b208a24cf521401912cfce16fce550a995cf1250Wink Saville @Override 304b208a24cf521401912cfce16fce550a995cf1250Wink Saville public CellSignalStrengthLte createFromParcel(Parcel in) { 305c6e4917adda19beb780386bcc26b652748b8ab13Wink Saville return new CellSignalStrengthLte(in); 306b208a24cf521401912cfce16fce550a995cf1250Wink Saville } 307b208a24cf521401912cfce16fce550a995cf1250Wink Saville 308b208a24cf521401912cfce16fce550a995cf1250Wink Saville @Override 309b208a24cf521401912cfce16fce550a995cf1250Wink Saville public CellSignalStrengthLte[] newArray(int size) { 310b208a24cf521401912cfce16fce550a995cf1250Wink Saville return new CellSignalStrengthLte[size]; 311b208a24cf521401912cfce16fce550a995cf1250Wink Saville } 312b208a24cf521401912cfce16fce550a995cf1250Wink Saville }; 313b208a24cf521401912cfce16fce550a995cf1250Wink Saville 314b208a24cf521401912cfce16fce550a995cf1250Wink Saville /** 315b208a24cf521401912cfce16fce550a995cf1250Wink Saville * log 316b208a24cf521401912cfce16fce550a995cf1250Wink Saville */ 317b208a24cf521401912cfce16fce550a995cf1250Wink Saville private static void log(String s) { 31822b1e80c24c5fbd702a19f2511ee2897baaf3e98Wink Saville Rlog.w(LOG_TAG, s); 319b208a24cf521401912cfce16fce550a995cf1250Wink Saville } 320b208a24cf521401912cfce16fce550a995cf1250Wink Saville} 321