summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoralk3pInjection <webmaster@raspii.tech>2022-06-29 12:32:24 +0800
committeralk3pInjection <webmaster@raspii.tech>2022-06-29 12:32:24 +0800
commita830a3ea5ccdf7d99b0daea882fd81b278421f7c (patch)
treeb04c63ccafba45394eb60d1fbdf56d73e5fb0e68
parentf7dfc4b6f5ed5e364ac1b9346c6d7e042dfa5897 (diff)
parent0ca5a2d5b398b0eeef260b3e8200505a65e9c83a (diff)
Merge tag 'LA.QSSI.12.0.r1-07900.02-qssi.0' into sugisawa-mr1
"LA.QSSI.12.0.r1-07900.02-qssi.0" Change-Id: If994139cfae9b8c662daf05f03374bb8bc54ab6d
-rw-r--r--src/com/android/bluetooth/btservice/AdapterService.java5
-rw-r--r--src/com/android/bluetooth/btservice/RemoteDevices.java7
-rw-r--r--src/com/android/bluetooth/gatt/AdvertiseManager.java15
-rw-r--r--src/com/android/bluetooth/gatt/GattService.java6
-rw-r--r--src/com/android/bluetooth/gatt/ScanManager.java19
-rw-r--r--src/com/android/bluetooth/hfp/HeadsetService.java5
-rw-r--r--src/com/android/bluetooth/hfp/HeadsetStateMachine.java3
-rw-r--r--src/com/android/bluetooth/telephony/BluetoothInCallService.java5
8 files changed, 54 insertions, 11 deletions
diff --git a/src/com/android/bluetooth/btservice/AdapterService.java b/src/com/android/bluetooth/btservice/AdapterService.java
index 8a0cdc9f6..451f4f415 100644
--- a/src/com/android/bluetooth/btservice/AdapterService.java
+++ b/src/com/android/bluetooth/btservice/AdapterService.java
@@ -1919,6 +1919,7 @@ public class AdapterService extends Service {
service, attributionSource, "AdapterService setScanMode")) {
return false;
}
+ enforceBluetoothPrivilegedPermission(service);
service.mAdapterProperties.setDiscoverableTimeout(duration);
return service.mAdapterProperties.setScanMode(convertScanModeToHal(mode));
@@ -5069,9 +5070,7 @@ public class AdapterService extends Service {
boolean isSdpCompleted(BluetoothDevice device) {
DeviceProperties deviceProp = mRemoteDevices.getDeviceProperties(device);
- boolean sdpCompleted = deviceProp.isSdpCompleted();
- debugLog("sdpCompleted " + sdpCompleted);
- return sdpCompleted;
+ return (deviceProp != null ) ? deviceProp.isSdpCompleted() : false ;
}
private int getDeviceType(BluetoothDevice device){
diff --git a/src/com/android/bluetooth/btservice/RemoteDevices.java b/src/com/android/bluetooth/btservice/RemoteDevices.java
index 471d64945..b82f492f1 100644
--- a/src/com/android/bluetooth/btservice/RemoteDevices.java
+++ b/src/com/android/bluetooth/btservice/RemoteDevices.java
@@ -271,6 +271,13 @@ final class RemoteDevices {
return prop;
}
}
+
+ BluetoothDevice newdevice = getDevice(Utils.addressToBytes(deleteKey));
+ DeviceProperties deviceProperties = getDeviceProperties(newdevice);
+ if (deviceProperties != null && deviceProperties.isBonding()) {
+ debugLog("Bonding device " + deleteKey + " Don't remove from property map");
+ return prop;
+ }
debugLog("Removing device " + deleteKey + " from property map");
mDevices.remove(deleteKey);
}
diff --git a/src/com/android/bluetooth/gatt/AdvertiseManager.java b/src/com/android/bluetooth/gatt/AdvertiseManager.java
index 5963294fe..fa2c0d7c0 100644
--- a/src/com/android/bluetooth/gatt/AdvertiseManager.java
+++ b/src/com/android/bluetooth/gatt/AdvertiseManager.java
@@ -32,6 +32,7 @@ import com.android.bluetooth.btservice.AdapterService;
import java.util.Collections;
import java.util.HashMap;
+import java.util.NoSuchElementException;
import java.util.Iterator;
import java.util.Map;
@@ -247,9 +248,13 @@ class AdvertiseManager {
return;
}
- Integer advertiserId = adv.id;
- binder.unlinkToDeath(adv.deathRecipient, 0);
+ try {
+ binder.unlinkToDeath(adv.deathRecipient, 0);
+ } catch (NoSuchElementException e) {
+ Log.i(TAG, "stopAdvertisingSet() - link does not exist");
+ }
+ Integer advertiserId = adv.id;
if (advertiserId < 0) {
Log.i(TAG, "stopAdvertisingSet() - advertiser not finished registration yet");
// Advertiser will be freed once initiated in onAdvertisingSetStarted()
@@ -443,7 +448,11 @@ class AdvertiseManager {
Integer advertiser_id = entry.getValue().id;
IAdvertisingSetCallback callback = entry.getValue().callback;
IBinder binder = toBinder(callback);
- binder.unlinkToDeath(entry.getValue().deathRecipient, 0);
+ try {
+ binder.unlinkToDeath(entry.getValue().deathRecipient, 0);
+ } catch (NoSuchElementException e) {
+ Log.i(TAG, "stopAdvertisingSets() - link does not exist");
+ }
it.remove();
if (advertiser_id < 0) {
diff --git a/src/com/android/bluetooth/gatt/GattService.java b/src/com/android/bluetooth/gatt/GattService.java
index 6131bdd93..d9c3bbc6b 100644
--- a/src/com/android/bluetooth/gatt/GattService.java
+++ b/src/com/android/bluetooth/gatt/GattService.java
@@ -525,6 +525,11 @@ public class GattService extends ProfileService {
return client;
}
}
+ for (ScanClient client : mScanManager.getPendingScanQueue()) {
+ if (client.scannerId == clientIf) {
+ return client;
+ }
+ }
return null;
}
}
@@ -2487,6 +2492,7 @@ public class GattService extends ProfileService {
app.recordScanStart(settings, filters, isFilteredScan, isCallbackScan, scannerId);
}
+ mScanManager.addPendingScanToQueue(scanClient);
mScanManager.startScan(scanClient);
}
diff --git a/src/com/android/bluetooth/gatt/ScanManager.java b/src/com/android/bluetooth/gatt/ScanManager.java
index 39f804370..826d368da 100644
--- a/src/com/android/bluetooth/gatt/ScanManager.java
+++ b/src/com/android/bluetooth/gatt/ScanManager.java
@@ -107,6 +107,7 @@ public class ScanManager {
private Set<ScanClient> mRegularScanClients;
private Set<ScanClient> mBatchClients;
private Set<ScanClient> mSuspendedScanClients;
+ private Set<ScanClient> mPendingScanClients;
private HashMap<Integer, Integer> mPriorityMap = new HashMap<Integer, Integer>();
private CountDownLatch mLatch;
@@ -144,6 +145,8 @@ public class ScanManager {
mRegularScanClients =
Collections.newSetFromMap(new ConcurrentHashMap<ScanClient, Boolean>());
mBatchClients = Collections.newSetFromMap(new ConcurrentHashMap<ScanClient, Boolean>());
+ mPendingScanClients =
+ Collections.newSetFromMap(new ConcurrentHashMap<ScanClient, Boolean>());
mSuspendedScanClients =
Collections.newSetFromMap(new ConcurrentHashMap<ScanClient, Boolean>());
mService = service;
@@ -179,6 +182,7 @@ public class ScanManager {
mRegularScanClients.clear();
mBatchClients.clear();
mSuspendedScanClients.clear();
+ mPendingScanClients.clear();
mScanNative.cleanup();
if (mActivityManager != null) {
@@ -234,6 +238,19 @@ public class ScanManager {
}
/**
+ * Returns the pending scan queue.
+ */
+ Set<ScanClient> getPendingScanQueue() {
+ return mPendingScanClients;
+ }
+
+ /**
+ * Adding the pending scan to the queue.
+ */
+ void addPendingScanToQueue(ScanClient client) {
+ mPendingScanClients.add(client);
+ }
+ /**
* Returns a set of full batch scan clients.
*/
Set<ScanClient> getFullBatchScanQueue() {
@@ -385,6 +402,8 @@ public class ScanManager {
return;
}
+ if (mPendingScanClients.contains(client))
+ mPendingScanClients.remove(client);
// Begin scan operations.
if (isBatchClient(client)) {
mBatchClients.add(client);
diff --git a/src/com/android/bluetooth/hfp/HeadsetService.java b/src/com/android/bluetooth/hfp/HeadsetService.java
index ac9a6c29c..b7852cd85 100644
--- a/src/com/android/bluetooth/hfp/HeadsetService.java
+++ b/src/com/android/bluetooth/hfp/HeadsetService.java
@@ -2963,6 +2963,7 @@ public class HeadsetService extends ProfileService {
@Override
public void dump(StringBuilder sb) {
+ boolean isScoOn = mSystemInterface.getAudioManager().isBluetoothScoOn();
synchronized (mStateMachines) {
super.dump(sb);
ProfileService.println(sb, "mMaxHeadsetConnections: " + mMaxHeadsetConnections);
@@ -2983,9 +2984,7 @@ public class HeadsetService extends ProfileService {
ProfileService.println(sb, "mForceScoAudio: " + mForceScoAudio);
ProfileService.println(sb, "mCreated: " + mCreated);
ProfileService.println(sb, "mStarted: " + mStarted);
- ProfileService.println(sb,
- "AudioManager.isBluetoothScoOn(): " + mSystemInterface.getAudioManager()
- .isBluetoothScoOn());
+ ProfileService.println(sb, "AudioManager.isBluetoothScoOn(): " + isScoOn);
ProfileService.println(sb, "Telecom.isInCall(): " + mSystemInterface.isInCall());
ProfileService.println(sb, "Telecom.isRinging(): " + mSystemInterface.isRinging());
for (HeadsetStateMachine stateMachine : mStateMachines.values()) {
diff --git a/src/com/android/bluetooth/hfp/HeadsetStateMachine.java b/src/com/android/bluetooth/hfp/HeadsetStateMachine.java
index 2b016a458..45da973a8 100644
--- a/src/com/android/bluetooth/hfp/HeadsetStateMachine.java
+++ b/src/com/android/bluetooth/hfp/HeadsetStateMachine.java
@@ -2485,7 +2485,8 @@ public class HeadsetStateMachine extends StateMachine {
it.remove();
}
}
- mHeadsetService.getHfpA2DPSyncInterface().releaseA2DP(mDevice);
+ Log.d(TAG, "Resume A2DP by sending RESUME_A2DP message");
+ sendMessage(RESUME_A2DP);
}
Log.d(TAG, "Exit processIntentA2dpPlayStateChanged()");
}
diff --git a/src/com/android/bluetooth/telephony/BluetoothInCallService.java b/src/com/android/bluetooth/telephony/BluetoothInCallService.java
index 9ed9f6879..13c7ad357 100644
--- a/src/com/android/bluetooth/telephony/BluetoothInCallService.java
+++ b/src/com/android/bluetooth/telephony/BluetoothInCallService.java
@@ -243,10 +243,10 @@ public class BluetoothInCallService extends InCallService {
}
public void onDetailsChanged(BluetoothCall call, Call.Details details) {
- Log.i(TAG, "onDetailsChanged call: " + call + "details: " + details);
if (mCallInfo.isNullCall(call)) {
return;
}
+ Log.i(TAG, "onDetailsChanged call: " + call + "details: " + details);
if (call.isExternalCall()) {
onCallRemoved(call);
} else {
@@ -291,6 +291,9 @@ public class BluetoothInCallService extends InCallService {
}
public void onChildrenChanged(BluetoothCall call, List<BluetoothCall> children) {
+ if (mCallInfo.isNullCall(call)) {
+ return;
+ }
if (call.isExternalCall()) {
return;
}