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
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user