package android.telephony; import android.os.Bundle; import android.os.Parcel; import android.os.Parcelable; import android.os.Parcelable.Creator; import android.util.Log; public class SignalStrength implements Parcelable { public static final Parcelable.Creator CREATOR; private static final boolean DBG = false; private static final String LOG_TAG = "SignalStrength"; public static final int NUM_SIGNAL_STRENGTH_BINS = 7; public static final int SIGNAL_STRENGTH_GOOD = 3; public static final int SIGNAL_STRENGTH_GREAT = 4; public static final int SIGNAL_STRENGTH_GREAT_PLUS = 5; public static final int SIGNAL_STRENGTH_GREAT_PLUS_PLUS = 6; public static final int SIGNAL_STRENGTH_MODERATE = 2; public static final String[] SIGNAL_STRENGTH_NAMES; public static final int SIGNAL_STRENGTH_NONE_OR_UNKNOWN = 0; public static final int SIGNAL_STRENGTH_POOR = 1; private boolean isGsm; private int mCdmaDbm; private int mCdmaEcio; private int mEvdoDbm; private int mEvdoEcio; private int mEvdoSnr; private int mGsmBitErrorRate; private int mGsmSignalBar; private int mGsmSignalStrength; private int mLteCqi; private int mLteRsrp; private int mLteRsrq; private int mLteRssnr; private int mLteSignalStrength; static { String[] arrayOfString = new String[7]; arrayOfString[0] = "none"; arrayOfString[1] = "poor"; arrayOfString[2] = "moderate"; arrayOfString[3] = "good"; arrayOfString[4] = "great"; arrayOfString[5] = "great_plus"; arrayOfString[6] = "great_plus_plus"; SIGNAL_STRENGTH_NAMES = arrayOfString; CREATOR = new Parcelable.Creator() { public SignalStrength createFromParcel(Parcel paramParcel) { return new SignalStrength(paramParcel); } public SignalStrength[] newArray(int paramInt) { return new SignalStrength[paramInt]; } }; } public SignalStrength() { this.mGsmSignalStrength = 99; this.mGsmBitErrorRate = -1; this.mCdmaDbm = -1; this.mCdmaEcio = -1; this.mEvdoDbm = -1; this.mEvdoEcio = -1; this.mEvdoSnr = -1; this.mLteSignalStrength = -1; this.mLteRsrp = -1; this.mLteRsrq = -1; this.mLteRssnr = -1; this.mLteCqi = -1; this.isGsm = true; this.mGsmSignalBar = 0; } public SignalStrength(int paramInt1, int paramInt2, int paramInt3, int paramInt4, int paramInt5, int paramInt6, int paramInt7, int paramInt8, int paramInt9, int paramInt10, int paramInt11, int paramInt12, boolean paramBoolean) { this.mGsmSignalStrength = paramInt1; this.mGsmBitErrorRate = paramInt2; this.mCdmaDbm = paramInt3; this.mCdmaEcio = paramInt4; this.mEvdoDbm = paramInt5; this.mEvdoEcio = paramInt6; this.mEvdoSnr = paramInt7; this.mLteSignalStrength = paramInt8; this.mLteRsrp = paramInt9; this.mLteRsrq = paramInt10; this.mLteRssnr = paramInt11; this.mLteCqi = paramInt12; this.isGsm = paramBoolean; this.mGsmSignalBar = 0; } public SignalStrength(int paramInt1, int paramInt2, int paramInt3, int paramInt4, int paramInt5, int paramInt6, int paramInt7, int paramInt8, int paramInt9, int paramInt10, int paramInt11, int paramInt12, boolean paramBoolean, int paramInt13) { this.mGsmSignalStrength = paramInt1; this.mGsmBitErrorRate = paramInt2; this.mCdmaDbm = paramInt3; this.mCdmaEcio = paramInt4; this.mEvdoDbm = paramInt5; this.mEvdoEcio = paramInt6; this.mEvdoSnr = paramInt7; this.mLteSignalStrength = paramInt8; this.mLteRsrp = paramInt9; this.mLteRsrq = paramInt10; this.mLteRssnr = paramInt11; this.mLteCqi = paramInt12; this.isGsm = paramBoolean; this.mGsmSignalBar = paramInt13; } public SignalStrength(int paramInt1, int paramInt2, int paramInt3, int paramInt4, int paramInt5, int paramInt6, int paramInt7, boolean paramBoolean) { this(paramInt1, paramInt2, paramInt3, paramInt4, paramInt5, paramInt6, paramInt7, -1, -1, -1, -1, -1, paramBoolean); this.mGsmSignalBar = 0; } public SignalStrength(int paramInt1, int paramInt2, int paramInt3, int paramInt4, int paramInt5, int paramInt6, int paramInt7, boolean paramBoolean, int paramInt8) { this(paramInt1, paramInt2, paramInt3, paramInt4, paramInt5, paramInt6, paramInt7, -1, -1, -1, -1, -1, paramBoolean); this.mGsmSignalBar = paramInt8; } public SignalStrength(Parcel paramParcel) { this.mGsmSignalStrength = paramParcel.readInt(); this.mGsmBitErrorRate = paramParcel.readInt(); this.mCdmaDbm = paramParcel.readInt(); this.mCdmaEcio = paramParcel.readInt(); this.mEvdoDbm = paramParcel.readInt(); this.mEvdoEcio = paramParcel.readInt(); this.mEvdoSnr = paramParcel.readInt(); this.mLteSignalStrength = paramParcel.readInt(); this.mLteRsrp = paramParcel.readInt(); this.mLteRsrq = paramParcel.readInt(); this.mLteRssnr = paramParcel.readInt(); this.mLteCqi = paramParcel.readInt(); if (paramParcel.readInt() != 0); for (boolean bool = true; ; bool = false) { this.isGsm = bool; this.mGsmSignalBar = paramParcel.readInt(); return; } } public SignalStrength(SignalStrength paramSignalStrength) { copyFrom(paramSignalStrength); } private static void log(String paramString) { Log.w("SignalStrength", paramString); } public static SignalStrength newFromBundle(Bundle paramBundle) { SignalStrength localSignalStrength = new SignalStrength(); localSignalStrength.setFromNotifierBundle(paramBundle); return localSignalStrength; } private void setFromNotifierBundle(Bundle paramBundle) { this.mGsmSignalStrength = paramBundle.getInt("GsmSignalStrength"); this.mGsmBitErrorRate = paramBundle.getInt("GsmBitErrorRate"); this.mCdmaDbm = paramBundle.getInt("CdmaDbm"); this.mCdmaEcio = paramBundle.getInt("CdmaEcio"); this.mEvdoDbm = paramBundle.getInt("EvdoDbm"); this.mEvdoEcio = paramBundle.getInt("EvdoEcio"); this.mEvdoSnr = paramBundle.getInt("EvdoSnr"); this.mLteSignalStrength = paramBundle.getInt("LteSignalStrength"); this.mLteRsrp = paramBundle.getInt("LteRsrp"); this.mLteRsrq = paramBundle.getInt("LteRsrq"); this.mLteRssnr = paramBundle.getInt("LteRssnr"); this.mLteCqi = paramBundle.getInt("LteCqi"); this.isGsm = paramBundle.getBoolean("isGsm"); this.mGsmSignalBar = paramBundle.getInt("GsmSignalBar"); } protected void copyFrom(SignalStrength paramSignalStrength) { this.mGsmSignalStrength = paramSignalStrength.mGsmSignalStrength; this.mGsmBitErrorRate = paramSignalStrength.mGsmBitErrorRate; this.mCdmaDbm = paramSignalStrength.mCdmaDbm; this.mCdmaEcio = paramSignalStrength.mCdmaEcio; this.mEvdoDbm = paramSignalStrength.mEvdoDbm; this.mEvdoEcio = paramSignalStrength.mEvdoEcio; this.mEvdoSnr = paramSignalStrength.mEvdoSnr; this.mLteSignalStrength = paramSignalStrength.mLteSignalStrength; this.mLteRsrp = paramSignalStrength.mLteRsrp; this.mLteRsrq = paramSignalStrength.mLteRsrq; this.mLteRssnr = paramSignalStrength.mLteRssnr; this.mLteCqi = paramSignalStrength.mLteCqi; this.isGsm = paramSignalStrength.isGsm; this.mGsmSignalBar = paramSignalStrength.mGsmSignalBar; } public int describeContents() { return 0; } public boolean equals(Object paramObject) { int i = 0; try { localSignalStrength = (SignalStrength)paramObject; if (paramObject == null) return i; } catch (ClassCastException localClassCastException) { while (true) { SignalStrength localSignalStrength; continue; if ((this.mGsmSignalStrength != localSignalStrength.mGsmSignalStrength) || (this.mGsmBitErrorRate != localSignalStrength.mGsmBitErrorRate) || (this.mCdmaDbm != localSignalStrength.mCdmaDbm) || (this.mCdmaEcio != localSignalStrength.mCdmaEcio) || (this.mEvdoDbm != localSignalStrength.mEvdoDbm) || (this.mEvdoEcio != localSignalStrength.mEvdoEcio) || (this.mEvdoSnr != localSignalStrength.mEvdoSnr) || (this.mLteSignalStrength != localSignalStrength.mLteSignalStrength) || (this.mLteRsrp != localSignalStrength.mLteRsrp) || (this.mLteRsrq != localSignalStrength.mLteRsrq) || (this.mLteRssnr != localSignalStrength.mLteRssnr) || (this.mLteCqi != localSignalStrength.mLteCqi) || (this.isGsm != localSignalStrength.isGsm) || (this.mGsmSignalBar != localSignalStrength.mGsmSignalBar)) continue; i = 1; } } } public void fillInNotifierBundle(Bundle paramBundle) { paramBundle.putInt("GsmSignalStrength", this.mGsmSignalStrength); paramBundle.putInt("GsmBitErrorRate", this.mGsmBitErrorRate); paramBundle.putInt("CdmaDbm", this.mCdmaDbm); paramBundle.putInt("CdmaEcio", this.mCdmaEcio); paramBundle.putInt("EvdoDbm", this.mEvdoDbm); paramBundle.putInt("EvdoEcio", this.mEvdoEcio); paramBundle.putInt("EvdoSnr", this.mEvdoSnr); paramBundle.putInt("LteSignalStrength", this.mLteSignalStrength); paramBundle.putInt("LteRsrp", this.mLteRsrp); paramBundle.putInt("LteRsrq", this.mLteRsrq); paramBundle.putInt("LteRssnr", this.mLteRssnr); paramBundle.putInt("LteCqi", this.mLteCqi); paramBundle.putBoolean("isGsm", Boolean.valueOf(this.isGsm).booleanValue()); paramBundle.putInt("GsmSignalBar", this.mGsmSignalBar); } public int getAsuLevel() { if (this.isGsm) if ((this.mLteSignalStrength == -1) && (this.mLteRsrp == -1) && (this.mLteRsrq == -1) && (this.mLteRssnr == -1) && (this.mLteCqi == -1)) k = getGsmAsuLevel(); int i; int j; while (true) { return k; k = getLteAsuLevel(); continue; i = getCdmaAsuLevel(); j = getEvdoAsuLevel(); if (j == 0) { k = i; continue; } if (i != 0) break; k = j; } if (i < j); for (int k = i; ; k = j) break; } public int getCdmaAsuLevel() { int i = getCdmaDbm(); int j = getCdmaEcio(); int k; int m; if (i >= -75) { k = 16; if (j < -90) break label92; m = 16; label29: if (k >= m) break label150; } label150: for (int n = k; ; n = m) { return n; if (i >= -82) { k = 8; break; } if (i >= -90) { k = 4; break; } if (i >= -95) { k = 2; break; } if (i >= -100) { k = 1; break; } k = 99; break; label92: if (j >= -100) { m = 8; break label29; } if (j >= -115) { m = 4; break label29; } if (j >= -130) { m = 2; break label29; } if (j >= -150) { m = 1; break label29; } m = 99; break label29; } } public int getCdmaDbm() { return this.mCdmaDbm; } public int getCdmaEcio() { return this.mCdmaEcio; } public int getCdmaLevel() { int i = getCdmaDbm(); int j = getCdmaEcio(); int k; if (i >= -75) { k = 6; if (j < -90) break label87; } while (true) { return k; if (i >= -85) { k = 5; break; } if (i >= -90) { k = 4; break; } if (i >= -95) { k = 3; break; } if (i >= -100) { k = 2; break; } if (i >= -105) { k = 1; break; } k = 0; break; label87: if ((j >= -102) || (j >= -114) || (j >= -126) || (j >= -138) || (j >= -150)) continue; } } public int getDbm() { int i; if (isGsm()) if ((this.mLteSignalStrength == -1) && (this.mLteRsrp == -1) && (this.mLteRsrq == -1) && (this.mLteRssnr == -1) && (this.mLteCqi == -1)) i = getGsmDbm(); while (true) { return i; i = getLteDbm(); continue; i = getCdmaDbm(); } } public int getEvdoAsuLevel() { int i = getEvdoDbm(); int j = getEvdoSnr(); int k; int m; if (i >= -65) { k = 16; if (j < 7) break label92; m = 16; label29: if (k >= m) break label145; } label145: for (int n = k; ; n = m) { return n; if (i >= -75) { k = 8; break; } if (i >= -85) { k = 4; break; } if (i >= -95) { k = 2; break; } if (i >= -105) { k = 1; break; } k = 99; break; label92: if (j >= 6) { m = 8; break label29; } if (j >= 5) { m = 4; break label29; } if (j >= 3) { m = 2; break label29; } if (j >= 1) { m = 1; break label29; } m = 99; break label29; } } public int getEvdoDbm() { return this.mEvdoDbm; } public int getEvdoEcio() { return this.mEvdoEcio; } public int getEvdoLevel() { int i = getEvdoDbm(); int j = getEvdoSnr(); int k; int m; if (i >= -65) { k = 4; if (j < 7) break label77; m = 4; label27: if (k >= m) break label116; } label77: label116: for (int n = k; ; n = m) { return n; if (i >= -75) { k = 3; break; } if (i >= -90) { k = 2; break; } if (i >= -105) { k = 1; break; } k = 0; break; if (j >= 5) { m = 3; break label27; } if (j >= 3) { m = 2; break label27; } if (j >= 1) { m = 1; break label27; } m = 0; break label27; } } public int getEvdoSnr() { return this.mEvdoSnr; } public int getGsmAsuLevel() { return getGsmSignalStrength(); } public int getGsmBitErrorRate() { return this.mGsmBitErrorRate; } public int getGsmDbm() { int i = getGsmSignalStrength(); int j; if (i == 99) { j = -1; if (j == -1) break label34; } label34: for (int k = -113 + j * 2; ; k = -1) { return k; j = i; break; } } public int getGsmLevel() { int i = getGsmSignalStrength(); if ((i <= 2) || (i == 99)); while (true) { return getGsmSignalBar(); if ((i >= 12) || (i >= 8) || (i >= 5)) continue; } } public int getGsmSignalBar() { return this.mGsmSignalBar; } public int getGsmSignalStrength() { return this.mGsmSignalStrength; } public int getLevel() { if (this.isGsm) if ((this.mLteSignalStrength == -1) && (this.mLteRsrp == -1) && (this.mLteRsrq == -1) && (this.mLteRssnr == -1) && (this.mLteCqi == -1)) k = getGsmLevel(); int i; int j; while (true) { return k; k = getLteLevel(); continue; i = getCdmaLevel(); j = getEvdoLevel(); if (j == 0) { k = getCdmaLevel(); continue; } if (i != 0) break; k = getEvdoLevel(); } if (i < j); for (int k = i; ; k = j) break; } public int getLteAsuLevel() { int i = getLteDbm(); int j; if (i <= -140) j = 0; while (true) { return j; if (i >= -43) { j = 97; continue; } j = i + 140; } } public int getLteDbm() { return this.mLteRsrp; } public int getLteLevel() { int i; if (this.mLteRsrp == -1) i = 0; while (true) { return i; if (this.mLteRsrp >= -85) { i = 4; continue; } if (this.mLteRsrp >= -95) { i = 3; continue; } if (this.mLteRsrp >= -105) { i = 2; continue; } if (this.mLteRsrp >= -115) { i = 1; continue; } i = 0; } } public int hashCode() { int i = 31 * this.mGsmSignalStrength + 31 * this.mGsmBitErrorRate + 31 * this.mCdmaDbm + 31 * this.mCdmaEcio + 31 * this.mEvdoDbm + 31 * this.mEvdoEcio + 31 * this.mEvdoSnr + 31 * this.mLteSignalStrength + 31 * this.mLteRsrp + 31 * this.mLteRsrq + 31 * this.mLteRssnr + 31 * this.mLteCqi; if (this.isGsm); for (int j = 1; ; j = 0) return j + i + this.mGsmSignalBar; } public boolean isGsm() { return this.isGsm; } public String toString() { StringBuilder localStringBuilder = new StringBuilder().append("SignalStrength: ").append(this.mGsmSignalStrength).append(" ").append(this.mGsmBitErrorRate).append(" ").append(this.mCdmaDbm).append(" ").append(this.mCdmaEcio).append(" ").append(this.mEvdoDbm).append(" ").append(this.mEvdoEcio).append(" ").append(this.mEvdoSnr).append(" ").append(this.mLteSignalStrength).append(" ").append(this.mLteRsrp).append(" ").append(this.mLteRsrq).append(" ").append(this.mLteRssnr).append(" ").append(this.mLteCqi).append(" "); if (this.isGsm); for (String str = "gsm|lte"; ; str = "cdma") return str + " " + this.mGsmSignalBar; } public void writeToParcel(Parcel paramParcel, int paramInt) { paramParcel.writeInt(this.mGsmSignalStrength); paramParcel.writeInt(this.mGsmBitErrorRate); paramParcel.writeInt(this.mCdmaDbm); paramParcel.writeInt(this.mCdmaEcio); paramParcel.writeInt(this.mEvdoDbm); paramParcel.writeInt(this.mEvdoEcio); paramParcel.writeInt(this.mEvdoSnr); paramParcel.writeInt(this.mLteSignalStrength); paramParcel.writeInt(this.mLteRsrp); paramParcel.writeInt(this.mLteRsrq); paramParcel.writeInt(this.mLteRssnr); paramParcel.writeInt(this.mLteCqi); if (this.isGsm); for (int i = 1; ; i = 0) { paramParcel.writeInt(i); paramParcel.writeInt(this.mGsmSignalBar); return; } } }