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

Commit b5826ca3 authored by Aishwarya Mallampati's avatar Aishwarya Mallampati Committed by Automerger Merge Worker
Browse files

Merge "Unregister broadcast receiver before registering it again." into 24D1-dev am: 4d271641

parents 6f84d409 4d271641
Loading
Loading
Loading
Loading
+40 −19
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import android.os.Message;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;

import com.android.internal.annotations.GuardedBy;
import com.android.internal.telephony.uicc.IccFileHandler;
import com.android.internal.telephony.uicc.IccUtils;
import com.android.internal.util.State;
@@ -40,11 +41,14 @@ public class RilMessageDecoder extends StateMachine {
    private static final int CMD_START = 1;
    private static final int CMD_PARAMS_READY = 2;

    private final Object mLock = new Object();
    // members
    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
    @GuardedBy("mLock")
    private CommandParamsFactory mCmdParamsFactory = null;
    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
    private RilMessage mCurrentRilMessage = null;
    @GuardedBy("mLock")
    private Handler mCaller = null;
    private static int mSimCount = 0;
    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
@@ -113,10 +117,14 @@ public class RilMessageDecoder extends StateMachine {

    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
    private void sendCmdForExecution(RilMessage rilMsg) {
        synchronized (mLock) {
            if (mCaller != null) {
                Message msg = mCaller.obtainMessage(CatService.MSG_ID_RIL_MSG_DECODED,
                        new RilMessage(rilMsg));
                msg.sendToTarget();
            }
        }
    }

    private RilMessageDecoder(Handler caller, IccFileHandler fh, Context context) {
        super("RilMessageDecoder");
@@ -125,9 +133,11 @@ public class RilMessageDecoder extends StateMachine {
        addState(mStateCmdParamsReady);
        setInitialState(mStateStart);

        synchronized (mLock) {
            mCaller = caller;
            mCmdParamsFactory = CommandParamsFactory.getInstance(this, fh, context);
        }
    }

    private RilMessageDecoder() {
        super("RilMessageDecoder");
@@ -166,7 +176,7 @@ public class RilMessageDecoder extends StateMachine {
    }

    private boolean decodeMessageParams(RilMessage rilMsg) {
        boolean decodingStarted;
        boolean decodingStarted = false;

        mCurrentRilMessage = rilMsg;
        switch(rilMsg.mId) {
@@ -188,6 +198,9 @@ public class RilMessageDecoder extends StateMachine {
                decodingStarted = false;
                break;
            }

            synchronized (mLock) {
                if (mCmdParamsFactory != null) {
                    try {
                        // Start asynch parsing of the command parameters.
                        mCmdParamsFactory.make(BerTlv.decode(rawData));
@@ -199,6 +212,8 @@ public class RilMessageDecoder extends StateMachine {
                        sendCmdForExecution(mCurrentRilMessage);
                        decodingStarted = false;
                    }
                }
            }
            break;
        default:
            decodingStarted = false;
@@ -211,10 +226,16 @@ public class RilMessageDecoder extends StateMachine {
        quitNow();
        mStateStart = null;
        mStateCmdParamsReady = null;

        synchronized (mLock) {
            if (mCmdParamsFactory != null) {
                mCmdParamsFactory.dispose();
                mCmdParamsFactory = null;
        mCurrentRilMessage = null;
            }
            mCaller = null;
        }

        mCurrentRilMessage = null;
        mInstance = null;
    }
}
+15 −4
Original line number Diff line number Diff line
@@ -394,6 +394,8 @@ public class SatelliteController extends Handler {
    private static final String NOTIFICATION_CHANNEL_ID = "satellite";

    private final RegistrantList mSatelliteConfigUpdateChangedRegistrants = new RegistrantList();
    private final BTWifiNFCStateReceiver mBTWifiNFCSateReceiver;
    private final UwbAdapterStateCallback mUwbAdapterStateCallback;

    /**
     * @return The singleton instance of SatelliteController.
@@ -463,6 +465,8 @@ public class SatelliteController extends Handler {
        mContentResolver = mContext.getContentResolver();
        mCarrierConfigManager = mContext.getSystemService(CarrierConfigManager.class);

        mBTWifiNFCSateReceiver = new BTWifiNFCStateReceiver();
        mUwbAdapterStateCallback = new UwbAdapterStateCallback();
        initializeSatelliteModeRadios();

        ContentObserver satelliteModeRadiosContentObserver = new ContentObserver(this) {
@@ -546,8 +550,6 @@ public class SatelliteController extends Handler {
    @VisibleForTesting(visibility = VisibleForTesting.Visibility.PRIVATE)
    protected void initializeSatelliteModeRadios() {
        if (mContentResolver != null) {
            BTWifiNFCStateReceiver bTWifiNFCSateReceiver = new BTWifiNFCStateReceiver();
            UwbAdapterStateCallback uwbAdapterStateCallback = new UwbAdapterStateCallback();
            IntentFilter radioStateIntentFilter = new IntentFilter();

            synchronized (mRadioStateLock) {
@@ -601,7 +603,14 @@ public class SatelliteController extends Handler {
                        radioStateIntentFilter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
                    }
                }
                mContext.registerReceiver(bTWifiNFCSateReceiver, radioStateIntentFilter);

                try {
                    // Unregister receiver before registering it.
                    mContext.unregisterReceiver(mBTWifiNFCSateReceiver);
                } catch (IllegalArgumentException e) {
                    logd("initializeSatelliteModeRadios: unregisterReceiver, e=" + e);
                }
                mContext.registerReceiver(mBTWifiNFCSateReceiver, radioStateIntentFilter);

                if (satelliteModeRadios.contains(Settings.Global.RADIO_UWB)) {
                    UwbManager uwbManager = mContext.getSystemService(UwbManager.class);
@@ -610,8 +619,10 @@ public class SatelliteController extends Handler {
                        mUwbStateEnabled = uwbManager.isUwbEnabled();
                        final long identity = Binder.clearCallingIdentity();
                        try {
                            // Unregister callback before registering it.
                            uwbManager.unregisterAdapterStateCallback(mUwbAdapterStateCallback);
                            uwbManager.registerAdapterStateCallback(mContext.getMainExecutor(),
                                    uwbAdapterStateCallback);
                                    mUwbAdapterStateCallback);
                        } finally {
                            Binder.restoreCallingIdentity(identity);
                        }