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

Commit f47721e1 authored by Ling Ma's avatar Ling Ma
Browse files

Port setRadioCapability on dds change

Remap modem radio access famaily upon default data sub Id change, to be consistent with pre U behavior.

Fix: 285807135
Test: reporter verified
Change-Id: I0d42f2394ab64a2c570c9d4d221f47608e3f25fc
parent 1fd75b98
Loading
Loading
Loading
Loading
+19 −0
Original line number Diff line number Diff line
@@ -87,6 +87,7 @@ import com.android.internal.telephony.MccTable;
import com.android.internal.telephony.MultiSimSettingController;
import com.android.internal.telephony.Phone;
import com.android.internal.telephony.PhoneFactory;
import com.android.internal.telephony.ProxyController;
import com.android.internal.telephony.RILConstants;
import com.android.internal.telephony.SubscriptionController;
import com.android.internal.telephony.TelephonyIntents;
@@ -2708,6 +2709,8 @@ public class SubscriptionManagerService extends ISub.Stub {
        final long token = Binder.clearCallingIdentity();
        try {
            if (mDefaultDataSubId.set(subId)) {
                remapRafIfApplicable();

                MultiSimSettingController.getInstance().notifyDefaultDataSubChanged();

                Intent intent = new Intent(
@@ -2723,6 +2726,22 @@ public class SubscriptionManagerService extends ISub.Stub {
        }
    }

    /**
     * Remap Radio Access Family if needed.
     */
    private void remapRafIfApplicable() {
        boolean applicable = mSlotIndexToSubId.containsValue(getDefaultDataSubId());
        if (!applicable) return;
        ProxyController proxyController = ProxyController.getInstance();
        RadioAccessFamily[] rafs = new RadioAccessFamily[mTelephonyManager.getActiveModemCount()];
        for (int phoneId = 0; phoneId < rafs.length; phoneId++) {
            int raf = mSlotIndexToSubId.get(phoneId) == getDefaultDataSubId()
                    ? proxyController.getMaxRafSupported() : proxyController.getMinRafSupported();
            rafs[phoneId] = new RadioAccessFamily(phoneId, raf);
        }
        proxyController.setRadioCapability(rafs);
    }

    /**
     * @return The default subscription id for voice.
     */
+1 −0
Original line number Diff line number Diff line
@@ -605,6 +605,7 @@ public class SubscriptionManagerServiceTest extends TelephonyTest {

        mSubscriptionManagerServiceUT.setDefaultDataSubId(1);
        assertThat(mSubscriptionManagerServiceUT.getDefaultDataSubId()).isEqualTo(1);
        verify(mProxyController).setRadioCapability(any());

        assertThat(Settings.Global.getInt(mContext.getContentResolver(),
                        Settings.Global.MULTI_SIM_DATA_CALL_SUBSCRIPTION)).isEqualTo(1);