CellSignalStrengthWcdma.java revision e3a9cbc052db7f00a96cc7b9580097d67538f360
1e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville/* 2e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville * Copyright (C) 2012 The Android Open Source Project 3e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville * 4e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville * Licensed under the Apache License, Version 2.0 (the "License"); 5e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville * you may not use this file except in compliance with the License. 6e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville * You may obtain a copy of the License at 7e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville * 8e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville * http://www.apache.org/licenses/LICENSE-2.0 9e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville * 10e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville * Unless required by applicable law or agreed to in writing, software 11e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville * distributed under the License is distributed on an "AS IS" BASIS, 12e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville * See the License for the specific language governing permissions and 14e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville * limitations under the License. 15e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville */ 16e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville 17e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Savillepackage android.telephony; 18e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville 19e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Savilleimport android.os.Parcel; 20e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Savilleimport android.os.Parcelable; 21e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Savilleimport android.telephony.Rlog; 22e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville 23e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville/** 24e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville * Wcdma signal strength related information. 25e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville */ 26e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Savillepublic final class CellSignalStrengthWcdma extends CellSignalStrength implements Parcelable { 27e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville 28e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville private static final String LOG_TAG = "CellSignalStrengthWcdma"; 29e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville private static final boolean DBG = false; 30e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville 31e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville private static final int WCDMA_SIGNAL_STRENGTH_GREAT = 12; 32e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville private static final int WCDMA_SIGNAL_STRENGTH_GOOD = 8; 33e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville private static final int WCDMA_SIGNAL_STRENGTH_MODERATE = 5; 34e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville 35e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville private int mSignalStrength; // Valid values are (0-31, 99) as defined in TS 27.007 8.5 36e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville private int mBitErrorRate; // bit error rate (0-7, 99) as defined in TS 27.007 8.5 37e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville 38e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville /** 39e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville * Empty constructor 40e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville * 41e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville * @hide 42e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville */ 43e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville public CellSignalStrengthWcdma() { 44e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville setDefaultValues(); 45e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville } 46e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville 47e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville /** 48e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville * Constructor 49e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville * 50e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville * @hide 51e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville */ 52e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville public CellSignalStrengthWcdma(int ss, int ber) { 53e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville initialize(ss, ber); 54e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville } 55e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville 56e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville /** 57e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville * Copy constructors 58e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville * 59e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville * @param s Source SignalStrength 60e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville * 61e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville * @hide 62e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville */ 63e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville public CellSignalStrengthWcdma(CellSignalStrengthWcdma s) { 64e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville copyFrom(s); 65e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville } 66e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville 67e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville /** 68e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville * Initialize all the values 69e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville * 70e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville * @param ss SignalStrength as ASU value 71e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville * @param ber is Bit Error Rate 72e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville * 73e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville * @hide 74e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville */ 75e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville public void initialize(int ss, int ber) { 76e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville mSignalStrength = ss; 77e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville mBitErrorRate = ber; 78e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville } 79e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville 80e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville /** 81e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville * @hide 82e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville */ 83e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville protected void copyFrom(CellSignalStrengthWcdma s) { 84e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville mSignalStrength = s.mSignalStrength; 85e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville mBitErrorRate = s.mBitErrorRate; 86e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville } 87e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville 88e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville /** 89e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville * @hide 90e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville */ 91e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville @Override 92e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville public CellSignalStrengthWcdma copy() { 93e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville return new CellSignalStrengthWcdma(this); 94e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville } 95e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville 96e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville /** @hide */ 97e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville @Override 98e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville public void setDefaultValues() { 99e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville mSignalStrength = Integer.MAX_VALUE; 100e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville mBitErrorRate = Integer.MAX_VALUE; 101e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville } 102e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville 103e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville /** 104e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville * Get signal level as an int from 0..4 105e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville */ 106e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville @Override 107e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville public int getLevel() { 108e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville int level; 109e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville 110e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville // ASU ranges from 0 to 31 - TS 27.007 Sec 8.5 111e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville // asu = 0 (-113dB or less) is very weak 112e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville // signal, its better to show 0 bars to the user in such cases. 113e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville // asu = 99 is a special case, where the signal strength is unknown. 114e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville int asu = mSignalStrength; 115e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville if (asu <= 2 || asu == 99) level = SIGNAL_STRENGTH_NONE_OR_UNKNOWN; 116e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville else if (asu >= WCDMA_SIGNAL_STRENGTH_GREAT) level = SIGNAL_STRENGTH_GREAT; 117e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville else if (asu >= WCDMA_SIGNAL_STRENGTH_GOOD) level = SIGNAL_STRENGTH_GOOD; 118e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville else if (asu >= WCDMA_SIGNAL_STRENGTH_MODERATE) level = SIGNAL_STRENGTH_MODERATE; 119e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville else level = SIGNAL_STRENGTH_POOR; 120e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville if (DBG) log("getLevel=" + level); 121e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville return level; 122e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville } 123e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville 124e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville /** 125e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville * Get the signal strength as dBm 126e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville */ 127e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville @Override 128e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville public int getDbm() { 129e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville int dBm; 130e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville 131e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville int level = mSignalStrength; 132e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville int asu = (level == 99 ? Integer.MAX_VALUE : level); 133e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville if (asu != Integer.MAX_VALUE) { 134e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville dBm = -113 + (2 * asu); 135e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville } else { 136e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville dBm = Integer.MAX_VALUE; 137e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville } 138e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville if (DBG) log("getDbm=" + dBm); 139e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville return dBm; 140e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville } 141e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville 142e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville /** 143e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville * Get the signal level as an asu value between 0..31, 99 is unknown 144e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville * Asu is calculated based on 3GPP RSRP. Refer to 3GPP 27.007 (Ver 10.3.0) Sec 8.69 145e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville */ 146e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville @Override 147e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville public int getAsuLevel() { 148e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville // ASU ranges from 0 to 31 - TS 27.007 Sec 8.5 149e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville // asu = 0 (-113dB or less) is very weak 150e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville // signal, its better to show 0 bars to the user in such cases. 151e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville // asu = 99 is a special case, where the signal strength is unknown. 152e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville int level = mSignalStrength; 153e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville if (DBG) log("getAsuLevel=" + level); 154e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville return level; 155e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville } 156e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville 157e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville @Override 158e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville public int hashCode() { 159e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville int primeNum = 31; 160e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville return (mSignalStrength * primeNum) + (mBitErrorRate * primeNum); 161e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville } 162e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville 163e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville @Override 164e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville public boolean equals (Object o) { 165e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville CellSignalStrengthWcdma s; 166e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville 167e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville try { 168e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville s = (CellSignalStrengthWcdma) o; 169e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville } catch (ClassCastException ex) { 170e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville return false; 171e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville } 172e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville 173e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville if (o == null) { 174e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville return false; 175e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville } 176e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville 177e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville return mSignalStrength == s.mSignalStrength && mBitErrorRate == s.mBitErrorRate; 178e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville } 179e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville 180e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville /** 181e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville * @return string representation. 182e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville */ 183e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville @Override 184e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville public String toString() { 185e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville return "CellSignalStrengthWcdma:" 186e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville + " ss=" + mSignalStrength 187e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville + " ber=" + mBitErrorRate; 188e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville } 189e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville 190e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville /** Implement the Parcelable interface */ 191e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville @Override 192e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville public void writeToParcel(Parcel dest, int flags) { 193e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville if (DBG) log("writeToParcel(Parcel, int): " + toString()); 194e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville dest.writeInt(mSignalStrength); 195e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville dest.writeInt(mBitErrorRate); 196e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville } 197e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville 198e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville /** 199e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville * Construct a SignalStrength object from the given parcel 200e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville * where the token is already been processed. 201e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville */ 202e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville private CellSignalStrengthWcdma(Parcel in) { 203e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville mSignalStrength = in.readInt(); 204e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville mBitErrorRate = in.readInt(); 205e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville if (DBG) log("CellSignalStrengthWcdma(Parcel): " + toString()); 206e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville } 207e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville 208e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville /** Implement the Parcelable interface */ 209e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville @Override 210e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville public int describeContents() { 211e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville return 0; 212e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville } 213e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville 214e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville /** Implement the Parcelable interface */ 215e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville @SuppressWarnings("hiding") 216e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville public static final Parcelable.Creator<CellSignalStrengthWcdma> CREATOR = 217e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville new Parcelable.Creator<CellSignalStrengthWcdma>() { 218e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville @Override 219e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville public CellSignalStrengthWcdma createFromParcel(Parcel in) { 220e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville return new CellSignalStrengthWcdma(in); 221e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville } 222e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville 223e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville @Override 224e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville public CellSignalStrengthWcdma[] newArray(int size) { 225e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville return new CellSignalStrengthWcdma[size]; 226e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville } 227e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville }; 228e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville 229e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville /** 230e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville * log 231e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville */ 232e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville private static void log(String s) { 233e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville Rlog.w(LOG_TAG, s); 234e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville } 235e3a9cbc052db7f00a96cc7b9580097d67538f360Wink Saville} 236