react-native-ble-nitro 1.8.0 → 1.9.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -69,7 +69,7 @@ npx pod-install # iOS only
69
69
  ### Basic Setup
70
70
 
71
71
  ```typescript
72
- import { BleNitro, BLEState, AndroidScanMode, type BLEDevice } from 'react-native-ble-nitro';
72
+ import { BleNitro, BleNitroManager, BLEState, AndroidScanMode, type BLEDevice } from 'react-native-ble-nitro';
73
73
 
74
74
  // Get the singleton instance
75
75
  const ble = BleNitro.instance();
@@ -257,11 +257,15 @@ const emptyResult = await ble.writeCharacteristic(
257
257
  #### 📡 Characteristic Notifications
258
258
 
259
259
  > [!CAUTION]
260
- > From version 1.8.0 on the returned subscription object has the type `AsyncSubscription` instead of `Subscription` to indicate that the `remove` method is now async and returns a Promise for better multi-platform compatibility.
260
+ > **From version 1.8.0** on the returned subscription object has the type `AsyncSubscription` instead of `Subscription` to indicate that the `remove` method is now async and returns a Promise for better multi-platform compatibility.
261
+ > **From version 1.9.0** on the `subscribeToCharacteristic` method is async, so use await when calling it. This was introduced to fix the handling of gatt queuing on Android.
262
+
263
+ > [!IMPORTANT]
264
+ > It is only possible to have one active notification subscription per specific characteristic. If you call `subscribeToCharacteristic` again for the same characteristic, the previous subscription won't receive any more updates and should be removed previously.
261
265
 
262
266
  ```typescript
263
267
  // Subscribe to characteristic notifications
264
- const subscription = ble.subscribeToCharacteristic(
268
+ const subscription = await ble.subscribeToCharacteristic( // before 1.9.0 this was synchronous
265
269
  deviceId,
266
270
  serviceUUID,
267
271
  characteristicUUID,
@@ -299,7 +303,7 @@ const deviceId = await ble.connect(
299
303
  );
300
304
  await ble.discoverServices(deviceId);
301
305
 
302
- const subscription = ble.subscribeToCharacteristic(
306
+ const subscription = await ble.subscribeToCharacteristic(
303
307
  deviceId,
304
308
  HEART_RATE_SERVICE,
305
309
  HEART_RATE_MEASUREMENT,
@@ -53,11 +53,22 @@ class BleNitroBleManager : HybridNativeBleNitroSpec() {
53
53
  private val connectedDevices = ConcurrentHashMap<String, BluetoothGatt>()
54
54
  private val deviceCallbacks = ConcurrentHashMap<String, DeviceCallbacks>()
55
55
 
56
+ // Read callback storage for proper response handling (key: deviceId:characteristicId)
57
+ private val readCallbacks = ConcurrentHashMap<String, (Boolean, ArrayBuffer, String) -> Unit>()
58
+
56
59
  // Write callback storage for proper response handling (key: deviceId:characteristicId)
57
60
  private val writeCallbacks = ConcurrentHashMap<String, (Boolean, ArrayBuffer, String) -> Unit>()
58
-
61
+
59
62
  // RSSI callback storage (key: deviceId)
60
63
  private val rssiCallbacks = ConcurrentHashMap<String, (Boolean, Double, String) -> Unit>()
64
+
65
+ // GATT operation queue for sequential descriptor writes (Android BLE requirement)
66
+ private val gattOperationQueue = java.util.concurrent.LinkedBlockingQueue<GattOperation>()
67
+ private var isGattOperationInProgress = false
68
+ private val gattOperationLock = Any()
69
+
70
+ // Descriptor write callback storage (key: deviceId:descriptorUuid)
71
+ private val descriptorWriteCallbacks = ConcurrentHashMap<String, (Boolean, String) -> Unit>()
61
72
 
62
73
  // Helper class to store device callbacks
63
74
  private data class DeviceCallbacks(
@@ -66,6 +77,17 @@ class BleNitroBleManager : HybridNativeBleNitroSpec() {
66
77
  var serviceDiscoveryCallback: ((success: Boolean, error: String) -> Unit)? = null,
67
78
  var characteristicSubscriptions: MutableMap<String, (characteristicId: String, data: ArrayBuffer) -> Unit> = mutableMapOf()
68
79
  )
80
+
81
+ // Sealed class for GATT operations that need to be queued
82
+ private sealed class GattOperation {
83
+ data class WriteDescriptor(
84
+ val gatt: BluetoothGatt,
85
+ val descriptor: BluetoothGattDescriptor,
86
+ val value: ByteArray,
87
+ val deviceId: String,
88
+ val callback: (Boolean, String) -> Unit
89
+ ) : GattOperation()
90
+ }
69
91
 
70
92
  init {
71
93
  // Try to get context from React Native application context
@@ -275,17 +297,23 @@ class BleNitroBleManager : HybridNativeBleNitroSpec() {
275
297
 
276
298
  override fun onCharacteristicRead(gatt: BluetoothGatt, characteristic: BluetoothGattCharacteristic, status: Int) {
277
299
  // Handle characteristic read result
278
- val data = if (status == BluetoothGatt.GATT_SUCCESS) {
279
- val value = characteristic.value ?: byteArrayOf()
280
- // Create direct ByteBuffer as required by ArrayBuffer.wrap()
281
- val directBuffer = java.nio.ByteBuffer.allocateDirect(value.size)
282
- directBuffer.put(value)
283
- directBuffer.flip()
284
- ArrayBuffer.wrap(directBuffer)
285
- } else {
286
- ArrayBuffer.allocate(0)
300
+ val deviceId = gatt.device.address
301
+ val characteristicId = characteristic.uuid.toString()
302
+ val callbackKey = "$deviceId:$characteristicId"
303
+
304
+ readCallbacks.remove(callbackKey)?.let { callback ->
305
+ if (status == BluetoothGatt.GATT_SUCCESS) {
306
+ val value = characteristic.value ?: byteArrayOf()
307
+ // Create direct ByteBuffer as required by ArrayBuffer.wrap()
308
+ val directBuffer = java.nio.ByteBuffer.allocateDirect(value.size)
309
+ directBuffer.put(value)
310
+ directBuffer.flip()
311
+ val data = ArrayBuffer.wrap(directBuffer)
312
+ callback(true, data, "")
313
+ } else {
314
+ callback(false, ArrayBuffer.allocate(0), "Read failed with status: $status")
315
+ }
287
316
  }
288
- // This will be handled by pending operations
289
317
  }
290
318
 
291
319
  override fun onCharacteristicWrite(gatt: BluetoothGatt, characteristic: BluetoothGattCharacteristic, status: Int) {
@@ -339,6 +367,68 @@ class BleNitroBleManager : HybridNativeBleNitroSpec() {
339
367
 
340
368
  override fun onDescriptorWrite(gatt: BluetoothGatt, descriptor: BluetoothGattDescriptor, status: Int) {
341
369
  // Handle descriptor write (for enabling/disabling notifications)
370
+ val deviceId = gatt.device.address
371
+ val descriptorUuid = descriptor.uuid.toString()
372
+ val callbackKey = "$deviceId:$descriptorUuid"
373
+
374
+ // Get and invoke the stored callback
375
+ descriptorWriteCallbacks.remove(callbackKey)?.let { callback ->
376
+ if (status == BluetoothGatt.GATT_SUCCESS) {
377
+ callback(true, "")
378
+ } else {
379
+ callback(false, "Descriptor write failed with status: $status")
380
+ }
381
+ }
382
+
383
+ // Process next queued operation
384
+ processNextGattOperation()
385
+ }
386
+ }
387
+ }
388
+
389
+ /**
390
+ * Enqueue a GATT operation to be executed sequentially.
391
+ * Android BLE requires that only one GATT operation runs at a time.
392
+ */
393
+ private fun enqueueGattOperation(operation: GattOperation) {
394
+ gattOperationQueue.add(operation)
395
+ processNextGattOperation()
396
+ }
397
+
398
+ /**
399
+ * Process the next GATT operation in the queue if none is currently running.
400
+ */
401
+ private fun processNextGattOperation() {
402
+ synchronized(gattOperationLock) {
403
+ if (isGattOperationInProgress) {
404
+ return
405
+ }
406
+
407
+ val operation = gattOperationQueue.poll() ?: return
408
+ isGattOperationInProgress = true
409
+
410
+ when (operation) {
411
+ is GattOperation.WriteDescriptor -> {
412
+ val callbackKey = "${operation.deviceId}:${operation.descriptor.uuid}"
413
+ descriptorWriteCallbacks[callbackKey] = { success, error ->
414
+ synchronized(gattOperationLock) {
415
+ isGattOperationInProgress = false
416
+ }
417
+ operation.callback(success, error)
418
+ }
419
+
420
+ operation.descriptor.value = operation.value
421
+ val success = operation.gatt.writeDescriptor(operation.descriptor)
422
+ if (!success) {
423
+ descriptorWriteCallbacks.remove(callbackKey)
424
+ synchronized(gattOperationLock) {
425
+ isGattOperationInProgress = false
426
+ }
427
+ operation.callback(false, "Failed to initiate descriptor write")
428
+ // Try next operation
429
+ processNextGattOperation()
430
+ }
431
+ }
342
432
  }
343
433
  }
344
434
  }
@@ -566,7 +656,10 @@ class BleNitroBleManager : HybridNativeBleNitroSpec() {
566
656
  }
567
657
 
568
658
  override fun isConnected(deviceId: String): Boolean {
569
- return connectedDevices.containsKey(deviceId)
659
+ val gatt = connectedDevices[deviceId] ?: return false
660
+ val bluetoothManager = appContext?.getSystemService(Context.BLUETOOTH_SERVICE) as? BluetoothManager ?: return false
661
+ val connectionState = bluetoothManager.getConnectionState(gatt.device, BluetoothProfile.GATT)
662
+ return connectionState == BluetoothProfile.STATE_CONNECTED
570
663
  }
571
664
 
572
665
  override fun requestMTU(deviceId: String, mtu: Double): Double {
@@ -672,34 +765,32 @@ class BleNitroBleManager : HybridNativeBleNitroSpec() {
672
765
  callback(false, ArrayBuffer.allocate(0), "Device not connected")
673
766
  return
674
767
  }
675
-
768
+
676
769
  val service = gatt.getService(UUID.fromString(serviceId))
677
770
  if (service == null) {
678
771
  callback(false, ArrayBuffer.allocate(0), "Service not found")
679
772
  return
680
773
  }
681
-
774
+
682
775
  val characteristic = service.getCharacteristic(UUID.fromString(characteristicId))
683
776
  if (characteristic == null) {
684
777
  callback(false, ArrayBuffer.allocate(0), "Characteristic not found")
685
778
  return
686
779
  }
687
-
780
+
781
+ // Store callback for when read completes in onCharacteristicRead
782
+ val callbackKey = "$deviceId:$characteristicId"
783
+ readCallbacks[callbackKey] = callback
784
+
785
+ // Initiate the read operation
688
786
  val success = gatt.readCharacteristic(characteristic)
689
787
  if (!success) {
690
- callback(false, ArrayBuffer.allocate(0), "Failed to start read operation")
788
+ // Remove callback and report failure immediately
789
+ readCallbacks.remove(callbackKey)
790
+ callback(false, ArrayBuffer.allocate(0), "Failed to initiate read operation")
691
791
  }
692
- // The actual result will come in onCharacteristicRead callback
693
- // For now, we'll return the cached value
694
- val data = characteristic.value?.let { value ->
695
- // Create direct ByteBuffer as required by ArrayBuffer.wrap()
696
- val directBuffer = java.nio.ByteBuffer.allocateDirect(value.size)
697
- directBuffer.put(value)
698
- directBuffer.flip()
699
- ArrayBuffer.wrap(directBuffer)
700
- } ?: ArrayBuffer.allocate(0)
701
- callback(success, data, if (success) "" else "Read operation failed")
702
-
792
+ // If success, wait for onCharacteristicRead callback
793
+
703
794
  } catch (e: Exception) {
704
795
  callback(false, ArrayBuffer.allocate(0), "Read error: ${e.message}")
705
796
  }
@@ -772,47 +863,61 @@ class BleNitroBleManager : HybridNativeBleNitroSpec() {
772
863
  deviceId: String,
773
864
  serviceId: String,
774
865
  characteristicId: String,
775
- updateCallback: (characteristicId: String, data: ArrayBuffer) -> Unit
776
- ): OperationResult {
866
+ updateCallback: (characteristicId: String, data: ArrayBuffer) -> Unit,
867
+ completionCallback: (success: Boolean, error: String) -> Unit
868
+ ) {
777
869
  try {
778
870
  val gatt = connectedDevices[deviceId]
779
871
  if (gatt == null) {
780
- return OperationResult(success = false, error = "Device not connected")
872
+ completionCallback(false, "Device not connected")
873
+ return
781
874
  }
782
875
 
783
876
  val service = gatt.getService(UUID.fromString(serviceId))
784
877
  if (service == null) {
785
- return OperationResult(success = false, error = "Service not found")
878
+ completionCallback(false, "Service not found")
879
+ return
786
880
  }
787
881
 
788
882
  val characteristic = service.getCharacteristic(UUID.fromString(characteristicId))
789
883
  if (characteristic == null) {
790
- return OperationResult(success = false, error = "Characteristic not found")
884
+ completionCallback(false, "Characteristic not found")
885
+ return
791
886
  }
792
887
 
793
- // Enable notifications
888
+ // Enable notifications locally
794
889
  val success = gatt.setCharacteristicNotification(characteristic, true)
795
890
  if (!success) {
796
- return OperationResult(success = false, error = "Failed to enable notifications")
891
+ completionCallback(false, "Failed to enable notifications")
892
+ return
797
893
  }
798
894
 
799
- // Store the callback
895
+ // Store the update callback
800
896
  val callbacks = deviceCallbacks[deviceId]
801
897
  if (callbacks != null) {
802
898
  callbacks.characteristicSubscriptions[characteristicId] = updateCallback
803
899
  }
804
900
 
805
- // Write to the descriptor to enable notifications on the device
901
+ // Write to the CCCD descriptor to enable notifications on the remote device
902
+ // This must be queued to ensure sequential GATT operations
806
903
  val descriptor = characteristic.getDescriptor(UUID.fromString("00002902-0000-1000-8000-00805f9b34fb"))
807
904
  if (descriptor != null) {
808
- descriptor.value = BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE
809
- gatt.writeDescriptor(descriptor)
905
+ enqueueGattOperation(
906
+ GattOperation.WriteDescriptor(
907
+ gatt = gatt,
908
+ descriptor = descriptor,
909
+ value = BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE,
910
+ deviceId = deviceId,
911
+ callback = completionCallback
912
+ )
913
+ )
914
+ } else {
915
+ // No CCCD descriptor - some characteristics may not need it
916
+ completionCallback(true, "")
810
917
  }
811
918
 
812
- return OperationResult(success = true, error = null)
813
-
814
919
  } catch (e: Exception) {
815
- return OperationResult(success = false, error = "Subscription error: ${e.message}")
920
+ completionCallback(false, "Subscription error: ${e.message}")
816
921
  }
817
922
  }
818
923
 
@@ -828,39 +933,48 @@ class BleNitroBleManager : HybridNativeBleNitroSpec() {
828
933
  callback(false, "Device not connected")
829
934
  return
830
935
  }
831
-
936
+
832
937
  val service = gatt.getService(UUID.fromString(serviceId))
833
938
  if (service == null) {
834
939
  callback(false, "Service not found")
835
940
  return
836
941
  }
837
-
942
+
838
943
  val characteristic = service.getCharacteristic(UUID.fromString(characteristicId))
839
944
  if (characteristic == null) {
840
945
  callback(false, "Characteristic not found")
841
946
  return
842
947
  }
843
-
844
- // Disable notifications
948
+
949
+ // Disable notifications locally
845
950
  val success = gatt.setCharacteristicNotification(characteristic, false)
846
951
  if (!success) {
847
952
  callback(false, "Failed to disable notifications")
848
953
  return
849
954
  }
850
-
851
- // Remove the callback
955
+
956
+ // Remove the update callback
852
957
  val callbacks = deviceCallbacks[deviceId]
853
958
  callbacks?.characteristicSubscriptions?.remove(characteristicId)
854
-
855
- // Write to the descriptor to disable notifications on the device
959
+
960
+ // Write to the CCCD descriptor to disable notifications on the remote device
961
+ // This must be queued to ensure sequential GATT operations
856
962
  val descriptor = characteristic.getDescriptor(UUID.fromString("00002902-0000-1000-8000-00805f9b34fb"))
857
963
  if (descriptor != null) {
858
- descriptor.value = BluetoothGattDescriptor.DISABLE_NOTIFICATION_VALUE
859
- gatt.writeDescriptor(descriptor)
964
+ enqueueGattOperation(
965
+ GattOperation.WriteDescriptor(
966
+ gatt = gatt,
967
+ descriptor = descriptor,
968
+ value = BluetoothGattDescriptor.DISABLE_NOTIFICATION_VALUE,
969
+ deviceId = deviceId,
970
+ callback = callback
971
+ )
972
+ )
973
+ } else {
974
+ // No CCCD descriptor - some characteristics may not need it
975
+ callback(true, "")
860
976
  }
861
-
862
- callback(true, "")
863
-
977
+
864
978
  } catch (e: Exception) {
865
979
  callback(false, "Unsubscription error: ${e.message}")
866
980
  }
@@ -389,22 +389,24 @@ public class BleNitroBleManager: HybridNativeBleNitroSpec {
389
389
  deviceId: String,
390
390
  serviceId: String,
391
391
  characteristicId: String,
392
- updateCallback: @escaping (String, ArrayBuffer) -> Void
393
- ) throws -> OperationResult {
392
+ updateCallback: @escaping (String, ArrayBuffer) -> Void,
393
+ completionCallback: @escaping (Bool, String) -> Void
394
+ ) throws {
394
395
  guard let characteristic = findCharacteristic(deviceId: deviceId, serviceId: serviceId, characteristicId: characteristicId) else {
395
- return OperationResult(success: false, error: "Characteristic not found")
396
+ completionCallback(false, "Characteristic not found")
397
+ return
396
398
  }
397
399
 
398
400
  // Ensure peripheral delegate exists
399
401
  guard let delegate = peripheralDelegates[deviceId] else {
400
- return OperationResult(success: false, error: "Device not properly connected or delegate not found")
402
+ completionCallback(false, "Device not properly connected or delegate not found")
403
+ return
401
404
  }
402
405
 
403
406
  delegate.notificationCallbacks[characteristic.uuid] = updateCallback
407
+ delegate.subscriptionCallbacks[characteristic.uuid] = completionCallback
404
408
 
405
409
  characteristic.service?.peripheral?.setNotifyValue(true, for: characteristic)
406
-
407
- return OperationResult(success: true, error: nil)
408
410
  }
409
411
 
410
412
  public func unsubscribeFromCharacteristic(
@@ -200,9 +200,9 @@ export declare class BleNitroManager {
200
200
  * @param serviceId ID of the service
201
201
  * @param characteristicId ID of the characteristic
202
202
  * @param callback Callback function called when notification is received
203
- * @returns Subscription
203
+ * @returns Promise resolving to AsyncSubscription when subscription is established
204
204
  */
205
- subscribeToCharacteristic(deviceId: string, serviceId: string, characteristicId: string, callback: CharacteristicUpdateCallback): AsyncSubscription;
205
+ subscribeToCharacteristic(deviceId: string, serviceId: string, characteristicId: string, callback: CharacteristicUpdateCallback): Promise<AsyncSubscription>;
206
206
  /**
207
207
  * Unsubscribe from characteristic notifications
208
208
  * @param deviceId ID of the device
@@ -1 +1 @@
1
- {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/manager.ts"],"names":[],"mappings":"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"}
@@ -444,29 +444,30 @@ class BleNitroManager {
444
444
  * @param serviceId ID of the service
445
445
  * @param characteristicId ID of the characteristic
446
446
  * @param callback Callback function called when notification is received
447
- * @returns Subscription
447
+ * @returns Promise resolving to AsyncSubscription when subscription is established
448
448
  */
449
- subscribeToCharacteristic(deviceId, serviceId, characteristicId, callback) {
450
- // Check if connected first
451
- if (!this._connectedDevices[deviceId]) {
452
- throw new Error('Device not connected');
453
- }
454
- const { success, error } = this.Instance.subscribeToCharacteristic(deviceId, BleNitroManager.normalizeGattUUID(serviceId), BleNitroManager.normalizeGattUUID(characteristicId), (charId, data) => {
455
- callback(charId, arrayBufferToByteArray(data));
456
- });
457
- const _success = success;
458
- if (!_success) {
459
- throw new Error(error !== null && error !== void 0 ? error : 'Failed to subscribe to characteristic');
460
- }
461
- const sub = {
462
- remove: async () => {
463
- if (!_success) {
449
+ async subscribeToCharacteristic(deviceId, serviceId, characteristicId, callback) {
450
+ return new Promise((resolve, reject) => {
451
+ // Check if connected first
452
+ if (!this._connectedDevices[deviceId]) {
453
+ reject(new Error('Device not connected'));
454
+ return;
455
+ }
456
+ this.Instance.subscribeToCharacteristic(deviceId, BleNitroManager.normalizeGattUUID(serviceId), BleNitroManager.normalizeGattUUID(characteristicId), (charId, data) => {
457
+ callback(charId, arrayBufferToByteArray(data));
458
+ }, (success, error) => {
459
+ if (!success) {
460
+ reject(new Error(error || 'Failed to subscribe to characteristic'));
464
461
  return;
465
462
  }
466
- await this.unsubscribeFromCharacteristic(deviceId, serviceId, characteristicId).catch(() => { });
467
- }
468
- };
469
- return sub;
463
+ const sub = {
464
+ remove: async () => {
465
+ await this.unsubscribeFromCharacteristic(deviceId, serviceId, characteristicId).catch(() => { });
466
+ }
467
+ };
468
+ resolve(sub);
469
+ });
470
+ });
470
471
  }
471
472
  /**
472
473
  * Unsubscribe from characteristic notifications
@@ -1 +1 @@
1
- {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/manager.ts"],"names":[],"mappings":"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"}
@@ -77,7 +77,7 @@ export interface NativeBleNitro extends HybridObject<{
77
77
  getCharacteristics(deviceId: string, serviceId: string): string[];
78
78
  readCharacteristic(deviceId: string, serviceId: string, characteristicId: string, callback: ReadCharacteristicCallback): void;
79
79
  writeCharacteristic(deviceId: string, serviceId: string, characteristicId: string, data: BLEValue, withResponse: boolean, callback: WriteCharacteristicCallback): void;
80
- subscribeToCharacteristic(deviceId: string, serviceId: string, characteristicId: string, updateCallback: CharacteristicCallback): OperationResult;
80
+ subscribeToCharacteristic(deviceId: string, serviceId: string, characteristicId: string, updateCallback: CharacteristicCallback, completionCallback: OperationCallback): void;
81
81
  unsubscribeFromCharacteristic(deviceId: string, serviceId: string, characteristicId: string, callback: OperationCallback): void;
82
82
  requestBluetoothEnable(callback: OperationCallback): void;
83
83
  state(): BLEState;
@@ -1 +1 @@
1
- {"version":3,"file":"NativeBleNitro.nitro.d.ts","sourceRoot":"","sources":["../../../src/specs/NativeBleNitro.nitro.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"NativeBleNitro.nitro.d.ts","sourceRoot":"","sources":["../../../src/specs/NativeBleNitro.nitro.ts"],"names":[],"mappings":"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"}
package/lib/manager.d.ts CHANGED
@@ -200,9 +200,9 @@ export declare class BleNitroManager {
200
200
  * @param serviceId ID of the service
201
201
  * @param characteristicId ID of the characteristic
202
202
  * @param callback Callback function called when notification is received
203
- * @returns Subscription
203
+ * @returns Promise resolving to AsyncSubscription when subscription is established
204
204
  */
205
- subscribeToCharacteristic(deviceId: string, serviceId: string, characteristicId: string, callback: CharacteristicUpdateCallback): AsyncSubscription;
205
+ subscribeToCharacteristic(deviceId: string, serviceId: string, characteristicId: string, callback: CharacteristicUpdateCallback): Promise<AsyncSubscription>;
206
206
  /**
207
207
  * Unsubscribe from characteristic notifications
208
208
  * @param deviceId ID of the device
package/lib/manager.js CHANGED
@@ -430,29 +430,30 @@ export class BleNitroManager {
430
430
  * @param serviceId ID of the service
431
431
  * @param characteristicId ID of the characteristic
432
432
  * @param callback Callback function called when notification is received
433
- * @returns Subscription
433
+ * @returns Promise resolving to AsyncSubscription when subscription is established
434
434
  */
435
- subscribeToCharacteristic(deviceId, serviceId, characteristicId, callback) {
436
- // Check if connected first
437
- if (!this._connectedDevices[deviceId]) {
438
- throw new Error('Device not connected');
439
- }
440
- const { success, error } = this.Instance.subscribeToCharacteristic(deviceId, BleNitroManager.normalizeGattUUID(serviceId), BleNitroManager.normalizeGattUUID(characteristicId), (charId, data) => {
441
- callback(charId, arrayBufferToByteArray(data));
442
- });
443
- const _success = success;
444
- if (!_success) {
445
- throw new Error(error ?? 'Failed to subscribe to characteristic');
446
- }
447
- const sub = {
448
- remove: async () => {
449
- if (!_success) {
435
+ async subscribeToCharacteristic(deviceId, serviceId, characteristicId, callback) {
436
+ return new Promise((resolve, reject) => {
437
+ // Check if connected first
438
+ if (!this._connectedDevices[deviceId]) {
439
+ reject(new Error('Device not connected'));
440
+ return;
441
+ }
442
+ this.Instance.subscribeToCharacteristic(deviceId, BleNitroManager.normalizeGattUUID(serviceId), BleNitroManager.normalizeGattUUID(characteristicId), (charId, data) => {
443
+ callback(charId, arrayBufferToByteArray(data));
444
+ }, (success, error) => {
445
+ if (!success) {
446
+ reject(new Error(error || 'Failed to subscribe to characteristic'));
450
447
  return;
451
448
  }
452
- await this.unsubscribeFromCharacteristic(deviceId, serviceId, characteristicId).catch(() => { });
453
- }
454
- };
455
- return sub;
449
+ const sub = {
450
+ remove: async () => {
451
+ await this.unsubscribeFromCharacteristic(deviceId, serviceId, characteristicId).catch(() => { });
452
+ }
453
+ };
454
+ resolve(sub);
455
+ });
456
+ });
456
457
  }
457
458
  /**
458
459
  * Unsubscribe from characteristic notifications
@@ -77,7 +77,7 @@ export interface NativeBleNitro extends HybridObject<{
77
77
  getCharacteristics(deviceId: string, serviceId: string): string[];
78
78
  readCharacteristic(deviceId: string, serviceId: string, characteristicId: string, callback: ReadCharacteristicCallback): void;
79
79
  writeCharacteristic(deviceId: string, serviceId: string, characteristicId: string, data: BLEValue, withResponse: boolean, callback: WriteCharacteristicCallback): void;
80
- subscribeToCharacteristic(deviceId: string, serviceId: string, characteristicId: string, updateCallback: CharacteristicCallback): OperationResult;
80
+ subscribeToCharacteristic(deviceId: string, serviceId: string, characteristicId: string, updateCallback: CharacteristicCallback, completionCallback: OperationCallback): void;
81
81
  unsubscribeFromCharacteristic(deviceId: string, serviceId: string, characteristicId: string, callback: OperationCallback): void;
82
82
  requestBluetoothEnable(callback: OperationCallback): void;
83
83
  state(): BLEState;
@@ -15,10 +15,10 @@ namespace margelo::nitro::co::zyke::ble { struct ManufacturerData; }
15
15
  namespace margelo::nitro::co::zyke::ble { struct ManufacturerDataEntry; }
16
16
  // Forward declaration of `ArrayBuffer` to properly resolve imports.
17
17
  namespace NitroModules { class ArrayBuffer; }
18
- // Forward declaration of `OperationResult` to properly resolve imports.
19
- namespace margelo::nitro::co::zyke::ble { struct OperationResult; }
20
18
  // Forward declaration of `BLEState` to properly resolve imports.
21
19
  namespace margelo::nitro::co::zyke::ble { enum class BLEState; }
20
+ // Forward declaration of `OperationResult` to properly resolve imports.
21
+ namespace margelo::nitro::co::zyke::ble { struct OperationResult; }
22
22
  // Forward declaration of `ScanFilter` to properly resolve imports.
23
23
  namespace margelo::nitro::co::zyke::ble { struct ScanFilter; }
24
24
  // Forward declaration of `AndroidScanMode` to properly resolve imports.
@@ -36,10 +36,10 @@ namespace margelo::nitro::co::zyke::ble { enum class AndroidScanMode; }
36
36
  #include <NitroModules/ArrayBuffer.hpp>
37
37
  #include <NitroModules/JArrayBuffer.hpp>
38
38
  #include <NitroModules/JUnit.hpp>
39
- #include "OperationResult.hpp"
40
- #include "JOperationResult.hpp"
41
39
  #include "BLEState.hpp"
42
40
  #include "JBLEState.hpp"
41
+ #include "OperationResult.hpp"
42
+ #include "JOperationResult.hpp"
43
43
  #include <NitroModules/Promise.hpp>
44
44
  #include <NitroModules/JPromise.hpp>
45
45
  #include <functional>
@@ -193,10 +193,9 @@ namespace margelo::nitro::co::zyke::ble {
193
193
  static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* deviceId */, jni::alias_ref<jni::JString> /* serviceId */, jni::alias_ref<jni::JString> /* characteristicId */, jni::alias_ref<JArrayBuffer::javaobject> /* data */, jboolean /* withResponse */, jni::alias_ref<JFunc_void_bool_std__shared_ptr_ArrayBuffer__std__string::javaobject> /* callback */)>("writeCharacteristic_cxx");
194
194
  method(_javaPart, jni::make_jstring(deviceId), jni::make_jstring(serviceId), jni::make_jstring(characteristicId), JArrayBuffer::wrap(data), withResponse, JFunc_void_bool_std__shared_ptr_ArrayBuffer__std__string_cxx::fromCpp(callback));
195
195
  }
196
- OperationResult JHybridNativeBleNitroSpec::subscribeToCharacteristic(const std::string& deviceId, const std::string& serviceId, const std::string& characteristicId, const std::function<void(const std::string& /* characteristicId */, const std::shared_ptr<ArrayBuffer>& /* data */)>& updateCallback) {
197
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<JOperationResult>(jni::alias_ref<jni::JString> /* deviceId */, jni::alias_ref<jni::JString> /* serviceId */, jni::alias_ref<jni::JString> /* characteristicId */, jni::alias_ref<JFunc_void_std__string_std__shared_ptr_ArrayBuffer_::javaobject> /* updateCallback */)>("subscribeToCharacteristic_cxx");
198
- auto __result = method(_javaPart, jni::make_jstring(deviceId), jni::make_jstring(serviceId), jni::make_jstring(characteristicId), JFunc_void_std__string_std__shared_ptr_ArrayBuffer__cxx::fromCpp(updateCallback));
199
- return __result->toCpp();
196
+ void JHybridNativeBleNitroSpec::subscribeToCharacteristic(const std::string& deviceId, const std::string& serviceId, const std::string& characteristicId, const std::function<void(const std::string& /* characteristicId */, const std::shared_ptr<ArrayBuffer>& /* data */)>& updateCallback, const std::function<void(bool /* success */, const std::string& /* error */)>& completionCallback) {
197
+ static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* deviceId */, jni::alias_ref<jni::JString> /* serviceId */, jni::alias_ref<jni::JString> /* characteristicId */, jni::alias_ref<JFunc_void_std__string_std__shared_ptr_ArrayBuffer_::javaobject> /* updateCallback */, jni::alias_ref<JFunc_void_bool_std__string::javaobject> /* completionCallback */)>("subscribeToCharacteristic_cxx");
198
+ method(_javaPart, jni::make_jstring(deviceId), jni::make_jstring(serviceId), jni::make_jstring(characteristicId), JFunc_void_std__string_std__shared_ptr_ArrayBuffer__cxx::fromCpp(updateCallback), JFunc_void_bool_std__string_cxx::fromCpp(completionCallback));
200
199
  }
201
200
  void JHybridNativeBleNitroSpec::unsubscribeFromCharacteristic(const std::string& deviceId, const std::string& serviceId, const std::string& characteristicId, const std::function<void(bool /* success */, const std::string& /* error */)>& callback) {
202
201
  static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* deviceId */, jni::alias_ref<jni::JString> /* serviceId */, jni::alias_ref<jni::JString> /* characteristicId */, jni::alias_ref<JFunc_void_bool_std__string::javaobject> /* callback */)>("unsubscribeFromCharacteristic_cxx");
@@ -69,7 +69,7 @@ namespace margelo::nitro::co::zyke::ble {
69
69
  std::vector<std::string> getCharacteristics(const std::string& deviceId, const std::string& serviceId) override;
70
70
  void readCharacteristic(const std::string& deviceId, const std::string& serviceId, const std::string& characteristicId, const std::function<void(bool /* success */, const std::shared_ptr<ArrayBuffer>& /* data */, const std::string& /* error */)>& callback) override;
71
71
  void writeCharacteristic(const std::string& deviceId, const std::string& serviceId, const std::string& characteristicId, const std::shared_ptr<ArrayBuffer>& data, bool withResponse, const std::function<void(bool /* success */, const std::shared_ptr<ArrayBuffer>& /* responseData */, const std::string& /* error */)>& callback) override;
72
- OperationResult subscribeToCharacteristic(const std::string& deviceId, const std::string& serviceId, const std::string& characteristicId, const std::function<void(const std::string& /* characteristicId */, const std::shared_ptr<ArrayBuffer>& /* data */)>& updateCallback) override;
72
+ void subscribeToCharacteristic(const std::string& deviceId, const std::string& serviceId, const std::string& characteristicId, const std::function<void(const std::string& /* characteristicId */, const std::shared_ptr<ArrayBuffer>& /* data */)>& updateCallback, const std::function<void(bool /* success */, const std::string& /* error */)>& completionCallback) override;
73
73
  void unsubscribeFromCharacteristic(const std::string& deviceId, const std::string& serviceId, const std::string& characteristicId, const std::function<void(bool /* success */, const std::string& /* error */)>& callback) override;
74
74
  void requestBluetoothEnable(const std::function<void(bool /* success */, const std::string& /* error */)>& callback) override;
75
75
  BLEState state() override;
@@ -144,12 +144,12 @@ abstract class HybridNativeBleNitroSpec: HybridObject() {
144
144
  return __result
145
145
  }
146
146
 
147
- abstract fun subscribeToCharacteristic(deviceId: String, serviceId: String, characteristicId: String, updateCallback: (characteristicId: String, data: ArrayBuffer) -> Unit): OperationResult
147
+ abstract fun subscribeToCharacteristic(deviceId: String, serviceId: String, characteristicId: String, updateCallback: (characteristicId: String, data: ArrayBuffer) -> Unit, completionCallback: (success: Boolean, error: String) -> Unit): Unit
148
148
 
149
149
  @DoNotStrip
150
150
  @Keep
151
- private fun subscribeToCharacteristic_cxx(deviceId: String, serviceId: String, characteristicId: String, updateCallback: Func_void_std__string_std__shared_ptr_ArrayBuffer_): OperationResult {
152
- val __result = subscribeToCharacteristic(deviceId, serviceId, characteristicId, updateCallback)
151
+ private fun subscribeToCharacteristic_cxx(deviceId: String, serviceId: String, characteristicId: String, updateCallback: Func_void_std__string_std__shared_ptr_ArrayBuffer_, completionCallback: Func_void_bool_std__string): Unit {
152
+ val __result = subscribeToCharacteristic(deviceId, serviceId, characteristicId, updateCallback, completionCallback)
153
153
  return __result
154
154
  }
155
155
 
@@ -464,15 +464,6 @@ namespace margelo::nitro::co::zyke::ble::bridge::swift {
464
464
  return Result<std::vector<std::string>>::withError(error);
465
465
  }
466
466
 
467
- // pragma MARK: Result<OperationResult>
468
- using Result_OperationResult_ = Result<OperationResult>;
469
- inline Result_OperationResult_ create_Result_OperationResult_(const OperationResult& value) noexcept {
470
- return Result<OperationResult>::withValue(value);
471
- }
472
- inline Result_OperationResult_ create_Result_OperationResult_(const std::exception_ptr& error) noexcept {
473
- return Result<OperationResult>::withError(error);
474
- }
475
-
476
467
  // pragma MARK: Result<BLEState>
477
468
  using Result_BLEState_ = Result<BLEState>;
478
469
  inline Result_BLEState_ create_Result_BLEState_(BLEState value) noexcept {
@@ -482,6 +473,15 @@ namespace margelo::nitro::co::zyke::ble::bridge::swift {
482
473
  return Result<BLEState>::withError(error);
483
474
  }
484
475
 
476
+ // pragma MARK: Result<OperationResult>
477
+ using Result_OperationResult_ = Result<OperationResult>;
478
+ inline Result_OperationResult_ create_Result_OperationResult_(const OperationResult& value) noexcept {
479
+ return Result<OperationResult>::withValue(value);
480
+ }
481
+ inline Result_OperationResult_ create_Result_OperationResult_(const std::exception_ptr& error) noexcept {
482
+ return Result<OperationResult>::withError(error);
483
+ }
484
+
485
485
  // pragma MARK: Result<std::shared_ptr<Promise<void>>>
486
486
  using Result_std__shared_ptr_Promise_void___ = Result<std::shared_ptr<Promise<void>>>;
487
487
  inline Result_std__shared_ptr_Promise_void___ create_Result_std__shared_ptr_Promise_void___(const std::shared_ptr<Promise<void>>& value) noexcept {
@@ -26,10 +26,10 @@ namespace NitroModules { class ArrayBufferHolder; }
26
26
  namespace margelo::nitro::co::zyke::ble { struct ScanFilter; }
27
27
  // Forward declaration of `AndroidScanMode` to properly resolve imports.
28
28
  namespace margelo::nitro::co::zyke::ble { enum class AndroidScanMode; }
29
- // Forward declaration of `OperationResult` to properly resolve imports.
30
- namespace margelo::nitro::co::zyke::ble { struct OperationResult; }
31
29
  // Forward declaration of `BLEState` to properly resolve imports.
32
30
  namespace margelo::nitro::co::zyke::ble { enum class BLEState; }
31
+ // Forward declaration of `OperationResult` to properly resolve imports.
32
+ namespace margelo::nitro::co::zyke::ble { struct OperationResult; }
33
33
 
34
34
  #include <string>
35
35
  #include <optional>
@@ -42,8 +42,8 @@ namespace margelo::nitro::co::zyke::ble { enum class BLEState; }
42
42
  #include <NitroModules/ArrayBufferHolder.hpp>
43
43
  #include "ScanFilter.hpp"
44
44
  #include "AndroidScanMode.hpp"
45
- #include "OperationResult.hpp"
46
45
  #include "BLEState.hpp"
46
+ #include "OperationResult.hpp"
47
47
  #include <NitroModules/Promise.hpp>
48
48
 
49
49
  #include "BleNitro-Swift-Cxx-Umbrella.hpp"
@@ -197,13 +197,11 @@ namespace margelo::nitro::co::zyke::ble {
197
197
  std::rethrow_exception(__result.error());
198
198
  }
199
199
  }
200
- inline OperationResult subscribeToCharacteristic(const std::string& deviceId, const std::string& serviceId, const std::string& characteristicId, const std::function<void(const std::string& /* characteristicId */, const std::shared_ptr<ArrayBuffer>& /* data */)>& updateCallback) override {
201
- auto __result = _swiftPart.subscribeToCharacteristic(deviceId, serviceId, characteristicId, updateCallback);
200
+ inline void subscribeToCharacteristic(const std::string& deviceId, const std::string& serviceId, const std::string& characteristicId, const std::function<void(const std::string& /* characteristicId */, const std::shared_ptr<ArrayBuffer>& /* data */)>& updateCallback, const std::function<void(bool /* success */, const std::string& /* error */)>& completionCallback) override {
201
+ auto __result = _swiftPart.subscribeToCharacteristic(deviceId, serviceId, characteristicId, updateCallback, completionCallback);
202
202
  if (__result.hasError()) [[unlikely]] {
203
203
  std::rethrow_exception(__result.error());
204
204
  }
205
- auto __value = std::move(__result.value());
206
- return __value;
207
205
  }
208
206
  inline void unsubscribeFromCharacteristic(const std::string& deviceId, const std::string& serviceId, const std::string& characteristicId, const std::function<void(bool /* success */, const std::string& /* error */)>& callback) override {
209
207
  auto __result = _swiftPart.unsubscribeFromCharacteristic(deviceId, serviceId, characteristicId, callback);
@@ -29,7 +29,7 @@ public protocol HybridNativeBleNitroSpec_protocol: HybridObject {
29
29
  func getCharacteristics(deviceId: String, serviceId: String) throws -> [String]
30
30
  func readCharacteristic(deviceId: String, serviceId: String, characteristicId: String, callback: @escaping (_ success: Bool, _ data: ArrayBuffer, _ error: String) -> Void) throws -> Void
31
31
  func writeCharacteristic(deviceId: String, serviceId: String, characteristicId: String, data: ArrayBuffer, withResponse: Bool, callback: @escaping (_ success: Bool, _ responseData: ArrayBuffer, _ error: String) -> Void) throws -> Void
32
- func subscribeToCharacteristic(deviceId: String, serviceId: String, characteristicId: String, updateCallback: @escaping (_ characteristicId: String, _ data: ArrayBuffer) -> Void) throws -> OperationResult
32
+ func subscribeToCharacteristic(deviceId: String, serviceId: String, characteristicId: String, updateCallback: @escaping (_ characteristicId: String, _ data: ArrayBuffer) -> Void, completionCallback: @escaping (_ success: Bool, _ error: String) -> Void) throws -> Void
33
33
  func unsubscribeFromCharacteristic(deviceId: String, serviceId: String, characteristicId: String, callback: @escaping (_ success: Bool, _ error: String) -> Void) throws -> Void
34
34
  func requestBluetoothEnable(callback: @escaping (_ success: Bool, _ error: String) -> Void) throws -> Void
35
35
  func state() throws -> BLEState
@@ -392,19 +392,23 @@ open class HybridNativeBleNitroSpec_cxx {
392
392
  }
393
393
 
394
394
  @inline(__always)
395
- public final func subscribeToCharacteristic(deviceId: std.string, serviceId: std.string, characteristicId: std.string, updateCallback: bridge.Func_void_std__string_std__shared_ptr_ArrayBuffer_) -> bridge.Result_OperationResult_ {
395
+ public final func subscribeToCharacteristic(deviceId: std.string, serviceId: std.string, characteristicId: std.string, updateCallback: bridge.Func_void_std__string_std__shared_ptr_ArrayBuffer_, completionCallback: bridge.Func_void_bool_std__string) -> bridge.Result_void_ {
396
396
  do {
397
- let __result = try self.__implementation.subscribeToCharacteristic(deviceId: String(deviceId), serviceId: String(serviceId), characteristicId: String(characteristicId), updateCallback: { () -> (String, ArrayBuffer) -> Void in
397
+ try self.__implementation.subscribeToCharacteristic(deviceId: String(deviceId), serviceId: String(serviceId), characteristicId: String(characteristicId), updateCallback: { () -> (String, ArrayBuffer) -> Void in
398
398
  let __wrappedFunction = bridge.wrap_Func_void_std__string_std__shared_ptr_ArrayBuffer_(updateCallback)
399
399
  return { (__characteristicId: String, __data: ArrayBuffer) -> Void in
400
400
  __wrappedFunction.call(std.string(__characteristicId), __data)
401
401
  }
402
+ }(), completionCallback: { () -> (Bool, String) -> Void in
403
+ let __wrappedFunction = bridge.wrap_Func_void_bool_std__string(completionCallback)
404
+ return { (__success: Bool, __error: String) -> Void in
405
+ __wrappedFunction.call(__success, std.string(__error))
406
+ }
402
407
  }())
403
- let __resultCpp = __result
404
- return bridge.create_Result_OperationResult_(__resultCpp)
408
+ return bridge.create_Result_void_()
405
409
  } catch (let __error) {
406
410
  let __exceptionPtr = __error.toCpp()
407
- return bridge.create_Result_OperationResult_(__exceptionPtr)
411
+ return bridge.create_Result_void_(__exceptionPtr)
408
412
  }
409
413
  }
410
414
 
@@ -19,10 +19,10 @@ namespace margelo::nitro::co::zyke::ble { struct BLEDevice; }
19
19
  namespace margelo::nitro::co::zyke::ble { struct ScanFilter; }
20
20
  // Forward declaration of `ArrayBuffer` to properly resolve imports.
21
21
  namespace NitroModules { class ArrayBuffer; }
22
- // Forward declaration of `OperationResult` to properly resolve imports.
23
- namespace margelo::nitro::co::zyke::ble { struct OperationResult; }
24
22
  // Forward declaration of `BLEState` to properly resolve imports.
25
23
  namespace margelo::nitro::co::zyke::ble { enum class BLEState; }
24
+ // Forward declaration of `OperationResult` to properly resolve imports.
25
+ namespace margelo::nitro::co::zyke::ble { struct OperationResult; }
26
26
 
27
27
  #include <string>
28
28
  #include <optional>
@@ -31,8 +31,8 @@ namespace margelo::nitro::co::zyke::ble { enum class BLEState; }
31
31
  #include <functional>
32
32
  #include "ScanFilter.hpp"
33
33
  #include <NitroModules/ArrayBuffer.hpp>
34
- #include "OperationResult.hpp"
35
34
  #include "BLEState.hpp"
35
+ #include "OperationResult.hpp"
36
36
  #include <NitroModules/Promise.hpp>
37
37
 
38
38
  namespace margelo::nitro::co::zyke::ble {
@@ -82,7 +82,7 @@ namespace margelo::nitro::co::zyke::ble {
82
82
  virtual std::vector<std::string> getCharacteristics(const std::string& deviceId, const std::string& serviceId) = 0;
83
83
  virtual void readCharacteristic(const std::string& deviceId, const std::string& serviceId, const std::string& characteristicId, const std::function<void(bool /* success */, const std::shared_ptr<ArrayBuffer>& /* data */, const std::string& /* error */)>& callback) = 0;
84
84
  virtual void writeCharacteristic(const std::string& deviceId, const std::string& serviceId, const std::string& characteristicId, const std::shared_ptr<ArrayBuffer>& data, bool withResponse, const std::function<void(bool /* success */, const std::shared_ptr<ArrayBuffer>& /* responseData */, const std::string& /* error */)>& callback) = 0;
85
- virtual OperationResult subscribeToCharacteristic(const std::string& deviceId, const std::string& serviceId, const std::string& characteristicId, const std::function<void(const std::string& /* characteristicId */, const std::shared_ptr<ArrayBuffer>& /* data */)>& updateCallback) = 0;
85
+ virtual void subscribeToCharacteristic(const std::string& deviceId, const std::string& serviceId, const std::string& characteristicId, const std::function<void(const std::string& /* characteristicId */, const std::shared_ptr<ArrayBuffer>& /* data */)>& updateCallback, const std::function<void(bool /* success */, const std::string& /* error */)>& completionCallback) = 0;
86
86
  virtual void unsubscribeFromCharacteristic(const std::string& deviceId, const std::string& serviceId, const std::string& characteristicId, const std::function<void(bool /* success */, const std::string& /* error */)>& callback) = 0;
87
87
  virtual void requestBluetoothEnable(const std::function<void(bool /* success */, const std::string& /* error */)>& callback) = 0;
88
88
  virtual BLEState state() = 0;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-ble-nitro",
3
- "version": "1.8.0",
3
+ "version": "1.9.2",
4
4
  "description": "High-performance React Native BLE library built on Nitro Modules",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",
@@ -245,17 +245,17 @@ describe('BleNitro', () => {
245
245
  });
246
246
  await BleManager.connect('device');
247
247
 
248
- // Mock subscription - now returns OperationResult
249
- mockNative.subscribeToCharacteristic.mockImplementation((_device: string, _service: string, _char: string, updateCallback: (charId: string, data: ArrayBuffer) => void) => {
248
+ // Mock subscription - now uses completion callback (async)
249
+ mockNative.subscribeToCharacteristic.mockImplementation((_device: string, _service: string, _char: string, updateCallback: (charId: string, data: ArrayBuffer) => void, completionCallback: (success: boolean, error: string) => void) => {
250
250
  // Simulate notification
251
251
  const testData = new Uint8Array([1, 2, 3]);
252
252
  updateCallback('char-id', testData.buffer);
253
- // Return OperationResult
254
- return { success: true, error: null };
253
+ // Call completion callback to signal subscription is established
254
+ completionCallback(true, '');
255
255
  });
256
256
 
257
257
  const notificationCallback = jest.fn();
258
- const subscription = BleManager.subscribeToCharacteristic('device', 'service', 'char', notificationCallback);
258
+ const subscription = await BleManager.subscribeToCharacteristic('device', 'service', 'char', notificationCallback);
259
259
 
260
260
  expect(mockNative.subscribeToCharacteristic).toHaveBeenCalled();
261
261
  expect(notificationCallback).toHaveBeenCalledWith('char-id', [1, 2, 3]);
package/src/manager.ts CHANGED
@@ -581,48 +581,48 @@ export class BleNitroManager {
581
581
  * @param serviceId ID of the service
582
582
  * @param characteristicId ID of the characteristic
583
583
  * @param callback Callback function called when notification is received
584
- * @returns Subscription
584
+ * @returns Promise resolving to AsyncSubscription when subscription is established
585
585
  */
586
- public subscribeToCharacteristic(
586
+ public async subscribeToCharacteristic(
587
587
  deviceId: string,
588
588
  serviceId: string,
589
589
  characteristicId: string,
590
590
  callback: CharacteristicUpdateCallback
591
- ): AsyncSubscription {
592
- // Check if connected first
593
- if (!this._connectedDevices[deviceId]) {
594
- throw new Error('Device not connected');
595
- }
596
-
597
- const { success, error } = this.Instance.subscribeToCharacteristic(
598
- deviceId,
599
- BleNitroManager.normalizeGattUUID(serviceId),
600
- BleNitroManager.normalizeGattUUID(characteristicId),
601
- (charId: string, data: ArrayBuffer) => {
602
- callback(charId, arrayBufferToByteArray(data));
603
- },
604
- );
605
-
606
- const _success = success;
591
+ ): Promise<AsyncSubscription> {
592
+ return new Promise((resolve, reject) => {
593
+ // Check if connected first
594
+ if (!this._connectedDevices[deviceId]) {
595
+ reject(new Error('Device not connected'));
596
+ return;
597
+ }
607
598
 
608
- if (!_success) {
609
- throw new Error(error ?? 'Failed to subscribe to characteristic');
610
- }
599
+ this.Instance.subscribeToCharacteristic(
600
+ deviceId,
601
+ BleNitroManager.normalizeGattUUID(serviceId),
602
+ BleNitroManager.normalizeGattUUID(characteristicId),
603
+ (charId: string, data: ArrayBuffer) => {
604
+ callback(charId, arrayBufferToByteArray(data));
605
+ },
606
+ (success: boolean, error: string) => {
607
+ if (!success) {
608
+ reject(new Error(error || 'Failed to subscribe to characteristic'));
609
+ return;
610
+ }
611
611
 
612
- const sub: AsyncSubscription = {
613
- remove: async () => {
614
- if (!_success) {
615
- return;
612
+ const sub: AsyncSubscription = {
613
+ remove: async () => {
614
+ await this.unsubscribeFromCharacteristic(
615
+ deviceId,
616
+ serviceId,
617
+ characteristicId
618
+ ).catch(() => {});
619
+ }
620
+ };
621
+
622
+ resolve(sub);
616
623
  }
617
- await this.unsubscribeFromCharacteristic(
618
- deviceId,
619
- serviceId,
620
- characteristicId
621
- ).catch(() => {});
622
- }
623
- };
624
-
625
- return sub;
624
+ );
625
+ });
626
626
  }
627
627
 
628
628
  /**
@@ -97,7 +97,7 @@ export interface NativeBleNitro extends HybridObject<{ ios: 'swift'; android: 'k
97
97
  // Characteristic operations
98
98
  readCharacteristic(deviceId: string, serviceId: string, characteristicId: string, callback: ReadCharacteristicCallback): void;
99
99
  writeCharacteristic(deviceId: string, serviceId: string, characteristicId: string, data: BLEValue, withResponse: boolean, callback: WriteCharacteristicCallback): void;
100
- subscribeToCharacteristic(deviceId: string, serviceId: string, characteristicId: string, updateCallback: CharacteristicCallback): OperationResult;
100
+ subscribeToCharacteristic(deviceId: string, serviceId: string, characteristicId: string, updateCallback: CharacteristicCallback, completionCallback: OperationCallback): void;
101
101
  unsubscribeFromCharacteristic(deviceId: string, serviceId: string, characteristicId: string, callback: OperationCallback): void;
102
102
 
103
103
  // Bluetooth state management