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

Commit d864d3df authored by Jack He's avatar Jack He Committed by Automerger Merge Worker
Browse files

Merge "Close BluetoothGatt when disconnected" into tm-dev am: f96fabb5

parents 28ac7859 f96fabb5
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