Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e5dd89d4 authored by Sarah Chin's avatar Sarah Chin
Browse files

Fix error in RAN conversion in RIL

setNetworkSelectionModeManual should use convertAntToRan (return
RadioAccessNetworks) instead of convertRanToHalRan (returns
AccessNetwork).
RadioAccessSpecifier should also use convertAntToRan since values are
different between frameworks code and HAL.

Test: atest RILTest
Bug: 68116277
Bug: 149528140
Change-Id: Ic93cb16e594d2c48baa0660dd8f9221accf15602
parent 4aaa08d3
Loading
Loading
Loading
Loading
+27 −26
Original line number Diff line number Diff line
@@ -2168,7 +2168,7 @@ public class RIL extends BaseCommands implements CommandsInterface {
            RILRequest rr = obtainRequest(RIL_REQUEST_SET_NETWORK_SELECTION_MANUAL, result,
                    mRILDefaultWorkSource);
            try {
                int halRan = convertRanToHalRan(ran);
                int halRan = convertAntToRan(ran);
                if (mRadioVersion.greaterOrEqual(RADIO_HAL_VERSION_1_5)) {
                    android.hardware.radio.V1_5.IRadio radioProxy15 =
                            (android.hardware.radio.V1_5.IRadio) radioProxy;
@@ -2228,7 +2228,7 @@ public class RIL extends BaseCommands implements CommandsInterface {
                break;
            default:
                Log.wtf(RILJ_LOG_TAG, "radioAccessNetwork " + ras.getRadioAccessNetwork()
                        + " not supported!");
                        + " not supported on IRadio 1.1!");
                return null;
        }

@@ -2250,10 +2250,9 @@ public class RIL extends BaseCommands implements CommandsInterface {
            convertRadioAccessSpecifierToRadioHAL_1_5(RadioAccessSpecifier ras) {
        android.hardware.radio.V1_5.RadioAccessSpecifier rasInHalFormat =
                new android.hardware.radio.V1_5.RadioAccessSpecifier();
        int accessNetworkType = convertRanToAnt(ras.getRadioAccessNetwork());
        rasInHalFormat.radioAccessNetwork = accessNetworkType;
        rasInHalFormat.radioAccessNetwork = convertAntToRan(ras.getRadioAccessNetwork());
        List<Integer> bands;
        switch (accessNetworkType) {
        switch (ras.getRadioAccessNetwork()) {
            case AccessNetworkType.GERAN:
                bands = rasInHalFormat.bands.geranBands();
                break;
@@ -2268,7 +2267,7 @@ public class RIL extends BaseCommands implements CommandsInterface {
                break;
            default:
                Log.wtf(RILJ_LOG_TAG, "radioAccessNetwork " + ras.getRadioAccessNetwork()
                        + " not supported!");
                        + " not supported on IRadio 1.5!");
                return null;
        }

@@ -4678,7 +4677,7 @@ public class RIL extends BaseCommands implements CommandsInterface {
                            signalThresholdInfo.getHysteresisMs(),
                            signalThresholdInfo.getHysteresisDb(),
                            primitiveArrayToArrayList(signalThresholdInfo.getThresholds()),
                            convertRanToHalRan(ran));
                            convertAntToHalAnt(ran));
                } catch (RemoteException | RuntimeException e) {
                    handleRadioProxyExceptionForRR(rr, "setSignalStrengthReportingCriteria", e);
                }
@@ -4694,7 +4693,7 @@ public class RIL extends BaseCommands implements CommandsInterface {
                            (android.hardware.radio.V1_5.IRadio) radioProxy;
                    radioProxy15.setSignalStrengthReportingCriteria_1_5(rr.mSerial,
                            convertToHalSignalThresholdInfo(signalThresholdInfo),
                            convertRanToHalRan(ran));
                            convertAntToHalAnt(ran));
                } catch (RemoteException | RuntimeException e) {
                    handleRadioProxyExceptionForRR(
                            rr, "setSignalStrengthReportingCriteria_1_5", e);
@@ -4734,7 +4733,7 @@ public class RIL extends BaseCommands implements CommandsInterface {
                    radioProxy15.setLinkCapacityReportingCriteria_1_5(rr.mSerial, hysteresisMs,
                            hysteresisDlKbps, hysteresisUlKbps,
                            primitiveArrayToArrayList(thresholdsDlKbps),
                            primitiveArrayToArrayList(thresholdsUlKbps), convertRanToHalRan(ran));
                            primitiveArrayToArrayList(thresholdsUlKbps), convertAntToHalAnt(ran));
                } else if (mRadioVersion.greaterOrEqual(RADIO_HAL_VERSION_1_2)) {
                    android.hardware.radio.V1_2.IRadio radioProxy12 =
                            (android.hardware.radio.V1_2.IRadio) radioProxy;
@@ -4744,7 +4743,7 @@ public class RIL extends BaseCommands implements CommandsInterface {
                    radioProxy12.setLinkCapacityReportingCriteria(rr.mSerial, hysteresisMs,
                            hysteresisDlKbps, hysteresisUlKbps,
                            primitiveArrayToArrayList(thresholdsDlKbps),
                            primitiveArrayToArrayList(thresholdsUlKbps), convertRanToHalRan(ran));
                            primitiveArrayToArrayList(thresholdsUlKbps), convertAntToHalAnt(ran));
                } else {
                    riljLoge("setLinkCapacityReportingCriteria ignored on IRadio version less "
                            + "than 1.2");
@@ -4755,7 +4754,8 @@ public class RIL extends BaseCommands implements CommandsInterface {
        }
    }

    private static int convertRanToHalRan(int radioAccessNetwork) {
    /** Converts from AccessNetworkType in frameworks to AccessNetwork in HAL. */
    private static int convertAntToHalAnt(int radioAccessNetwork) {
        switch (radioAccessNetwork) {
            case AccessNetworkType.GERAN:
                return AccessNetwork.GERAN;
@@ -4771,25 +4771,26 @@ public class RIL extends BaseCommands implements CommandsInterface {
                return AccessNetwork.NGRAN;
            case AccessNetworkType.UNKNOWN:
            default:
                return 0;
                return AccessNetwork.UNKNOWN;
        }
    }

    private static int convertRanToAnt(int radioAccessNetwork) {
        switch (radioAccessNetwork) {
            case RadioAccessNetworks.GERAN:
                return AccessNetworkType.GERAN;
            case RadioAccessNetworks.UTRAN:
                return AccessNetworkType.UTRAN;
            case RadioAccessNetworks.EUTRAN:
                return AccessNetworkType.EUTRAN;
            case RadioAccessNetworks.NGRAN:
                return AccessNetworkType.NGRAN;
            case RadioAccessNetworks.CDMA2000:
                return AccessNetworkType.CDMA2000;
            case RadioAccessNetworks.UNKNOWN:
    /** Converts from AccessNetworkType in frameworks to RadioAccessNetworks in HAL. */
    private static int convertAntToRan(int accessNetworkType) {
        switch (accessNetworkType) {
            case AccessNetworkType.GERAN:
                return RadioAccessNetworks.GERAN;
            case AccessNetworkType.UTRAN:
                return RadioAccessNetworks.UTRAN;
            case AccessNetworkType.EUTRAN:
                return RadioAccessNetworks.EUTRAN;
            case AccessNetworkType.NGRAN:
                return RadioAccessNetworks.NGRAN;
            case AccessNetworkType.CDMA2000:
                return RadioAccessNetworks.CDMA2000;
            case AccessNetworkType.UNKNOWN:
            default:
                return AccessNetworkType.UNKNOWN;
                return RadioAccessNetworks.UNKNOWN;
        }
    }