Loading src/java/com/android/internal/telephony/RIL.java +3 −2 Original line number Diff line number Diff line Loading @@ -5301,7 +5301,6 @@ public class RIL extends BaseCommands implements CommandsInterface { static SignalStrength convertHalSignalStrength_1_2( android.hardware.radio.V1_2.SignalStrength signalStrength) { // TODO: Pipe WCDMA up return new SignalStrength( signalStrength.gsm.signalStrength, signalStrength.gsm.bitErrorRate, Loading @@ -5315,6 +5314,8 @@ public class RIL extends BaseCommands implements CommandsInterface { signalStrength.lte.rsrq, signalStrength.lte.rssnr, signalStrength.lte.cqi, signalStrength.tdScdma.rscp); signalStrength.tdScdma.rscp, signalStrength.wcdma.base.signalStrength, signalStrength.wcdma.rscp); } } src/java/com/android/internal/telephony/ServiceStateTracker.java +10 −22 Original line number Diff line number Diff line Loading @@ -3945,8 +3945,16 @@ public class ServiceStateTracker extends Handler { mSignalStrength.setGsm(isGsm); } mSignalStrength.setLteRsrpBoost(mSS.getLteEarfcnRsrpBoost()); mSignalStrength.setUseOnlyRsrpForLteLevel(isUseOnlyRsrpForLteLevel()); mSignalStrength.setLteRsrpThresholds(getLteRsrpThresholds()); PersistableBundle config = getCarrierConfig(); mSignalStrength.setUseOnlyRsrpForLteLevel(config.getBoolean( CarrierConfigManager.KEY_USE_ONLY_RSRP_FOR_LTE_SIGNAL_BAR_BOOL)); mSignalStrength.setLteRsrpThresholds(config.getIntArray( CarrierConfigManager.KEY_LTE_RSRP_THRESHOLDS_INT_ARRAY)); mSignalStrength.setWcdmaDefaultSignalMeasurement(config.getString( CarrierConfigManager.KEY_WCDMA_DEFAULT_SIGNAL_STRENGTH_MEASUREMENT_STRING)); mSignalStrength.setWcdmaRscpThresholds(config.getIntArray( CarrierConfigManager.KEY_WCDMA_RSCP_THRESHOLDS_INT_ARRAY)); } else { log("onSignalStrengthResult() Exception from RIL : " + ar.exception); mSignalStrength = new SignalStrength(isGsm); Loading Loading @@ -4519,26 +4527,6 @@ public class ServiceStateTracker extends Handler { return regState; } /** * Check whether to use only RSRP for the number of LTE signal bar. * * @return true if it should use only RSRP for the number of LTE signal bar. */ private boolean isUseOnlyRsrpForLteLevel() { return getCarrierConfig().getBoolean( CarrierConfigManager.KEY_USE_ONLY_RSRP_FOR_LTE_SIGNAL_BAR_BOOL); } /** * Gets the threshold array for determining the display level of LTE signal bar. * * @return int array for determining the display level. */ private int[] getLteRsrpThresholds() { return getCarrierConfig().getIntArray( CarrierConfigManager.KEY_LTE_RSRP_THRESHOLDS_INT_ARRAY); } /** * Gets the carrier configuration values for a particular subscription. * Loading tests/telephonytests/src/com/android/internal/telephony/ServiceStateTrackerTest.java +142 −0 Original line number Diff line number Diff line Loading @@ -427,6 +427,148 @@ public class ServiceStateTrackerTest extends TelephonyTest { assertEquals(sst.getSignalStrength().isGsm(), false); } @Test @MediumTest public void testSignalLevelWithWcdmaRscpThresholds() { mBundle.putIntArray(CarrierConfigManager.KEY_WCDMA_RSCP_THRESHOLDS_INT_ARRAY, new int[] { -110, /* SIGNAL_STRENGTH_POOR */ -100, /* SIGNAL_STRENGTH_MODERATE */ -90, /* SIGNAL_STRENGTH_GOOD */ -80 /* SIGNAL_STRENGTH_GREAT */ }); mBundle.putString( CarrierConfigManager.KEY_WCDMA_DEFAULT_SIGNAL_STRENGTH_MEASUREMENT_STRING, "rscp"); SignalStrength ss = new SignalStrength( 30, // gsmSignalStrength 0, // gsmBitErrorRate -1, // cdmaDbm -1, // cdmaEcio -1, // evdoDbm -1, // evdoEcio -1, // evdoSnr 99, // lteSignalStrength SignalStrength.INVALID, // lteRsrp SignalStrength.INVALID, // lteRsrq SignalStrength.INVALID, // lteRssnr SignalStrength.INVALID, // lteCqi SignalStrength.INVALID, // tdScdmaRscp 99, // wcdmaSignalStrength 45 // wcdmaRscpAsu ); mSimulatedCommands.setSignalStrength(ss); mSimulatedCommands.notifySignalStrength(); waitForMs(300); assertEquals(sst.getSignalStrength(), ss); assertEquals(sst.getSignalStrength().getWcdmaLevel(), SignalStrength.SIGNAL_STRENGTH_GREAT); assertEquals(sst.getSignalStrength().getWcdmaAsuLevel(), 45); assertEquals(sst.getSignalStrength().getWcdmaDbm(), -75); ss = new SignalStrength( 30, // gsmSignalStrength 0, // gsmBitErrorRate -1, // cdmaDbm -1, // cdmaEcio -1, // evdoDbm -1, // evdoEcio -1, // evdoSnr 99, // lteSignalStrength SignalStrength.INVALID, // lteRsrp SignalStrength.INVALID, // lteRsrq SignalStrength.INVALID, // lteRssnr SignalStrength.INVALID, // lteCqi SignalStrength.INVALID, // tdScdmaRscp 99, // wcdmaSignalStrength 35 // wcdmaRscpAsu ); mSimulatedCommands.setSignalStrength(ss); mSimulatedCommands.notifySignalStrength(); waitForMs(300); assertEquals(sst.getSignalStrength(), ss); assertEquals(sst.getSignalStrength().getWcdmaLevel(), SignalStrength.SIGNAL_STRENGTH_GOOD); assertEquals(sst.getSignalStrength().getWcdmaAsuLevel(), 35); assertEquals(sst.getSignalStrength().getWcdmaDbm(), -85); ss = new SignalStrength( 30, // gsmSignalStrength 0, // gsmBitErrorRate -1, // cdmaDbm -1, // cdmaEcio -1, // evdoDbm -1, // evdoEcio -1, // evdoSnr 99, // lteSignalStrength SignalStrength.INVALID, // lteRsrp SignalStrength.INVALID, // lteRsrq SignalStrength.INVALID, // lteRssnr SignalStrength.INVALID, // lteCqi SignalStrength.INVALID, // tdScdmaRscp 99, // wcdmaSignalStrength 25 // wcdmaRscpAsu ); mSimulatedCommands.setSignalStrength(ss); mSimulatedCommands.notifySignalStrength(); waitForMs(300); assertEquals(sst.getSignalStrength(), ss); assertEquals(sst.getSignalStrength().getWcdmaLevel(), SignalStrength.SIGNAL_STRENGTH_MODERATE); assertEquals(sst.getSignalStrength().getWcdmaAsuLevel(), 25); assertEquals(sst.getSignalStrength().getWcdmaDbm(), -95); ss = new SignalStrength( 30, // gsmSignalStrength 0, // gsmBitErrorRate -1, // cdmaDbm -1, // cdmaEcio -1, // evdoDbm -1, // evdoEcio -1, // evdoSnr 99, // lteSignalStrength SignalStrength.INVALID, // lteRsrp SignalStrength.INVALID, // lteRsrq SignalStrength.INVALID, // lteRssnr SignalStrength.INVALID, // lteCqi SignalStrength.INVALID, // tdScdmaRscp 99, // wcdmaSignalStrength 15 // wcdmaRscpAsu ); mSimulatedCommands.setSignalStrength(ss); mSimulatedCommands.notifySignalStrength(); waitForMs(300); assertEquals(sst.getSignalStrength(), ss); assertEquals(sst.getSignalStrength().getWcdmaLevel(), SignalStrength.SIGNAL_STRENGTH_POOR); assertEquals(sst.getSignalStrength().getWcdmaAsuLevel(), 15); assertEquals(sst.getSignalStrength().getWcdmaDbm(), -105); ss = new SignalStrength( 30, // gsmSignalStrength 0, // gsmBitErrorRate -1, // cdmaDbm -1, // cdmaEcio -1, // evdoDbm -1, // evdoEcio -1, // evdoSnr 99, // lteSignalStrength SignalStrength.INVALID, // lteRsrp SignalStrength.INVALID, // lteRsrq SignalStrength.INVALID, // lteRssnr SignalStrength.INVALID, // lteCqi SignalStrength.INVALID, // tdScdmaRscp 99, // wcdmaSignalStrength 5 // wcdmaRscpAsu ); mSimulatedCommands.setSignalStrength(ss); mSimulatedCommands.notifySignalStrength(); waitForMs(300); assertEquals(sst.getSignalStrength(), ss); assertEquals(sst.getSignalStrength().getWcdmaLevel(), SignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN); assertEquals(sst.getSignalStrength().getWcdmaAsuLevel(), 5); assertEquals(sst.getSignalStrength().getWcdmaDbm(), -115); } @Test @MediumTest public void testGsmCellLocation() { Loading tests/telephonytests/src/com/android/internal/telephony/SignalStrengthTest.java +19 −16 Original line number Diff line number Diff line Loading @@ -63,9 +63,12 @@ public class SignalStrengthTest { -115, // lteRssnr 13, // lteCqi -90, // tdscdmaRscp 45, // wcdmaSignalStrength 20, // wcdmaRscpAsu 2, // lteRsrpBoost false, // gsmFlag true); // lteLevelBaseOnRsrp true, // lteLevelBaseOnRsrp "rscp"); // wcdmaDefaultMeasurement assertParcelingIsLossless(s); } Loading Loading
src/java/com/android/internal/telephony/RIL.java +3 −2 Original line number Diff line number Diff line Loading @@ -5301,7 +5301,6 @@ public class RIL extends BaseCommands implements CommandsInterface { static SignalStrength convertHalSignalStrength_1_2( android.hardware.radio.V1_2.SignalStrength signalStrength) { // TODO: Pipe WCDMA up return new SignalStrength( signalStrength.gsm.signalStrength, signalStrength.gsm.bitErrorRate, Loading @@ -5315,6 +5314,8 @@ public class RIL extends BaseCommands implements CommandsInterface { signalStrength.lte.rsrq, signalStrength.lte.rssnr, signalStrength.lte.cqi, signalStrength.tdScdma.rscp); signalStrength.tdScdma.rscp, signalStrength.wcdma.base.signalStrength, signalStrength.wcdma.rscp); } }
src/java/com/android/internal/telephony/ServiceStateTracker.java +10 −22 Original line number Diff line number Diff line Loading @@ -3945,8 +3945,16 @@ public class ServiceStateTracker extends Handler { mSignalStrength.setGsm(isGsm); } mSignalStrength.setLteRsrpBoost(mSS.getLteEarfcnRsrpBoost()); mSignalStrength.setUseOnlyRsrpForLteLevel(isUseOnlyRsrpForLteLevel()); mSignalStrength.setLteRsrpThresholds(getLteRsrpThresholds()); PersistableBundle config = getCarrierConfig(); mSignalStrength.setUseOnlyRsrpForLteLevel(config.getBoolean( CarrierConfigManager.KEY_USE_ONLY_RSRP_FOR_LTE_SIGNAL_BAR_BOOL)); mSignalStrength.setLteRsrpThresholds(config.getIntArray( CarrierConfigManager.KEY_LTE_RSRP_THRESHOLDS_INT_ARRAY)); mSignalStrength.setWcdmaDefaultSignalMeasurement(config.getString( CarrierConfigManager.KEY_WCDMA_DEFAULT_SIGNAL_STRENGTH_MEASUREMENT_STRING)); mSignalStrength.setWcdmaRscpThresholds(config.getIntArray( CarrierConfigManager.KEY_WCDMA_RSCP_THRESHOLDS_INT_ARRAY)); } else { log("onSignalStrengthResult() Exception from RIL : " + ar.exception); mSignalStrength = new SignalStrength(isGsm); Loading Loading @@ -4519,26 +4527,6 @@ public class ServiceStateTracker extends Handler { return regState; } /** * Check whether to use only RSRP for the number of LTE signal bar. * * @return true if it should use only RSRP for the number of LTE signal bar. */ private boolean isUseOnlyRsrpForLteLevel() { return getCarrierConfig().getBoolean( CarrierConfigManager.KEY_USE_ONLY_RSRP_FOR_LTE_SIGNAL_BAR_BOOL); } /** * Gets the threshold array for determining the display level of LTE signal bar. * * @return int array for determining the display level. */ private int[] getLteRsrpThresholds() { return getCarrierConfig().getIntArray( CarrierConfigManager.KEY_LTE_RSRP_THRESHOLDS_INT_ARRAY); } /** * Gets the carrier configuration values for a particular subscription. * Loading
tests/telephonytests/src/com/android/internal/telephony/ServiceStateTrackerTest.java +142 −0 Original line number Diff line number Diff line Loading @@ -427,6 +427,148 @@ public class ServiceStateTrackerTest extends TelephonyTest { assertEquals(sst.getSignalStrength().isGsm(), false); } @Test @MediumTest public void testSignalLevelWithWcdmaRscpThresholds() { mBundle.putIntArray(CarrierConfigManager.KEY_WCDMA_RSCP_THRESHOLDS_INT_ARRAY, new int[] { -110, /* SIGNAL_STRENGTH_POOR */ -100, /* SIGNAL_STRENGTH_MODERATE */ -90, /* SIGNAL_STRENGTH_GOOD */ -80 /* SIGNAL_STRENGTH_GREAT */ }); mBundle.putString( CarrierConfigManager.KEY_WCDMA_DEFAULT_SIGNAL_STRENGTH_MEASUREMENT_STRING, "rscp"); SignalStrength ss = new SignalStrength( 30, // gsmSignalStrength 0, // gsmBitErrorRate -1, // cdmaDbm -1, // cdmaEcio -1, // evdoDbm -1, // evdoEcio -1, // evdoSnr 99, // lteSignalStrength SignalStrength.INVALID, // lteRsrp SignalStrength.INVALID, // lteRsrq SignalStrength.INVALID, // lteRssnr SignalStrength.INVALID, // lteCqi SignalStrength.INVALID, // tdScdmaRscp 99, // wcdmaSignalStrength 45 // wcdmaRscpAsu ); mSimulatedCommands.setSignalStrength(ss); mSimulatedCommands.notifySignalStrength(); waitForMs(300); assertEquals(sst.getSignalStrength(), ss); assertEquals(sst.getSignalStrength().getWcdmaLevel(), SignalStrength.SIGNAL_STRENGTH_GREAT); assertEquals(sst.getSignalStrength().getWcdmaAsuLevel(), 45); assertEquals(sst.getSignalStrength().getWcdmaDbm(), -75); ss = new SignalStrength( 30, // gsmSignalStrength 0, // gsmBitErrorRate -1, // cdmaDbm -1, // cdmaEcio -1, // evdoDbm -1, // evdoEcio -1, // evdoSnr 99, // lteSignalStrength SignalStrength.INVALID, // lteRsrp SignalStrength.INVALID, // lteRsrq SignalStrength.INVALID, // lteRssnr SignalStrength.INVALID, // lteCqi SignalStrength.INVALID, // tdScdmaRscp 99, // wcdmaSignalStrength 35 // wcdmaRscpAsu ); mSimulatedCommands.setSignalStrength(ss); mSimulatedCommands.notifySignalStrength(); waitForMs(300); assertEquals(sst.getSignalStrength(), ss); assertEquals(sst.getSignalStrength().getWcdmaLevel(), SignalStrength.SIGNAL_STRENGTH_GOOD); assertEquals(sst.getSignalStrength().getWcdmaAsuLevel(), 35); assertEquals(sst.getSignalStrength().getWcdmaDbm(), -85); ss = new SignalStrength( 30, // gsmSignalStrength 0, // gsmBitErrorRate -1, // cdmaDbm -1, // cdmaEcio -1, // evdoDbm -1, // evdoEcio -1, // evdoSnr 99, // lteSignalStrength SignalStrength.INVALID, // lteRsrp SignalStrength.INVALID, // lteRsrq SignalStrength.INVALID, // lteRssnr SignalStrength.INVALID, // lteCqi SignalStrength.INVALID, // tdScdmaRscp 99, // wcdmaSignalStrength 25 // wcdmaRscpAsu ); mSimulatedCommands.setSignalStrength(ss); mSimulatedCommands.notifySignalStrength(); waitForMs(300); assertEquals(sst.getSignalStrength(), ss); assertEquals(sst.getSignalStrength().getWcdmaLevel(), SignalStrength.SIGNAL_STRENGTH_MODERATE); assertEquals(sst.getSignalStrength().getWcdmaAsuLevel(), 25); assertEquals(sst.getSignalStrength().getWcdmaDbm(), -95); ss = new SignalStrength( 30, // gsmSignalStrength 0, // gsmBitErrorRate -1, // cdmaDbm -1, // cdmaEcio -1, // evdoDbm -1, // evdoEcio -1, // evdoSnr 99, // lteSignalStrength SignalStrength.INVALID, // lteRsrp SignalStrength.INVALID, // lteRsrq SignalStrength.INVALID, // lteRssnr SignalStrength.INVALID, // lteCqi SignalStrength.INVALID, // tdScdmaRscp 99, // wcdmaSignalStrength 15 // wcdmaRscpAsu ); mSimulatedCommands.setSignalStrength(ss); mSimulatedCommands.notifySignalStrength(); waitForMs(300); assertEquals(sst.getSignalStrength(), ss); assertEquals(sst.getSignalStrength().getWcdmaLevel(), SignalStrength.SIGNAL_STRENGTH_POOR); assertEquals(sst.getSignalStrength().getWcdmaAsuLevel(), 15); assertEquals(sst.getSignalStrength().getWcdmaDbm(), -105); ss = new SignalStrength( 30, // gsmSignalStrength 0, // gsmBitErrorRate -1, // cdmaDbm -1, // cdmaEcio -1, // evdoDbm -1, // evdoEcio -1, // evdoSnr 99, // lteSignalStrength SignalStrength.INVALID, // lteRsrp SignalStrength.INVALID, // lteRsrq SignalStrength.INVALID, // lteRssnr SignalStrength.INVALID, // lteCqi SignalStrength.INVALID, // tdScdmaRscp 99, // wcdmaSignalStrength 5 // wcdmaRscpAsu ); mSimulatedCommands.setSignalStrength(ss); mSimulatedCommands.notifySignalStrength(); waitForMs(300); assertEquals(sst.getSignalStrength(), ss); assertEquals(sst.getSignalStrength().getWcdmaLevel(), SignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN); assertEquals(sst.getSignalStrength().getWcdmaAsuLevel(), 5); assertEquals(sst.getSignalStrength().getWcdmaDbm(), -115); } @Test @MediumTest public void testGsmCellLocation() { Loading
tests/telephonytests/src/com/android/internal/telephony/SignalStrengthTest.java +19 −16 Original line number Diff line number Diff line Loading @@ -63,9 +63,12 @@ public class SignalStrengthTest { -115, // lteRssnr 13, // lteCqi -90, // tdscdmaRscp 45, // wcdmaSignalStrength 20, // wcdmaRscpAsu 2, // lteRsrpBoost false, // gsmFlag true); // lteLevelBaseOnRsrp true, // lteLevelBaseOnRsrp "rscp"); // wcdmaDefaultMeasurement assertParcelingIsLossless(s); } Loading