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

Commit 3521030d authored by William Escande's avatar William Escande Committed by Automerger Merge Worker
Browse files

Merge changes I738c88aa,I04c3659d,I038ce9f6 into main am: cdcf02a1

parents 4a140c03 cdcf02a1
Loading
Loading
Loading
Loading
+5 −1
Original line number Original line Diff line number Diff line
@@ -1290,7 +1290,11 @@ public final class Utils {
        long elapsedRealtime();
        long elapsedRealtime();
    }
    }


    public static final TimeProvider sSystemClock = new SystemClockTimeProvider();
    private static final TimeProvider sSystemClock = new SystemClockTimeProvider();

    public static TimeProvider getSystemClock() {
        return sSystemClock;
    }


    private static final class SystemClockTimeProvider implements TimeProvider {
    private static final class SystemClockTimeProvider implements TimeProvider {
        @Override
        @Override
+9 −3
Original line number Original line Diff line number Diff line
@@ -183,6 +183,7 @@ public class GattService extends ProfileService {
    private final DistanceMeasurementManager mDistanceMeasurementManager;
    private final DistanceMeasurementManager mDistanceMeasurementManager;
    private final ActivityManager mActivityManager;
    private final ActivityManager mActivityManager;
    private final PackageManager mPackageManager;
    private final PackageManager mPackageManager;
    private final HandlerThread mScanThread;


    private Handler mTestModeHandler;
    private Handler mTestModeHandler;


@@ -203,9 +204,11 @@ public class GattService extends ProfileService {
        mAdvertiseManager = new AdvertiseManager(this);
        mAdvertiseManager = new AdvertiseManager(this);


        if (!Flags.scanManagerRefactor()) {
        if (!Flags.scanManagerRefactor()) {
            HandlerThread thread = new HandlerThread("BluetoothScanManager");
            mScanThread = new HandlerThread("BluetoothScanManager");
            thread.start();
            mScanThread.start();
            mTransitionalScanHelper.start(thread.getLooper());
            mTransitionalScanHelper.start(mScanThread.getLooper());
        } else {
            mScanThread = null;
        }
        }
        mDistanceMeasurementManager =
        mDistanceMeasurementManager =
                GattObjectsFactory.getInstance().createDistanceMeasurementManager(mAdapterService);
                GattObjectsFactory.getInstance().createDistanceMeasurementManager(mAdapterService);
@@ -251,6 +254,9 @@ public class GattService extends ProfileService {
    @Override
    @Override
    public void cleanup() {
    public void cleanup() {
        Log.d(TAG, "cleanup()");
        Log.d(TAG, "cleanup()");
        if (!Flags.scanManagerRefactor()) {
            mScanThread.quitSafely();
        }
        mNativeInterface.cleanup();
        mNativeInterface.cleanup();
        mAdvertiseManager.cleanup();
        mAdvertiseManager.cleanup();
        mDistanceMeasurementManager.cleanup();
        mDistanceMeasurementManager.cleanup();
+5 −3
Original line number Original line Diff line number Diff line
@@ -46,6 +46,7 @@ public class ScanController {
    private static final String TAG = ScanController.class.getSimpleName();
    private static final String TAG = ScanController.class.getSimpleName();


    public final TransitionalScanHelper mTransitionalScanHelper;
    public final TransitionalScanHelper mTransitionalScanHelper;
    public final HandlerThread mScanThread;


    private final BluetoothScanBinder mBinder;
    private final BluetoothScanBinder mBinder;


@@ -72,15 +73,16 @@ public class ScanController {
        mMainLooper = adapterService.getMainLooper();
        mMainLooper = adapterService.getMainLooper();
        mBinder = new BluetoothScanBinder(this);
        mBinder = new BluetoothScanBinder(this);
        mIsAvailable = true;
        mIsAvailable = true;
        HandlerThread thread = new HandlerThread("BluetoothScanManager");
        mScanThread = new HandlerThread("BluetoothScanManager");
        thread.start();
        mScanThread.start();
        mTransitionalScanHelper.start(thread.getLooper());
        mTransitionalScanHelper.start(mScanThread.getLooper());
    }
    }


    public void stop() {
    public void stop() {
        Log.d(TAG, "stop()");
        Log.d(TAG, "stop()");
        mIsAvailable = false;
        mIsAvailable = false;
        mBinder.clearScanController();
        mBinder.clearScanController();
        mScanThread.quitSafely();
        mTransitionalScanHelper.stop();
        mTransitionalScanHelper.stop();
        mTransitionalScanHelper.cleanup();
        mTransitionalScanHelper.cleanup();
    }
    }
+12 −18
Original line number Original line Diff line number Diff line
@@ -119,7 +119,6 @@ public class ScanManager {
    @GuardedBy("mCurUsedTrackableAdvertisementsLock")
    @GuardedBy("mCurUsedTrackableAdvertisementsLock")
    private int mCurUsedTrackableAdvertisements = 0;
    private int mCurUsedTrackableAdvertisements = 0;


    private final Context mContext;
    private final TransitionalScanHelper mScanHelper;
    private final TransitionalScanHelper mScanHelper;
    private final AdapterService mAdapterService;
    private final AdapterService mAdapterService;
    private final TimeProvider mTimeProvider;
    private final TimeProvider mTimeProvider;
@@ -170,13 +169,12 @@ public class ScanManager {
        mBatchClients = Collections.newSetFromMap(new ConcurrentHashMap<ScanClient, Boolean>());
        mBatchClients = Collections.newSetFromMap(new ConcurrentHashMap<ScanClient, Boolean>());
        mSuspendedScanClients =
        mSuspendedScanClients =
                Collections.newSetFromMap(new ConcurrentHashMap<ScanClient, Boolean>());
                Collections.newSetFromMap(new ConcurrentHashMap<ScanClient, Boolean>());
        mContext = adapterService;
        mScanHelper = scanHelper;
        mScanHelper = scanHelper;
        mAdapterService = adapterService;
        mAdapterService = adapterService;
        mTimeProvider = timeProvider;
        mTimeProvider = timeProvider;
        mScanNative = new ScanNative(scanHelper);
        mScanNative = new ScanNative(scanHelper);
        mDisplayManager = mContext.getSystemService(DisplayManager.class);
        mDisplayManager = mAdapterService.getSystemService(DisplayManager.class);
        mActivityManager = mContext.getSystemService(ActivityManager.class);
        mActivityManager = mAdapterService.getSystemService(ActivityManager.class);
        mLocationManager = mAdapterService.getSystemService(LocationManager.class);
        mLocationManager = mAdapterService.getSystemService(LocationManager.class);
        mBluetoothAdapterProxy = bluetoothAdapterProxy;
        mBluetoothAdapterProxy = bluetoothAdapterProxy;
        mIsConnecting = false;
        mIsConnecting = false;
@@ -203,7 +201,7 @@ public class ScanManager {
        }
        }
        IntentFilter locationIntentFilter = new IntentFilter(LocationManager.MODE_CHANGED_ACTION);
        IntentFilter locationIntentFilter = new IntentFilter(LocationManager.MODE_CHANGED_ACTION);
        locationIntentFilter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY);
        locationIntentFilter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY);
        mContext.registerReceiver(mLocationReceiver, locationIntentFilter);
        mAdapterService.registerReceiver(mLocationReceiver, locationIntentFilter);
    }
    }


    public void cleanup() {
    public void cleanup() {
@@ -226,13 +224,9 @@ public class ScanManager {


        // Shut down the thread
        // Shut down the thread
        mHandler.removeCallbacksAndMessages(null);
        mHandler.removeCallbacksAndMessages(null);
        Looper looper = mHandler.getLooper();
        if (looper != null) {
            looper.quitSafely();
        }


        try {
        try {
            mContext.unregisterReceiver(mLocationReceiver);
            mAdapterService.unregisterReceiver(mLocationReceiver);
        } catch (IllegalArgumentException e) {
        } catch (IllegalArgumentException e) {
            Log.w(TAG, "exception when invoking unregisterReceiver(mLocationReceiver)", e);
            Log.w(TAG, "exception when invoking unregisterReceiver(mLocationReceiver)", e);
        }
        }
@@ -1024,11 +1018,11 @@ public class ScanManager {
            mFilterIndexStack = new ArrayDeque<Integer>();
            mFilterIndexStack = new ArrayDeque<Integer>();
            mClientFilterIndexMap = new HashMap<Integer, Deque<Integer>>();
            mClientFilterIndexMap = new HashMap<Integer, Deque<Integer>>();


            mAlarmManager = mContext.getSystemService(AlarmManager.class);
            mAlarmManager = mAdapterService.getSystemService(AlarmManager.class);
            Intent batchIntent = new Intent(ACTION_REFRESH_BATCHED_SCAN, null);
            Intent batchIntent = new Intent(ACTION_REFRESH_BATCHED_SCAN, null);
            mBatchScanIntervalIntent =
            mBatchScanIntervalIntent =
                    PendingIntent.getBroadcast(
                    PendingIntent.getBroadcast(
                            mContext, 0, batchIntent, PendingIntent.FLAG_IMMUTABLE);
                            mAdapterService, 0, batchIntent, PendingIntent.FLAG_IMMUTABLE);
            IntentFilter filter = new IntentFilter();
            IntentFilter filter = new IntentFilter();
            filter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY);
            filter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY);
            filter.addAction(ACTION_REFRESH_BATCHED_SCAN);
            filter.addAction(ACTION_REFRESH_BATCHED_SCAN);
@@ -1050,7 +1044,7 @@ public class ScanManager {
                            }
                            }
                        }
                        }
                    });
                    });
            mContext.registerReceiver(mBatchAlarmReceiver.get(), filter);
            mAdapterService.registerReceiver(mBatchAlarmReceiver.get(), filter);


            mIsMsftSupported =
            mIsMsftSupported =
                    Flags.leScanMsftSupport()
                    Flags.leScanMsftSupport()
@@ -1323,7 +1317,7 @@ public class ScanManager {
        // infrequently anyway. To avoid redefining parameter sets, map to the low duty cycle
        // infrequently anyway. To avoid redefining parameter sets, map to the low duty cycle
        // parameter set as follows.
        // parameter set as follows.
        private int getBatchScanWindowMillis(int scanMode) {
        private int getBatchScanWindowMillis(int scanMode) {
            ContentResolver resolver = mContext.getContentResolver();
            ContentResolver resolver = mAdapterService.getContentResolver();
            switch (scanMode) {
            switch (scanMode) {
                case ScanSettings.SCAN_MODE_LOW_LATENCY:
                case ScanSettings.SCAN_MODE_LOW_LATENCY:
                    return Settings.Global.getInt(
                    return Settings.Global.getInt(
@@ -1341,7 +1335,7 @@ public class ScanManager {
        }
        }


        private int getBatchScanIntervalMillis(int scanMode) {
        private int getBatchScanIntervalMillis(int scanMode) {
            ContentResolver resolver = mContext.getContentResolver();
            ContentResolver resolver = mAdapterService.getContentResolver();
            switch (scanMode) {
            switch (scanMode) {
                case ScanSettings.SCAN_MODE_LOW_LATENCY:
                case ScanSettings.SCAN_MODE_LOW_LATENCY:
                    return Settings.Global.getInt(
                    return Settings.Global.getInt(
@@ -1521,7 +1515,7 @@ public class ScanManager {
            // Protect against multiple calls of cleanup.
            // Protect against multiple calls of cleanup.
            BroadcastReceiver receiver = mBatchAlarmReceiver.getAndSet(null);
            BroadcastReceiver receiver = mBatchAlarmReceiver.getAndSet(null);
            if (receiver != null) {
            if (receiver != null) {
                mContext.unregisterReceiver(receiver);
                mAdapterService.unregisterReceiver(receiver);
            }
            }
            mNativeInterface.cleanup();
            mNativeInterface.cleanup();
        }
        }
@@ -1781,7 +1775,7 @@ public class ScanManager {
        }
        }


        private int getScanWindowMillis(ScanSettings settings) {
        private int getScanWindowMillis(ScanSettings settings) {
            ContentResolver resolver = mContext.getContentResolver();
            ContentResolver resolver = mAdapterService.getContentResolver();
            if (settings == null) {
            if (settings == null) {
                return Settings.Global.getInt(
                return Settings.Global.getInt(
                        resolver,
                        resolver,
@@ -1819,7 +1813,7 @@ public class ScanManager {
        }
        }


        private int getScanIntervalMillis(ScanSettings settings) {
        private int getScanIntervalMillis(ScanSettings settings) {
            ContentResolver resolver = mContext.getContentResolver();
            ContentResolver resolver = mAdapterService.getContentResolver();
            if (settings == null) {
            if (settings == null) {
                return Settings.Global.getInt(
                return Settings.Global.getInt(
                        resolver,
                        resolver,
+2 −2
Original line number Original line Diff line number Diff line
@@ -16,7 +16,7 @@


package com.android.bluetooth.le_scan;
package com.android.bluetooth.le_scan;


import static com.android.bluetooth.Utils.sSystemClock;
import static com.android.bluetooth.Utils.getSystemClock;


import android.os.Looper;
import android.os.Looper;
import android.util.Log;
import android.util.Log;
@@ -79,7 +79,7 @@ public class ScanObjectsFactory {
            BluetoothAdapterProxy bluetoothAdapterProxy,
            BluetoothAdapterProxy bluetoothAdapterProxy,
            Looper looper) {
            Looper looper) {
        return new ScanManager(
        return new ScanManager(
                adapterService, scanHelper, bluetoothAdapterProxy, looper, sSystemClock);
                adapterService, scanHelper, bluetoothAdapterProxy, looper, getSystemClock());
    }
    }


    public PeriodicScanManager createPeriodicScanManager(AdapterService adapterService) {
    public PeriodicScanManager createPeriodicScanManager(AdapterService adapterService) {
Loading