Merge "Ignore ASHA hisyncId grouping if the device supports CSIP" into main

This commit is contained in:
Angela Wang
2023-07-26 10:28:16 +00:00
committed by Android (Google) Code Review
2 changed files with 17 additions and 1 deletions

View File

@@ -1518,10 +1518,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;
@@ -1535,6 +1540,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);
}
/**

View File

@@ -186,6 +186,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;