summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author jasonwshsu <jasonwshsu@google.com> 2022-05-25 20:35:57 +0800
committer jasonwshsu <jasonwshsu@google.com> 2022-05-25 20:35:57 +0800
commit167336e3c36d942f6ff023718f07e5ee025e1262 (patch)
tree80f2f84412d6af80bf30efc321f17725c43b068d
parentf505fefdd6e17ac1eeae938245c1655c8249ae27 (diff)
Fix ASHA Hearing aids connection status incorrect
Root Cause: After disconnecting one side of hearing aid, the mainDevice did not update device side information from subDevice. Solution: switch subDevice information to mainDevice. Bug: 233708857 Test: make RunSettingsLibRoboTests ROBOTEST_FILTER=CachedBluetoothDeviceTest Test: make RunSettingsLibRoboTests ROBOTEST_FILTER=HearingAidDeviceManagerTest Change-Id: I5977c11828464863610cfdaabd91154b710b4151
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java7
-rw-r--r--packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/CachedBluetoothDeviceTest.java12
-rw-r--r--packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/HearingAidDeviceManagerTest.java6
3 files changed, 17 insertions, 8 deletions
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java
index 4229b6881f73..f598bc46456b 100644
--- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java
+++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java
@@ -1390,16 +1390,19 @@ public class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice>
public void switchSubDeviceContent() {
// Backup from main device
BluetoothDevice tmpDevice = mDevice;
- short tmpRssi = mRssi;
- boolean tmpJustDiscovered = mJustDiscovered;
+ final short tmpRssi = mRssi;
+ final boolean tmpJustDiscovered = mJustDiscovered;
+ final int tmpDeviceSide = mDeviceSide;
// Set main device from sub device
mDevice = mSubDevice.mDevice;
mRssi = mSubDevice.mRssi;
mJustDiscovered = mSubDevice.mJustDiscovered;
+ mDeviceSide = mSubDevice.mDeviceSide;
// Set sub device from backup
mSubDevice.mDevice = tmpDevice;
mSubDevice.mRssi = tmpRssi;
mSubDevice.mJustDiscovered = tmpJustDiscovered;
+ mSubDevice.mDeviceSide = tmpDeviceSide;
fetchActiveDevices();
}
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/CachedBluetoothDeviceTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/CachedBluetoothDeviceTest.java
index be2a55ede942..76c066cd029e 100644
--- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/CachedBluetoothDeviceTest.java
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/CachedBluetoothDeviceTest.java
@@ -965,24 +965,24 @@ public class CachedBluetoothDeviceTest {
mCachedDevice.mRssi = RSSI_1;
mCachedDevice.mJustDiscovered = JUSTDISCOVERED_1;
+ mCachedDevice.setDeviceSide(HearingAidProfile.DeviceSide.SIDE_LEFT);
mSubCachedDevice.mRssi = RSSI_2;
mSubCachedDevice.mJustDiscovered = JUSTDISCOVERED_2;
+ mSubCachedDevice.setDeviceSide(HearingAidProfile.DeviceSide.SIDE_RIGHT);
mCachedDevice.setSubDevice(mSubCachedDevice);
- assertThat(mCachedDevice.mRssi).isEqualTo(RSSI_1);
- assertThat(mCachedDevice.mJustDiscovered).isEqualTo(JUSTDISCOVERED_1);
- assertThat(mCachedDevice.mDevice).isEqualTo(mDevice);
- assertThat(mSubCachedDevice.mRssi).isEqualTo(RSSI_2);
- assertThat(mSubCachedDevice.mJustDiscovered).isEqualTo(JUSTDISCOVERED_2);
- assertThat(mSubCachedDevice.mDevice).isEqualTo(mSubDevice);
mCachedDevice.switchSubDeviceContent();
assertThat(mCachedDevice.mRssi).isEqualTo(RSSI_2);
assertThat(mCachedDevice.mJustDiscovered).isEqualTo(JUSTDISCOVERED_2);
assertThat(mCachedDevice.mDevice).isEqualTo(mSubDevice);
+ assertThat(mCachedDevice.getDeviceSide()).isEqualTo(
+ HearingAidProfile.DeviceSide.SIDE_RIGHT);
assertThat(mSubCachedDevice.mRssi).isEqualTo(RSSI_1);
assertThat(mSubCachedDevice.mJustDiscovered).isEqualTo(JUSTDISCOVERED_1);
assertThat(mSubCachedDevice.mDevice).isEqualTo(mDevice);
+ assertThat(mSubCachedDevice.getDeviceSide()).isEqualTo(
+ HearingAidProfile.DeviceSide.SIDE_LEFT);
}
@Test
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/HearingAidDeviceManagerTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/HearingAidDeviceManagerTest.java
index a8e607549ab1..d80a59178c1c 100644
--- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/HearingAidDeviceManagerTest.java
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/HearingAidDeviceManagerTest.java
@@ -358,8 +358,10 @@ public class HearingAidDeviceManagerTest {
public void onProfileConnectionStateChanged_disconnected_mainDevice_subDeviceConnected_switch()
{
when(mCachedDevice1.getHiSyncId()).thenReturn(HISYNCID1);
+ mCachedDevice1.setDeviceSide(HearingAidProfile.DeviceSide.SIDE_LEFT);
when(mCachedDevice2.getHiSyncId()).thenReturn(HISYNCID1);
when(mCachedDevice2.isConnected()).thenReturn(true);
+ mCachedDevice2.setDeviceSide(HearingAidProfile.DeviceSide.SIDE_RIGHT);
mCachedDeviceManager.mCachedDevices.add(mCachedDevice1);
mCachedDevice1.setSubDevice(mCachedDevice2);
@@ -370,6 +372,10 @@ public class HearingAidDeviceManagerTest {
assertThat(mCachedDevice1.mDevice).isEqualTo(mDevice2);
assertThat(mCachedDevice2.mDevice).isEqualTo(mDevice1);
+ assertThat(mCachedDevice1.getDeviceSide()).isEqualTo(
+ HearingAidProfile.DeviceSide.SIDE_RIGHT);
+ assertThat(mCachedDevice2.getDeviceSide()).isEqualTo(
+ HearingAidProfile.DeviceSide.SIDE_LEFT);
verify(mCachedDevice1).refresh();
}