diff options
author | Linux Build Service Account <lnxbuild@localhost> | 2022-08-10 11:15:16 -0700 |
---|---|---|
committer | Linux Build Service Account <lnxbuild@localhost> | 2022-08-10 11:15:16 -0700 |
commit | fd44afebdcad9cfcaf4b29e979f1d6acc6c917f2 (patch) | |
tree | 05fcdd928bf675083b34ec65486e95226d9a2054 | |
parent | 7b2835c88cb8d1733d60d7a558d80d9fc0d05150 (diff) | |
parent | 7c361396d2c2fbf58423d45d5c54792a69bade75 (diff) |
Merge 7c361396d2c2fbf58423d45d5c54792a69bade75 on remote branch
Change-Id: Ib46c197d57679181b505738ad576adf0779e68a0
46 files changed, 627 insertions, 478 deletions
diff --git a/android/app/jni/com_android_bluetooth_gatt.cpp b/android/app/jni/com_android_bluetooth_gatt.cpp index cebab548c5..46da457006 100644 --- a/android/app/jni/com_android_bluetooth_gatt.cpp +++ b/android/app/jni/com_android_bluetooth_gatt.cpp @@ -349,14 +349,8 @@ void btgattc_write_characteristic_cb(int conn_id, int status, uint16_t handle, if (!sCallbackEnv.valid()) return; ScopedLocalRef<jbyteArray> jb(sCallbackEnv.get(), NULL); - if (status == 0) { // Success - jb.reset(sCallbackEnv->NewByteArray(len)); - sCallbackEnv->SetByteArrayRegion(jb.get(), 0, len, (jbyte*)value); - } else { - uint8_t value = 0; - jb.reset(sCallbackEnv->NewByteArray(1)); - sCallbackEnv->SetByteArrayRegion(jb.get(), 0, 1, (jbyte*)&value); - } + jb.reset(sCallbackEnv->NewByteArray(len)); + sCallbackEnv->SetByteArrayRegion(jb.get(), 0, len, (jbyte*)value); sCallbackEnv->CallVoidMethod(mCallbacksObj, method_onWriteCharacteristic, conn_id, status, handle, jb.get()); } @@ -393,14 +387,8 @@ void btgattc_write_descriptor_cb(int conn_id, int status, uint16_t handle, if (!sCallbackEnv.valid()) return; ScopedLocalRef<jbyteArray> jb(sCallbackEnv.get(), NULL); - if (status == 0) { // Success - jb.reset(sCallbackEnv->NewByteArray(len)); - sCallbackEnv->SetByteArrayRegion(jb.get(), 0, len, (jbyte*)value); - } else { - uint8_t value = 0; - jb.reset(sCallbackEnv->NewByteArray(1)); - sCallbackEnv->SetByteArrayRegion(jb.get(), 0, 1, (jbyte*)&value); - } + jb.reset(sCallbackEnv->NewByteArray(len)); + sCallbackEnv->SetByteArrayRegion(jb.get(), 0, len, (jbyte*)value); sCallbackEnv->CallVoidMethod(mCallbacksObj, method_onWriteDescriptor, conn_id, status, handle, jb.get()); } diff --git a/android/app/src/com/android/bluetooth/bass_client/BassClientStateMachine.java b/android/app/src/com/android/bluetooth/bass_client/BassClientStateMachine.java index 78ec39540b..cdae78d979 100755 --- a/android/app/src/com/android/bluetooth/bass_client/BassClientStateMachine.java +++ b/android/app/src/com/android/bluetooth/bass_client/BassClientStateMachine.java @@ -461,7 +461,6 @@ public class BassClientStateMachine extends StateMachine { int broadcastId = result.getBroadcastId(); log("broadcast ID: " + broadcastId); metaData.setBroadcastId(broadcastId); - metaData.setSourceAdvertisingSid(result.getAdvSid()); } return metaData.build(); } @@ -679,7 +678,7 @@ public class BassClientStateMachine extends StateMachine { offset += BassConstants.BCAST_RCVR_STATE_BIS_SYNC_SIZE; log("BIS index byte array: "); BassUtils.printByteArray(audioSyncIndex); - ByteBuffer wrapped = ByteBuffer.wrap(audioSyncIndex); + ByteBuffer wrapped = ByteBuffer.wrap(reverseBytes(audioSyncIndex)); audioSyncState.add((long) wrapped.getInt()); byte metaDataLength = receiverState[offset++]; diff --git a/apex/Android.bp b/apex/Android.bp index e6fd115971..3515453121 100644 --- a/apex/Android.bp +++ b/apex/Android.bp @@ -52,6 +52,7 @@ apex { manifest: "apex_manifest.json", bootclasspath_fragments: ["com.android.btservices-bootclasspath-fragment"], systemserverclasspath_fragments: ["com.android.btservices-systemserverclasspath-fragment"], + compat_configs: ["bluetooth-compat-config"], apps: ["Bluetooth"], multilib: { diff --git a/framework/java/android/bluetooth/BluetoothA2dp.java b/framework/java/android/bluetooth/BluetoothA2dp.java index a3dece72b3..c1d4fa7492 100644 --- a/framework/java/android/bluetooth/BluetoothA2dp.java +++ b/framework/java/android/bluetooth/BluetoothA2dp.java @@ -336,7 +336,7 @@ public final class BluetoothA2dp implements BluetoothProfile { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.connectWithAttribution(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -382,7 +382,7 @@ public final class BluetoothA2dp implements BluetoothProfile { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.disconnectWithAttribution(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -408,7 +408,7 @@ public final class BluetoothA2dp implements BluetoothProfile { } else if (isEnabled()) { try { final SynchronousResultReceiver<List<BluetoothDevice>> recv = - new SynchronousResultReceiver(); + SynchronousResultReceiver.get(); service.getConnectedDevicesWithAttribution(mAttributionSource, recv); return Attributable.setAttributionSource( recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue), @@ -436,7 +436,7 @@ public final class BluetoothA2dp implements BluetoothProfile { } else if (isEnabled()) { try { final SynchronousResultReceiver<List<BluetoothDevice>> recv = - new SynchronousResultReceiver(); + SynchronousResultReceiver.get(); service.getDevicesMatchingConnectionStatesWithAttribution(states, mAttributionSource, recv); return Attributable.setAttributionSource( @@ -464,7 +464,7 @@ public final class BluetoothA2dp implements BluetoothProfile { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); service.getConnectionStateWithAttribution(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -506,7 +506,7 @@ public final class BluetoothA2dp implements BluetoothProfile { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled() && ((device == null) || isValidDevice(device))) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.setActiveDevice(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -538,7 +538,7 @@ public final class BluetoothA2dp implements BluetoothProfile { } else if (isEnabled()) { try { final SynchronousResultReceiver<BluetoothDevice> recv = - new SynchronousResultReceiver(); + SynchronousResultReceiver.get(); service.getActiveDevice(mAttributionSource, recv); return Attributable.setAttributionSource( recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue), @@ -601,7 +601,7 @@ public final class BluetoothA2dp implements BluetoothProfile { && (connectionPolicy == BluetoothProfile.CONNECTION_POLICY_FORBIDDEN || connectionPolicy == BluetoothProfile.CONNECTION_POLICY_ALLOWED)) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.setConnectionPolicy(device, connectionPolicy, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -656,7 +656,7 @@ public final class BluetoothA2dp implements BluetoothProfile { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); service.getConnectionPolicy(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -682,7 +682,7 @@ public final class BluetoothA2dp implements BluetoothProfile { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled()) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.isAvrcpAbsoluteVolumeSupported(recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -736,7 +736,7 @@ public final class BluetoothA2dp implements BluetoothProfile { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.isA2dpPlaying(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -795,7 +795,7 @@ public final class BluetoothA2dp implements BluetoothProfile { } else if (isEnabled() && isValidDevice(device)) { try { final SynchronousResultReceiver<BluetoothCodecStatus> recv = - new SynchronousResultReceiver(); + SynchronousResultReceiver.get(); service.getCodecStatus(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -952,7 +952,7 @@ public final class BluetoothA2dp implements BluetoothProfile { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); service.isOptionalCodecsSupported(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -989,7 +989,7 @@ public final class BluetoothA2dp implements BluetoothProfile { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); service.isOptionalCodecsEnabled(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -1065,7 +1065,7 @@ public final class BluetoothA2dp implements BluetoothProfile { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled()) { try { - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); service.getDynamicBufferSupport(mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -1101,7 +1101,7 @@ public final class BluetoothA2dp implements BluetoothProfile { } else if (isEnabled()) { try { final SynchronousResultReceiver<BufferConstraints> recv = - new SynchronousResultReceiver(); + SynchronousResultReceiver.get(); service.getBufferConstraints(mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -1140,7 +1140,7 @@ public final class BluetoothA2dp implements BluetoothProfile { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled()) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.setBufferLengthMillis(codec, value, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { diff --git a/framework/java/android/bluetooth/BluetoothA2dpSink.java b/framework/java/android/bluetooth/BluetoothA2dpSink.java index 59416818ce..67042decc9 100755 --- a/framework/java/android/bluetooth/BluetoothA2dpSink.java +++ b/framework/java/android/bluetooth/BluetoothA2dpSink.java @@ -150,7 +150,7 @@ public final class BluetoothA2dpSink implements BluetoothProfile { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.connect(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -195,7 +195,7 @@ public final class BluetoothA2dpSink implements BluetoothProfile { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.disconnect(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -223,7 +223,7 @@ public final class BluetoothA2dpSink implements BluetoothProfile { } else if (isEnabled()) { try { final SynchronousResultReceiver<List<BluetoothDevice>> recv = - new SynchronousResultReceiver(); + SynchronousResultReceiver.get(); service.getConnectedDevices(mAttributionSource, recv); return Attributable.setAttributionSource( recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue), @@ -253,7 +253,7 @@ public final class BluetoothA2dpSink implements BluetoothProfile { } else if (isEnabled()) { try { final SynchronousResultReceiver<List<BluetoothDevice>> recv = - new SynchronousResultReceiver(); + SynchronousResultReceiver.get(); service.getDevicesMatchingConnectionStates(states, mAttributionSource, recv); return Attributable.setAttributionSource( recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue), @@ -282,7 +282,7 @@ public final class BluetoothA2dpSink implements BluetoothProfile { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); service.getConnectionState(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -316,7 +316,7 @@ public final class BluetoothA2dpSink implements BluetoothProfile { } else if (isEnabled() && isValidDevice(device)) { try { final SynchronousResultReceiver<BluetoothAudioConfig> recv = - new SynchronousResultReceiver(); + SynchronousResultReceiver.get(); service.getAudioConfig(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -377,7 +377,7 @@ public final class BluetoothA2dpSink implements BluetoothProfile { && (connectionPolicy == BluetoothProfile.CONNECTION_POLICY_FORBIDDEN || connectionPolicy == BluetoothProfile.CONNECTION_POLICY_ALLOWED)) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.setConnectionPolicy(device, connectionPolicy, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -433,7 +433,7 @@ public final class BluetoothA2dpSink implements BluetoothProfile { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); service.getConnectionPolicy(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -466,7 +466,7 @@ public final class BluetoothA2dpSink implements BluetoothProfile { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.isA2dpPlaying(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { diff --git a/framework/java/android/bluetooth/BluetoothAdapter.java b/framework/java/android/bluetooth/BluetoothAdapter.java index 67515bef5c..4d664c97f2 100644 --- a/framework/java/android/bluetooth/BluetoothAdapter.java +++ b/framework/java/android/bluetooth/BluetoothAdapter.java @@ -1280,7 +1280,7 @@ public final class BluetoothAdapter { @Override public @InternalAdapterState Integer apply(IBluetooth serviceQuery) { try { - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); serviceQuery.getState(recv); return recv.awaitResultNoInterrupt(getSyncTimeout()) .getValue(BluetoothAdapter.STATE_OFF); @@ -1569,7 +1569,7 @@ public final class BluetoothAdapter { @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADVERTISE) public int getNameLengthForAdvertise() { try { - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); mService.getNameLengthForAdvertise(mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(-1); } catch (RemoteException | TimeoutException e) { @@ -1594,7 +1594,7 @@ public final class BluetoothAdapter { try { mServiceLock.readLock().lock(); if (mService != null) { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); mService.factoryReset(mAttributionSource, recv); if (recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(false) && mManagerService != null @@ -1659,7 +1659,7 @@ public final class BluetoothAdapter { mServiceLock.readLock().lock(); try { final SynchronousResultReceiver<List<ParcelUuid>> recv = - new SynchronousResultReceiver(); + SynchronousResultReceiver.get(); mService.getUuids(mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -1694,7 +1694,7 @@ public final class BluetoothAdapter { try { mServiceLock.readLock().lock(); if (mService != null) { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); mService.setName(name, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(false); } @@ -1725,7 +1725,7 @@ public final class BluetoothAdapter { mServiceLock.readLock().lock(); if (mService != null) { final SynchronousResultReceiver<BluetoothClass> recv = - new SynchronousResultReceiver(); + SynchronousResultReceiver.get(); mService.getBluetoothClass(mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); } @@ -1760,7 +1760,7 @@ public final class BluetoothAdapter { try { mServiceLock.readLock().lock(); if (mService != null) { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); mService.setBluetoothClass(bluetoothClass, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(false); } @@ -1791,7 +1791,7 @@ public final class BluetoothAdapter { mServiceLock.readLock().lock(); if (mService != null) { final SynchronousResultReceiver<Integer> recv = - new SynchronousResultReceiver(); + SynchronousResultReceiver.get(); mService.getIoCapability(mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()) .getValue(BluetoothAdapter.IO_CAPABILITY_UNKNOWN); @@ -1827,7 +1827,7 @@ public final class BluetoothAdapter { try { mServiceLock.readLock().lock(); if (mService != null) { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); mService.setIoCapability(capability, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(false); } @@ -1857,7 +1857,7 @@ public final class BluetoothAdapter { try { mServiceLock.readLock().lock(); if (mService != null) { - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); mService.getLeIoCapability(mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()) .getValue(BluetoothAdapter.IO_CAPABILITY_UNKNOWN); @@ -1893,7 +1893,7 @@ public final class BluetoothAdapter { try { mServiceLock.readLock().lock(); if (mService != null) { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); mService.setLeIoCapability(capability, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(false); } @@ -1931,7 +1931,7 @@ public final class BluetoothAdapter { try { mServiceLock.readLock().lock(); if (mService != null) { - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver(); + SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); mService.getScanMode(mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(SCAN_MODE_NONE); } @@ -1980,7 +1980,7 @@ public final class BluetoothAdapter { try { mServiceLock.readLock().lock(); if (mService != null) { - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); mService.setScanMode(mode, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()) .getValue(BluetoothStatusCodes.ERROR_UNKNOWN); @@ -2009,7 +2009,7 @@ public final class BluetoothAdapter { try { mServiceLock.readLock().lock(); if (mService != null) { - final SynchronousResultReceiver<Long> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Long> recv = SynchronousResultReceiver.get(); mService.getDiscoverableTimeout(mAttributionSource, recv); long timeout = recv.awaitResultNoInterrupt(getSyncTimeout()).getValue((long) -1); return (timeout == -1) ? null : Duration.ofSeconds(timeout); @@ -2056,7 +2056,7 @@ public final class BluetoothAdapter { try { mServiceLock.readLock().lock(); if (mService != null) { - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); mService.setDiscoverableTimeout(timeout.toSeconds(), mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()) .getValue(BluetoothStatusCodes.ERROR_UNKNOWN); @@ -2089,7 +2089,7 @@ public final class BluetoothAdapter { try { mServiceLock.readLock().lock(); if (mService != null) { - final SynchronousResultReceiver<Long> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Long> recv = SynchronousResultReceiver.get(); mService.getDiscoveryEndMillis(mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue((long) -1); } @@ -2143,7 +2143,7 @@ public final class BluetoothAdapter { try { mServiceLock.readLock().lock(); if (mService != null) { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); mService.startDiscovery(mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(false); } @@ -2181,7 +2181,7 @@ public final class BluetoothAdapter { try { mServiceLock.readLock().lock(); if (mService != null) { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); mService.cancelDiscovery(mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(false); } @@ -2221,7 +2221,7 @@ public final class BluetoothAdapter { try { mServiceLock.readLock().lock(); if (mService != null) { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); mService.isDiscovering(mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(false); } @@ -2266,7 +2266,7 @@ public final class BluetoothAdapter { mServiceLock.readLock().lock(); if (mService != null) { if (DBG) Log.d(TAG, "removeActiveDevice, profiles: " + profiles); - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); mService.removeActiveDevice(profiles, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(false); } @@ -2320,7 +2320,7 @@ public final class BluetoothAdapter { if (DBG) { Log.d(TAG, "setActiveDevice, device: " + device + ", profiles: " + profiles); } - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); mService.setActiveDevice(device, profiles, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(false); } @@ -2385,7 +2385,7 @@ public final class BluetoothAdapter { + BluetoothProfile.getProfileName(profile) + ")"); } final SynchronousResultReceiver<List<BluetoothDevice>> recv = - new SynchronousResultReceiver(); + SynchronousResultReceiver.get(); mService.getActiveDevices(profile, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(new ArrayList<>()); } @@ -2412,7 +2412,7 @@ public final class BluetoothAdapter { try { mServiceLock.readLock().lock(); if (mService != null) { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); mService.isMultiAdvertisementSupported(recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(false); } @@ -2452,7 +2452,7 @@ public final class BluetoothAdapter { @Override public Boolean apply(IBluetooth serviceQuery) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); serviceQuery.isOffloadedFilteringSupported(recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(false); } catch (RemoteException | TimeoutException e) { @@ -2516,7 +2516,7 @@ public final class BluetoothAdapter { try { mServiceLock.readLock().lock(); if (mService != null) { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); mService.isOffloadedScanBatchingSupported(recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(false); } @@ -2542,7 +2542,7 @@ public final class BluetoothAdapter { try { mServiceLock.readLock().lock(); if (mService != null) { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); mService.isLe2MPhySupported(recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(false); } @@ -2568,7 +2568,7 @@ public final class BluetoothAdapter { try { mServiceLock.readLock().lock(); if (mService != null) { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); mService.isLeCodedPhySupported(recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(false); } @@ -2594,7 +2594,7 @@ public final class BluetoothAdapter { try { mServiceLock.readLock().lock(); if (mService != null) { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); mService.isLeExtendedAdvertisingSupported(recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(false); } @@ -2620,7 +2620,7 @@ public final class BluetoothAdapter { try { mServiceLock.readLock().lock(); if (mService != null) { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); mService.isLePeriodicAdvertisingSupported(recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(false); } @@ -2658,7 +2658,7 @@ public final class BluetoothAdapter { try { mServiceLock.readLock().lock(); if (mService != null) { - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); mService.isLeAudioSupported(recv); return recv.awaitResultNoInterrupt(getSyncTimeout()) .getValue(BluetoothStatusCodes.ERROR_UNKNOWN); @@ -2692,7 +2692,7 @@ public final class BluetoothAdapter { try { mServiceLock.readLock().lock(); if (mService != null) { - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); mService.isLeAudioBroadcastSourceSupported(recv); return recv.awaitResultNoInterrupt(getSyncTimeout()) .getValue(BluetoothStatusCodes.ERROR_UNKNOWN); @@ -2727,7 +2727,7 @@ public final class BluetoothAdapter { try { mServiceLock.readLock().lock(); if (mService != null) { - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); mService.isLeAudioBroadcastAssistantSupported(recv); return recv.awaitResultNoInterrupt(getSyncTimeout()) .getValue(BluetoothStatusCodes.ERROR_UNKNOWN); @@ -2760,7 +2760,7 @@ public final class BluetoothAdapter { try { mServiceLock.readLock().lock(); if (mService != null) { - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); mService.getLeMaximumAdvertisingDataLength(recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(0); } @@ -2807,7 +2807,7 @@ public final class BluetoothAdapter { try { mServiceLock.readLock().lock(); if (mService != null) { - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); mService.getMaxConnectedAudioDevices(mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(1); } @@ -2837,7 +2837,7 @@ public final class BluetoothAdapter { // BLE is not supported return false; } - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); iGatt.numHwTrackFiltersAvailable(mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(0) != 0; } catch (TimeoutException | RemoteException e) { @@ -2913,7 +2913,7 @@ public final class BluetoothAdapter { mServiceLock.readLock().lock(); if (mService != null) { final SynchronousResultReceiver<List<BluetoothDevice>> recv = - new SynchronousResultReceiver(); + SynchronousResultReceiver.get(); mService.getMostRecentlyConnectedDevices(mAttributionSource, recv); return Attributable.setAttributionSource( recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(new ArrayList<>()), @@ -2949,7 +2949,7 @@ public final class BluetoothAdapter { mServiceLock.readLock().lock(); if (mService != null) { final SynchronousResultReceiver<List<BluetoothDevice>> recv = - new SynchronousResultReceiver(); + SynchronousResultReceiver.get(); mService.getBondedDevices(mAttributionSource, recv); return toDeviceSet(Attributable.setAttributionSource( recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(new ArrayList<>()), @@ -2986,7 +2986,7 @@ public final class BluetoothAdapter { try { synchronized (mManagerCallback) { if (mService != null) { - final SynchronousResultReceiver<Long> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Long> recv = SynchronousResultReceiver.get(); mService.getSupportedProfiles(mAttributionSource, recv); final long supportedProfilesBitMask = recv.awaitResultNoInterrupt(getSyncTimeout()).getValue((long) 0); @@ -3017,7 +3017,7 @@ public final class BluetoothAdapter { public Integer apply(IBluetooth serviceQuery) { try { final SynchronousResultReceiver<Integer> recv = - new SynchronousResultReceiver(); + SynchronousResultReceiver.get(); serviceQuery.getAdapterConnectionState(recv); return recv.awaitResultNoInterrupt(getSyncTimeout()) .getValue(STATE_DISCONNECTED); @@ -3083,7 +3083,7 @@ public final class BluetoothAdapter { final int defaultValue = STATE_DISCONNECTED; try { final SynchronousResultReceiver<Integer> recv = - new SynchronousResultReceiver(); + SynchronousResultReceiver.get(); pairQuery.first.getProfileConnectionState(pairQuery.second, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -3275,7 +3275,7 @@ public final class BluetoothAdapter { throw new IllegalArgumentException("The provided PendingIntent is not immutable"); } try { - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); mService.startRfcommListener( name, new ParcelUuid(uuid), pendingIntent, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()) @@ -3304,7 +3304,7 @@ public final class BluetoothAdapter { @RfcommListenerResult public int stopRfcommServer(@NonNull UUID uuid) { try { - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); mService.stopRfcommListener(new ParcelUuid(uuid), mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()) .getValue(BluetoothStatusCodes.ERROR_PROFILE_SERVICE_NOT_BOUND); @@ -3340,7 +3340,7 @@ public final class BluetoothAdapter { try { final SynchronousResultReceiver<IncomingRfcommSocketInfo> recv = - new SynchronousResultReceiver(); + SynchronousResultReceiver.get(); mService.retrievePendingSocketForServiceRecord(new ParcelUuid(uuid), mAttributionSource, recv); socketInfo = recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); @@ -3982,7 +3982,7 @@ public final class BluetoothAdapter { Class<?> broadcastClass = null; Method broadcastClose = null; try { - broadcastClass = Class.forName("android.bluetooth.BluetootBroadcast"); + broadcastClass = Class.forName("android.bluetooth.BluetoothBroadcast"); } catch (ClassNotFoundException ex) { Log.e(TAG, "no BluetoothBroadcast: exists"); } @@ -4081,7 +4081,7 @@ public final class BluetoothAdapter { mMetadataListeners.forEach((device, pair) -> { try { final SynchronousResultReceiver recv = - new SynchronousResultReceiver(); + SynchronousResultReceiver.get(); mService.registerMetadataListener(mBluetoothMetadataListener, device, mAttributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); @@ -4096,7 +4096,7 @@ public final class BluetoothAdapter { if (!mBluetoothConnectionCallbackExecutorMap.isEmpty()) { try { final SynchronousResultReceiver recv = - new SynchronousResultReceiver(); + SynchronousResultReceiver.get(); if (mService != null) { mService.registerBluetoothConnectionCallback(mConnectionCallback, mAttributionSource, recv); @@ -4288,7 +4288,7 @@ public final class BluetoothAdapter { callback.onError(BluetoothStatusCodes.ERROR_BLUETOOTH_NOT_ENABLED); } else { try { - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); mService.generateLocalOobData(transport, new WrappedOobDataCallback(callback, executor), mAttributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); @@ -4907,7 +4907,7 @@ public final class BluetoothAdapter { boolean ret = false; try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.registerMetadataListener(mBluetoothMetadataListener, device, mAttributionSource, recv); ret = recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(false); @@ -4975,7 +4975,7 @@ public final class BluetoothAdapter { return true; } try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.unregisterMetadataListener(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(false); } catch (RemoteException | TimeoutException e) { @@ -5061,7 +5061,7 @@ public final class BluetoothAdapter { mServiceLock.readLock().lock(); if (mService != null) { final SynchronousResultReceiver<Boolean> recv = - new SynchronousResultReceiver(); + SynchronousResultReceiver.get(); mService.registerBluetoothConnectionCallback(mConnectionCallback, mAttributionSource, recv); if (!recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(false)) { @@ -5120,7 +5120,7 @@ public final class BluetoothAdapter { try { mServiceLock.readLock().lock(); if (mService != null) { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); mService.unregisterBluetoothConnectionCallback(mConnectionCallback, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(false); diff --git a/framework/java/android/bluetooth/BluetoothAvrcpController.java b/framework/java/android/bluetooth/BluetoothAvrcpController.java index 81fc3e11e9..81ad3c6ee7 100644 --- a/framework/java/android/bluetooth/BluetoothAvrcpController.java +++ b/framework/java/android/bluetooth/BluetoothAvrcpController.java @@ -141,7 +141,7 @@ public final class BluetoothAvrcpController implements BluetoothProfile { } else if (isEnabled()) { try { final SynchronousResultReceiver<List<BluetoothDevice>> recv = - new SynchronousResultReceiver(); + SynchronousResultReceiver.get(); service.getConnectedDevices(mAttributionSource, recv); return Attributable.setAttributionSource( recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue), @@ -169,7 +169,7 @@ public final class BluetoothAvrcpController implements BluetoothProfile { } else if (isEnabled()) { try { final SynchronousResultReceiver<List<BluetoothDevice>> recv = - new SynchronousResultReceiver(); + SynchronousResultReceiver.get(); service.getDevicesMatchingConnectionStates(states, mAttributionSource, recv); return Attributable.setAttributionSource( recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue), @@ -196,7 +196,7 @@ public final class BluetoothAvrcpController implements BluetoothProfile { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); service.getConnectionState(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -224,7 +224,7 @@ public final class BluetoothAvrcpController implements BluetoothProfile { } else if (isEnabled()) { try { final SynchronousResultReceiver<BluetoothAvrcpPlayerSettings> recv = - new SynchronousResultReceiver(); + SynchronousResultReceiver.get(); service.getPlayerSettings(device, mAttributionSource, recv); settings = recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -249,7 +249,7 @@ public final class BluetoothAvrcpController implements BluetoothProfile { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled()) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.setPlayerApplicationSetting(plAppSetting, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -274,7 +274,7 @@ public final class BluetoothAvrcpController implements BluetoothProfile { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled()) { try { - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); service.sendGroupNavigationCmd(device, keyCode, keyState, mAttributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); return; diff --git a/framework/java/android/bluetooth/BluetoothCsipSetCoordinator.java b/framework/java/android/bluetooth/BluetoothCsipSetCoordinator.java index 16e899dced..0c5ebea608 100644 --- a/framework/java/android/bluetooth/BluetoothCsipSetCoordinator.java +++ b/framework/java/android/bluetooth/BluetoothCsipSetCoordinator.java @@ -278,7 +278,7 @@ public final class BluetoothCsipSetCoordinator implements BluetoothProfile, Auto IBluetoothCsipSetCoordinatorLockCallback delegate = new BluetoothCsipSetCoordinatorLockCallbackDelegate(executor, callback); try { - final SynchronousResultReceiver<ParcelUuid> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<ParcelUuid> recv = SynchronousResultReceiver.get(); service.lockGroup(groupId, delegate, mAttributionSource, recv); final ParcelUuid ret = recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); return ret == null ? defaultValue : ret.getUuid(); @@ -311,7 +311,7 @@ public final class BluetoothCsipSetCoordinator implements BluetoothProfile, Auto if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled()) { try { - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); service.unlockGroup(new ParcelUuid(lockUuid), mAttributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); return true; @@ -343,7 +343,7 @@ public final class BluetoothCsipSetCoordinator implements BluetoothProfile, Auto if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled()) { try { - final SynchronousResultReceiver<Map> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Map> recv = SynchronousResultReceiver.get(); service.getGroupUuidMapByDevice(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (TimeoutException e) { @@ -374,7 +374,7 @@ public final class BluetoothCsipSetCoordinator implements BluetoothProfile, Auto } else if (isEnabled()) { try { final SynchronousResultReceiver<List<Integer>> recv = - new SynchronousResultReceiver(); + SynchronousResultReceiver.get(); service.getAllGroupIds(uuid, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (TimeoutException e) { @@ -400,7 +400,7 @@ public final class BluetoothCsipSetCoordinator implements BluetoothProfile, Auto } else if (isEnabled()) { try { final SynchronousResultReceiver<List<BluetoothDevice>> recv = - new SynchronousResultReceiver(); + SynchronousResultReceiver.get(); service.getConnectedDevices(mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (TimeoutException e) { @@ -427,7 +427,7 @@ public final class BluetoothCsipSetCoordinator implements BluetoothProfile, Auto } else if (isEnabled()) { try { final SynchronousResultReceiver<List<BluetoothDevice>> recv = - new SynchronousResultReceiver(); + SynchronousResultReceiver.get(); service.getDevicesMatchingConnectionStates(states, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (TimeoutException e) { @@ -453,7 +453,7 @@ public final class BluetoothCsipSetCoordinator implements BluetoothProfile, Auto if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled()) { try { - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); service.getConnectionState(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (TimeoutException e) { @@ -492,7 +492,7 @@ public final class BluetoothCsipSetCoordinator implements BluetoothProfile, Auto && (connectionPolicy == BluetoothProfile.CONNECTION_POLICY_FORBIDDEN || connectionPolicy == BluetoothProfile.CONNECTION_POLICY_ALLOWED)) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.setConnectionPolicy(device, connectionPolicy, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (TimeoutException e) { @@ -527,7 +527,7 @@ public final class BluetoothCsipSetCoordinator implements BluetoothProfile, Auto if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); service.getConnectionPolicy(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (TimeoutException e) { diff --git a/framework/java/android/bluetooth/BluetoothDevice.java b/framework/java/android/bluetooth/BluetoothDevice.java index d2921cf170..4abe7c4dbd 100644 --- a/framework/java/android/bluetooth/BluetoothDevice.java +++ b/framework/java/android/bluetooth/BluetoothDevice.java @@ -1642,7 +1642,7 @@ public final class BluetoothDevice implements Parcelable, Attributable { Log.e(TAG, "BT not enabled. Cannot get identity address"); } else { try { - final SynchronousResultReceiver<String> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<String> recv = SynchronousResultReceiver.get(); service.getIdentityAddress(mAddress, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); } catch (RemoteException | TimeoutException e) { @@ -1673,7 +1673,7 @@ public final class BluetoothDevice implements Parcelable, Attributable { if (DBG) log(Log.getStackTraceString(new Throwable())); } else { try { - final SynchronousResultReceiver<String> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<String> recv = SynchronousResultReceiver.get(); service.getRemoteName(this, mAttributionSource, recv); String name = recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); if (name != null) { @@ -1708,7 +1708,7 @@ public final class BluetoothDevice implements Parcelable, Attributable { if (DBG) log(Log.getStackTraceString(new Throwable())); } else { try { - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); service.getRemoteType(this, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -1737,7 +1737,7 @@ public final class BluetoothDevice implements Parcelable, Attributable { if (DBG) log(Log.getStackTraceString(new Throwable())); } else { try { - final SynchronousResultReceiver<String> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<String> recv = SynchronousResultReceiver.get(); service.getRemoteAliasWithAttribution(this, mAttributionSource, recv); String alias = recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); if (alias == null) { @@ -1798,7 +1798,7 @@ public final class BluetoothDevice implements Parcelable, Attributable { if (DBG) log(Log.getStackTraceString(new Throwable())); } else { try { - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); service.setRemoteAlias(this, alias, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (TimeoutException e) { @@ -1832,7 +1832,7 @@ public final class BluetoothDevice implements Parcelable, Attributable { if (DBG) log(Log.getStackTraceString(new Throwable())); } else { try { - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); service.getBatteryLevel(this, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -1939,7 +1939,7 @@ public final class BluetoothDevice implements Parcelable, Attributable { Log.e(TAG, "Unable to create bond, invalid address " + mAddress); } else { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.createBond(this, transport, remoteP192Data, remoteP256Data, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); @@ -1970,7 +1970,7 @@ public final class BluetoothDevice implements Parcelable, Attributable { if (DBG) log(Log.getStackTraceString(new Throwable())); } else { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.isBondingInitiatedLocally(this, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -2019,7 +2019,7 @@ public final class BluetoothDevice implements Parcelable, Attributable { + " called by pid: " + Process.myPid() + " tid: " + Process.myTid()); try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.cancelBondProcess(this, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -2058,7 +2058,7 @@ public final class BluetoothDevice implements Parcelable, Attributable { + " called by pid: " + Process.myPid() + " tid: " + Process.myTid()); try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.removeBond(this, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -2099,7 +2099,7 @@ public final class BluetoothDevice implements Parcelable, Attributable { } try { final SynchronousResultReceiver<Integer> recv = - new SynchronousResultReceiver(); + SynchronousResultReceiver.get(); pairQuery.first.getBondState(pairQuery.second, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(BOND_NONE); } catch (RemoteException | TimeoutException e) { @@ -2178,7 +2178,7 @@ public final class BluetoothDevice implements Parcelable, Attributable { if (DBG) log(Log.getStackTraceString(new Throwable())); } else { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.canBondWithoutDialog(this, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -2232,7 +2232,7 @@ public final class BluetoothDevice implements Parcelable, Attributable { if (DBG) log(Log.getStackTraceString(new Throwable())); } else { try { - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); service.connectAllEnabledProfiles(this, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (TimeoutException e) { @@ -2279,7 +2279,7 @@ public final class BluetoothDevice implements Parcelable, Attributable { if (DBG) log(Log.getStackTraceString(new Throwable())); } else { try { - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); service.disconnectAllEnabledProfiles(this, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (TimeoutException e) { @@ -2311,7 +2311,7 @@ public final class BluetoothDevice implements Parcelable, Attributable { if (DBG) log(Log.getStackTraceString(new Throwable())); } else { try { - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); service.getConnectionStateWithAttribution(this, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue) != CONNECTION_STATE_DISCONNECTED; @@ -2343,7 +2343,7 @@ public final class BluetoothDevice implements Parcelable, Attributable { if (DBG) log(Log.getStackTraceString(new Throwable())); } else { try { - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); service.getConnectionStateWithAttribution(this, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue) > CONNECTION_STATE_CONNECTED; @@ -2372,7 +2372,7 @@ public final class BluetoothDevice implements Parcelable, Attributable { if (DBG) log(Log.getStackTraceString(new Throwable())); } else { try { - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); service.getRemoteClass(this, mAttributionSource, recv); int classInt = recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); if (classInt == BluetoothClass.ERROR) return null; @@ -2407,7 +2407,7 @@ public final class BluetoothDevice implements Parcelable, Attributable { } else { try { final SynchronousResultReceiver<List<ParcelUuid>> recv = - new SynchronousResultReceiver(); + SynchronousResultReceiver.get(); service.getRemoteUuids(this, mAttributionSource, recv); List<ParcelUuid> parcels = recv.awaitResultNoInterrupt(getSyncTimeout()) .getValue(null); @@ -2473,7 +2473,7 @@ public final class BluetoothDevice implements Parcelable, Attributable { if (DBG) log(Log.getStackTraceString(new Throwable())); } else { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.fetchRemoteUuidsWithAttribution(this, transport, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -2515,7 +2515,7 @@ public final class BluetoothDevice implements Parcelable, Attributable { if (DBG) log(Log.getStackTraceString(new Throwable())); } else { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.sdpSearch(this, uuid, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -2583,7 +2583,7 @@ public final class BluetoothDevice implements Parcelable, Attributable { if (DBG) log(Log.getStackTraceString(new Throwable())); } else { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.setPin(this, true, pin.length, pin, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -2629,7 +2629,7 @@ public final class BluetoothDevice implements Parcelable, Attributable { if (DBG) log(Log.getStackTraceString(new Throwable())); } else { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.setPairingConfirmation(this, confirm, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -2668,7 +2668,7 @@ public final class BluetoothDevice implements Parcelable, Attributable { if (DBG) log(Log.getStackTraceString(new Throwable())); } else { try { - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); service.getPhonebookAccessPermission(this, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -2714,7 +2714,7 @@ public final class BluetoothDevice implements Parcelable, Attributable { throw new IllegalStateException("Bluetooth is not turned ON"); } else { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.setSilenceMode(this, silence, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -2744,7 +2744,7 @@ public final class BluetoothDevice implements Parcelable, Attributable { throw new IllegalStateException("Bluetooth is not turned ON"); } else { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.getSilenceMode(this, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -2776,7 +2776,7 @@ public final class BluetoothDevice implements Parcelable, Attributable { if (DBG) log(Log.getStackTraceString(new Throwable())); } else { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.setPhonebookAccessPermission(this, value, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -2805,7 +2805,7 @@ public final class BluetoothDevice implements Parcelable, Attributable { if (DBG) log(Log.getStackTraceString(new Throwable())); } else { try { - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); service.getMessageAccessPermission(this, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -2842,7 +2842,7 @@ public final class BluetoothDevice implements Parcelable, Attributable { if (DBG) log(Log.getStackTraceString(new Throwable())); } else { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.setMessageAccessPermission(this, value, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -2871,7 +2871,7 @@ public final class BluetoothDevice implements Parcelable, Attributable { if (DBG) log(Log.getStackTraceString(new Throwable())); } else { try { - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); service.getSimAccessPermission(this, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -2904,7 +2904,7 @@ public final class BluetoothDevice implements Parcelable, Attributable { if (DBG) log(Log.getStackTraceString(new Throwable())); } else { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.setSimAccessPermission(this, value, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -3460,7 +3460,7 @@ public final class BluetoothDevice implements Parcelable, Attributable { + ", should not over " + METADATA_MAX_LENGTH); } else { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.setMetadata(this, key, value, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -3492,7 +3492,7 @@ public final class BluetoothDevice implements Parcelable, Attributable { if (DBG) log(Log.getStackTraceString(new Throwable())); } else { try { - final SynchronousResultReceiver<byte[]> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<byte[]> recv = SynchronousResultReceiver.get(); service.getMetadata(this, key, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -3573,7 +3573,7 @@ public final class BluetoothDevice implements Parcelable, Attributable { if (DBG) log(Log.getStackTraceString(new Throwable())); } else { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.allowLowLatencyAudio(allowed, this, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { diff --git a/framework/java/android/bluetooth/BluetoothGatt.java b/framework/java/android/bluetooth/BluetoothGatt.java index edfd8ba91f..22cd999a59 100644 --- a/framework/java/android/bluetooth/BluetoothGatt.java +++ b/framework/java/android/bluetooth/BluetoothGatt.java @@ -270,7 +270,7 @@ public final class BluetoothGatt implements BluetoothProfile { return; } try { - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); // autoConnect is inverse of "isDirect" mService.clientConnect(mClientIf, mDevice.getAddress(), !mAutoConnect, mTransport, mOpportunistic, mPhy, mAttributionSource, recv); @@ -452,7 +452,7 @@ public final class BluetoothGatt implements BluetoothProfile { try { final int authReq = (mAuthRetryState == AUTH_RETRY_STATE_IDLE) ? AUTHENTICATION_NO_MITM : AUTHENTICATION_MITM; - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); mService.readCharacteristic( mClientIf, address, handle, authReq, mAttributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); @@ -520,7 +520,7 @@ public final class BluetoothGatt implements BluetoothProfile { int requestStatus = BluetoothStatusCodes.ERROR_UNKNOWN; for (int i = 0; i < WRITE_CHARACTERISTIC_MAX_RETRIES; i++) { final SynchronousResultReceiver<Integer> recv = - new SynchronousResultReceiver(); + SynchronousResultReceiver.get(); mService.writeCharacteristic(mClientIf, address, handle, characteristic.getWriteType(), authReq, value, mAttributionSource, recv); @@ -615,7 +615,7 @@ public final class BluetoothGatt implements BluetoothProfile { try { final int authReq = (mAuthRetryState == AUTH_RETRY_STATE_IDLE) ? AUTHENTICATION_NO_MITM : AUTHENTICATION_MITM; - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); mService.readDescriptor(mClientIf, address, handle, authReq, mAttributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); @@ -671,7 +671,7 @@ public final class BluetoothGatt implements BluetoothProfile { try { final int authReq = (mAuthRetryState == AUTH_RETRY_STATE_IDLE) ? AUTHENTICATION_NO_MITM : AUTHENTICATION_MITM; - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); mService.writeDescriptor(mClientIf, address, handle, authReq, value, mAttributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); @@ -997,7 +997,7 @@ public final class BluetoothGatt implements BluetoothProfile { if (DBG) Log.d(TAG, "registerApp() - UUID=" + uuid); try { - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); mService.registerClient(new ParcelUuid(uuid), mBluetoothGattCallback, eatt_support, mAttributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); @@ -1021,7 +1021,7 @@ public final class BluetoothGatt implements BluetoothProfile { try { mCallback = null; - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); mService.unregisterClient(mClientIf, mAttributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); mClientIf = 0; @@ -1129,7 +1129,7 @@ public final class BluetoothGatt implements BluetoothProfile { if (mService == null || mClientIf == 0) return; try { - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); mService.clientDisconnect(mClientIf, mDevice.getAddress(), mAttributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); } catch (RemoteException | TimeoutException e) { @@ -1151,7 +1151,7 @@ public final class BluetoothGatt implements BluetoothProfile { public boolean connect() { try { // autoConnect is inverse of "isDirect" - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); mService.clientConnect(mClientIf, mDevice.getAddress(), false, mTransport, mOpportunistic, mPhy, mAttributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); @@ -1184,7 +1184,7 @@ public final class BluetoothGatt implements BluetoothProfile { @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public void setPreferredPhy(int txPhy, int rxPhy, int phyOptions) { try { - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); mService.clientSetPreferredPhy(mClientIf, mDevice.getAddress(), txPhy, rxPhy, phyOptions, mAttributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); @@ -1201,7 +1201,7 @@ public final class BluetoothGatt implements BluetoothProfile { @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public void readPhy() { try { - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); mService.clientReadPhy(mClientIf, mDevice.getAddress(), mAttributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); } catch (RemoteException | TimeoutException e) { @@ -1240,7 +1240,7 @@ public final class BluetoothGatt implements BluetoothProfile { mServices.clear(); try { - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); mService.discoverServices(mClientIf, mDevice.getAddress(), mAttributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); } catch (RemoteException | TimeoutException e) { @@ -1269,7 +1269,7 @@ public final class BluetoothGatt implements BluetoothProfile { mServices.clear(); try { - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); mService.discoverServiceByUuid(mClientIf, mDevice.getAddress(), new ParcelUuid(uuid), mAttributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); @@ -1363,7 +1363,7 @@ public final class BluetoothGatt implements BluetoothProfile { } try { - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); mService.readCharacteristic(mClientIf, device.getAddress(), characteristic.getInstanceId(), AUTHENTICATION_NONE, mAttributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); @@ -1402,7 +1402,7 @@ public final class BluetoothGatt implements BluetoothProfile { } try { - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); mService.readUsingCharacteristicUuid(mClientIf, mDevice.getAddress(), new ParcelUuid(uuid), startHandle, endHandle, AUTHENTICATION_NONE, mAttributionSource, recv); @@ -1511,7 +1511,7 @@ public final class BluetoothGatt implements BluetoothProfile { int requestStatus = BluetoothStatusCodes.ERROR_UNKNOWN; try { for (int i = 0; i < WRITE_CHARACTERISTIC_MAX_RETRIES; i++) { - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); mService.writeCharacteristic(mClientIf, device.getAddress(), characteristic.getInstanceId(), writeType, AUTHENTICATION_NONE, value, mAttributionSource, recv); @@ -1573,7 +1573,7 @@ public final class BluetoothGatt implements BluetoothProfile { } try { - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); mService.readDescriptor(mClientIf, device.getAddress(), descriptor.getInstanceId(), AUTHENTICATION_NONE, mAttributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); @@ -1662,7 +1662,7 @@ public final class BluetoothGatt implements BluetoothProfile { } try { - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); mService.writeDescriptor(mClientIf, device.getAddress(), descriptor.getInstanceId(), AUTHENTICATION_NONE, value, mAttributionSource, recv); @@ -1709,7 +1709,7 @@ public final class BluetoothGatt implements BluetoothProfile { if (mService == null || mClientIf == 0) return false; try { - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); mService.beginReliableWrite(mClientIf, mDevice.getAddress(), mAttributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); } catch (RemoteException | TimeoutException e) { @@ -1744,7 +1744,7 @@ public final class BluetoothGatt implements BluetoothProfile { } try { - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); mService.endReliableWrite(mClientIf, mDevice.getAddress(), true, mAttributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); @@ -1773,7 +1773,7 @@ public final class BluetoothGatt implements BluetoothProfile { if (mService == null || mClientIf == 0) return; try { - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); mService.endReliableWrite(mClientIf, mDevice.getAddress(), false, mAttributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); @@ -1822,7 +1822,7 @@ public final class BluetoothGatt implements BluetoothProfile { if (device == null) return false; try { - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); mService.registerForNotification(mClientIf, device.getAddress(), characteristic.getInstanceId(), enable, mAttributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); @@ -1848,7 +1848,7 @@ public final class BluetoothGatt implements BluetoothProfile { if (mService == null || mClientIf == 0) return false; try { - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); mService.refreshDevice(mClientIf, mDevice.getAddress(), mAttributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); } catch (RemoteException | TimeoutException e) { @@ -1875,7 +1875,7 @@ public final class BluetoothGatt implements BluetoothProfile { if (mService == null || mClientIf == 0) return false; try { - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); mService.readRemoteRssi(mClientIf, mDevice.getAddress(), mAttributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); } catch (RemoteException | TimeoutException e) { @@ -1909,7 +1909,7 @@ public final class BluetoothGatt implements BluetoothProfile { if (mService == null || mClientIf == 0) return false; try { - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); mService.configureMTU(mClientIf, mDevice.getAddress(), mtu, mAttributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); } catch (RemoteException | TimeoutException e) { @@ -1943,7 +1943,7 @@ public final class BluetoothGatt implements BluetoothProfile { if (mService == null || mClientIf == 0) return false; try { - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); mService.connectionParameterUpdate(mClientIf, mDevice.getAddress(), connectionPriority, mAttributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); @@ -1979,7 +1979,7 @@ public final class BluetoothGatt implements BluetoothProfile { if (mService == null || mClientIf == 0) return false; try { - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); mService.leConnectionUpdate(mClientIf, mDevice.getAddress(), minConnectionInterval, maxConnectionInterval, slaveLatency, supervisionTimeout, diff --git a/framework/java/android/bluetooth/BluetoothGattServer.java b/framework/java/android/bluetooth/BluetoothGattServer.java index e2410aab96..81933a7bb9 100644 --- a/framework/java/android/bluetooth/BluetoothGattServer.java +++ b/framework/java/android/bluetooth/BluetoothGattServer.java @@ -558,7 +558,7 @@ public final class BluetoothGattServer implements BluetoothProfile { mCallback = callback; try { - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); mService.registerServer(new ParcelUuid(uuid), mBluetoothGattServerCallback, eatt_support, mAttributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); @@ -595,7 +595,7 @@ public final class BluetoothGattServer implements BluetoothProfile { try { mCallback = null; - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); mService.unregisterServer(mServerIf, mAttributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); mServerIf = 0; @@ -651,7 +651,7 @@ public final class BluetoothGattServer implements BluetoothProfile { try { // autoConnect is inverse of "isDirect" - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); mService.serverConnect(mServerIf, device.getAddress(), !autoConnect, mTransport, mAttributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); @@ -677,7 +677,7 @@ public final class BluetoothGattServer implements BluetoothProfile { if (mService == null || mServerIf == 0) return; try { - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); mService.serverDisconnect(mServerIf, device.getAddress(), mAttributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); } catch (RemoteException | TimeoutException e) { @@ -707,7 +707,7 @@ public final class BluetoothGattServer implements BluetoothProfile { @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public void setPreferredPhy(BluetoothDevice device, int txPhy, int rxPhy, int phyOptions) { try { - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); mService.serverSetPreferredPhy(mServerIf, device.getAddress(), txPhy, rxPhy, phyOptions, mAttributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); @@ -726,7 +726,7 @@ public final class BluetoothGattServer implements BluetoothProfile { @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public void readPhy(BluetoothDevice device) { try { - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); mService.serverReadPhy(mServerIf, device.getAddress(), mAttributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); } catch (RemoteException | TimeoutException e) { @@ -762,7 +762,7 @@ public final class BluetoothGattServer implements BluetoothProfile { if (mService == null || mServerIf == 0) return false; try { - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); mService.sendResponse(mServerIf, device.getAddress(), requestId, status, offset, value, mAttributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); @@ -857,7 +857,7 @@ public final class BluetoothGattServer implements BluetoothProfile { } try { - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); mService.sendNotification(mServerIf, device.getAddress(), characteristic.getInstanceId(), confirm, value, mAttributionSource, recv); @@ -898,7 +898,7 @@ public final class BluetoothGattServer implements BluetoothProfile { mPendingService = service; try { - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); mService.addService(mServerIf, service, mAttributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); } catch (RemoteException | TimeoutException e) { @@ -927,7 +927,7 @@ public final class BluetoothGattServer implements BluetoothProfile { if (intService == null) return false; try { - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); mService.removeService(mServerIf, service.getInstanceId(), mAttributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); mServices.remove(intService); @@ -950,7 +950,7 @@ public final class BluetoothGattServer implements BluetoothProfile { if (mService == null || mServerIf == 0) return; try { - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); mService.clearServices(mServerIf, mAttributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); mServices.clear(); diff --git a/framework/java/android/bluetooth/BluetoothHapClient.java b/framework/java/android/bluetooth/BluetoothHapClient.java index 1d51670ffe..08d07ff5f8 100644 --- a/framework/java/android/bluetooth/BluetoothHapClient.java +++ b/framework/java/android/bluetooth/BluetoothHapClient.java @@ -446,7 +446,7 @@ public final class BluetoothHapClient implements BluetoothProfile, AutoCloseable final IBluetoothHapClient service = getService(); if (service != null) { final SynchronousResultReceiver<Integer> recv = - new SynchronousResultReceiver(); + SynchronousResultReceiver.get(); service.registerCallback(mCallback, mAttributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); } @@ -558,7 +558,7 @@ public final class BluetoothHapClient implements BluetoothProfile, AutoCloseable final IBluetoothHapClient service = getService(); if (service != null) { final SynchronousResultReceiver<Integer> recv = - new SynchronousResultReceiver(); + SynchronousResultReceiver.get(); service.registerCallback(mCallback, mAttributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); } @@ -611,7 +611,7 @@ public final class BluetoothHapClient implements BluetoothProfile, AutoCloseable try { final IBluetoothHapClient service = getService(); if (service != null) { - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); service.unregisterCallback(mCallback, mAttributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); } @@ -654,7 +654,7 @@ public final class BluetoothHapClient implements BluetoothProfile, AutoCloseable && (connectionPolicy == BluetoothProfile.CONNECTION_POLICY_FORBIDDEN || connectionPolicy == BluetoothProfile.CONNECTION_POLICY_ALLOWED)) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.setConnectionPolicy(device, connectionPolicy, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (TimeoutException e) { @@ -693,7 +693,7 @@ public final class BluetoothHapClient implements BluetoothProfile, AutoCloseable if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (mAdapter.isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); service.getConnectionPolicy(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (TimeoutException e) { @@ -725,7 +725,7 @@ public final class BluetoothHapClient implements BluetoothProfile, AutoCloseable if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled()) { try { - final SynchronousResultReceiver<List> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<List> recv = SynchronousResultReceiver.get(); service.getConnectedDevices(mAttributionSource, recv); return Attributable.setAttributionSource( recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue), @@ -760,7 +760,7 @@ public final class BluetoothHapClient implements BluetoothProfile, AutoCloseable if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled()) { try { - final SynchronousResultReceiver<List> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<List> recv = SynchronousResultReceiver.get(); service.getDevicesMatchingConnectionStates(states, mAttributionSource, recv); return Attributable.setAttributionSource( recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue), @@ -795,7 +795,7 @@ public final class BluetoothHapClient implements BluetoothProfile, AutoCloseable if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); service.getConnectionState(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (TimeoutException e) { @@ -837,7 +837,7 @@ public final class BluetoothHapClient implements BluetoothProfile, AutoCloseable if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); service.getHapGroup(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (TimeoutException e) { @@ -869,7 +869,7 @@ public final class BluetoothHapClient implements BluetoothProfile, AutoCloseable if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); service.getActivePresetIndex(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (TimeoutException e) { @@ -904,7 +904,7 @@ public final class BluetoothHapClient implements BluetoothProfile, AutoCloseable } else if (isEnabled() && isValidDevice(device)) { try { final SynchronousResultReceiver<BluetoothHapPresetInfo> recv = - new SynchronousResultReceiver(); + SynchronousResultReceiver.get(); service.getActivePresetInfo(device, mAttributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (TimeoutException e) { @@ -1123,7 +1123,7 @@ public final class BluetoothHapClient implements BluetoothProfile, AutoCloseable } else if (isEnabled() && isValidDevice(device)) { try { final SynchronousResultReceiver<BluetoothHapPresetInfo> recv = - new SynchronousResultReceiver(); + SynchronousResultReceiver.get(); service.getPresetInfo(device, presetIndex, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (TimeoutException e) { @@ -1157,7 +1157,7 @@ public final class BluetoothHapClient implements BluetoothProfile, AutoCloseable } else if (isEnabled() && isValidDevice(device)) { try { final SynchronousResultReceiver<List<BluetoothHapPresetInfo>> recv = - new SynchronousResultReceiver(); + SynchronousResultReceiver.get(); service.getAllPresetInfo(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (TimeoutException e) { @@ -1189,7 +1189,7 @@ public final class BluetoothHapClient implements BluetoothProfile, AutoCloseable if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); service.getFeatures(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (TimeoutException e) { diff --git a/framework/java/android/bluetooth/BluetoothHeadset.java b/framework/java/android/bluetooth/BluetoothHeadset.java index 693b86608c..b6f63037b1 100644 --- a/framework/java/android/bluetooth/BluetoothHeadset.java +++ b/framework/java/android/bluetooth/BluetoothHeadset.java @@ -541,7 +541,7 @@ public final class BluetoothHeadset implements BluetoothProfile { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.connectWithAttribution(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -586,7 +586,7 @@ public final class BluetoothHeadset implements BluetoothProfile { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.disconnectWithAttribution(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -614,7 +614,7 @@ public final class BluetoothHeadset implements BluetoothProfile { } else if (isEnabled()) { try { final SynchronousResultReceiver<List<BluetoothDevice>> recv = - new SynchronousResultReceiver(); + SynchronousResultReceiver.get(); service.getConnectedDevicesWithAttribution(mAttributionSource, recv); return Attributable.setAttributionSource( recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue), @@ -645,7 +645,7 @@ public final class BluetoothHeadset implements BluetoothProfile { } else if (isEnabled()) { try { final SynchronousResultReceiver<List<BluetoothDevice>> recv = - new SynchronousResultReceiver(); + SynchronousResultReceiver.get(); service.getDevicesMatchingConnectionStates(states, mAttributionSource, recv); return Attributable.setAttributionSource( recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue), @@ -672,7 +672,7 @@ public final class BluetoothHeadset implements BluetoothProfile { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); service.getConnectionStateWithAttribution(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -713,7 +713,7 @@ public final class BluetoothHeadset implements BluetoothProfile { && (connectionPolicy == BluetoothProfile.CONNECTION_POLICY_FORBIDDEN || connectionPolicy == BluetoothProfile.CONNECTION_POLICY_ALLOWED)) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.setConnectionPolicy(device, connectionPolicy, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -769,7 +769,7 @@ public final class BluetoothHeadset implements BluetoothProfile { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); service.getConnectionPolicy(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -797,7 +797,7 @@ public final class BluetoothHeadset implements BluetoothProfile { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.isNoiseReductionSupported(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -825,7 +825,7 @@ public final class BluetoothHeadset implements BluetoothProfile { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.isVoiceRecognitionSupported(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -869,7 +869,7 @@ public final class BluetoothHeadset implements BluetoothProfile { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.startVoiceRecognition(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -903,7 +903,7 @@ public final class BluetoothHeadset implements BluetoothProfile { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.stopVoiceRecognition(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -933,7 +933,7 @@ public final class BluetoothHeadset implements BluetoothProfile { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.isAudioConnected(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -983,7 +983,7 @@ public final class BluetoothHeadset implements BluetoothProfile { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (!isDisabled()) { try { - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); service.getAudioState(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException e) { @@ -1046,7 +1046,7 @@ public final class BluetoothHeadset implements BluetoothProfile { return BluetoothStatusCodes.ERROR_PROFILE_SERVICE_NOT_BOUND; } else if (isEnabled()) { try { - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); service.setAudioRouteAllowed(allowed, mAttributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); return BluetoothStatusCodes.SUCCESS; @@ -1086,7 +1086,7 @@ public final class BluetoothHeadset implements BluetoothProfile { return BluetoothStatusCodes.ERROR_PROFILE_SERVICE_NOT_BOUND; } else if (isEnabled()) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.getAudioRouteAllowed(mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(false) ? BluetoothStatusCodes.ALLOWED : BluetoothStatusCodes.NOT_ALLOWED; @@ -1120,7 +1120,7 @@ public final class BluetoothHeadset implements BluetoothProfile { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled()) { try { - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); service.setForceScoAudio(forced, mAttributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); } catch (RemoteException | TimeoutException e) { @@ -1175,7 +1175,7 @@ public final class BluetoothHeadset implements BluetoothProfile { return BluetoothStatusCodes.ERROR_PROFILE_SERVICE_NOT_BOUND; } else if (isEnabled()) { try { - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); service.connectAudio(mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException e) { @@ -1230,7 +1230,7 @@ public final class BluetoothHeadset implements BluetoothProfile { return BluetoothStatusCodes.ERROR_PROFILE_SERVICE_NOT_BOUND; } else if (isEnabled()) { try { - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); service.disconnectAudio(mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException e) { @@ -1284,7 +1284,7 @@ public final class BluetoothHeadset implements BluetoothProfile { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled()) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.startScoUsingVirtualVoiceCall(mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -1323,7 +1323,7 @@ public final class BluetoothHeadset implements BluetoothProfile { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled()) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.stopScoUsingVirtualVoiceCall(mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -1381,7 +1381,7 @@ public final class BluetoothHeadset implements BluetoothProfile { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled()) { try { - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); service.clccResponse(index, direction, status, mode, mpty, number, type, mAttributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); @@ -1425,7 +1425,7 @@ public final class BluetoothHeadset implements BluetoothProfile { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.sendVendorSpecificResultCode(device, command, arg, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); @@ -1473,7 +1473,7 @@ public final class BluetoothHeadset implements BluetoothProfile { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled() && (device == null || isValidDevice(device))) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.setActiveDevice(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -1505,7 +1505,7 @@ public final class BluetoothHeadset implements BluetoothProfile { } else if (isEnabled()) { try { final SynchronousResultReceiver<BluetoothDevice> recv = - new SynchronousResultReceiver(); + SynchronousResultReceiver.get(); service.getActiveDevice(mAttributionSource, recv); return Attributable.setAttributionSource( recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue), @@ -1540,7 +1540,7 @@ public final class BluetoothHeadset implements BluetoothProfile { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled()) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.isInbandRingingEnabled(mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { diff --git a/framework/java/android/bluetooth/BluetoothHeadsetClient.java b/framework/java/android/bluetooth/BluetoothHeadsetClient.java index d47e41a0b1..1e78f681d5 100644 --- a/framework/java/android/bluetooth/BluetoothHeadsetClient.java +++ b/framework/java/android/bluetooth/BluetoothHeadsetClient.java @@ -804,7 +804,7 @@ public final class BluetoothHeadsetClient implements BluetoothProfile, AutoClose if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.connect(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -835,7 +835,7 @@ public final class BluetoothHeadsetClient implements BluetoothProfile, AutoClose if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.disconnect(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -866,7 +866,7 @@ public final class BluetoothHeadsetClient implements BluetoothProfile, AutoClose } else if (isEnabled()) { try { final SynchronousResultReceiver<List<BluetoothDevice>> recv = - new SynchronousResultReceiver(); + SynchronousResultReceiver.get(); service.getConnectedDevices(mAttributionSource, recv); return Attributable.setAttributionSource( recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue), @@ -903,7 +903,7 @@ public final class BluetoothHeadsetClient implements BluetoothProfile, AutoClose } else if (isEnabled()) { try { final SynchronousResultReceiver<List<BluetoothDevice>> recv = - new SynchronousResultReceiver(); + SynchronousResultReceiver.get(); service.getDevicesMatchingConnectionStates(states, mAttributionSource, recv); return Attributable.setAttributionSource( recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue), @@ -938,7 +938,7 @@ public final class BluetoothHeadsetClient implements BluetoothProfile, AutoClose if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); service.getConnectionState(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException e) { @@ -999,7 +999,7 @@ public final class BluetoothHeadsetClient implements BluetoothProfile, AutoClose && (connectionPolicy == BluetoothProfile.CONNECTION_POLICY_FORBIDDEN || connectionPolicy == BluetoothProfile.CONNECTION_POLICY_ALLOWED)) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.setConnectionPolicy(device, connectionPolicy, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException e) { @@ -1057,7 +1057,7 @@ public final class BluetoothHeadsetClient implements BluetoothProfile, AutoClose if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); service.getConnectionPolicy(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException e) { @@ -1094,7 +1094,7 @@ public final class BluetoothHeadsetClient implements BluetoothProfile, AutoClose if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.startVoiceRecognition(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -1126,7 +1126,7 @@ public final class BluetoothHeadsetClient implements BluetoothProfile, AutoClose if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.sendVendorAtCommand(device, vendorId, atCommand, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -1160,7 +1160,7 @@ public final class BluetoothHeadsetClient implements BluetoothProfile, AutoClose if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.stopVoiceRecognition(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -1190,7 +1190,7 @@ public final class BluetoothHeadsetClient implements BluetoothProfile, AutoClose } else if (isEnabled() && isValidDevice(device)) { try { final SynchronousResultReceiver<List<BluetoothHeadsetClientCall>> recv = - new SynchronousResultReceiver(); + SynchronousResultReceiver.get(); service.getCurrentCalls(device, mAttributionSource, recv); return Attributable.setAttributionSource( recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue), @@ -1221,7 +1221,7 @@ public final class BluetoothHeadsetClient implements BluetoothProfile, AutoClose if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Bundle> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Bundle> recv = SynchronousResultReceiver.get(); service.getCurrentAgEvents(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -1254,7 +1254,7 @@ public final class BluetoothHeadsetClient implements BluetoothProfile, AutoClose if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.acceptCall(device, flag, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -1284,7 +1284,7 @@ public final class BluetoothHeadsetClient implements BluetoothProfile, AutoClose if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.holdCall(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -1319,7 +1319,7 @@ public final class BluetoothHeadsetClient implements BluetoothProfile, AutoClose if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.rejectCall(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -1358,7 +1358,7 @@ public final class BluetoothHeadsetClient implements BluetoothProfile, AutoClose if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.terminateCall(device, call, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -1395,7 +1395,7 @@ public final class BluetoothHeadsetClient implements BluetoothProfile, AutoClose if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.enterPrivateMode(device, index, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -1431,7 +1431,7 @@ public final class BluetoothHeadsetClient implements BluetoothProfile, AutoClose if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.explicitCallTransfer(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -1464,7 +1464,7 @@ public final class BluetoothHeadsetClient implements BluetoothProfile, AutoClose } else if (isEnabled() && isValidDevice(device)) { try { final SynchronousResultReceiver<BluetoothHeadsetClientCall> recv = - new SynchronousResultReceiver(); + SynchronousResultReceiver.get(); service.dial(device, number, mAttributionSource, recv); return Attributable.setAttributionSource( recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue), @@ -1499,7 +1499,7 @@ public final class BluetoothHeadsetClient implements BluetoothProfile, AutoClose if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.sendDTMF(device, code, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -1534,7 +1534,7 @@ public final class BluetoothHeadsetClient implements BluetoothProfile, AutoClose if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.getLastVoiceTagNumber(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -1563,7 +1563,7 @@ public final class BluetoothHeadsetClient implements BluetoothProfile, AutoClose if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled()) { try { - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); service.getAudioState(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -1594,7 +1594,7 @@ public final class BluetoothHeadsetClient implements BluetoothProfile, AutoClose if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled()) { try { - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); service.setAudioRouteAllowed(device, allowed, mAttributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); } catch (RemoteException | TimeoutException e) { @@ -1623,7 +1623,7 @@ public final class BluetoothHeadsetClient implements BluetoothProfile, AutoClose if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled()) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.getAudioRouteAllowed(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -1655,7 +1655,7 @@ public final class BluetoothHeadsetClient implements BluetoothProfile, AutoClose if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled()) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.connectAudio(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -1687,7 +1687,7 @@ public final class BluetoothHeadsetClient implements BluetoothProfile, AutoClose if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled()) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.disconnectAudio(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -1716,7 +1716,7 @@ public final class BluetoothHeadsetClient implements BluetoothProfile, AutoClose if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled()) { try { - final SynchronousResultReceiver<Bundle> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Bundle> recv = SynchronousResultReceiver.get(); service.getCurrentAgFeatures(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { diff --git a/framework/java/android/bluetooth/BluetoothHearingAid.java b/framework/java/android/bluetooth/BluetoothHearingAid.java index 3fd011f956..130105d166 100644 --- a/framework/java/android/bluetooth/BluetoothHearingAid.java +++ b/framework/java/android/bluetooth/BluetoothHearingAid.java @@ -194,7 +194,7 @@ public final class BluetoothHearingAid implements BluetoothProfile { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.connect(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -240,7 +240,7 @@ public final class BluetoothHearingAid implements BluetoothProfile { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.disconnect(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -266,7 +266,7 @@ public final class BluetoothHearingAid implements BluetoothProfile { } else if (isEnabled()) { try { final SynchronousResultReceiver<List<BluetoothDevice>> recv = - new SynchronousResultReceiver(); + SynchronousResultReceiver.get(); service.getConnectedDevices(mAttributionSource, recv); return Attributable.setAttributionSource( recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue), @@ -295,7 +295,7 @@ public final class BluetoothHearingAid implements BluetoothProfile { } else if (isEnabled()) { try { final SynchronousResultReceiver<List<BluetoothDevice>> recv = - new SynchronousResultReceiver(); + SynchronousResultReceiver.get(); service.getDevicesMatchingConnectionStates(states, mAttributionSource, recv); return Attributable.setAttributionSource( recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue), @@ -323,7 +323,7 @@ public final class BluetoothHearingAid implements BluetoothProfile { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); service.getConnectionState(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -365,7 +365,7 @@ public final class BluetoothHearingAid implements BluetoothProfile { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled() && ((device == null) || isValidDevice(device))) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.setActiveDevice(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -397,7 +397,7 @@ public final class BluetoothHearingAid implements BluetoothProfile { } else if (isEnabled()) { try { final SynchronousResultReceiver<List<BluetoothDevice>> recv = - new SynchronousResultReceiver(); + SynchronousResultReceiver.get(); service.getActiveDevices(mAttributionSource, recv); return Attributable.setAttributionSource( recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue), @@ -461,7 +461,7 @@ public final class BluetoothHearingAid implements BluetoothProfile { && (connectionPolicy == BluetoothProfile.CONNECTION_POLICY_FORBIDDEN || connectionPolicy == BluetoothProfile.CONNECTION_POLICY_ALLOWED)) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.setConnectionPolicy(device, connectionPolicy, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -518,7 +518,7 @@ public final class BluetoothHearingAid implements BluetoothProfile { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); service.getConnectionPolicy(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -570,7 +570,7 @@ public final class BluetoothHearingAid implements BluetoothProfile { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled()) { try { - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); service.setVolume(volume, mAttributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); } catch (RemoteException | TimeoutException e) { @@ -605,7 +605,7 @@ public final class BluetoothHearingAid implements BluetoothProfile { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Long> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Long> recv = SynchronousResultReceiver.get(); service.getHiSyncId(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -634,7 +634,7 @@ public final class BluetoothHearingAid implements BluetoothProfile { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); service.getDeviceSide(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -663,7 +663,7 @@ public final class BluetoothHearingAid implements BluetoothProfile { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); service.getDeviceMode(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { diff --git a/framework/java/android/bluetooth/BluetoothHidDevice.java b/framework/java/android/bluetooth/BluetoothHidDevice.java index 44a355b5f7..46613f75fe 100644 --- a/framework/java/android/bluetooth/BluetoothHidDevice.java +++ b/framework/java/android/bluetooth/BluetoothHidDevice.java @@ -466,7 +466,7 @@ public final class BluetoothHidDevice implements BluetoothProfile { } else if (isEnabled()) { try { final SynchronousResultReceiver<List<BluetoothDevice>> recv = - new SynchronousResultReceiver(); + SynchronousResultReceiver.get(); service.getConnectedDevices(mAttributionSource, recv); return Attributable.setAttributionSource( recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue), @@ -491,7 +491,7 @@ public final class BluetoothHidDevice implements BluetoothProfile { } else if (isEnabled()) { try { final SynchronousResultReceiver<List<BluetoothDevice>> recv = - new SynchronousResultReceiver(); + SynchronousResultReceiver.get(); service.getDevicesMatchingConnectionStates(states, mAttributionSource, recv); return Attributable.setAttributionSource( recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue), @@ -515,7 +515,7 @@ public final class BluetoothHidDevice implements BluetoothProfile { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled()) { try { - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); service.getConnectionState(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -577,7 +577,7 @@ public final class BluetoothHidDevice implements BluetoothProfile { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled()) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); CallbackWrapper cbw = new CallbackWrapper(executor, callback, mAttributionSource); service.registerApp(sdp, inQos, outQos, cbw, mAttributionSource, recv); result = recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); @@ -608,7 +608,7 @@ public final class BluetoothHidDevice implements BluetoothProfile { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled()) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.unregisterApp(mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -636,7 +636,7 @@ public final class BluetoothHidDevice implements BluetoothProfile { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled()) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.sendReport(device, id, data, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -665,7 +665,7 @@ public final class BluetoothHidDevice implements BluetoothProfile { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled()) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.replyReport(device, type, id, data, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -692,7 +692,7 @@ public final class BluetoothHidDevice implements BluetoothProfile { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled()) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.reportError(device, error, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -718,7 +718,7 @@ public final class BluetoothHidDevice implements BluetoothProfile { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled()) { try { - final SynchronousResultReceiver<String> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<String> recv = SynchronousResultReceiver.get(); service.getUserAppName(mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -746,7 +746,7 @@ public final class BluetoothHidDevice implements BluetoothProfile { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.connect(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -773,7 +773,7 @@ public final class BluetoothHidDevice implements BluetoothProfile { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled()) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.disconnect(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -818,7 +818,7 @@ public final class BluetoothHidDevice implements BluetoothProfile { && (connectionPolicy == BluetoothProfile.CONNECTION_POLICY_FORBIDDEN || connectionPolicy == BluetoothProfile.CONNECTION_POLICY_ALLOWED)) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.setConnectionPolicy(device, connectionPolicy, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { diff --git a/framework/java/android/bluetooth/BluetoothHidHost.java b/framework/java/android/bluetooth/BluetoothHidHost.java index ecbeddf2b8..73c3ca829b 100644 --- a/framework/java/android/bluetooth/BluetoothHidHost.java +++ b/framework/java/android/bluetooth/BluetoothHidHost.java @@ -302,7 +302,7 @@ public final class BluetoothHidHost implements BluetoothProfile { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.connect(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -348,7 +348,7 @@ public final class BluetoothHidHost implements BluetoothProfile { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.disconnect(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -377,7 +377,7 @@ public final class BluetoothHidHost implements BluetoothProfile { } else if (isEnabled()) { try { final SynchronousResultReceiver<List<BluetoothDevice>> recv = - new SynchronousResultReceiver(); + SynchronousResultReceiver.get(); service.getConnectedDevices(mAttributionSource, recv); return Attributable.setAttributionSource( recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue), @@ -407,7 +407,7 @@ public final class BluetoothHidHost implements BluetoothProfile { } else if (isEnabled()) { try { final SynchronousResultReceiver<List<BluetoothDevice>> recv = - new SynchronousResultReceiver(); + SynchronousResultReceiver.get(); service.getDevicesMatchingConnectionStates(states, mAttributionSource, recv); return Attributable.setAttributionSource( recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue), @@ -440,7 +440,7 @@ public final class BluetoothHidHost implements BluetoothProfile { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); service.getConnectionState(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -504,7 +504,7 @@ public final class BluetoothHidHost implements BluetoothProfile { && (connectionPolicy == BluetoothProfile.CONNECTION_POLICY_FORBIDDEN || connectionPolicy == BluetoothProfile.CONNECTION_POLICY_ALLOWED)) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.setConnectionPolicy(device, connectionPolicy, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -563,7 +563,7 @@ public final class BluetoothHidHost implements BluetoothProfile { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); service.getConnectionPolicy(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -600,7 +600,7 @@ public final class BluetoothHidHost implements BluetoothProfile { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.virtualUnplug(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -629,7 +629,7 @@ public final class BluetoothHidHost implements BluetoothProfile { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.getProtocolMode(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -658,7 +658,7 @@ public final class BluetoothHidHost implements BluetoothProfile { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.setProtocolMode(device, protocolMode, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -694,7 +694,7 @@ public final class BluetoothHidHost implements BluetoothProfile { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.getReport(device, reportType, reportId, bufferSize, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); @@ -726,7 +726,7 @@ public final class BluetoothHidHost implements BluetoothProfile { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.setReport(device, reportType, report, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -756,7 +756,7 @@ public final class BluetoothHidHost implements BluetoothProfile { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.sendData(device, report, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -785,7 +785,7 @@ public final class BluetoothHidHost implements BluetoothProfile { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.getIdleTime(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -815,7 +815,7 @@ public final class BluetoothHidHost implements BluetoothProfile { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.setIdleTime(device, idleTime, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { diff --git a/framework/java/android/bluetooth/BluetoothLeAudio.java b/framework/java/android/bluetooth/BluetoothLeAudio.java index 4346dae6da..19d25043f8 100644 --- a/framework/java/android/bluetooth/BluetoothLeAudio.java +++ b/framework/java/android/bluetooth/BluetoothLeAudio.java @@ -646,7 +646,7 @@ public final class BluetoothLeAudio implements BluetoothProfile, AutoCloseable { final IBluetoothLeAudio service = getService(); if (service != null) { final SynchronousResultReceiver<Integer> recv = - new SynchronousResultReceiver(); + SynchronousResultReceiver.get(); service.registerCallback(mCallback, mAttributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()) @@ -739,7 +739,7 @@ public final class BluetoothLeAudio implements BluetoothProfile, AutoCloseable { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (mAdapter.isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.connect(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -783,7 +783,7 @@ public final class BluetoothLeAudio implements BluetoothProfile, AutoCloseable { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (mAdapter.isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.disconnect(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -822,7 +822,7 @@ public final class BluetoothLeAudio implements BluetoothProfile, AutoCloseable { } else if (mAdapter.isEnabled()) { try { final SynchronousResultReceiver<BluetoothDevice> recv = - new SynchronousResultReceiver(); + SynchronousResultReceiver.get(); service.getConnectedGroupLeadDevice(groupId, mAttributionSource, recv); return Attributable.setAttributionSource( recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue), @@ -850,7 +850,7 @@ public final class BluetoothLeAudio implements BluetoothProfile, AutoCloseable { } else if (mAdapter.isEnabled()) { try { final SynchronousResultReceiver<List<BluetoothDevice>> recv = - new SynchronousResultReceiver(); + SynchronousResultReceiver.get(); service.getConnectedDevices(mAttributionSource, recv); return Attributable.setAttributionSource( recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue), @@ -879,7 +879,7 @@ public final class BluetoothLeAudio implements BluetoothProfile, AutoCloseable { } else if (mAdapter.isEnabled()) { try { final SynchronousResultReceiver<List<BluetoothDevice>> recv = - new SynchronousResultReceiver(); + SynchronousResultReceiver.get(); service.getDevicesMatchingConnectionStates(states, mAttributionSource, recv); return Attributable.setAttributionSource( recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue), @@ -907,7 +907,7 @@ public final class BluetoothLeAudio implements BluetoothProfile, AutoCloseable { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (mAdapter.isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); service.getConnectionState(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -962,7 +962,7 @@ public final class BluetoothLeAudio implements BluetoothProfile, AutoCloseable { final IBluetoothLeAudio service = getService(); if (service != null) { final SynchronousResultReceiver<Integer> recv = - new SynchronousResultReceiver(); + SynchronousResultReceiver.get(); service.registerCallback(mCallback, mAttributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); } @@ -1014,7 +1014,7 @@ public final class BluetoothLeAudio implements BluetoothProfile, AutoCloseable { try { final IBluetoothLeAudio service = getService(); if (service != null) { - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); service.unregisterCallback(mCallback, mAttributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); } @@ -1057,7 +1057,7 @@ public final class BluetoothLeAudio implements BluetoothProfile, AutoCloseable { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (mAdapter.isEnabled() && ((device == null) || isValidDevice(device))) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.setActiveDevice(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -1087,7 +1087,7 @@ public final class BluetoothLeAudio implements BluetoothProfile, AutoCloseable { } else if (mAdapter.isEnabled()) { try { final SynchronousResultReceiver<List<BluetoothDevice>> recv = - new SynchronousResultReceiver(); + SynchronousResultReceiver.get(); service.getActiveDevices(mAttributionSource, recv); return Attributable.setAttributionSource( recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue), @@ -1118,7 +1118,7 @@ public final class BluetoothLeAudio implements BluetoothProfile, AutoCloseable { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (mAdapter.isEnabled()) { try { - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); service.getGroupId(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -1148,7 +1148,7 @@ public final class BluetoothLeAudio implements BluetoothProfile, AutoCloseable { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (mAdapter.isEnabled()) { try { - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); service.setVolume(volume, mAttributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); } catch (RemoteException | TimeoutException e) { @@ -1178,7 +1178,7 @@ public final class BluetoothLeAudio implements BluetoothProfile, AutoCloseable { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (mAdapter.isEnabled()) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.groupAddNode(group_id, device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -1210,7 +1210,7 @@ public final class BluetoothLeAudio implements BluetoothProfile, AutoCloseable { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (mAdapter.isEnabled()) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.groupRemoveNode(group_id, device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -1248,7 +1248,7 @@ public final class BluetoothLeAudio implements BluetoothProfile, AutoCloseable { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (mAdapter.isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); service.getAudioLocation(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultLocation); } catch (RemoteException | TimeoutException e) { @@ -1288,7 +1288,7 @@ public final class BluetoothLeAudio implements BluetoothProfile, AutoCloseable { && (connectionPolicy == BluetoothProfile.CONNECTION_POLICY_FORBIDDEN || connectionPolicy == BluetoothProfile.CONNECTION_POLICY_ALLOWED)) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.setConnectionPolicy(device, connectionPolicy, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -1324,7 +1324,7 @@ public final class BluetoothLeAudio implements BluetoothProfile, AutoCloseable { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (mAdapter.isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); service.getConnectionPolicy(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -1396,7 +1396,7 @@ public final class BluetoothLeAudio implements BluetoothProfile, AutoCloseable { } else if (mAdapter.isEnabled()) { try { final SynchronousResultReceiver<BluetoothLeAudioCodecStatus> recv = - new SynchronousResultReceiver(); + SynchronousResultReceiver.get(); service.getCodecStatus(groupId, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (TimeoutException e) { diff --git a/framework/java/android/bluetooth/BluetoothLeBroadcast.java b/framework/java/android/bluetooth/BluetoothLeBroadcast.java index 3cdf2cd129..5db7ea23a6 100644 --- a/framework/java/android/bluetooth/BluetoothLeBroadcast.java +++ b/framework/java/android/bluetooth/BluetoothLeBroadcast.java @@ -183,7 +183,7 @@ public final class BluetoothLeBroadcast implements AutoCloseable, BluetoothProfi final IBluetoothLeAudio service = getService(); if (service != null) { final SynchronousResultReceiver<Integer> recv = - new SynchronousResultReceiver(); + SynchronousResultReceiver.get(); service.registerLeBroadcastCallback(mCallback, mAttributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()) @@ -442,7 +442,7 @@ public final class BluetoothLeBroadcast implements AutoCloseable, BluetoothProfi final IBluetoothLeAudio service = getService(); if (service != null) { final SynchronousResultReceiver<Integer> recv = - new SynchronousResultReceiver(); + SynchronousResultReceiver.get(); service.registerLeBroadcastCallback(mCallback, mAttributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); } @@ -495,7 +495,7 @@ public final class BluetoothLeBroadcast implements AutoCloseable, BluetoothProfi try { final IBluetoothLeAudio service = getService(); if (service != null) { - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); service.unregisterLeBroadcastCallback(mCallback, mAttributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); } @@ -662,7 +662,7 @@ public final class BluetoothLeBroadcast implements AutoCloseable, BluetoothProfi if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled()) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.isPlaying(broadcastId, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (TimeoutException e) { @@ -696,7 +696,7 @@ public final class BluetoothLeBroadcast implements AutoCloseable, BluetoothProfi } else if (isEnabled()) { try { final SynchronousResultReceiver<List<BluetoothLeBroadcastMetadata>> recv = - new SynchronousResultReceiver(); + SynchronousResultReceiver.get(); service.getAllBroadcastMetadata(mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (TimeoutException e) { @@ -723,7 +723,7 @@ public final class BluetoothLeBroadcast implements AutoCloseable, BluetoothProfi if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled()) { try { - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); service.getMaximumNumberOfBroadcasts(mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (TimeoutException e) { diff --git a/framework/java/android/bluetooth/BluetoothManager.java b/framework/java/android/bluetooth/BluetoothManager.java index 7ab32f3dfb..3fcb58a21a 100644 --- a/framework/java/android/bluetooth/BluetoothManager.java +++ b/framework/java/android/bluetooth/BluetoothManager.java @@ -172,7 +172,7 @@ public final class BluetoothManager { IBluetoothGatt iGatt = managerService.getBluetoothGatt(); if (iGatt == null) return devices; final SynchronousResultReceiver<List<BluetoothDevice>> recv = - new SynchronousResultReceiver(); + SynchronousResultReceiver.get(); iGatt.getDevicesMatchingConnectionStates(states, mAttributionSource, recv); devices = Attributable.setAttributionSource( recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(devices), diff --git a/framework/java/android/bluetooth/BluetoothMap.java b/framework/java/android/bluetooth/BluetoothMap.java index a8b48348da..2d4bc568ca 100644 --- a/framework/java/android/bluetooth/BluetoothMap.java +++ b/framework/java/android/bluetooth/BluetoothMap.java @@ -154,7 +154,7 @@ public final class BluetoothMap implements BluetoothProfile, AutoCloseable { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled()) { try { - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); service.getState(mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -184,7 +184,7 @@ public final class BluetoothMap implements BluetoothProfile, AutoCloseable { } else if (isEnabled()) { try { final SynchronousResultReceiver<BluetoothDevice> recv = - new SynchronousResultReceiver(); + SynchronousResultReceiver.get(); service.getClient(mAttributionSource, recv); return Attributable.setAttributionSource( recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue), @@ -214,7 +214,7 @@ public final class BluetoothMap implements BluetoothProfile, AutoCloseable { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.isConnected(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -256,7 +256,7 @@ public final class BluetoothMap implements BluetoothProfile, AutoCloseable { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.disconnect(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -312,7 +312,7 @@ public final class BluetoothMap implements BluetoothProfile, AutoCloseable { } else if (isEnabled()) { try { final SynchronousResultReceiver<List<BluetoothDevice>> recv = - new SynchronousResultReceiver(); + SynchronousResultReceiver.get(); service.getConnectedDevices(mAttributionSource, recv); return Attributable.setAttributionSource( recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue), @@ -343,7 +343,7 @@ public final class BluetoothMap implements BluetoothProfile, AutoCloseable { } else if (isEnabled()) { try { final SynchronousResultReceiver<List<BluetoothDevice>> recv = - new SynchronousResultReceiver(); + SynchronousResultReceiver.get(); service.getDevicesMatchingConnectionStates(states, mAttributionSource, recv); return Attributable.setAttributionSource( recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue), @@ -393,7 +393,7 @@ public final class BluetoothMap implements BluetoothProfile, AutoCloseable { log("getConnectionState(" + pairQuery.second.getAnonymizedAddress() + ") uncached"); } - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); try { pairQuery.first .getConnectionState(pairQuery.second, mAttributionSource, recv); @@ -490,7 +490,7 @@ public final class BluetoothMap implements BluetoothProfile, AutoCloseable { && (connectionPolicy == BluetoothProfile.CONNECTION_POLICY_FORBIDDEN || connectionPolicy == BluetoothProfile.CONNECTION_POLICY_ALLOWED)) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.setConnectionPolicy(device, connectionPolicy, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -546,7 +546,7 @@ public final class BluetoothMap implements BluetoothProfile, AutoCloseable { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); service.getConnectionPolicy(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { diff --git a/framework/java/android/bluetooth/BluetoothMapClient.java b/framework/java/android/bluetooth/BluetoothMapClient.java index be3e48a0d9..5241410d41 100644 --- a/framework/java/android/bluetooth/BluetoothMapClient.java +++ b/framework/java/android/bluetooth/BluetoothMapClient.java @@ -267,7 +267,7 @@ public final class BluetoothMapClient implements BluetoothProfile, AutoCloseable if (DBG) Log.d(TAG, Log.getStackTraceString(new Throwable())); } else if (isEnabled()) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.isConnected(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -297,7 +297,7 @@ public final class BluetoothMapClient implements BluetoothProfile, AutoCloseable if (DBG) Log.d(TAG, Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.connect(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -329,7 +329,7 @@ public final class BluetoothMapClient implements BluetoothProfile, AutoCloseable if (DBG) Log.d(TAG, Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.disconnect(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -360,7 +360,7 @@ public final class BluetoothMapClient implements BluetoothProfile, AutoCloseable } else if (isEnabled()) { try { final SynchronousResultReceiver<List<BluetoothDevice>> recv = - new SynchronousResultReceiver(); + SynchronousResultReceiver.get(); service.getConnectedDevices(mAttributionSource, recv); return Attributable.setAttributionSource( recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue), @@ -397,7 +397,7 @@ public final class BluetoothMapClient implements BluetoothProfile, AutoCloseable } else if (isEnabled()) { try { final SynchronousResultReceiver<List<BluetoothDevice>> recv = - new SynchronousResultReceiver(); + SynchronousResultReceiver.get(); service.getDevicesMatchingConnectionStates(states, mAttributionSource, recv); return Attributable.setAttributionSource( recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue), @@ -432,7 +432,7 @@ public final class BluetoothMapClient implements BluetoothProfile, AutoCloseable if (DBG) Log.d(TAG, Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver<>(); + final SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); service.getConnectionState(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException e) { @@ -496,7 +496,7 @@ public final class BluetoothMapClient implements BluetoothProfile, AutoCloseable && (connectionPolicy == BluetoothProfile.CONNECTION_POLICY_FORBIDDEN || connectionPolicy == BluetoothProfile.CONNECTION_POLICY_ALLOWED)) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.setConnectionPolicy(device, connectionPolicy, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException e) { @@ -555,7 +555,7 @@ public final class BluetoothMapClient implements BluetoothProfile, AutoCloseable if (DBG) Log.d(TAG, Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); service.getConnectionPolicy(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException e) { @@ -623,7 +623,7 @@ public final class BluetoothMapClient implements BluetoothProfile, AutoCloseable if (DBG) Log.d(TAG, Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.sendMessage(device, contacts, message, sentIntent, deliveredIntent, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); @@ -655,7 +655,7 @@ public final class BluetoothMapClient implements BluetoothProfile, AutoCloseable if (DBG) Log.d(TAG, Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.getUnreadMessages(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -684,7 +684,7 @@ public final class BluetoothMapClient implements BluetoothProfile, AutoCloseable if (DBG) Log.d(TAG, Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); service.getSupportedFeatures(device, mAttributionSource, recv); return (recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue) & UPLOADING_FEATURE_BITMASK) > 0; @@ -726,7 +726,7 @@ public final class BluetoothMapClient implements BluetoothProfile, AutoCloseable } else if (isEnabled() && isValidDevice(device) && handle != null && (status == READ || status == UNREAD || status == UNDELETED || status == DELETED)) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.setMessageStatus(device, handle, status, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { diff --git a/framework/java/android/bluetooth/BluetoothPan.java b/framework/java/android/bluetooth/BluetoothPan.java index 3aafec9bd0..2f6fe4ef55 100644 --- a/framework/java/android/bluetooth/BluetoothPan.java +++ b/framework/java/android/bluetooth/BluetoothPan.java @@ -222,7 +222,7 @@ public final class BluetoothPan implements BluetoothProfile { "The tethered interface has already been released."); } try { - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); mService.setBluetoothTethering(mPanCallback, mId, false, mAttributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); } catch (RemoteException | TimeoutException e) { @@ -309,7 +309,7 @@ public final class BluetoothPan implements BluetoothProfile { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.connect(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -353,7 +353,7 @@ public final class BluetoothPan implements BluetoothProfile { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.disconnect(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -393,7 +393,7 @@ public final class BluetoothPan implements BluetoothProfile { && (connectionPolicy == BluetoothProfile.CONNECTION_POLICY_FORBIDDEN || connectionPolicy == BluetoothProfile.CONNECTION_POLICY_ALLOWED)) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.setConnectionPolicy(device, connectionPolicy, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -424,7 +424,7 @@ public final class BluetoothPan implements BluetoothProfile { } else if (isEnabled()) { try { final SynchronousResultReceiver<List<BluetoothDevice>> recv = - new SynchronousResultReceiver(); + SynchronousResultReceiver.get(); service.getConnectedDevices(mAttributionSource, recv); return Attributable.setAttributionSource( recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue), @@ -457,7 +457,7 @@ public final class BluetoothPan implements BluetoothProfile { } else if (isEnabled()) { try { final SynchronousResultReceiver<List<BluetoothDevice>> recv = - new SynchronousResultReceiver(); + SynchronousResultReceiver.get(); service.getDevicesMatchingConnectionStates(states, mAttributionSource, recv); return Attributable.setAttributionSource( recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue), @@ -489,7 +489,7 @@ public final class BluetoothPan implements BluetoothProfile { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); service.getConnectionState(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -525,7 +525,7 @@ public final class BluetoothPan implements BluetoothProfile { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled()) { try { - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); service.setBluetoothTethering(null, 0, value, mAttributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); } catch (RemoteException | TimeoutException e) { @@ -583,7 +583,7 @@ public final class BluetoothPan implements BluetoothProfile { } }; try { - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); service.setBluetoothTethering(panCallback, callback.hashCode(), true, mAttributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); @@ -614,7 +614,7 @@ public final class BluetoothPan implements BluetoothProfile { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled()) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.isTetheringOn(mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { diff --git a/framework/java/android/bluetooth/BluetoothPbapClient.java b/framework/java/android/bluetooth/BluetoothPbapClient.java index e10f5e5e49..1a29cea046 100644 --- a/framework/java/android/bluetooth/BluetoothPbapClient.java +++ b/framework/java/android/bluetooth/BluetoothPbapClient.java @@ -172,7 +172,7 @@ public final class BluetoothPbapClient implements BluetoothProfile, AutoCloseabl if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.connect(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -206,7 +206,7 @@ public final class BluetoothPbapClient implements BluetoothProfile, AutoCloseabl if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.disconnect(device, mAttributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); return true; @@ -240,7 +240,7 @@ public final class BluetoothPbapClient implements BluetoothProfile, AutoCloseabl } else if (isEnabled()) { try { final SynchronousResultReceiver<List<BluetoothDevice>> recv = - new SynchronousResultReceiver(); + SynchronousResultReceiver.get(); service.getConnectedDevices(mAttributionSource, recv); return Attributable.setAttributionSource( recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue), @@ -279,7 +279,7 @@ public final class BluetoothPbapClient implements BluetoothProfile, AutoCloseabl } else if (isEnabled()) { try { final SynchronousResultReceiver<List<BluetoothDevice>> recv = - new SynchronousResultReceiver(); + SynchronousResultReceiver.get(); service.getDevicesMatchingConnectionStates(states, mAttributionSource, recv); return Attributable.setAttributionSource( recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue), @@ -316,7 +316,7 @@ public final class BluetoothPbapClient implements BluetoothProfile, AutoCloseabl if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); service.getConnectionState(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException e) { @@ -394,7 +394,7 @@ public final class BluetoothPbapClient implements BluetoothProfile, AutoCloseabl && (connectionPolicy == BluetoothProfile.CONNECTION_POLICY_FORBIDDEN || connectionPolicy == BluetoothProfile.CONNECTION_POLICY_ALLOWED)) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.setConnectionPolicy(device, connectionPolicy, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException e) { @@ -455,7 +455,7 @@ public final class BluetoothPbapClient implements BluetoothProfile, AutoCloseabl if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); service.getConnectionPolicy(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException e) { diff --git a/framework/java/android/bluetooth/BluetoothSap.java b/framework/java/android/bluetooth/BluetoothSap.java index 100f1d8605..137c25b29e 100644 --- a/framework/java/android/bluetooth/BluetoothSap.java +++ b/framework/java/android/bluetooth/BluetoothSap.java @@ -182,7 +182,7 @@ public final class BluetoothSap implements BluetoothProfile, AutoCloseable { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled()) { try { - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); service.getState(mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -211,7 +211,7 @@ public final class BluetoothSap implements BluetoothProfile, AutoCloseable { } else if (isEnabled()) { try { final SynchronousResultReceiver<BluetoothDevice> recv = - new SynchronousResultReceiver(); + SynchronousResultReceiver.get(); service.getClient(mAttributionSource, recv); return Attributable.setAttributionSource( recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue), @@ -241,7 +241,7 @@ public final class BluetoothSap implements BluetoothProfile, AutoCloseable { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled()) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.isConnected(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -282,7 +282,7 @@ public final class BluetoothSap implements BluetoothProfile, AutoCloseable { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.disconnect(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -310,7 +310,7 @@ public final class BluetoothSap implements BluetoothProfile, AutoCloseable { } else if (isEnabled()) { try { final SynchronousResultReceiver<List<BluetoothDevice>> recv = - new SynchronousResultReceiver(); + SynchronousResultReceiver.get(); service.getConnectedDevices(mAttributionSource, recv); return Attributable.setAttributionSource( recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue), @@ -340,7 +340,7 @@ public final class BluetoothSap implements BluetoothProfile, AutoCloseable { } else if (isEnabled()) { try { final SynchronousResultReceiver<List<BluetoothDevice>> recv = - new SynchronousResultReceiver(); + SynchronousResultReceiver.get(); service.getDevicesMatchingConnectionStates(states, mAttributionSource, recv); return Attributable.setAttributionSource( recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue), @@ -390,7 +390,7 @@ public final class BluetoothSap implements BluetoothProfile, AutoCloseable { log("getConnectionState(" + pairQuery.second.getAnonymizedAddress() + ") uncached"); } - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); try { pairQuery.first .getConnectionState(pairQuery.second, mAttributionSource, recv); @@ -491,7 +491,7 @@ public final class BluetoothSap implements BluetoothProfile, AutoCloseable { && (connectionPolicy == BluetoothProfile.CONNECTION_POLICY_FORBIDDEN || connectionPolicy == BluetoothProfile.CONNECTION_POLICY_ALLOWED)) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.setConnectionPolicy(device, connectionPolicy, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -552,7 +552,7 @@ public final class BluetoothSap implements BluetoothProfile, AutoCloseable { if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); service.getConnectionPolicy(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { diff --git a/framework/java/android/bluetooth/BluetoothVolumeControl.java b/framework/java/android/bluetooth/BluetoothVolumeControl.java index 080b9a6d64..d76a08686d 100644 --- a/framework/java/android/bluetooth/BluetoothVolumeControl.java +++ b/framework/java/android/bluetooth/BluetoothVolumeControl.java @@ -157,7 +157,7 @@ public final class BluetoothVolumeControl implements BluetoothProfile, AutoClose final IBluetoothVolumeControl service = getService(); if (service != null) { final SynchronousResultReceiver<Integer> recv = - new SynchronousResultReceiver(); + SynchronousResultReceiver.get(); service.registerCallback(mCallback, mAttributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); } @@ -245,7 +245,7 @@ public final class BluetoothVolumeControl implements BluetoothProfile, AutoClose } else if (isEnabled()) { try { final SynchronousResultReceiver<List<BluetoothDevice>> recv = - new SynchronousResultReceiver(); + SynchronousResultReceiver.get(); service.getConnectedDevices(mAttributionSource, recv); return Attributable.setAttributionSource( recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue), @@ -276,7 +276,7 @@ public final class BluetoothVolumeControl implements BluetoothProfile, AutoClose } else if (isEnabled()) { try { final SynchronousResultReceiver<List<BluetoothDevice>> recv = - new SynchronousResultReceiver(); + SynchronousResultReceiver.get(); service.getDevicesMatchingConnectionStates(states, mAttributionSource, recv); return Attributable.setAttributionSource( recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue), @@ -306,7 +306,7 @@ public final class BluetoothVolumeControl implements BluetoothProfile, AutoClose if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); service.getConnectionState(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -355,7 +355,7 @@ public final class BluetoothVolumeControl implements BluetoothProfile, AutoClose final IBluetoothVolumeControl service = getService(); if (service != null) { final SynchronousResultReceiver<Integer> recv = - new SynchronousResultReceiver(); + SynchronousResultReceiver.get(); service.registerCallback(mCallback, mAttributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); } @@ -406,7 +406,7 @@ public final class BluetoothVolumeControl implements BluetoothProfile, AutoClose try { final IBluetoothVolumeControl service = getService(); if (service != null) { - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); service.unregisterCallback(mCallback, mAttributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); } @@ -442,7 +442,7 @@ public final class BluetoothVolumeControl implements BluetoothProfile, AutoClose if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled()) { try { - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); service.setVolumeOffset(device, volumeOffset, mAttributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); } catch (RemoteException | TimeoutException e) { @@ -483,7 +483,7 @@ public final class BluetoothVolumeControl implements BluetoothProfile, AutoClose final boolean defaultValue = false; try { - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); service.isVolumeOffsetAvailable(device, mAttributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -523,7 +523,7 @@ public final class BluetoothVolumeControl implements BluetoothProfile, AutoClose && (connectionPolicy == BluetoothProfile.CONNECTION_POLICY_FORBIDDEN || connectionPolicy == BluetoothProfile.CONNECTION_POLICY_ALLOWED)) { try { - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); service.setConnectionPolicy(device, connectionPolicy, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { @@ -559,7 +559,7 @@ public final class BluetoothVolumeControl implements BluetoothProfile, AutoClose if (DBG) log(Log.getStackTraceString(new Throwable())); } else if (isEnabled() && isValidDevice(device)) { try { - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); service.getConnectionPolicy(device, mAttributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(defaultValue); } catch (RemoteException | TimeoutException e) { diff --git a/framework/java/android/bluetooth/le/AdvertisingSet.java b/framework/java/android/bluetooth/le/AdvertisingSet.java index cad62c3cb2..d65e4858de 100644 --- a/framework/java/android/bluetooth/le/AdvertisingSet.java +++ b/framework/java/android/bluetooth/le/AdvertisingSet.java @@ -81,7 +81,7 @@ public final class AdvertisingSet { public void enableAdvertising(boolean enable, int duration, int maxExtendedAdvertisingEvents) { try { - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); mGatt.enableAdvertisingSet(mAdvertiserId, enable, duration, maxExtendedAdvertisingEvents, mAttributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); @@ -107,7 +107,7 @@ public final class AdvertisingSet { @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADVERTISE) public void setAdvertisingData(AdvertiseData advertiseData) { try { - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); mGatt.setAdvertisingData(mAdvertiserId, advertiseData, mAttributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); } catch (TimeoutException | RemoteException e) { @@ -129,7 +129,7 @@ public final class AdvertisingSet { @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADVERTISE) public void setScanResponseData(AdvertiseData scanResponse) { try { - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); mGatt.setScanResponseData(mAdvertiserId, scanResponse, mAttributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); } catch (TimeoutException | RemoteException e) { @@ -149,7 +149,7 @@ public final class AdvertisingSet { @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADVERTISE) public void setAdvertisingParameters(AdvertisingSetParameters parameters) { try { - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); mGatt.setAdvertisingParameters(mAdvertiserId, parameters, mAttributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); } catch (TimeoutException | RemoteException e) { @@ -167,7 +167,7 @@ public final class AdvertisingSet { @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADVERTISE) public void setPeriodicAdvertisingParameters(PeriodicAdvertisingParameters parameters) { try { - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); mGatt.setPeriodicAdvertisingParameters(mAdvertiserId, parameters, mAttributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); @@ -191,7 +191,7 @@ public final class AdvertisingSet { @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADVERTISE) public void setPeriodicAdvertisingData(AdvertiseData periodicData) { try { - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); mGatt.setPeriodicAdvertisingData(mAdvertiserId, periodicData, mAttributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); } catch (TimeoutException | RemoteException e) { @@ -211,7 +211,7 @@ public final class AdvertisingSet { @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADVERTISE) public void setPeriodicAdvertisingEnabled(boolean enable) { try { - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); mGatt.setPeriodicAdvertisingEnable(mAdvertiserId, enable, mAttributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); } catch (TimeoutException | RemoteException e) { @@ -233,7 +233,7 @@ public final class AdvertisingSet { }) public void getOwnAddress() { try { - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); mGatt.getOwnAddress(mAdvertiserId, mAttributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); } catch (TimeoutException | RemoteException e) { diff --git a/framework/java/android/bluetooth/le/BluetoothLeAdvertiser.java b/framework/java/android/bluetooth/le/BluetoothLeAdvertiser.java index c77448f57c..26c856792a 100644 --- a/framework/java/android/bluetooth/le/BluetoothLeAdvertiser.java +++ b/framework/java/android/bluetooth/le/BluetoothLeAdvertiser.java @@ -463,7 +463,7 @@ public final class BluetoothLeAdvertiser { } try { - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); gatt.startAdvertisingSet(parameters, advertiseData, scanResponse, periodicParameters, periodicData, duration, maxExtendedAdvertisingEvents, wrapped, mAttributionSource, recv); @@ -496,7 +496,7 @@ public final class BluetoothLeAdvertiser { IBluetoothGatt gatt; try { gatt = mBluetoothManager.getBluetoothGatt(); - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); gatt.stopAdvertisingSet(wrapped, mAttributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); } catch (TimeoutException | RemoteException e) { diff --git a/framework/java/android/bluetooth/le/BluetoothLeScanner.java b/framework/java/android/bluetooth/le/BluetoothLeScanner.java index 890c259642..7ebbcbaa4e 100644 --- a/framework/java/android/bluetooth/le/BluetoothLeScanner.java +++ b/framework/java/android/bluetooth/le/BluetoothLeScanner.java @@ -294,7 +294,7 @@ public final class BluetoothLeScanner { wrapper.startRegistration(); } else { try { - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); gatt.startScanForIntent(callbackIntent, settings, filters, mAttributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); @@ -342,7 +342,7 @@ public final class BluetoothLeScanner { IBluetoothGatt gatt; try { gatt = mBluetoothManager.getBluetoothGatt(); - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); gatt.stopScanForIntent(callbackIntent, mAttributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); } catch (TimeoutException | RemoteException e) { @@ -440,7 +440,7 @@ public final class BluetoothLeScanner { // Scan stopped. if (mScannerId == -1 || mScannerId == -2) return; try { - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); mBluetoothGatt.registerScanner(this, mWorkSource, mAttributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); wait(REGISTRATION_CALLBACK_TIMEOUT_MILLIS); @@ -472,11 +472,11 @@ public final class BluetoothLeScanner { return; } try { - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); mBluetoothGatt.stopScan(mScannerId, mAttributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); - final SynchronousResultReceiver recv2 = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv2 = SynchronousResultReceiver.get(); mBluetoothGatt.unregisterScanner(mScannerId, mAttributionSource, recv2); recv2.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); } catch (TimeoutException | RemoteException e) { @@ -494,7 +494,7 @@ public final class BluetoothLeScanner { return; } try { - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); mBluetoothGatt.flushPendingBatchResults(mScannerId, mAttributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); } catch (TimeoutException | RemoteException e) { @@ -513,7 +513,7 @@ public final class BluetoothLeScanner { synchronized (this) { if (status == BluetoothGatt.GATT_SUCCESS) { try { - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); if (mScannerId == -1) { // Registration succeeds after timeout, unregister scanner. mBluetoothGatt.unregisterScanner(scannerId, mAttributionSource, recv); diff --git a/framework/java/android/bluetooth/le/PeriodicAdvertisingManager.java b/framework/java/android/bluetooth/le/PeriodicAdvertisingManager.java index e8e1d8737b..730c64f91f 100644 --- a/framework/java/android/bluetooth/le/PeriodicAdvertisingManager.java +++ b/framework/java/android/bluetooth/le/PeriodicAdvertisingManager.java @@ -177,7 +177,7 @@ public final class PeriodicAdvertisingManager { mCallbackWrappers.put(callback, wrapped); try { - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); gatt.registerSync(scanResult, skip, timeout, wrapped, mAttributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); } catch (TimeoutException | RemoteException e) { @@ -215,7 +215,7 @@ public final class PeriodicAdvertisingManager { } try { - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); gatt.unregisterSync(wrapper, mAttributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); } catch (TimeoutException | RemoteException e) { @@ -246,7 +246,7 @@ public final class PeriodicAdvertisingManager { return; } try { - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); gatt.transferSync(bda, serviceData , syncHandle, mAttributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); } catch (TimeoutException | RemoteException e) { @@ -291,7 +291,7 @@ public final class PeriodicAdvertisingManager { throw new IllegalArgumentException("callback was not properly registered"); } try { - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); gatt.transferSetInfo(bda, serviceData , advHandle, wrapper, mAttributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); } catch (RemoteException | TimeoutException e) { diff --git a/service/java/com/android/server/bluetooth/BluetoothManagerService.java b/service/java/com/android/server/bluetooth/BluetoothManagerService.java index e7fcf56692..5f74ecc6e5 100644 --- a/service/java/com/android/server/bluetooth/BluetoothManagerService.java +++ b/service/java/com/android/server/bluetooth/BluetoothManagerService.java @@ -801,7 +801,7 @@ public class BluetoothManagerService extends IBluetoothManager.Stub { private boolean synchronousDisable(AttributionSource attributionSource) throws RemoteException, TimeoutException { if (mBluetooth == null) return false; - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); mBluetooth.disable(attributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(false); } @@ -810,7 +810,7 @@ public class BluetoothManagerService extends IBluetoothManager.Stub { private boolean synchronousEnable(boolean quietMode, AttributionSource attributionSource) throws RemoteException, TimeoutException { if (mBluetooth == null) return false; - final SynchronousResultReceiver<Boolean> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Boolean> recv = SynchronousResultReceiver.get(); mBluetooth.enable(quietMode, attributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(false); } @@ -819,7 +819,7 @@ public class BluetoothManagerService extends IBluetoothManager.Stub { private String synchronousGetAddress(AttributionSource attributionSource) throws RemoteException, TimeoutException { if (mBluetooth == null) return null; - final SynchronousResultReceiver<String> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<String> recv = SynchronousResultReceiver.get(); mBluetooth.getAddressWithAttribution(attributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); } @@ -828,7 +828,7 @@ public class BluetoothManagerService extends IBluetoothManager.Stub { private String synchronousGetName(AttributionSource attributionSource) throws RemoteException, TimeoutException { if (mBluetooth == null) return null; - final SynchronousResultReceiver<String> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<String> recv = SynchronousResultReceiver.get(); mBluetooth.getName(attributionSource, recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); } @@ -837,7 +837,7 @@ public class BluetoothManagerService extends IBluetoothManager.Stub { private int synchronousGetState() throws RemoteException, TimeoutException { if (mBluetooth == null) return BluetoothAdapter.STATE_OFF; - final SynchronousResultReceiver<Integer> recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver<Integer> recv = SynchronousResultReceiver.get(); mBluetooth.getState(recv); return recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(BluetoothAdapter.STATE_OFF); } @@ -846,7 +846,7 @@ public class BluetoothManagerService extends IBluetoothManager.Stub { private void synchronousOnBrEdrDown(AttributionSource attributionSource) throws RemoteException, TimeoutException { if (mBluetooth == null) return; - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); mBluetooth.onBrEdrDown(attributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); } @@ -855,7 +855,7 @@ public class BluetoothManagerService extends IBluetoothManager.Stub { private void synchronousOnLeServiceUp(AttributionSource attributionSource) throws RemoteException, TimeoutException { if (mBluetooth == null) return; - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); mBluetooth.onLeServiceUp(attributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); } @@ -864,7 +864,7 @@ public class BluetoothManagerService extends IBluetoothManager.Stub { private void synchronousRegisterCallback(IBluetoothCallback callback, AttributionSource attributionSource) throws RemoteException, TimeoutException { if (mBluetooth == null) return; - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); mBluetooth.registerCallback(callback, attributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); } @@ -873,7 +873,7 @@ public class BluetoothManagerService extends IBluetoothManager.Stub { private void synchronousUnregisterCallback(IBluetoothCallback callback, AttributionSource attributionSource) throws RemoteException, TimeoutException { if (mBluetooth == null) return; - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); mBluetooth.unregisterCallback(callback, attributionSource, recv); recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); } @@ -1274,7 +1274,7 @@ public class BluetoothManagerService extends IBluetoothManager.Stub { if (isBleAppPresent()) { // Need to stay at BLE ON. Disconnect all Gatt connections try { - final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + final SynchronousResultReceiver recv = SynchronousResultReceiver.get(); if (mBluetoothGatt != null) { mBluetoothGatt.unregAll(attributionSource, recv); } @@ -2015,7 +2015,7 @@ public class BluetoothManagerService extends IBluetoothManager.Stub { } else if (state == BluetoothAdapter.STATE_OFF) { mEnable = true; mBluetooth.factoryReset(mContext.getAttributionSource(), - new SynchronousResultReceiver()); + SynchronousResultReceiver.get()); handleEnable(mQuietEnable); } else if (state == BluetoothAdapter.STATE_BLE_ON) { addActiveLog( @@ -2023,14 +2023,14 @@ public class BluetoothManagerService extends IBluetoothManager.Stub { mContext.getPackageName(), false); synchronousOnBrEdrDown(mContext.getAttributionSource()); mBluetooth.factoryReset(mContext.getAttributionSource(), - new SynchronousResultReceiver()); + SynchronousResultReceiver.get()); } else if (state == BluetoothAdapter.STATE_ON) { addActiveLog( BluetoothProtoEnums.ENABLE_DISABLE_REASON_FACTORY_RESET, mContext.getPackageName(), false); handleDisable(); mBluetooth.factoryReset(mContext.getAttributionSource(), - new SynchronousResultReceiver()); + SynchronousResultReceiver.get()); } } catch (RemoteException | TimeoutException e) { Log.e(TAG, "factoryReset(): Unable to do factoryReset.", e); @@ -2510,8 +2510,12 @@ public class BluetoothManagerService extends IBluetoothManager.Stub { break; } if (msg.arg1 > 0) { - mContext.unbindService(psc); - Log.w(TAG, "Calling psc.bindService from MESSAGE_BIND_PROFILE_SERVICE"); + try { + mContext.unbindService(psc); + Log.w(TAG, "Calling psc.bindService from MESSAGE_BIND_PROFILE_SERVICE"); + } catch (IllegalArgumentException e) { + Log.e(TAG, "Unable to unbind service with intent: " + psc.mIntent, e); + } psc.bindService(msg.arg1 - 1); } break; diff --git a/system/bta/dm/bta_dm_act.cc b/system/bta/dm/bta_dm_act.cc index cc6b7930bf..52bb6448f0 100644 --- a/system/bta/dm/bta_dm_act.cc +++ b/system/bta/dm/bta_dm_act.cc @@ -44,6 +44,7 @@ #include "main/shim/shim.h" #include "osi/include/allocator.h" #include "osi/include/compat.h" +#include "osi/include/fixed_queue.h" #include "osi/include/log.h" #include "osi/include/osi.h" #include "stack/btm/btm_ble_int.h" @@ -320,6 +321,8 @@ void BTA_dm_on_hw_off() { /* hw is ready, go on with BTA DM initialization */ alarm_free(bta_dm_search_cb.search_timer); alarm_free(bta_dm_search_cb.gatt_close_timer); + osi_free(bta_dm_search_cb.p_pending_search); + fixed_queue_free(bta_dm_search_cb.pending_discovery_queue, osi_free); memset(&bta_dm_search_cb, 0, sizeof(bta_dm_search_cb)); } @@ -339,6 +342,8 @@ void BTA_dm_on_hw_on() { /* hw is ready, go on with BTA DM initialization */ alarm_free(bta_dm_search_cb.search_timer); alarm_free(bta_dm_search_cb.gatt_close_timer); + osi_free(bta_dm_search_cb.p_pending_search); + fixed_queue_free(bta_dm_search_cb.pending_discovery_queue, osi_free); memset(&bta_dm_search_cb, 0, sizeof(bta_dm_search_cb)); /* * TODO: Should alarm_free() the bta_dm_search_cb timers during @@ -347,6 +352,7 @@ void BTA_dm_on_hw_on() { bta_dm_search_cb.search_timer = alarm_new("bta_dm_search.search_timer"); bta_dm_search_cb.gatt_close_timer = alarm_new("bta_dm_search.gatt_close_timer"); + bta_dm_search_cb.pending_discovery_queue = fixed_queue_new(SIZE_MAX); memset(&bta_dm_conn_srvcs, 0, sizeof(bta_dm_conn_srvcs)); memset(&bta_dm_di_cb, 0, sizeof(tBTA_DM_DI_CB)); @@ -990,7 +996,7 @@ static bool bta_dm_read_remote_device_name(const RawAddress& bd_addr, void bta_dm_inq_cmpl(uint8_t num) { if (bta_dm_search_get_state() == BTA_DM_SEARCH_CANCELLING) { bta_dm_search_set_state(BTA_DM_SEARCH_IDLE); - bta_dm_search_cancel_cmpl(); + bta_dm_execute_queued_request(); return; } @@ -1289,6 +1295,7 @@ void bta_dm_search_cmpl() { /* no BLE connection, i.e. Classic service discovery end */ if (conn_id == GATT_INVALID_CONN_ID) { bta_dm_search_cb.p_search_cback(BTA_DM_DISC_CMPL_EVT, nullptr); + bta_dm_execute_queued_request(); return; } @@ -1299,6 +1306,7 @@ void bta_dm_search_cmpl() { if (count == 0) { LOG_INFO("Empty GATT database - no BLE services discovered"); bta_dm_search_cb.p_search_cback(BTA_DM_DISC_CMPL_EVT, nullptr); + bta_dm_execute_queued_request(); return; } @@ -1323,6 +1331,8 @@ void bta_dm_search_cmpl() { bta_dm_search_cb.p_search_cback(BTA_DM_DISC_BLE_RES_EVT, &result); bta_dm_search_cb.p_search_cback(BTA_DM_DISC_CMPL_EVT, nullptr); + + bta_dm_execute_queued_request(); } /******************************************************************************* @@ -1419,13 +1429,13 @@ void bta_dm_free_sdp_db() { * * Function bta_dm_queue_search * - * Description Queues search command while search is being cancelled + * Description Queues search command * * Returns void * ******************************************************************************/ void bta_dm_queue_search(tBTA_DM_MSG* p_data) { - bta_dm_search_clear_queue(); + osi_free_and_reset((void**)&bta_dm_search_cb.p_pending_search); bta_dm_search_cb.p_pending_search = (tBTA_DM_MSG*)osi_malloc(sizeof(tBTA_DM_API_SEARCH)); memcpy(bta_dm_search_cb.p_pending_search, p_data, sizeof(tBTA_DM_API_SEARCH)); @@ -1435,50 +1445,76 @@ void bta_dm_queue_search(tBTA_DM_MSG* p_data) { * * Function bta_dm_queue_disc * - * Description Queues discovery command while search is being cancelled + * Description Queues discovery command * * Returns void * ******************************************************************************/ void bta_dm_queue_disc(tBTA_DM_MSG* p_data) { - bta_dm_search_clear_queue(); - bta_dm_search_cb.p_pending_discovery = + tBTA_DM_MSG* p_pending_discovery = (tBTA_DM_MSG*)osi_malloc(sizeof(tBTA_DM_API_DISCOVER)); - memcpy(bta_dm_search_cb.p_pending_discovery, p_data, - sizeof(tBTA_DM_API_DISCOVER)); + memcpy(p_pending_discovery, p_data, sizeof(tBTA_DM_API_DISCOVER)); + fixed_queue_enqueue(bta_dm_search_cb.pending_discovery_queue, + p_pending_discovery); } /******************************************************************************* * - * Function bta_dm_search_clear_queue + * Function bta_dm_execute_queued_request * - * Description Clears the queue if API search cancel is called + * Description Executes queued request if one exists * * Returns void * ******************************************************************************/ -void bta_dm_search_clear_queue() { - osi_free_and_reset((void**)&bta_dm_search_cb.p_pending_search); - osi_free_and_reset((void**)&bta_dm_search_cb.p_pending_discovery); +void bta_dm_execute_queued_request() { + if (bta_dm_search_cb.p_pending_search) { + // Updated queued event to search event to trigger start search + if (bta_dm_search_cb.p_pending_search->hdr.event == + BTA_DM_API_QUEUE_SEARCH_EVT) { + bta_dm_search_cb.p_pending_search->hdr.event = BTA_DM_API_SEARCH_EVT; + } + LOG_INFO("%s Start pending search", __func__); + bta_sys_sendmsg(bta_dm_search_cb.p_pending_search); + bta_dm_search_cb.p_pending_search = NULL; + } else { + tBTA_DM_MSG* p_pending_discovery = (tBTA_DM_MSG*)fixed_queue_try_dequeue( + bta_dm_search_cb.pending_discovery_queue); + if (p_pending_discovery) { + if (p_pending_discovery->hdr.event == BTA_DM_API_QUEUE_DISCOVER_EVT) { + p_pending_discovery->hdr.event = BTA_DM_API_DISCOVER_EVT; + } + LOG_INFO("%s Start pending discovery", __func__); + bta_sys_sendmsg(p_pending_discovery); + } + } +} + +/******************************************************************************* + * + * Function bta_dm_is_search_request_queued + * + * Description Checks if there is a queued search request + * + * Returns bool + * + ******************************************************************************/ +bool bta_dm_is_search_request_queued() { + return bta_dm_search_cb.p_pending_search != NULL; } /******************************************************************************* * - * Function bta_dm_search_cancel_cmpl + * Function bta_dm_search_clear_queue * - * Description Search cancel is complete + * Description Clears the queue if API search cancel is called * * Returns void * ******************************************************************************/ -void bta_dm_search_cancel_cmpl() { - if (bta_dm_search_cb.p_pending_search) { - bta_sys_sendmsg(bta_dm_search_cb.p_pending_search); - bta_dm_search_cb.p_pending_search = NULL; - } else if (bta_dm_search_cb.p_pending_discovery) { - bta_sys_sendmsg(bta_dm_search_cb.p_pending_discovery); - bta_dm_search_cb.p_pending_discovery = NULL; - } +void bta_dm_search_clear_queue() { + osi_free_and_reset((void**)&bta_dm_search_cb.p_pending_search); + fixed_queue_flush(bta_dm_search_cb.pending_discovery_queue, osi_free); } /******************************************************************************* diff --git a/system/bta/dm/bta_dm_api.cc b/system/bta/dm/bta_dm_api.cc index cf060eef77..5e1a8787f7 100644 --- a/system/bta/dm/bta_dm_api.cc +++ b/system/bta/dm/bta_dm_api.cc @@ -80,11 +80,16 @@ void BTA_DmSetDeviceName(const char* p_name) { * Returns void * ******************************************************************************/ -void BTA_DmSearch(tBTA_DM_SEARCH_CBACK* p_cback) { +void BTA_DmSearch(tBTA_DM_SEARCH_CBACK* p_cback, bool is_bonding_or_sdp) { tBTA_DM_API_SEARCH* p_msg = (tBTA_DM_API_SEARCH*)osi_calloc(sizeof(tBTA_DM_API_SEARCH)); - p_msg->hdr.event = BTA_DM_API_SEARCH_EVT; + /* Queue request if a device is bonding or performing service discovery */ + if (is_bonding_or_sdp) { + p_msg->hdr.event = BTA_DM_API_QUEUE_SEARCH_EVT; + } else { + p_msg->hdr.event = BTA_DM_API_SEARCH_EVT; + } p_msg->p_cback = p_cback; bta_sys_sendmsg(p_msg); @@ -101,6 +106,8 @@ void BTA_DmSearch(tBTA_DM_SEARCH_CBACK* p_cback) { * ******************************************************************************/ void BTA_DmSearchCancel(void) { + bta_dm_search_clear_queue(); + switch (bta_dm_search_get_state()) { case BTA_DM_SEARCH_IDLE: bta_dm_search_cancel_notify(); @@ -110,7 +117,6 @@ void BTA_DmSearchCancel(void) { bta_dm_search_cancel(); break; case BTA_DM_SEARCH_CANCELLING: - bta_dm_search_clear_queue(); bta_dm_search_cancel_notify(); break; case BTA_DM_DISCOVER_ACTIVE: @@ -132,11 +138,15 @@ void BTA_DmSearchCancel(void) { * ******************************************************************************/ void BTA_DmDiscover(const RawAddress& bd_addr, tBTA_DM_SEARCH_CBACK* p_cback, - tBT_TRANSPORT transport) { + tBT_TRANSPORT transport, bool is_bonding_or_sdp) { tBTA_DM_API_DISCOVER* p_msg = (tBTA_DM_API_DISCOVER*)osi_calloc(sizeof(tBTA_DM_API_DISCOVER)); - p_msg->hdr.event = BTA_DM_API_DISCOVER_EVT; + if (is_bonding_or_sdp) { + p_msg->hdr.event = BTA_DM_API_QUEUE_DISCOVER_EVT; + } else { + p_msg->hdr.event = BTA_DM_API_DISCOVER_EVT; + } p_msg->bd_addr = bd_addr; p_msg->transport = transport; p_msg->p_cback = p_cback; diff --git a/system/bta/dm/bta_dm_int.h b/system/bta/dm/bta_dm_int.h index a39c872879..e51d9acb6c 100644 --- a/system/bta/dm/bta_dm_int.h +++ b/system/bta/dm/bta_dm_int.h @@ -70,17 +70,19 @@ enum { BTA_DM_SDP_RESULT_EVT, BTA_DM_SEARCH_CMPL_EVT, BTA_DM_DISCOVERY_RESULT_EVT, - BTA_DM_DISC_CLOSE_TOUT_EVT + BTA_DM_DISC_CLOSE_TOUT_EVT, + BTA_DM_API_QUEUE_SEARCH_EVT, + BTA_DM_API_QUEUE_DISCOVER_EVT }; -/* data type for BTA_DM_API_SEARCH_EVT */ +/* data type for BTA_DM_API_SEARCH_EVT and BTA_DM_API_QUEUE_SEARCH_EVT */ typedef struct { BT_HDR_RIGID hdr; tBTA_SERVICE_MASK services; tBTA_DM_SEARCH_CBACK* p_cback; } tBTA_DM_API_SEARCH; -/* data type for BTA_DM_API_DISCOVER_EVT */ +/* data type for BTA_DM_API_DISCOVER_EVT and BTA_DM_API_QUEUE_DISCOVER_EVT */ typedef struct { BT_HDR_RIGID hdr; RawAddress bd_addr; @@ -356,7 +358,7 @@ typedef struct { alarm_t* search_timer; uint8_t service_index; tBTA_DM_MSG* p_pending_search; - tBTA_DM_MSG* p_pending_discovery; + fixed_queue_t* pending_discovery_queue; bool wait_disc; bool sdp_results; bluetooth::Uuid uuid; @@ -533,8 +535,9 @@ extern void bta_dm_search_result(tBTA_DM_MSG* p_data); extern void bta_dm_discovery_cmpl(tBTA_DM_MSG* p_data); extern void bta_dm_queue_search(tBTA_DM_MSG* p_data); extern void bta_dm_queue_disc(tBTA_DM_MSG* p_data); +extern void bta_dm_execute_queued_request(); +extern bool bta_dm_is_search_request_queued(); extern void bta_dm_search_clear_queue(); -extern void bta_dm_search_cancel_cmpl(); extern void bta_dm_search_cancel_notify(); extern void bta_dm_disc_rmt_name(tBTA_DM_MSG* p_data); extern tBTA_DM_PEER_DEVICE* bta_dm_find_peer_device( diff --git a/system/bta/dm/bta_dm_main.cc b/system/bta/dm/bta_dm_main.cc index 5dd404b46f..523831b9da 100644 --- a/system/bta/dm/bta_dm_main.cc +++ b/system/bta/dm/bta_dm_main.cc @@ -82,6 +82,12 @@ bool bta_dm_search_sm_execute(BT_HDR_RIGID* p_msg) { case BTA_DM_DISC_CLOSE_TOUT_EVT: bta_dm_close_gatt_conn(message); break; + case BTA_DM_API_QUEUE_SEARCH_EVT: + bta_dm_queue_search(message); + break; + case BTA_DM_API_QUEUE_DISCOVER_EVT: + bta_dm_queue_disc(message); + break; } break; case BTA_DM_SEARCH_ACTIVE: @@ -101,14 +107,20 @@ bool bta_dm_search_sm_execute(BT_HDR_RIGID* p_msg) { case BTA_DM_DISC_CLOSE_TOUT_EVT: bta_dm_close_gatt_conn(message); break; + case BTA_DM_API_DISCOVER_EVT: + case BTA_DM_API_QUEUE_DISCOVER_EVT: + bta_dm_queue_disc(message); + break; } break; case BTA_DM_SEARCH_CANCELLING: switch (p_msg->event) { case BTA_DM_API_SEARCH_EVT: + case BTA_DM_API_QUEUE_SEARCH_EVT: bta_dm_queue_search(message); break; case BTA_DM_API_DISCOVER_EVT: + case BTA_DM_API_QUEUE_DISCOVER_EVT: bta_dm_queue_disc(message); break; case BTA_DM_SDP_RESULT_EVT: @@ -118,7 +130,7 @@ bool bta_dm_search_sm_execute(BT_HDR_RIGID* p_msg) { bta_dm_search_set_state(BTA_DM_SEARCH_IDLE); bta_dm_free_sdp_db(); bta_dm_search_cancel_notify(); - bta_dm_search_cancel_cmpl(); + bta_dm_execute_queued_request(); break; } break; @@ -136,6 +148,14 @@ bool bta_dm_search_sm_execute(BT_HDR_RIGID* p_msg) { case BTA_DM_DISCOVERY_RESULT_EVT: bta_dm_disc_result(message); break; + case BTA_DM_API_SEARCH_EVT: + case BTA_DM_API_QUEUE_SEARCH_EVT: + bta_dm_queue_search(message); + break; + case BTA_DM_API_DISCOVER_EVT: + case BTA_DM_API_QUEUE_DISCOVER_EVT: + bta_dm_queue_disc(message); + break; } break; } diff --git a/system/bta/gatt/bta_gattc_act.cc b/system/bta/gatt/bta_gattc_act.cc index cd9da7a949..783ab69f14 100644 --- a/system/bta/gatt/bta_gattc_act.cc +++ b/system/bta/gatt/bta_gattc_act.cc @@ -385,6 +385,16 @@ void bta_gattc_open(tBTA_GATTC_CLCB* p_clcb, const tBTA_GATTC_DATA* p_data) { return; } + tBTA_GATTC_RCB* p_clreg = p_clcb->p_rcb; + /* Re-enable notification registration for closed connection */ + for (int i = 0; i < BTA_GATTC_NOTIF_REG_MAX; i++) { + if (p_clreg->notif_reg[i].in_use && + p_clreg->notif_reg[i].remote_bda == p_clcb->bda && + p_clreg->notif_reg[i].app_disconnected) { + p_clreg->notif_reg[i].app_disconnected = false; + } + } + /* a connected remote device */ if (GATT_GetConnIdIfConnected( p_clcb->p_rcb->client_if, p_data->api_conn.remote_bda, @@ -511,6 +521,16 @@ void bta_gattc_conn(tBTA_GATTC_CLCB* p_clcb, const tBTA_GATTC_DATA* p_data) { if (p_clcb->p_srcb->mtu == 0) p_clcb->p_srcb->mtu = GATT_DEF_BLE_MTU_SIZE; + tBTA_GATTC_RCB* p_clreg = p_clcb->p_rcb; + /* Re-enable notification registration for closed connection */ + for (int i = 0; i < BTA_GATTC_NOTIF_REG_MAX; i++) { + if (p_clreg->notif_reg[i].in_use && + p_clreg->notif_reg[i].remote_bda == p_clcb->bda && + p_clreg->notif_reg[i].app_disconnected) { + p_clreg->notif_reg[i].app_disconnected = false; + } + } + /* start database cache if needed */ if (p_clcb->p_srcb->gatt_database.IsEmpty() || p_clcb->p_srcb->state != BTA_GATTC_SERV_IDLE) { @@ -604,6 +624,14 @@ void bta_gattc_close(tBTA_GATTC_CLCB* p_clcb, const tBTA_GATTC_DATA* p_data) { bta_sys_conn_close(BTA_ID_GATTC, BTA_ALL_APP_ID, p_clcb->bda); } + /* Disable notification registration for closed connection */ + for (int i = 0; i < BTA_GATTC_NOTIF_REG_MAX; i++) { + if (p_clreg->notif_reg[i].in_use && + p_clreg->notif_reg[i].remote_bda == p_clcb->bda) { + p_clreg->notif_reg[i].app_disconnected = true; + } + } + bta_gattc_clcb_dealloc(p_clcb); if (p_data->hdr.event == BTA_GATTC_API_CLOSE_EVT) { @@ -963,13 +991,28 @@ static void bta_gattc_write_cmpl(tBTA_GATTC_CLCB* p_clcb, GATT_WRITE_OP_CB cb = p_clcb->p_q_cmd->api_write.write_cb; void* my_cb_data = p_clcb->p_q_cmd->api_write.write_cb_data; - osi_free_and_reset((void**)&p_clcb->p_q_cmd); - if (cb) { - cb(p_clcb->bta_conn_id, p_data->status, p_data->p_cmpl->att_value.handle, - p_data->p_cmpl->att_value.len, p_data->p_cmpl->att_value.value, - my_cb_data); + if (p_data->status == 0 && + p_clcb->p_q_cmd->api_write.write_type == BTA_GATTC_WRITE_PREPARE) { + LOG_DEBUG("Handling prepare write success response: handle 0x%04x", + p_data->p_cmpl->att_value.handle); + /* If this is successful Prepare write, lets provide to the callback the + * data provided by server */ + cb(p_clcb->bta_conn_id, p_data->status, p_data->p_cmpl->att_value.handle, + p_data->p_cmpl->att_value.len, p_data->p_cmpl->att_value.value, + my_cb_data); + } else { + LOG_DEBUG("Handling write response type: %d: handle 0x%04x", + p_clcb->p_q_cmd->api_write.write_type, + p_data->p_cmpl->att_value.handle); + /* Otherwise, provide data which were intended to write. */ + cb(p_clcb->bta_conn_id, p_data->status, p_data->p_cmpl->att_value.handle, + p_clcb->p_q_cmd->api_write.len, p_clcb->p_q_cmd->api_write.p_value, + my_cb_data); + } } + + osi_free_and_reset((void**)&p_clcb->p_q_cmd); } /** execute write complete */ diff --git a/system/bta/gatt/bta_gattc_int.h b/system/bta/gatt/bta_gattc_int.h index 917ecc4860..1df5e53f52 100644 --- a/system/bta/gatt/bta_gattc_int.h +++ b/system/bta/gatt/bta_gattc_int.h @@ -230,6 +230,7 @@ typedef struct { typedef struct { bool in_use; + bool app_disconnected; RawAddress remote_bda; uint16_t handle; } tBTA_GATTC_NOTIF_REG; diff --git a/system/bta/gatt/bta_gattc_utils.cc b/system/bta/gatt/bta_gattc_utils.cc index ed67729bc9..f49ae36e3c 100644 --- a/system/bta/gatt/bta_gattc_utils.cc +++ b/system/bta/gatt/bta_gattc_utils.cc @@ -352,7 +352,8 @@ bool bta_gattc_check_notif_registry(tBTA_GATTC_RCB* p_clreg, for (i = 0; i < BTA_GATTC_NOTIF_REG_MAX; i++) { if (p_clreg->notif_reg[i].in_use && p_clreg->notif_reg[i].remote_bda == p_srcb->server_bda && - p_clreg->notif_reg[i].handle == p_notify->handle) { + p_clreg->notif_reg[i].handle == p_notify->handle && + !p_clreg->notif_reg[i].app_disconnected) { VLOG(1) << "Notification registered!"; return true; } diff --git a/system/bta/include/bta_api.h b/system/bta/include/bta_api.h index 447823a6a8..b98c8e4b5a 100644 --- a/system/bta/include/bta_api.h +++ b/system/bta/include/bta_api.h @@ -710,13 +710,15 @@ extern bool BTA_DmSetVisibility(bt_scan_mode_t mode); * first performs an inquiry; for each device found from the * inquiry it gets the remote name of the device. If * parameter services is nonzero, service discovery will be - * performed on each device for the services specified. + * performed on each device for the services specified. If the + * parameter is_bonding_or_sdp is true, the request will be + * queued until bonding or sdp completes * * * Returns void * ******************************************************************************/ -extern void BTA_DmSearch(tBTA_DM_SEARCH_CBACK* p_cback); +extern void BTA_DmSearch(tBTA_DM_SEARCH_CBACK* p_cback, bool is_bonding_or_sdp); /******************************************************************************* * @@ -744,7 +746,7 @@ extern void BTA_DmSearchCancel(void); ******************************************************************************/ extern void BTA_DmDiscover(const RawAddress& bd_addr, tBTA_DM_SEARCH_CBACK* p_cback, - tBT_TRANSPORT transport); + tBT_TRANSPORT transport, bool is_bonding_or_sdp); /******************************************************************************* * diff --git a/system/btif/src/btif_dm.cc b/system/btif/src/btif_dm.cc index e13fad3236..30e08cdfba 100644 --- a/system/btif/src/btif_dm.cc +++ b/system/btif/src/btif_dm.cc @@ -1917,10 +1917,16 @@ static void bta_energy_info_cb(tBTM_BLE_TX_TIME_MS tx_time, void btif_dm_start_discovery(void) { BTIF_TRACE_EVENT("%s", __func__); + if (bta_dm_is_search_request_queued()) { + LOG_INFO("%s skipping start discovery because a request is queued", + __func__); + return; + } + /* Will be enabled to true once inquiry busy level has been received */ btif_dm_inquiry_in_progress = false; /* find nearby devices */ - BTA_DmSearch(btif_dm_search_devices_evt); + BTA_DmSearch(btif_dm_search_devices_evt, is_bonding_or_sdp()); } /******************************************************************************* @@ -2400,7 +2406,10 @@ void btif_dm_get_remote_services(RawAddress remote_addr, const int transport) { BTIF_TRACE_EVENT("%s: transport=%d, remote_addr=%s", __func__, transport, remote_addr.ToString().c_str()); - BTA_DmDiscover(remote_addr, btif_dm_search_services_evt, transport); + BTA_DmDiscover(remote_addr, btif_dm_search_services_evt, transport, + remote_addr != pairing_cb.bd_addr && + remote_addr != pairing_cb.static_bdaddr && + is_bonding_or_sdp()); } void btif_dm_enable_service(tBTA_SERVICE_ID service_id, bool enable) { diff --git a/system/btif/src/btif_gatt_client.cc b/system/btif/src/btif_gatt_client.cc index 08e4431ff9..905179d560 100644 --- a/system/btif/src/btif_gatt_client.cc +++ b/system/btif/src/btif_gatt_client.cc @@ -106,6 +106,15 @@ extern const btgatt_callbacks_t* bt_gatt_callbacks; /******************************************************************************* * Constants & Macros ******************************************************************************/ +#define CLI_CBACK_WRAP_IN_JNI(P_CBACK, P_CBACK_WRAP) \ + do { \ + if (bt_gatt_callbacks && bt_gatt_callbacks->client->P_CBACK) { \ + BTIF_TRACE_API("HAL bt_gatt_callbacks->client->%s", #P_CBACK); \ + do_in_jni_thread(P_CBACK_WRAP); \ + } else { \ + ASSERTC(0, "Callback is NULL", 0); \ + } \ + } while (0) #define CLI_CBACK_IN_JNI(P_CBACK, ...) \ do { \ @@ -534,8 +543,17 @@ static bt_status_t btif_gattc_read_char_descr(int conn_id, uint16_t handle, void write_char_cb(uint16_t conn_id, tGATT_STATUS status, uint16_t handle, uint16_t len, const uint8_t* value, void* data) { - CLI_CBACK_IN_JNI(write_characteristic_cb, conn_id, status, handle, len, - value); + std::vector<uint8_t> val(value, value + len); + CLI_CBACK_WRAP_IN_JNI( + write_characteristic_cb, + base::BindOnce( + [](write_characteristic_callback cb, uint16_t conn_id, + tGATT_STATUS status, uint16_t handle, + std::vector<uint8_t> moved_value) { + cb(conn_id, status, handle, moved_value.size(), moved_value.data()); + }, + bt_gatt_callbacks->client->write_characteristic_cb, conn_id, status, + handle, std::move(val))); } static bt_status_t btif_gattc_write_char(int conn_id, uint16_t handle, @@ -554,7 +572,18 @@ static bt_status_t btif_gattc_write_char(int conn_id, uint16_t handle, void write_descr_cb(uint16_t conn_id, tGATT_STATUS status, uint16_t handle, uint16_t len, const uint8_t* value, void* data) { - CLI_CBACK_IN_JNI(write_descriptor_cb, conn_id, status, handle, len, value); + std::vector<uint8_t> val(value, value + len); + + CLI_CBACK_WRAP_IN_JNI( + write_descriptor_cb, + base::BindOnce( + [](write_descriptor_callback cb, uint16_t conn_id, + tGATT_STATUS status, uint16_t handle, + std::vector<uint8_t> moved_value) { + cb(conn_id, status, handle, moved_value.size(), moved_value.data()); + }, + bt_gatt_callbacks->client->write_descriptor_cb, conn_id, status, + handle, std::move(val))); } static bt_status_t btif_gattc_write_char_descr(int conn_id, uint16_t handle, diff --git a/system/gd/hci/acl_manager/le_impl.h b/system/gd/hci/acl_manager/le_impl.h index e9d1f0505d..dbef2f271f 100644 --- a/system/gd/hci/acl_manager/le_impl.h +++ b/system/gd/hci/acl_manager/le_impl.h @@ -669,7 +669,7 @@ struct le_impl : public bluetooth::hci::LeAddressManagerCallback { OwnAddressType own_address_type = static_cast<OwnAddressType>(le_address_manager_->GetCurrentAddress().GetAddressType()); uint16_t conn_interval_min = 0x0018; - uint16_t conn_interval_max = 0x0030; + uint16_t conn_interval_max = 0x0028; uint16_t conn_latency = 0x0000; uint16_t supervision_timeout = 0x001f4; ASSERT(check_connection_parameters(conn_interval_min, conn_interval_max, conn_latency, supervision_timeout)); diff --git a/system/gd/hci/le_address_manager.cc b/system/gd/hci/le_address_manager.cc index 6d1806d809..28f51004a7 100644 --- a/system/gd/hci/le_address_manager.cc +++ b/system/gd/hci/le_address_manager.cc @@ -230,6 +230,11 @@ void LeAddressManager::ack_pause(LeAddressManagerCallback* callback) { for (auto client : registered_clients_) { if (client.second != ClientState::PAUSED) { // make sure all client paused + if (client.second != ClientState::WAITING_FOR_PAUSE) { + LOG_DEBUG("Trigger OnPause for client that not paused and not waiting for pause"); + client.second = ClientState::WAITING_FOR_PAUSE; + client.first->OnPause(); + } return; } } @@ -421,9 +426,9 @@ void LeAddressManager::AddDeviceToResolvingList( cached_commands_.push(std::move(enable)); if (registered_clients_.empty()) { - handle_next_command(); + handler_->BindOnceOn(this, &LeAddressManager::handle_next_command).Invoke(); } else { - pause_registered_clients(); + handler_->BindOnceOn(this, &LeAddressManager::pause_registered_clients).Invoke(); } } @@ -452,9 +457,9 @@ void LeAddressManager::RemoveDeviceFromResolvingList( cached_commands_.push(std::move(enable)); if (registered_clients_.empty()) { - handle_next_command(); + handler_->BindOnceOn(this, &LeAddressManager::handle_next_command).Invoke(); } else { - pause_registered_clients(); + handler_->BindOnceOn(this, &LeAddressManager::pause_registered_clients).Invoke(); } } @@ -479,7 +484,7 @@ void LeAddressManager::ClearResolvingList() { Command enable = {CommandType::SET_ADDRESS_RESOLUTION_ENABLE, std::move(enable_builder)}; cached_commands_.push(std::move(enable)); - pause_registered_clients(); + handler_->BindOnceOn(this, &LeAddressManager::pause_registered_clients).Invoke(); } template <class View> diff --git a/system/test/mock/mock_bta_dm_act.cc b/system/test/mock/mock_bta_dm_act.cc index 67030ccf5a..f77e90b9b5 100644 --- a/system/test/mock/mock_bta_dm_act.cc +++ b/system/test/mock/mock_bta_dm_act.cc @@ -92,7 +92,6 @@ struct bta_dm_rm_cback bta_dm_rm_cback; struct bta_dm_rmt_name bta_dm_rmt_name; struct bta_dm_sdp_result bta_dm_sdp_result; struct bta_dm_search_cancel bta_dm_search_cancel; -struct bta_dm_search_cancel_cmpl bta_dm_search_cancel_cmpl; struct bta_dm_search_cancel_notify bta_dm_search_cancel_notify; struct bta_dm_search_clear_queue bta_dm_search_clear_queue; struct bta_dm_search_cmpl bta_dm_search_cmpl; @@ -338,10 +337,6 @@ void bta_dm_search_cancel() { mock_function_count_map[__func__]++; test::mock::bta_dm_act::bta_dm_search_cancel(); } -void bta_dm_search_cancel_cmpl() { - mock_function_count_map[__func__]++; - test::mock::bta_dm_act::bta_dm_search_cancel_cmpl(); -} void bta_dm_search_cancel_notify() { mock_function_count_map[__func__]++; test::mock::bta_dm_act::bta_dm_search_cancel_notify(); diff --git a/system/test/mock/mock_bta_dm_api.cc b/system/test/mock/mock_bta_dm_api.cc index bbb46abd9f..4cbab7ef4b 100644 --- a/system/test/mock/mock_bta_dm_api.cc +++ b/system/test/mock/mock_bta_dm_api.cc @@ -163,9 +163,10 @@ void BTA_DmConfirm(const RawAddress& bd_addr, bool accept) { test::mock::bta_dm_api::BTA_DmConfirm(bd_addr, accept); } void BTA_DmDiscover(const RawAddress& bd_addr, tBTA_DM_SEARCH_CBACK* p_cback, - tBT_TRANSPORT transport) { + tBT_TRANSPORT transport, bool is_bonding_or_sd) { mock_function_count_map[__func__]++; - test::mock::bta_dm_api::BTA_DmDiscover(bd_addr, p_cback, transport); + test::mock::bta_dm_api::BTA_DmDiscover(bd_addr, p_cback, transport, + is_bonding_or_sd); } bool BTA_DmGetConnectionState(const RawAddress& bd_addr) { mock_function_count_map[__func__]++; @@ -184,9 +185,9 @@ tBTA_STATUS BTA_DmRemoveDevice(const RawAddress& bd_addr) { mock_function_count_map[__func__]++; return test::mock::bta_dm_api::BTA_DmRemoveDevice(bd_addr); } -void BTA_DmSearch(tBTA_DM_SEARCH_CBACK* p_cback) { +void BTA_DmSearch(tBTA_DM_SEARCH_CBACK* p_cback, bool is_bonding_or_sdp) { mock_function_count_map[__func__]++; - test::mock::bta_dm_api::BTA_DmSearch(p_cback); + test::mock::bta_dm_api::BTA_DmSearch(p_cback, is_bonding_or_sdp); } void BTA_DmSearchCancel(void) { mock_function_count_map[__func__]++; diff --git a/system/test/mock/mock_bta_dm_api.h b/system/test/mock/mock_bta_dm_api.h index 3e64ff3679..d9dd9ba4ed 100644 --- a/system/test/mock/mock_bta_dm_api.h +++ b/system/test/mock/mock_bta_dm_api.h @@ -280,15 +280,15 @@ extern struct BTA_DmConfirm BTA_DmConfirm; // Name: BTA_DmDiscover // Params: const RawAddress& bd_addr, tBTA_DM_SEARCH_CBACK* p_cback, -// tBT_TRANSPORT transport Return: void +// tBT_TRANSPORT transport, bool is_bonding_or_sd Return: void struct BTA_DmDiscover { std::function<void(const RawAddress& bd_addr, tBTA_DM_SEARCH_CBACK* p_cback, - tBT_TRANSPORT transport)> + tBT_TRANSPORT transport, bool is_bonding_or_sd)> body{[](const RawAddress& bd_addr, tBTA_DM_SEARCH_CBACK* p_cback, - tBT_TRANSPORT transport) {}}; + tBT_TRANSPORT transport, bool is_bonding_or_sd) {}}; void operator()(const RawAddress& bd_addr, tBTA_DM_SEARCH_CBACK* p_cback, - tBT_TRANSPORT transport) { - body(bd_addr, p_cback, transport); + tBT_TRANSPORT transport, bool is_bonding_or_sd) { + body(bd_addr, p_cback, transport, is_bonding_or_sd); }; }; extern struct BTA_DmDiscover BTA_DmDiscover; @@ -340,12 +340,14 @@ struct BTA_DmRemoveDevice { extern struct BTA_DmRemoveDevice BTA_DmRemoveDevice; // Name: BTA_DmSearch -// Params: tBTA_DM_SEARCH_CBACK* p_cback +// Params: tBTA_DM_SEARCH_CBACK* p_cback, bool is_bonding_or_sdp // Return: void struct BTA_DmSearch { - std::function<void(tBTA_DM_SEARCH_CBACK* p_cback)> body{ - [](tBTA_DM_SEARCH_CBACK* p_cback) {}}; - void operator()(tBTA_DM_SEARCH_CBACK* p_cback) { body(p_cback); }; + std::function<void(tBTA_DM_SEARCH_CBACK* p_cback, bool is_bonding_or_sdp)> + body{[](tBTA_DM_SEARCH_CBACK* p_cback, bool is_bonding_or_sdp) {}}; + void operator()(tBTA_DM_SEARCH_CBACK* p_cback, bool is_bonding_or_sdp) { + body(p_cback, is_bonding_or_sdp); + }; }; extern struct BTA_DmSearch BTA_DmSearch; |