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

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

Fix inconsistencies in setPreferred/AllowedNetworkTypes

Test: atest RILTest
Bug: 206239022
Change-Id: If021c217105ada69c75317fcaff2c09b4e499eb6
parent 88bb0dea
Loading
Loading
Loading
Loading
+7 −1
Original line number Original line Diff line number Diff line
@@ -2704,7 +2704,7 @@ public class RIL extends BaseCommands implements CommandsInterface {
            mMetrics.writeSetPreferredNetworkType(mPhoneId, networkType);
            mMetrics.writeSetPreferredNetworkType(mPhoneId, networkType);


            try {
            try {
                networkProxy.setAllowedNetworkTypesBitmap(rr.mSerial, mAllowedNetworkTypesBitmask);
                networkProxy.setPreferredNetworkTypeBitmap(rr.mSerial, mAllowedNetworkTypesBitmask);
            } catch (RemoteException | RuntimeException e) {
            } catch (RemoteException | RuntimeException e) {
                handleRadioProxyExceptionForRR(NETWORK_SERVICE, "setPreferredNetworkType", e);
                handleRadioProxyExceptionForRR(NETWORK_SERVICE, "setPreferredNetworkType", e);
            }
            }
@@ -2735,6 +2735,12 @@ public class RIL extends BaseCommands implements CommandsInterface {
            @TelephonyManager.NetworkTypeBitMask int networkTypeBitmask, Message result) {
            @TelephonyManager.NetworkTypeBitMask int networkTypeBitmask, Message result) {
        RadioNetworkProxy networkProxy = getRadioServiceProxy(RadioNetworkProxy.class, result);
        RadioNetworkProxy networkProxy = getRadioServiceProxy(RadioNetworkProxy.class, result);
        if (!networkProxy.isEmpty()) {
        if (!networkProxy.isEmpty()) {
            if (mRadioVersion.less(RADIO_HAL_VERSION_1_6)) {
                // For older HAL, redirects the call to setPreferredNetworkType.
                setPreferredNetworkType(
                        RadioAccessFamily.getNetworkTypeFromRaf(networkTypeBitmask), result);
                return;
            }
            RILRequest rr = obtainRequest(RIL_REQUEST_SET_ALLOWED_NETWORK_TYPES_BITMAP, result,
            RILRequest rr = obtainRequest(RIL_REQUEST_SET_ALLOWED_NETWORK_TYPES_BITMAP, result,
                    mRILDefaultWorkSource);
                    mRILDefaultWorkSource);


+18 −8
Original line number Original line Diff line number Diff line
@@ -23,7 +23,6 @@ import android.os.Message;
import android.os.RemoteException;
import android.os.RemoteException;
import android.telephony.AccessNetworkConstants;
import android.telephony.AccessNetworkConstants;
import android.telephony.NetworkScanRequest;
import android.telephony.NetworkScanRequest;
import android.telephony.RadioAccessFamily;
import android.telephony.RadioAccessSpecifier;
import android.telephony.RadioAccessSpecifier;
import android.telephony.SignalThresholdInfo;
import android.telephony.SignalThresholdInfo;


@@ -363,19 +362,30 @@ public class RadioNetworkProxy extends RadioServiceProxy {
     */
     */
    public void setAllowedNetworkTypesBitmap(int serial, int networkTypeBitmask)
    public void setAllowedNetworkTypesBitmap(int serial, int networkTypeBitmask)
            throws RemoteException {
            throws RemoteException {
        if (isEmpty()) return;
        if (isEmpty() || mHalVersion.less(RIL.RADIO_HAL_VERSION_1_6)) return;
        if (isAidl()) {
        if (isAidl()) {
            mNetworkProxy.setAllowedNetworkTypesBitmap(serial,
            mNetworkProxy.setAllowedNetworkTypesBitmap(serial,
                    RILUtils.convertToHalRadioAccessFamilyAidl(networkTypeBitmask));
                    RILUtils.convertToHalRadioAccessFamilyAidl(networkTypeBitmask));
        } else if (mHalVersion.greaterOrEqual(RIL.RADIO_HAL_VERSION_1_6)) {
        } else {
            ((android.hardware.radio.V1_6.IRadio) mRadioProxy).setAllowedNetworkTypesBitmap(
            ((android.hardware.radio.V1_6.IRadio) mRadioProxy).setAllowedNetworkTypesBitmap(
                    serial, RILUtils.convertToHalRadioAccessFamily(networkTypeBitmask));
                    serial, RILUtils.convertToHalRadioAccessFamily(networkTypeBitmask));
        } else if (mHalVersion.greaterOrEqual(RIL.RADIO_HAL_VERSION_1_4)) {
        }
            ((android.hardware.radio.V1_4.IRadio) mRadioProxy).setPreferredNetworkTypeBitmap(
    }
                    serial, networkTypeBitmask);

    /**
     * Call IRadioNetwork#setPreferredNetworkTypeBitmap
     * @param serial Serial number of request
     * @param networkTypesBitmask Preferred network types bitmask to set
     * @throws RemoteException
     */
    public void setPreferredNetworkTypeBitmap(int serial, int networkTypesBitmask)
            throws RemoteException {
        if (isEmpty() || mHalVersion.greaterOrEqual(RIL.RADIO_HAL_VERSION_1_6)) return;
        if (mHalVersion.greaterOrEqual(RIL.RADIO_HAL_VERSION_1_4)) {
            ((android.hardware.radio.V1_4.IRadio) mRadioProxy).setPreferredNetworkTypeBitmap(serial,
                    RILUtils.convertToHalRadioAccessFamily(networkTypesBitmask));
        } else {
        } else {
            mRadioProxy.setPreferredNetworkType(
            mRadioProxy.setPreferredNetworkType(serial, networkTypesBitmask);
                    serial, RadioAccessFamily.getNetworkTypeFromRaf(networkTypeBitmask));
        }
        }
    }
    }