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

Commit 260f9b33 authored by calvinpan's avatar calvinpan
Browse files

Check allowed network type in Phone

That are some places call Phone.setpreferredNetworkType() to set network
type directly, so move the logic that check the allowed network type to
phone to prevent check the allowed network type in every where.

Bug: 151285260
Test: atest

Change-Id: Ie28d7b40bba7615de50b46cdc735002c965ba636
parent 7455c0a8
Loading
Loading
Loading
Loading
+17 −1
Original line number Diff line number Diff line
@@ -2139,6 +2139,21 @@ public abstract class Phone extends Handler implements PhoneInternalInterface {
        int modemRaf = getRadioAccessFamily();
        int rafFromType = RadioAccessFamily.getRafFromNetworkType(networkType);

        long allowedNetworkTypes = -1;
        if (SubscriptionController.getInstance() != null) {
            String result = SubscriptionController.getInstance().getSubscriptionProperty(
                    getSubId(),
                    SubscriptionManager.ALLOWED_NETWORK_TYPES);

            if (result != null) {
                try {
                    allowedNetworkTypes = Long.parseLong(result);
                } catch (NumberFormatException err) {
                    Rlog.d(LOG_TAG, "allowedNetworkTypes NumberFormat exception");
                }
            }
        }

        if (modemRaf == RadioAccessFamily.RAF_UNKNOWN
                || rafFromType == RadioAccessFamily.RAF_UNKNOWN) {
            Rlog.d(LOG_TAG, "setPreferredNetworkType: Abort, unknown RAF: "
@@ -2153,12 +2168,13 @@ public abstract class Phone extends Handler implements PhoneInternalInterface {
            return;
        }

        int filteredRaf = (rafFromType & modemRaf);
        int filteredRaf = (int) (rafFromType & modemRaf & allowedNetworkTypes);
        int filteredType = RadioAccessFamily.getNetworkTypeFromRaf(filteredRaf);

        Rlog.d(LOG_TAG, "setPreferredNetworkType: networkType = " + networkType
                + " modemRaf = " + modemRaf
                + " rafFromType = " + rafFromType
                + " allowedNetworkTypes = " + allowedNetworkTypes
                + " filteredType = " + filteredType);

        mCi.setPreferredNetworkType(filteredType, response);
+0 −13
Original line number Diff line number Diff line
@@ -44,7 +44,6 @@ import android.service.euicc.EuiccProfileInfo;
import android.service.euicc.EuiccService;
import android.service.euicc.GetEuiccProfileInfoListResult;
import android.telephony.CarrierConfigManager;
import android.telephony.RadioAccessFamily;
import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
@@ -536,18 +535,6 @@ public class SubscriptionInfoUpdater extends Handler {
                    }

                    // Set the modem network mode
                    long allowedNetworkTypes = -1;
                    try {
                        allowedNetworkTypes = Long.parseLong(
                                SubscriptionController.getInstance().getSubscriptionProperty(subId,
                                        SubscriptionManager.ALLOWED_NETWORK_TYPES));
                    } catch (NumberFormatException err) {
                        logd("NumberFormat exception");
                    }

                    long networkTypeBitMask = RadioAccessFamily.getRafFromNetworkType(networkType);
                    networkType = RadioAccessFamily.getNetworkTypeFromRaf(
                            (int) (networkTypeBitMask & allowedNetworkTypes));
                    PhoneFactory.getPhone(phoneId).setPreferredNetworkType(networkType, null);

                    // Only support automatic selection mode on SIM change.