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

Commit f6b3d8ca authored by Prerepa Viswanadham's avatar Prerepa Viswanadham
Browse files

Fix crash in Stopping/Starting BLE advertising after

BluetoothAdapter cycling

Bug 16528460
Change-Id: Iad852bc93d307c5ca5f7e42f24248aa02c105e8a
parent 0615026b
Loading
Loading
Loading
Loading
+9 −1
Original line number Diff line number Diff line
@@ -107,6 +107,7 @@ public final class BluetoothLeAdvertiser {
    public void startAdvertising(AdvertiseSettings settings,
            AdvertiseData advertiseData, AdvertiseData scanResponse,
            final AdvertiseCallback callback) {
        checkAdapterState();
        if (callback == null) {
            throw new IllegalArgumentException("callback cannot be null");
        }
@@ -153,13 +154,13 @@ public final class BluetoothLeAdvertiser {
     * @param callback {@link AdvertiseCallback} identifies the advertising instance to stop.
     */
    public void stopAdvertising(final AdvertiseCallback callback) {
        checkAdapterState();
        if (callback == null) {
            throw new IllegalArgumentException("callback cannot be null");
        }
        AdvertiseCallbackWrapper wrapper = mLeAdvertisers.get(callback);
        if (wrapper == null)
            return;

        try {
            IBluetoothGatt gatt = mBluetoothManager.getBluetoothGatt();
            if (gatt != null)
@@ -459,6 +460,13 @@ public final class BluetoothLeAdvertiser {
        }
    }

    //TODO: move this api to a common util class.
    private void checkAdapterState() {
        if (mBluetoothAdapter.getState() != mBluetoothAdapter.STATE_ON) {
            throw new IllegalStateException("BT Adapter is not turned ON");
        }
    }

    private void postCallbackFailure(final AdvertiseCallback callback, final int error) {
        mHandler.post(new Runnable() {
                @Override
+11 −0
Original line number Diff line number Diff line
@@ -80,6 +80,7 @@ public final class BluetoothLeScanner {
     * @throws IllegalArgumentException If {@code callback} is null.
     */
    public void startScan(final ScanCallback callback) {
        checkAdapterState();
        if (callback == null) {
            throw new IllegalArgumentException("callback is null");
        }
@@ -98,6 +99,7 @@ public final class BluetoothLeScanner {
     */
    public void startScan(List<ScanFilter> filters, ScanSettings settings,
            final ScanCallback callback) {
        checkAdapterState();
        if (settings == null || callback == null) {
            throw new IllegalArgumentException("settings or callback is null");
        }
@@ -148,6 +150,7 @@ public final class BluetoothLeScanner {
     * @param callback
     */
    public void stopScan(ScanCallback callback) {
        checkAdapterState();
        synchronized (mLeScanClients) {
            BleScanCallbackWrapper wrapper = mLeScanClients.remove(callback);
            if (wrapper == null) {
@@ -167,6 +170,7 @@ public final class BluetoothLeScanner {
     *            used to start scan.
     */
    public void flushPendingScanResults(ScanCallback callback) {
        checkAdapterState();
        if (callback == null) {
            throw new IllegalArgumentException("callback cannot be null!");
        }
@@ -445,6 +449,13 @@ public final class BluetoothLeScanner {
        }
    }

    //TODO: move this api to a common util class.
    private void checkAdapterState() {
        if (mBluetoothAdapter.getState() != mBluetoothAdapter.STATE_ON) {
            throw new IllegalStateException("BT Adapter is not turned ON");
        }
    }

    private void postCallbackError(final ScanCallback callback, final int errorCode) {
        mHandler.post(new Runnable() {
                @Override