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

Commit 23c94de7 authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "Close BluetoothGatt when disconnected"

parents 2ec109c9 06d9546a
Loading
Loading
Loading
Loading
+16 −7
Original line number Original line Diff line number Diff line
@@ -223,14 +223,16 @@ public class BatteryStateMachine extends StateMachine {
            return false;
            return false;
        }
        }


        if (mBluetoothGatt == null) {
        if (mGattCallback == null) {
            mGattCallback = new GattCallback();
            mGattCallback = new GattCallback();
        }
        if (mBluetoothGatt != null) {
            Log.w(TAG, "Trying connectGatt with existing BluetoothGatt instance.");
            mBluetoothGatt.close();
        }
        mBluetoothGatt = mDevice.connectGatt(service, /*autoConnect=*/false,
        mBluetoothGatt = mDevice.connectGatt(service, /*autoConnect=*/false,
                mGattCallback, TRANSPORT_AUTO, /*opportunistic=*/true,
                mGattCallback, TRANSPORT_AUTO, /*opportunistic=*/true,
                PHY_LE_1M_MASK | PHY_LE_2M_MASK, getHandler());
                PHY_LE_1M_MASK | PHY_LE_2M_MASK, getHandler());
        } else {
            mBluetoothGatt.connect();
        }
        return mBluetoothGatt != null;
        return mBluetoothGatt != null;
    }
    }


@@ -256,6 +258,11 @@ public class BatteryStateMachine extends StateMachine {
            log(TAG, "Enter (" + mDevice + "): " + messageWhatToString(
            log(TAG, "Enter (" + mDevice + "): " + messageWhatToString(
                        getCurrentMessage().what));
                        getCurrentMessage().what));


            if (mBluetoothGatt != null) {
                mBluetoothGatt.close();
                mBluetoothGatt = null;
            }

            if (mLastConnectionState != BluetoothProfile.STATE_DISCONNECTED) {
            if (mLastConnectionState != BluetoothProfile.STATE_DISCONNECTED) {
                // Don't broadcast during startup
                // Don't broadcast during startup
                dispatchConnectionStateChanged(mLastConnectionState,
                dispatchConnectionStateChanged(mLastConnectionState,
@@ -575,7 +582,9 @@ public class BatteryStateMachine extends StateMachine {
            int batteryLevel = value[0] & 0xFF;
            int batteryLevel = value[0] & 0xFF;


            BatteryService service = mServiceRef.get();
            BatteryService service = mServiceRef.get();
            if (service != null) {
                service.handleBatteryChanged(mDevice, batteryLevel);
                service.handleBatteryChanged(mDevice, batteryLevel);
            }
            }
        }
        }
    }
    }
}
+2 −0
Original line number Original line Diff line number Diff line
@@ -19,6 +19,7 @@ package com.android.bluetooth.bas;
import static android.bluetooth.BluetoothGatt.GATT_SUCCESS;
import static android.bluetooth.BluetoothGatt.GATT_SUCCESS;


import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.Mockito.after;
import static org.mockito.Mockito.after;
@@ -157,6 +158,7 @@ public class BatteryStateMachineTest {
        // Check that we are in Disconnected state
        // Check that we are in Disconnected state
        Assert.assertThat(mBatteryStateMachine.getCurrentState(),
        Assert.assertThat(mBatteryStateMachine.getCurrentState(),
                IsInstanceOf.instanceOf(BatteryStateMachine.Disconnected.class));
                IsInstanceOf.instanceOf(BatteryStateMachine.Disconnected.class));
        assertNull(mBatteryStateMachine.mBluetoothGatt);
    }
    }


    @Test
    @Test