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

Commit ec6e7c97 authored by Angela Wang's avatar Angela Wang
Browse files

Ignore ASHA hisyncId grouping if the device supports CSIP

If a device is added as another device's sub device, it'll be removed
from the cached device list. This makes the device can't be correctly
grouped as a CSIP set when CSIP is connected.

We should ignore ASHA hisyncId grouping and leave it to be handled as a
member of CSIP set.

Bug: 288284097
Test: atest CachedBluetoothDeviceTest
Test: atest HearingAidDeviceManagerTest
Change-Id: Ibf10198521d3186186e87f96b13475185e51e856
parent f7077d90
Loading
Loading
Loading
Loading
+9 −1
Original line number Diff line number Diff line
@@ -1522,10 +1522,15 @@ public class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice>
     *                      list.
     */
    public void switchMemberDeviceContent(CachedBluetoothDevice newMainDevice) {
        // Backup from main device
        // Remove the sub device from mMemberDevices first to prevent hash mismatch problem due
        // to mDevice switch
        removeMemberDevice(newMainDevice);

        // Backup from current main device
        final BluetoothDevice tmpDevice = mDevice;
        final short tmpRssi = mRssi;
        final boolean tmpJustDiscovered = mJustDiscovered;

        // Set main device from sub device
        release();
        mDevice = newMainDevice.mDevice;
@@ -1539,6 +1544,9 @@ public class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice>
        newMainDevice.mRssi = tmpRssi;
        newMainDevice.mJustDiscovered = tmpJustDiscovered;
        newMainDevice.fillData();

        // Add the sub device back into mMemberDevices with correct hash
        addMemberDevice(newMainDevice);
    }

    /**
+8 −0
Original line number Diff line number Diff line
@@ -167,6 +167,14 @@ public class HearingAidDeviceManager {
            if (cachedDevice.getHiSyncId() != hiSyncId) {
                continue;
            }

            // The remote device supports CSIP, the other ear should be processed as a member
            // device. Ignore hiSyncId grouping from ASHA here.
            if (cachedDevice.getProfiles().stream().anyMatch(
                    profile -> profile instanceof CsipSetCoordinatorProfile)) {
                continue;
            }

            if (firstMatchedIndex == -1) {
                // Found the first one
                firstMatchedIndex = i;