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

Commit ae076ee2 authored by Martin Brabham's avatar Martin Brabham Committed by Andre Eisenbach
Browse files

BluetoothManagerService: continue teardown when BLE apps registered

    When the adapter is toggled off; when there are BLE apps registered, a
request is sent to unregister all of the BLE apps.  Upon unregister each app
will call through to this function via a callback.  When this gets called if
the ble app count is 0, we can disable everything.  I am keeping track of the
flag so that we know explicitly where we are coming from.

Bug: 34707848
Test: Compile
Change-Id: I9a8322a6fa918e7b410770894c257ec9f7d8d1f5
parent a80bc072
Loading
Loading
Loading
Loading
+12 −8
Original line number Diff line number Diff line
@@ -638,6 +638,9 @@ class BluetoothManagerService extends IBluetoothManager.Stub {
        if (appCount == 0 && mEnable) {
            disableBleScanMode();
        }
        if (appCount == 0 && !mEnableExternal) {
            sendBrEdrDownCallback();
        }
        return appCount;
    }

@@ -693,7 +696,14 @@ class BluetoothManagerService extends IBluetoothManager.Stub {
            return;
        }

        if (isBleAppPresent() == false) {
        if (isBleAppPresent()) {
            // Need to stay at BLE ON. Disconnect all Gatt connections
            try {
                mBluetoothGatt.unregAll();
            } catch (RemoteException e) {
                Slog.e(TAG, "Unable to disconnect all apps.", e);
            }
        } else {
            try {
                mBluetoothLock.readLock().lock();
                if (mBluetooth != null) mBluetooth.onBrEdrDown();
@@ -702,14 +712,8 @@ class BluetoothManagerService extends IBluetoothManager.Stub {
            } finally {
                mBluetoothLock.readLock().unlock();
            }
        } else {
            // Need to stay at BLE ON. Disconnect all Gatt connections
            try {
                mBluetoothGatt.unregAll();
            } catch (RemoteException e) {
                Slog.e(TAG, "Unable to disconnect all apps.", e);
            }
        }

    }

    public boolean enableNoAutoConnect(String packageName)