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; 21599a90c2a02645a5f2d189b9065b863397a4076eWink Savilleimport android.telephony.Rlog; 22b208a24cf521401912cfce16fce550a995cf1250Wink Saville 23b208a24cf521401912cfce16fce550a995cf1250Wink Saville/** 24e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville * GSM signal strength related information. 25b208a24cf521401912cfce16fce550a995cf1250Wink Saville */ 26c6e4917adda19beb780386bcc26b652748b8ab13Wink Savillepublic final class CellSignalStrengthGsm extends CellSignalStrength implements Parcelable { 27b208a24cf521401912cfce16fce550a995cf1250Wink Saville 28b208a24cf521401912cfce16fce550a995cf1250Wink Saville private static final String LOG_TAG = "CellSignalStrengthGsm"; 29b208a24cf521401912cfce16fce550a995cf1250Wink Saville private static final boolean DBG = false; 30b208a24cf521401912cfce16fce550a995cf1250Wink Saville 31b208a24cf521401912cfce16fce550a995cf1250Wink Saville private static final int GSM_SIGNAL_STRENGTH_GREAT = 12; 32b208a24cf521401912cfce16fce550a995cf1250Wink Saville private static final int GSM_SIGNAL_STRENGTH_GOOD = 8; 33e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville private static final int GSM_SIGNAL_STRENGTH_MODERATE = 5; 34b208a24cf521401912cfce16fce550a995cf1250Wink Saville 35b208a24cf521401912cfce16fce550a995cf1250Wink Saville private int mSignalStrength; // Valid values are (0-31, 99) as defined in TS 27.007 8.5 36b208a24cf521401912cfce16fce550a995cf1250Wink Saville private int mBitErrorRate; // bit error rate (0-7, 99) as defined in TS 27.007 8.5 370c86efdbd93beba03f29bf4a771bd0917d3af46aSanket Padawe private int mTimingAdvance; 38b208a24cf521401912cfce16fce550a995cf1250Wink Saville 39b208a24cf521401912cfce16fce550a995cf1250Wink Saville /** 40b208a24cf521401912cfce16fce550a995cf1250Wink Saville * Empty constructor 41b208a24cf521401912cfce16fce550a995cf1250Wink Saville * 42b208a24cf521401912cfce16fce550a995cf1250Wink Saville * @hide 43b208a24cf521401912cfce16fce550a995cf1250Wink Saville */ 44b208a24cf521401912cfce16fce550a995cf1250Wink Saville public CellSignalStrengthGsm() { 45b208a24cf521401912cfce16fce550a995cf1250Wink Saville setDefaultValues(); 46b208a24cf521401912cfce16fce550a995cf1250Wink Saville } 47b208a24cf521401912cfce16fce550a995cf1250Wink Saville 48b208a24cf521401912cfce16fce550a995cf1250Wink Saville /** 49b208a24cf521401912cfce16fce550a995cf1250Wink Saville * Constructor 50b208a24cf521401912cfce16fce550a995cf1250Wink Saville * 51b208a24cf521401912cfce16fce550a995cf1250Wink Saville * @hide 52b208a24cf521401912cfce16fce550a995cf1250Wink Saville */ 53b208a24cf521401912cfce16fce550a995cf1250Wink Saville public CellSignalStrengthGsm(int ss, int ber) { 54b208a24cf521401912cfce16fce550a995cf1250Wink Saville initialize(ss, ber); 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 CellSignalStrengthGsm(CellSignalStrengthGsm s) { 65b208a24cf521401912cfce16fce550a995cf1250Wink Saville copyFrom(s); 66b208a24cf521401912cfce16fce550a995cf1250Wink Saville } 67b208a24cf521401912cfce16fce550a995cf1250Wink Saville 68b208a24cf521401912cfce16fce550a995cf1250Wink Saville /** 69b208a24cf521401912cfce16fce550a995cf1250Wink Saville * Initialize all the values 70b208a24cf521401912cfce16fce550a995cf1250Wink Saville * 71e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville * @param ss SignalStrength as ASU value 72e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville * @param ber is Bit Error Rate 73b208a24cf521401912cfce16fce550a995cf1250Wink Saville * 74b208a24cf521401912cfce16fce550a995cf1250Wink Saville * @hide 75b208a24cf521401912cfce16fce550a995cf1250Wink Saville */ 76b208a24cf521401912cfce16fce550a995cf1250Wink Saville public void initialize(int ss, int ber) { 77b208a24cf521401912cfce16fce550a995cf1250Wink Saville mSignalStrength = ss; 78b208a24cf521401912cfce16fce550a995cf1250Wink Saville mBitErrorRate = ber; 790c86efdbd93beba03f29bf4a771bd0917d3af46aSanket Padawe mTimingAdvance = Integer.MAX_VALUE; 800c86efdbd93beba03f29bf4a771bd0917d3af46aSanket Padawe } 810c86efdbd93beba03f29bf4a771bd0917d3af46aSanket Padawe 820c86efdbd93beba03f29bf4a771bd0917d3af46aSanket Padawe /** 830c86efdbd93beba03f29bf4a771bd0917d3af46aSanket Padawe * Initialize all the values 840c86efdbd93beba03f29bf4a771bd0917d3af46aSanket Padawe * 850c86efdbd93beba03f29bf4a771bd0917d3af46aSanket Padawe * @param ss SignalStrength as ASU value 860c86efdbd93beba03f29bf4a771bd0917d3af46aSanket Padawe * @param ber is Bit Error Rate 870c86efdbd93beba03f29bf4a771bd0917d3af46aSanket Padawe * @param ta timing advance 880c86efdbd93beba03f29bf4a771bd0917d3af46aSanket Padawe * 890c86efdbd93beba03f29bf4a771bd0917d3af46aSanket Padawe * @hide 900c86efdbd93beba03f29bf4a771bd0917d3af46aSanket Padawe */ 910c86efdbd93beba03f29bf4a771bd0917d3af46aSanket Padawe public void initialize(int ss, int ber, int ta) { 920c86efdbd93beba03f29bf4a771bd0917d3af46aSanket Padawe mSignalStrength = ss; 930c86efdbd93beba03f29bf4a771bd0917d3af46aSanket Padawe mBitErrorRate = ber; 940c86efdbd93beba03f29bf4a771bd0917d3af46aSanket Padawe mTimingAdvance = ta; 95b208a24cf521401912cfce16fce550a995cf1250Wink Saville } 96b208a24cf521401912cfce16fce550a995cf1250Wink Saville 97b208a24cf521401912cfce16fce550a995cf1250Wink Saville /** 98b208a24cf521401912cfce16fce550a995cf1250Wink Saville * @hide 99b208a24cf521401912cfce16fce550a995cf1250Wink Saville */ 100b208a24cf521401912cfce16fce550a995cf1250Wink Saville protected void copyFrom(CellSignalStrengthGsm s) { 101b208a24cf521401912cfce16fce550a995cf1250Wink Saville mSignalStrength = s.mSignalStrength; 102b208a24cf521401912cfce16fce550a995cf1250Wink Saville mBitErrorRate = s.mBitErrorRate; 1030c86efdbd93beba03f29bf4a771bd0917d3af46aSanket Padawe mTimingAdvance = s.mTimingAdvance; 104b208a24cf521401912cfce16fce550a995cf1250Wink Saville } 105b208a24cf521401912cfce16fce550a995cf1250Wink Saville 106b208a24cf521401912cfce16fce550a995cf1250Wink Saville /** 107b208a24cf521401912cfce16fce550a995cf1250Wink Saville * @hide 108b208a24cf521401912cfce16fce550a995cf1250Wink Saville */ 109b208a24cf521401912cfce16fce550a995cf1250Wink Saville @Override 110b208a24cf521401912cfce16fce550a995cf1250Wink Saville public CellSignalStrengthGsm copy() { 111b208a24cf521401912cfce16fce550a995cf1250Wink Saville return new CellSignalStrengthGsm(this); 112b208a24cf521401912cfce16fce550a995cf1250Wink Saville } 113b208a24cf521401912cfce16fce550a995cf1250Wink Saville 114b208a24cf521401912cfce16fce550a995cf1250Wink Saville /** @hide */ 115b208a24cf521401912cfce16fce550a995cf1250Wink Saville @Override 116b208a24cf521401912cfce16fce550a995cf1250Wink Saville public void setDefaultValues() { 117b208a24cf521401912cfce16fce550a995cf1250Wink Saville mSignalStrength = Integer.MAX_VALUE; 118b208a24cf521401912cfce16fce550a995cf1250Wink Saville mBitErrorRate = Integer.MAX_VALUE; 1190c86efdbd93beba03f29bf4a771bd0917d3af46aSanket Padawe mTimingAdvance = Integer.MAX_VALUE; 120b208a24cf521401912cfce16fce550a995cf1250Wink Saville } 121b208a24cf521401912cfce16fce550a995cf1250Wink Saville 122b208a24cf521401912cfce16fce550a995cf1250Wink Saville /** 12382e6ee62b2be3c716c215e4ba72c8a12c58620fbWink Saville * Get signal level as an int from 0..4 124b208a24cf521401912cfce16fce550a995cf1250Wink Saville */ 125b208a24cf521401912cfce16fce550a995cf1250Wink Saville @Override 126b208a24cf521401912cfce16fce550a995cf1250Wink Saville public int getLevel() { 127b208a24cf521401912cfce16fce550a995cf1250Wink Saville int level; 128b208a24cf521401912cfce16fce550a995cf1250Wink Saville 129b208a24cf521401912cfce16fce550a995cf1250Wink Saville // ASU ranges from 0 to 31 - TS 27.007 Sec 8.5 130b208a24cf521401912cfce16fce550a995cf1250Wink Saville // asu = 0 (-113dB or less) is very weak 131b208a24cf521401912cfce16fce550a995cf1250Wink Saville // signal, its better to show 0 bars to the user in such cases. 132b208a24cf521401912cfce16fce550a995cf1250Wink Saville // asu = 99 is a special case, where the signal strength is unknown. 133b208a24cf521401912cfce16fce550a995cf1250Wink Saville int asu = mSignalStrength; 134b208a24cf521401912cfce16fce550a995cf1250Wink Saville if (asu <= 2 || asu == 99) level = SIGNAL_STRENGTH_NONE_OR_UNKNOWN; 135b208a24cf521401912cfce16fce550a995cf1250Wink Saville else if (asu >= GSM_SIGNAL_STRENGTH_GREAT) level = SIGNAL_STRENGTH_GREAT; 136b208a24cf521401912cfce16fce550a995cf1250Wink Saville else if (asu >= GSM_SIGNAL_STRENGTH_GOOD) level = SIGNAL_STRENGTH_GOOD; 137b208a24cf521401912cfce16fce550a995cf1250Wink Saville else if (asu >= GSM_SIGNAL_STRENGTH_MODERATE) level = SIGNAL_STRENGTH_MODERATE; 138b208a24cf521401912cfce16fce550a995cf1250Wink Saville else level = SIGNAL_STRENGTH_POOR; 139b208a24cf521401912cfce16fce550a995cf1250Wink Saville if (DBG) log("getLevel=" + level); 140b208a24cf521401912cfce16fce550a995cf1250Wink Saville return level; 141b208a24cf521401912cfce16fce550a995cf1250Wink Saville } 142b208a24cf521401912cfce16fce550a995cf1250Wink Saville 143b208a24cf521401912cfce16fce550a995cf1250Wink Saville /** 14490bc8e30ad3b0c211ef6e4a2e54cfadd28df1b2dNathan Harold * Get the GSM timing advance between 0..219 symbols (normally 0..63). 14590bc8e30ad3b0c211ef6e4a2e54cfadd28df1b2dNathan Harold * Integer.MAX_VALUE is reported when there is no RR connection. 14690bc8e30ad3b0c211ef6e4a2e54cfadd28df1b2dNathan Harold * Refer to 3GPP 45.010 Sec 5.8 14790bc8e30ad3b0c211ef6e4a2e54cfadd28df1b2dNathan Harold * @return the current GSM timing advance, if available. 14890bc8e30ad3b0c211ef6e4a2e54cfadd28df1b2dNathan Harold */ 14990bc8e30ad3b0c211ef6e4a2e54cfadd28df1b2dNathan Harold public int getTimingAdvance() { 15090bc8e30ad3b0c211ef6e4a2e54cfadd28df1b2dNathan Harold return mTimingAdvance; 15190bc8e30ad3b0c211ef6e4a2e54cfadd28df1b2dNathan Harold } 15290bc8e30ad3b0c211ef6e4a2e54cfadd28df1b2dNathan Harold 15390bc8e30ad3b0c211ef6e4a2e54cfadd28df1b2dNathan Harold /** 15482e6ee62b2be3c716c215e4ba72c8a12c58620fbWink Saville * Get the signal strength as dBm 155b208a24cf521401912cfce16fce550a995cf1250Wink Saville */ 156b208a24cf521401912cfce16fce550a995cf1250Wink Saville @Override 157b208a24cf521401912cfce16fce550a995cf1250Wink Saville public int getDbm() { 158b208a24cf521401912cfce16fce550a995cf1250Wink Saville int dBm; 159b208a24cf521401912cfce16fce550a995cf1250Wink Saville 160b208a24cf521401912cfce16fce550a995cf1250Wink Saville int level = mSignalStrength; 161b208a24cf521401912cfce16fce550a995cf1250Wink Saville int asu = (level == 99 ? Integer.MAX_VALUE : level); 162b208a24cf521401912cfce16fce550a995cf1250Wink Saville if (asu != Integer.MAX_VALUE) { 163b208a24cf521401912cfce16fce550a995cf1250Wink Saville dBm = -113 + (2 * asu); 164b208a24cf521401912cfce16fce550a995cf1250Wink Saville } else { 165b208a24cf521401912cfce16fce550a995cf1250Wink Saville dBm = Integer.MAX_VALUE; 166b208a24cf521401912cfce16fce550a995cf1250Wink Saville } 167b208a24cf521401912cfce16fce550a995cf1250Wink Saville if (DBG) log("getDbm=" + dBm); 168b208a24cf521401912cfce16fce550a995cf1250Wink Saville return dBm; 169b208a24cf521401912cfce16fce550a995cf1250Wink Saville } 170b208a24cf521401912cfce16fce550a995cf1250Wink Saville 171b208a24cf521401912cfce16fce550a995cf1250Wink Saville /** 172e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville * Get the signal level as an asu value between 0..31, 99 is unknown 173b208a24cf521401912cfce16fce550a995cf1250Wink Saville * Asu is calculated based on 3GPP RSRP. Refer to 3GPP 27.007 (Ver 10.3.0) Sec 8.69 174b208a24cf521401912cfce16fce550a995cf1250Wink Saville */ 175b208a24cf521401912cfce16fce550a995cf1250Wink Saville @Override 176b208a24cf521401912cfce16fce550a995cf1250Wink Saville public int getAsuLevel() { 177b208a24cf521401912cfce16fce550a995cf1250Wink Saville // ASU ranges from 0 to 31 - TS 27.007 Sec 8.5 178b208a24cf521401912cfce16fce550a995cf1250Wink Saville // asu = 0 (-113dB or less) is very weak 179b208a24cf521401912cfce16fce550a995cf1250Wink Saville // signal, its better to show 0 bars to the user in such cases. 180b208a24cf521401912cfce16fce550a995cf1250Wink Saville // asu = 99 is a special case, where the signal strength is unknown. 181b208a24cf521401912cfce16fce550a995cf1250Wink Saville int level = mSignalStrength; 182b208a24cf521401912cfce16fce550a995cf1250Wink Saville if (DBG) log("getAsuLevel=" + level); 183b208a24cf521401912cfce16fce550a995cf1250Wink Saville return level; 184b208a24cf521401912cfce16fce550a995cf1250Wink Saville } 185b208a24cf521401912cfce16fce550a995cf1250Wink Saville 186b208a24cf521401912cfce16fce550a995cf1250Wink Saville @Override 187b208a24cf521401912cfce16fce550a995cf1250Wink Saville public int hashCode() { 188b208a24cf521401912cfce16fce550a995cf1250Wink Saville int primeNum = 31; 189b208a24cf521401912cfce16fce550a995cf1250Wink Saville return (mSignalStrength * primeNum) + (mBitErrorRate * primeNum); 190b208a24cf521401912cfce16fce550a995cf1250Wink Saville } 191b208a24cf521401912cfce16fce550a995cf1250Wink Saville 192b208a24cf521401912cfce16fce550a995cf1250Wink Saville @Override 193b208a24cf521401912cfce16fce550a995cf1250Wink Saville public boolean equals (Object o) { 194b208a24cf521401912cfce16fce550a995cf1250Wink Saville CellSignalStrengthGsm s; 195b208a24cf521401912cfce16fce550a995cf1250Wink Saville 196b208a24cf521401912cfce16fce550a995cf1250Wink Saville try { 197b208a24cf521401912cfce16fce550a995cf1250Wink Saville s = (CellSignalStrengthGsm) o; 198b208a24cf521401912cfce16fce550a995cf1250Wink Saville } catch (ClassCastException ex) { 199b208a24cf521401912cfce16fce550a995cf1250Wink Saville return false; 200b208a24cf521401912cfce16fce550a995cf1250Wink Saville } 201b208a24cf521401912cfce16fce550a995cf1250Wink Saville 202b208a24cf521401912cfce16fce550a995cf1250Wink Saville if (o == null) { 203b208a24cf521401912cfce16fce550a995cf1250Wink Saville return false; 204b208a24cf521401912cfce16fce550a995cf1250Wink Saville } 205b208a24cf521401912cfce16fce550a995cf1250Wink Saville 2060c86efdbd93beba03f29bf4a771bd0917d3af46aSanket Padawe return mSignalStrength == s.mSignalStrength && mBitErrorRate == s.mBitErrorRate && 2070c86efdbd93beba03f29bf4a771bd0917d3af46aSanket Padawe s.mTimingAdvance == mTimingAdvance; 208b208a24cf521401912cfce16fce550a995cf1250Wink Saville } 209b208a24cf521401912cfce16fce550a995cf1250Wink Saville 210b208a24cf521401912cfce16fce550a995cf1250Wink Saville /** 211b208a24cf521401912cfce16fce550a995cf1250Wink Saville * @return string representation. 212b208a24cf521401912cfce16fce550a995cf1250Wink Saville */ 213b208a24cf521401912cfce16fce550a995cf1250Wink Saville @Override 214b208a24cf521401912cfce16fce550a995cf1250Wink Saville public String toString() { 215b208a24cf521401912cfce16fce550a995cf1250Wink Saville return "CellSignalStrengthGsm:" 216b208a24cf521401912cfce16fce550a995cf1250Wink Saville + " ss=" + mSignalStrength 2170c86efdbd93beba03f29bf4a771bd0917d3af46aSanket Padawe + " ber=" + mBitErrorRate 2180c86efdbd93beba03f29bf4a771bd0917d3af46aSanket Padawe + " mTa=" + mTimingAdvance; 219b208a24cf521401912cfce16fce550a995cf1250Wink Saville } 220b208a24cf521401912cfce16fce550a995cf1250Wink Saville 221b208a24cf521401912cfce16fce550a995cf1250Wink Saville /** Implement the Parcelable interface */ 222b208a24cf521401912cfce16fce550a995cf1250Wink Saville @Override 223b208a24cf521401912cfce16fce550a995cf1250Wink Saville public void writeToParcel(Parcel dest, int flags) { 224b208a24cf521401912cfce16fce550a995cf1250Wink Saville if (DBG) log("writeToParcel(Parcel, int): " + toString()); 225b208a24cf521401912cfce16fce550a995cf1250Wink Saville dest.writeInt(mSignalStrength); 226b208a24cf521401912cfce16fce550a995cf1250Wink Saville dest.writeInt(mBitErrorRate); 2270c86efdbd93beba03f29bf4a771bd0917d3af46aSanket Padawe dest.writeInt(mTimingAdvance); 228b208a24cf521401912cfce16fce550a995cf1250Wink Saville } 229b208a24cf521401912cfce16fce550a995cf1250Wink Saville 230b208a24cf521401912cfce16fce550a995cf1250Wink Saville /** 231b208a24cf521401912cfce16fce550a995cf1250Wink Saville * Construct a SignalStrength object from the given parcel 232b208a24cf521401912cfce16fce550a995cf1250Wink Saville * where the token is already been processed. 233b208a24cf521401912cfce16fce550a995cf1250Wink Saville */ 234b208a24cf521401912cfce16fce550a995cf1250Wink Saville private CellSignalStrengthGsm(Parcel in) { 235b208a24cf521401912cfce16fce550a995cf1250Wink Saville mSignalStrength = in.readInt(); 236b208a24cf521401912cfce16fce550a995cf1250Wink Saville mBitErrorRate = in.readInt(); 2370c86efdbd93beba03f29bf4a771bd0917d3af46aSanket Padawe mTimingAdvance = in.readInt(); 238b208a24cf521401912cfce16fce550a995cf1250Wink Saville if (DBG) log("CellSignalStrengthGsm(Parcel): " + toString()); 239b208a24cf521401912cfce16fce550a995cf1250Wink Saville } 240b208a24cf521401912cfce16fce550a995cf1250Wink Saville 241b208a24cf521401912cfce16fce550a995cf1250Wink Saville /** Implement the Parcelable interface */ 242b208a24cf521401912cfce16fce550a995cf1250Wink Saville @Override 243b208a24cf521401912cfce16fce550a995cf1250Wink Saville public int describeContents() { 244b208a24cf521401912cfce16fce550a995cf1250Wink Saville return 0; 245b208a24cf521401912cfce16fce550a995cf1250Wink Saville } 246b208a24cf521401912cfce16fce550a995cf1250Wink Saville 247b208a24cf521401912cfce16fce550a995cf1250Wink Saville /** Implement the Parcelable interface */ 248b208a24cf521401912cfce16fce550a995cf1250Wink Saville @SuppressWarnings("hiding") 249b208a24cf521401912cfce16fce550a995cf1250Wink Saville public static final Parcelable.Creator<CellSignalStrengthGsm> CREATOR = 250b208a24cf521401912cfce16fce550a995cf1250Wink Saville new Parcelable.Creator<CellSignalStrengthGsm>() { 251b208a24cf521401912cfce16fce550a995cf1250Wink Saville @Override 252b208a24cf521401912cfce16fce550a995cf1250Wink Saville public CellSignalStrengthGsm createFromParcel(Parcel in) { 253c6e4917adda19beb780386bcc26b652748b8ab13Wink Saville return new CellSignalStrengthGsm(in); 254b208a24cf521401912cfce16fce550a995cf1250Wink Saville } 255b208a24cf521401912cfce16fce550a995cf1250Wink Saville 256b208a24cf521401912cfce16fce550a995cf1250Wink Saville @Override 257b208a24cf521401912cfce16fce550a995cf1250Wink Saville public CellSignalStrengthGsm[] newArray(int size) { 258b208a24cf521401912cfce16fce550a995cf1250Wink Saville return new CellSignalStrengthGsm[size]; 259b208a24cf521401912cfce16fce550a995cf1250Wink Saville } 260b208a24cf521401912cfce16fce550a995cf1250Wink Saville }; 261b208a24cf521401912cfce16fce550a995cf1250Wink Saville 262b208a24cf521401912cfce16fce550a995cf1250Wink Saville /** 263b208a24cf521401912cfce16fce550a995cf1250Wink Saville * log 264b208a24cf521401912cfce16fce550a995cf1250Wink Saville */ 265b208a24cf521401912cfce16fce550a995cf1250Wink Saville private static void log(String s) { 266599a90c2a02645a5f2d189b9065b863397a4076eWink Saville Rlog.w(LOG_TAG, s); 267b208a24cf521401912cfce16fce550a995cf1250Wink Saville } 268b208a24cf521401912cfce16fce550a995cf1250Wink Saville} 269