diff options
author | William Escande <wescande@google.com> | 2022-01-10 19:13:28 +0100 |
---|---|---|
committer | William Escande <wescande@google.com> | 2022-01-28 02:44:28 +0100 |
commit | 335de95b1764401962bce6f0d9ae237078cf25b1 (patch) | |
tree | c62e223ca86d044b5d5278fe6efe68050781b9ab /framework/java/android/bluetooth/le/AdvertisingSet.java | |
parent | aa63bd2617a90f4d83724802b024a97e3a623709 (diff) |
Remove allowBlocking from BluetoothManagerService
Since Bluetooth is becoming a mainline module, it can no longer call the
allowBlocking hidden api.
Instead, corresponding aidl are moved to be oneway and use a synchronous
data to handle the return value.
also: aosp/1927380 for similar work on all bluetooth profiles
BluetoothGatt will be done next
Bug: 211851706
Test: build + start bt
Tag: #refactor
Ignore-AOSP-First: merge conflict resolution
Change-Id: I715cc2d8f2ae42be6d1099cd73095d37fa9e30f4
Diffstat (limited to 'framework/java/android/bluetooth/le/AdvertisingSet.java')
-rw-r--r-- | framework/java/android/bluetooth/le/AdvertisingSet.java | 55 |
1 files changed, 39 insertions, 16 deletions
diff --git a/framework/java/android/bluetooth/le/AdvertisingSet.java b/framework/java/android/bluetooth/le/AdvertisingSet.java index bbdb6953af..cad62c3cb2 100644 --- a/framework/java/android/bluetooth/le/AdvertisingSet.java +++ b/framework/java/android/bluetooth/le/AdvertisingSet.java @@ -16,6 +16,8 @@ package android.bluetooth.le; +import static android.bluetooth.le.BluetoothLeUtils.getSyncTimeout; + import android.annotation.RequiresNoPermission; import android.annotation.RequiresPermission; import android.bluetooth.BluetoothAdapter; @@ -27,6 +29,10 @@ import android.content.AttributionSource; import android.os.RemoteException; import android.util.Log; +import com.android.modules.utils.SynchronousResultReceiver; + +import java.util.concurrent.TimeoutException; + /** * This class provides a way to control single Bluetooth LE advertising instance. * <p> @@ -75,9 +81,11 @@ public final class AdvertisingSet { public void enableAdvertising(boolean enable, int duration, int maxExtendedAdvertisingEvents) { try { + final SynchronousResultReceiver recv = new SynchronousResultReceiver(); mGatt.enableAdvertisingSet(mAdvertiserId, enable, duration, - maxExtendedAdvertisingEvents, mAttributionSource); - } catch (RemoteException e) { + maxExtendedAdvertisingEvents, mAttributionSource, recv); + recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); + } catch (TimeoutException | RemoteException e) { Log.e(TAG, "remote exception - ", e); } } @@ -99,8 +107,10 @@ public final class AdvertisingSet { @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADVERTISE) public void setAdvertisingData(AdvertiseData advertiseData) { try { - mGatt.setAdvertisingData(mAdvertiserId, advertiseData, mAttributionSource); - } catch (RemoteException e) { + final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + mGatt.setAdvertisingData(mAdvertiserId, advertiseData, mAttributionSource, recv); + recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); + } catch (TimeoutException | RemoteException e) { Log.e(TAG, "remote exception - ", e); } } @@ -119,8 +129,10 @@ public final class AdvertisingSet { @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADVERTISE) public void setScanResponseData(AdvertiseData scanResponse) { try { - mGatt.setScanResponseData(mAdvertiserId, scanResponse, mAttributionSource); - } catch (RemoteException e) { + final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + mGatt.setScanResponseData(mAdvertiserId, scanResponse, mAttributionSource, recv); + recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); + } catch (TimeoutException | RemoteException e) { Log.e(TAG, "remote exception - ", e); } } @@ -137,8 +149,10 @@ public final class AdvertisingSet { @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADVERTISE) public void setAdvertisingParameters(AdvertisingSetParameters parameters) { try { - mGatt.setAdvertisingParameters(mAdvertiserId, parameters, mAttributionSource); - } catch (RemoteException e) { + final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + mGatt.setAdvertisingParameters(mAdvertiserId, parameters, mAttributionSource, recv); + recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); + } catch (TimeoutException | RemoteException e) { Log.e(TAG, "remote exception - ", e); } } @@ -153,8 +167,11 @@ public final class AdvertisingSet { @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADVERTISE) public void setPeriodicAdvertisingParameters(PeriodicAdvertisingParameters parameters) { try { - mGatt.setPeriodicAdvertisingParameters(mAdvertiserId, parameters, mAttributionSource); - } catch (RemoteException e) { + final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + mGatt.setPeriodicAdvertisingParameters(mAdvertiserId, parameters, mAttributionSource, + recv); + recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); + } catch (TimeoutException | RemoteException e) { Log.e(TAG, "remote exception - ", e); } } @@ -174,8 +191,10 @@ public final class AdvertisingSet { @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADVERTISE) public void setPeriodicAdvertisingData(AdvertiseData periodicData) { try { - mGatt.setPeriodicAdvertisingData(mAdvertiserId, periodicData, mAttributionSource); - } catch (RemoteException e) { + final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + mGatt.setPeriodicAdvertisingData(mAdvertiserId, periodicData, mAttributionSource, recv); + recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); + } catch (TimeoutException | RemoteException e) { Log.e(TAG, "remote exception - ", e); } } @@ -192,8 +211,10 @@ public final class AdvertisingSet { @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADVERTISE) public void setPeriodicAdvertisingEnabled(boolean enable) { try { - mGatt.setPeriodicAdvertisingEnable(mAdvertiserId, enable, mAttributionSource); - } catch (RemoteException e) { + final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + mGatt.setPeriodicAdvertisingEnable(mAdvertiserId, enable, mAttributionSource, recv); + recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); + } catch (TimeoutException | RemoteException e) { Log.e(TAG, "remote exception - ", e); } } @@ -212,8 +233,10 @@ public final class AdvertisingSet { }) public void getOwnAddress() { try { - mGatt.getOwnAddress(mAdvertiserId, mAttributionSource); - } catch (RemoteException e) { + final SynchronousResultReceiver recv = new SynchronousResultReceiver(); + mGatt.getOwnAddress(mAdvertiserId, mAttributionSource, recv); + recv.awaitResultNoInterrupt(getSyncTimeout()).getValue(null); + } catch (TimeoutException | RemoteException e) { Log.e(TAG, "remote exception - ", e); } } |