Loading telephony/java/com/android/internal/telephony/SamsungQualcommUiccRIL.java +45 −11 Original line number Diff line number Diff line Loading @@ -38,6 +38,9 @@ public class SamsungQualcommUiccRIL extends QualcommSharedRIL implements Command boolean RILJ_LOGV = true; boolean RILJ_LOGD = true; public static final int INVALID_SNR = 0x7fffffff; private boolean mSignalbarCount = SystemProperties.getBoolean("ro.telephony.sends_barcount", false); public SamsungQualcommUiccRIL(Context context, int networkMode, int cdmaSubscription) { super(context, networkMode, cdmaSubscription); } Loading Loading @@ -225,18 +228,29 @@ public class SamsungQualcommUiccRIL extends QualcommSharedRIL implements Command for (int i = 0 ; i < numInts ; i++) { response[i] = p.readInt(); } Log.d(LOG_TAG, "responseSignalStength BEFORE: mode=" + (mSignalbarCount ? "bars" : "raw") + " gsmDbm=" + response[0] + " gsmEcio=" + response[1] + " lteSignalStrength=" + response[7] + " lteRsrp=" + response[8] + " lteRsrq=" + response[9] + " lteRssnr=" + response[10] + " lteCqi=" + response[11]); // RIL_GW_SignalStrength boolean mSignalbarCount = SystemProperties.getBoolean("telephony.sends_barcount", true); if (mSignalbarCount) { //Samsung sends the count of bars that should be displayed instead of //a real signal strength response[0] = ((response[0] & 0xFF00) >> 8) * 3; //gsmDbm if ((response[0] > 0) && (response[0] != 99)) { response[0]--; // correct down by 1 dBm to match stock's behavior int num_bars = (response[0] & 0xff00) >> 8; // Translate number of bars into something SignalStrength.java can understand switch (num_bars) { case 0 : response[0] = 1; break; // map to 0 bars case 1 : response[0] = 3; break; // map to 1 bar case 2 : response[0] = 5; break; // map to 2 bars case 3 : response[0] = 8; break; // map to 3 bars case 4 : response[0] = 12; break; // map to 4 bars case 5 : response[0] = 15; break; // map to 4 bars but give an extra 10 dBm default : response[0] &= 0xff; break; // no idea; just pass value through } } else { response[0] = response[0] & 0xFF; //gsmDbm response[0] &= 0xff; //gsmDbm } response[1] = -1; // gsmEcio Loading @@ -253,15 +267,35 @@ public class SamsungQualcommUiccRIL extends QualcommSharedRIL implements Command if (response[7] == 99) { // If LTE is not enabled, clear LTE results // 7-11 must be -1 for GSM signal strength to be used (see frameworks/base/telephony/java/android/telephony/SignalStrength.java) response[7] = -1; response[8] = -1; response[9] = -1; response[10] = -1; response[11] = -1; response[7] = -1; // lteSignalStrength response[8] = -1; // lteRsrp response[9] = -1; // lteRsrq response[10] = -1; // lteRssnr response[11] = -1; // lteCqi } else if (mSignalbarCount) { int num_bars = (response[7] & 0xff00) >> 8; response[7] &= 0xff; // remove the Samsung number of bars field response[10] = INVALID_SNR; // mark lteRssnr invalid so it doesn't get used // Translate number of bars into something SignalStrength.java can understand switch (num_bars) { case 0 : response[8] = -1; break; // map to 0 bars case 1 : response[8] = -116; break; // map to 1 bar case 2 : response[8] = -115; break; // map to 2 bars case 3 : response[8] = -105; break; // map to 3 bars case 4 : response[8] = -95; break; // map to 4 bars case 5 : response[8] = -85; break; // map to 4 bars but give an extra 10 dBm default : response[8] *= -1; break; // no idea; just pass value through } } else { response[7] &= 0xff; // remove the Samsung number of bars field response[8] *= -1; } Log.d(LOG_TAG, "responseSignalStength AFTER: mode=" + (mSignalbarCount ? "bars" : "raw") + " gsmDbm=" + response[0] + " gsmEcio=" + response[1] + " lteSignalStrength=" + response[7] + " lteRsrp=" + response[8] + " lteRsrq=" + response[9] + " lteRssnr=" + response[10] + " lteCqi=" + response[11]); return response; } } Loading
telephony/java/com/android/internal/telephony/SamsungQualcommUiccRIL.java +45 −11 Original line number Diff line number Diff line Loading @@ -38,6 +38,9 @@ public class SamsungQualcommUiccRIL extends QualcommSharedRIL implements Command boolean RILJ_LOGV = true; boolean RILJ_LOGD = true; public static final int INVALID_SNR = 0x7fffffff; private boolean mSignalbarCount = SystemProperties.getBoolean("ro.telephony.sends_barcount", false); public SamsungQualcommUiccRIL(Context context, int networkMode, int cdmaSubscription) { super(context, networkMode, cdmaSubscription); } Loading Loading @@ -225,18 +228,29 @@ public class SamsungQualcommUiccRIL extends QualcommSharedRIL implements Command for (int i = 0 ; i < numInts ; i++) { response[i] = p.readInt(); } Log.d(LOG_TAG, "responseSignalStength BEFORE: mode=" + (mSignalbarCount ? "bars" : "raw") + " gsmDbm=" + response[0] + " gsmEcio=" + response[1] + " lteSignalStrength=" + response[7] + " lteRsrp=" + response[8] + " lteRsrq=" + response[9] + " lteRssnr=" + response[10] + " lteCqi=" + response[11]); // RIL_GW_SignalStrength boolean mSignalbarCount = SystemProperties.getBoolean("telephony.sends_barcount", true); if (mSignalbarCount) { //Samsung sends the count of bars that should be displayed instead of //a real signal strength response[0] = ((response[0] & 0xFF00) >> 8) * 3; //gsmDbm if ((response[0] > 0) && (response[0] != 99)) { response[0]--; // correct down by 1 dBm to match stock's behavior int num_bars = (response[0] & 0xff00) >> 8; // Translate number of bars into something SignalStrength.java can understand switch (num_bars) { case 0 : response[0] = 1; break; // map to 0 bars case 1 : response[0] = 3; break; // map to 1 bar case 2 : response[0] = 5; break; // map to 2 bars case 3 : response[0] = 8; break; // map to 3 bars case 4 : response[0] = 12; break; // map to 4 bars case 5 : response[0] = 15; break; // map to 4 bars but give an extra 10 dBm default : response[0] &= 0xff; break; // no idea; just pass value through } } else { response[0] = response[0] & 0xFF; //gsmDbm response[0] &= 0xff; //gsmDbm } response[1] = -1; // gsmEcio Loading @@ -253,15 +267,35 @@ public class SamsungQualcommUiccRIL extends QualcommSharedRIL implements Command if (response[7] == 99) { // If LTE is not enabled, clear LTE results // 7-11 must be -1 for GSM signal strength to be used (see frameworks/base/telephony/java/android/telephony/SignalStrength.java) response[7] = -1; response[8] = -1; response[9] = -1; response[10] = -1; response[11] = -1; response[7] = -1; // lteSignalStrength response[8] = -1; // lteRsrp response[9] = -1; // lteRsrq response[10] = -1; // lteRssnr response[11] = -1; // lteCqi } else if (mSignalbarCount) { int num_bars = (response[7] & 0xff00) >> 8; response[7] &= 0xff; // remove the Samsung number of bars field response[10] = INVALID_SNR; // mark lteRssnr invalid so it doesn't get used // Translate number of bars into something SignalStrength.java can understand switch (num_bars) { case 0 : response[8] = -1; break; // map to 0 bars case 1 : response[8] = -116; break; // map to 1 bar case 2 : response[8] = -115; break; // map to 2 bars case 3 : response[8] = -105; break; // map to 3 bars case 4 : response[8] = -95; break; // map to 4 bars case 5 : response[8] = -85; break; // map to 4 bars but give an extra 10 dBm default : response[8] *= -1; break; // no idea; just pass value through } } else { response[7] &= 0xff; // remove the Samsung number of bars field response[8] *= -1; } Log.d(LOG_TAG, "responseSignalStength AFTER: mode=" + (mSignalbarCount ? "bars" : "raw") + " gsmDbm=" + response[0] + " gsmEcio=" + response[1] + " lteSignalStrength=" + response[7] + " lteRsrp=" + response[8] + " lteRsrq=" + response[9] + " lteRssnr=" + response[10] + " lteCqi=" + response[11]); return response; } }