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

Commit bdfaa7f5 authored by Nitin Arora's avatar Nitin Arora Committed by Andre Eisenbach
Browse files

Bluetooth: Ensure Bluetooth interface handle is valid

This change adds null checks to Bluetooth interface handle to prevent
using null references when BluetoothService is not up. Also removed
the callbacks for the intermediate state removed for now as they are
not being used.

Change-Id: I0e72ff4da467a8bcf5a4e5ac48d8558e7f308c7e
parent 9132c5ab
Loading
Loading
Loading
Loading
+12 −17
Original line number Diff line number Diff line
@@ -512,7 +512,8 @@ class BluetoothManagerService extends IBluetoothManager.Stub {
    private void onBluetoothGattServiceUp() {
        if (DBG) Log.d(TAG,"BluetoothGatt Service is Up");
        try{
            if (isBleAppPresent() == false && mBluetooth.getState() == BluetoothAdapter.STATE_BLE_ON) {
            if (isBleAppPresent() == false && mBluetooth != null
                  && mBluetooth.getState() == BluetoothAdapter.STATE_BLE_ON) {
                mBluetooth.onLeServiceUp();

                // waive WRITE_SECURE_SETTINGS permission check
@@ -531,32 +532,26 @@ class BluetoothManagerService extends IBluetoothManager.Stub {
     */
    private void sendBrEdrDownCallback() {
        if (DBG) Log.d(TAG,"Calling sendBrEdrDownCallback callbacks");
        int n = mCallbacks.beginBroadcast();

        if(mBluetooth == null) {
            Log.w(TAG, "Bluetooth handle is null");
            return;
        }

        if (isBleAppPresent() == false) {
            try {
                mBluetooth.onBrEdrDown();
            } catch(RemoteException e) {
                Log.e(TAG,"Unable to call onBrEdrDown", e);
                Log.e(TAG, "Call to onBrEdrDown() failed.", e);
            }
        }
        else{//need to stay at BLE ON. disconnect all Gatt connections
            try{
                mBluetoothGatt.unregAll();//disconnectAll();
            } catch(RemoteException e) {
                Log.e(TAG,"Unable to disconn all", e);
            }
        }

        Log.d(TAG,"Broadcasting onBrEdrDown() to " + n + " receivers.");
        for (int i=0; i <n; i++) {
        } else {
            // Need to stay at BLE ON. Disconnect all Gatt connections
            try{
                mCallbacks.getBroadcastItem(i).onBrEdrDown();
                mBluetoothGatt.unregAll();
            } catch(RemoteException e) {
                Log.e(TAG, "Unable to call sendBrEdrDownCallback() on callback #" + i, e);
                Log.e(TAG, "Unable to disconnect all apps.", e);
            }
        }
        mCallbacks.finishBroadcast();
    }

    /** @hide*/