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

Commit 07088c7e authored by Calvin Pan's avatar Calvin Pan Committed by Android (Google) Code Review
Browse files

Merge "Check allowed network type in Phone" into rvc-dev

parents dc904426 260f9b33
Loading
Loading
Loading
Loading
+17 −1
Original line number Original line Diff line number Diff line
@@ -2139,6 +2139,21 @@ public abstract class Phone extends Handler implements PhoneInternalInterface {
        int modemRaf = getRadioAccessFamily();
        int modemRaf = getRadioAccessFamily();
        int rafFromType = RadioAccessFamily.getRafFromNetworkType(networkType);
        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
        if (modemRaf == RadioAccessFamily.RAF_UNKNOWN
                || rafFromType == RadioAccessFamily.RAF_UNKNOWN) {
                || rafFromType == RadioAccessFamily.RAF_UNKNOWN) {
            Rlog.d(LOG_TAG, "setPreferredNetworkType: Abort, unknown RAF: "
            Rlog.d(LOG_TAG, "setPreferredNetworkType: Abort, unknown RAF: "
@@ -2153,12 +2168,13 @@ public abstract class Phone extends Handler implements PhoneInternalInterface {
            return;
            return;
        }
        }


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


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


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


                    // Set the modem network mode
                    // 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);
                    PhoneFactory.getPhone(phoneId).setPreferredNetworkType(networkType, null);


                    // Only support automatic selection mode on SIM change.
                    // Only support automatic selection mode on SIM change.