diff options
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); } } |