Loading src/java/com/android/internal/telephony/RIL.java +16 −3 Original line number Diff line number Diff line Loading @@ -5275,8 +5275,19 @@ public class RIL extends BaseCommands implements CommandsInterface { return response; } static SignalStrength convertHalSignalStrength( /** Convert HAL 1.0 Signal Strength to android SignalStrength */ @VisibleForTesting public static SignalStrength convertHalSignalStrength( android.hardware.radio.V1_0.SignalStrength signalStrength) { int tdscdmaRscp_1_2 = 255; // 255 is the value for unknown/unreported ASU. // The HAL 1.0 range is 25..120; the ASU/ HAL 1.2 range is 0..96; // yes, this means the range in 1.0 cannot express -24dBm = 96 if (signalStrength.tdScdma.rscp >= 25 && signalStrength.tdScdma.rscp <= 120) { // First we flip the sign to convert from the HALs -rscp to the actual RSCP value. int rscpDbm = -signalStrength.tdScdma.rscp; // Then to convert from RSCP to ASU, we apply the offset which aligns 0 ASU to -120dBm. tdscdmaRscp_1_2 = rscpDbm + 120; } return new SignalStrength( signalStrength.gw.signalStrength, signalStrength.gw.bitErrorRate, Loading @@ -5290,10 +5301,12 @@ public class RIL extends BaseCommands implements CommandsInterface { signalStrength.lte.rsrq, signalStrength.lte.rssnr, signalStrength.lte.cqi, signalStrength.tdScdma.rscp); tdscdmaRscp_1_2); } static SignalStrength convertHalSignalStrength_1_2( /** Convert HAL 1.2 Signal Strength to android SignalStrength */ @VisibleForTesting public static SignalStrength convertHalSignalStrength_1_2( android.hardware.radio.V1_2.SignalStrength signalStrength) { return new SignalStrength( signalStrength.gsm.signalStrength, Loading tests/telephonytests/src/com/android/internal/telephony/RILTest.java +58 −0 Original line number Diff line number Diff line Loading @@ -1564,4 +1564,62 @@ public class RILTest extends TelephonyTest { return RIL.convertHalCellInfoList_1_2(records); } public android.telephony.SignalStrength getTdScdmaSignalStrength_1_0(int tdscdmaNegDbm) { android.hardware.radio.V1_0.SignalStrength halSs = new android.hardware.radio.V1_0.SignalStrength(); halSs.lte.signalStrength = SIGNAL_STRENGTH; halSs.lte.rsrp = RSRP; halSs.lte.rsrq = RSRQ; halSs.lte.rssnr = RSSNR; halSs.gw.signalStrength = SIGNAL_STRENGTH; halSs.gw.bitErrorRate = BIT_ERROR_RATE; halSs.cdma.dbm = DBM; halSs.cdma.ecio = ECIO; halSs.evdo.dbm = DBM; halSs.evdo.ecio = ECIO; halSs.evdo.signalNoiseRatio = SIGNAL_NOISE_RATIO; halSs.tdScdma.rscp = tdscdmaNegDbm; android.telephony.SignalStrength ss = RIL.convertHalSignalStrength(halSs); // FIXME: We should not need to call validateInput here b/74115980. ss.validateInput(); return ss; } public android.telephony.SignalStrength getTdScdmaSignalStrength_1_2(int tdscdmaAsu) { android.hardware.radio.V1_2.SignalStrength halSs = new android.hardware.radio.V1_2.SignalStrength(); halSs.lte.signalStrength = SIGNAL_STRENGTH; halSs.lte.rsrp = RSRP; halSs.lte.rsrq = RSRQ; halSs.lte.rssnr = RSSNR; halSs.gsm.signalStrength = SIGNAL_STRENGTH; halSs.gsm.bitErrorRate = BIT_ERROR_RATE; halSs.cdma.dbm = DBM; halSs.cdma.ecio = ECIO; halSs.evdo.dbm = DBM; halSs.evdo.ecio = ECIO; halSs.evdo.signalNoiseRatio = SIGNAL_NOISE_RATIO; halSs.wcdma.base.signalStrength = 99; halSs.wcdma.rscp = 255; halSs.tdScdma.rscp = tdscdmaAsu; android.telephony.SignalStrength ss = RIL.convertHalSignalStrength_1_2(halSs); // FIXME: We should not need to call validateInput here b/74115980 // but unless we call it, we have to pass Integer.MAX_VALUE for wcdma RSCP, // which is outside the allowable range for the HAL. This value is being // coerced inside SignalStrength.validateInput(). ss.validateInput(); return ss; } @Test public void testHalSignalStrengthTdScdma() throws Exception { // Check that the minimum value is the same. assertEquals(getTdScdmaSignalStrength_1_0(120), getTdScdmaSignalStrength_1_2(0)); // Check that the maximum common value is the same. assertEquals(getTdScdmaSignalStrength_1_0(25), getTdScdmaSignalStrength_1_2(95)); // Check that an invalid value is the same. assertEquals(getTdScdmaSignalStrength_1_0(-1), getTdScdmaSignalStrength_1_2(255)); } } Loading
src/java/com/android/internal/telephony/RIL.java +16 −3 Original line number Diff line number Diff line Loading @@ -5275,8 +5275,19 @@ public class RIL extends BaseCommands implements CommandsInterface { return response; } static SignalStrength convertHalSignalStrength( /** Convert HAL 1.0 Signal Strength to android SignalStrength */ @VisibleForTesting public static SignalStrength convertHalSignalStrength( android.hardware.radio.V1_0.SignalStrength signalStrength) { int tdscdmaRscp_1_2 = 255; // 255 is the value for unknown/unreported ASU. // The HAL 1.0 range is 25..120; the ASU/ HAL 1.2 range is 0..96; // yes, this means the range in 1.0 cannot express -24dBm = 96 if (signalStrength.tdScdma.rscp >= 25 && signalStrength.tdScdma.rscp <= 120) { // First we flip the sign to convert from the HALs -rscp to the actual RSCP value. int rscpDbm = -signalStrength.tdScdma.rscp; // Then to convert from RSCP to ASU, we apply the offset which aligns 0 ASU to -120dBm. tdscdmaRscp_1_2 = rscpDbm + 120; } return new SignalStrength( signalStrength.gw.signalStrength, signalStrength.gw.bitErrorRate, Loading @@ -5290,10 +5301,12 @@ public class RIL extends BaseCommands implements CommandsInterface { signalStrength.lte.rsrq, signalStrength.lte.rssnr, signalStrength.lte.cqi, signalStrength.tdScdma.rscp); tdscdmaRscp_1_2); } static SignalStrength convertHalSignalStrength_1_2( /** Convert HAL 1.2 Signal Strength to android SignalStrength */ @VisibleForTesting public static SignalStrength convertHalSignalStrength_1_2( android.hardware.radio.V1_2.SignalStrength signalStrength) { return new SignalStrength( signalStrength.gsm.signalStrength, Loading
tests/telephonytests/src/com/android/internal/telephony/RILTest.java +58 −0 Original line number Diff line number Diff line Loading @@ -1564,4 +1564,62 @@ public class RILTest extends TelephonyTest { return RIL.convertHalCellInfoList_1_2(records); } public android.telephony.SignalStrength getTdScdmaSignalStrength_1_0(int tdscdmaNegDbm) { android.hardware.radio.V1_0.SignalStrength halSs = new android.hardware.radio.V1_0.SignalStrength(); halSs.lte.signalStrength = SIGNAL_STRENGTH; halSs.lte.rsrp = RSRP; halSs.lte.rsrq = RSRQ; halSs.lte.rssnr = RSSNR; halSs.gw.signalStrength = SIGNAL_STRENGTH; halSs.gw.bitErrorRate = BIT_ERROR_RATE; halSs.cdma.dbm = DBM; halSs.cdma.ecio = ECIO; halSs.evdo.dbm = DBM; halSs.evdo.ecio = ECIO; halSs.evdo.signalNoiseRatio = SIGNAL_NOISE_RATIO; halSs.tdScdma.rscp = tdscdmaNegDbm; android.telephony.SignalStrength ss = RIL.convertHalSignalStrength(halSs); // FIXME: We should not need to call validateInput here b/74115980. ss.validateInput(); return ss; } public android.telephony.SignalStrength getTdScdmaSignalStrength_1_2(int tdscdmaAsu) { android.hardware.radio.V1_2.SignalStrength halSs = new android.hardware.radio.V1_2.SignalStrength(); halSs.lte.signalStrength = SIGNAL_STRENGTH; halSs.lte.rsrp = RSRP; halSs.lte.rsrq = RSRQ; halSs.lte.rssnr = RSSNR; halSs.gsm.signalStrength = SIGNAL_STRENGTH; halSs.gsm.bitErrorRate = BIT_ERROR_RATE; halSs.cdma.dbm = DBM; halSs.cdma.ecio = ECIO; halSs.evdo.dbm = DBM; halSs.evdo.ecio = ECIO; halSs.evdo.signalNoiseRatio = SIGNAL_NOISE_RATIO; halSs.wcdma.base.signalStrength = 99; halSs.wcdma.rscp = 255; halSs.tdScdma.rscp = tdscdmaAsu; android.telephony.SignalStrength ss = RIL.convertHalSignalStrength_1_2(halSs); // FIXME: We should not need to call validateInput here b/74115980 // but unless we call it, we have to pass Integer.MAX_VALUE for wcdma RSCP, // which is outside the allowable range for the HAL. This value is being // coerced inside SignalStrength.validateInput(). ss.validateInput(); return ss; } @Test public void testHalSignalStrengthTdScdma() throws Exception { // Check that the minimum value is the same. assertEquals(getTdScdmaSignalStrength_1_0(120), getTdScdmaSignalStrength_1_2(0)); // Check that the maximum common value is the same. assertEquals(getTdScdmaSignalStrength_1_0(25), getTdScdmaSignalStrength_1_2(95)); // Check that an invalid value is the same. assertEquals(getTdScdmaSignalStrength_1_0(-1), getTdScdmaSignalStrength_1_2(255)); } }