react-native-ble-nitro 1.8.0 → 1.9.1

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();
@@ -258,10 +258,14 @@ const emptyResult = await ble.writeCharacteristic(
258
258
 
259
259
  > [!CAUTION]
260
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,
@@ -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
  }
@@ -672,34 +762,32 @@ class BleNitroBleManager : HybridNativeBleNitroSpec() {
672
762
  callback(false, ArrayBuffer.allocate(0), "Device not connected")
673
763
  return
674
764
  }
675
-
765
+
676
766
  val service = gatt.getService(UUID.fromString(serviceId))
677
767
  if (service == null) {
678
768
  callback(false, ArrayBuffer.allocate(0), "Service not found")
679
769
  return
680
770
  }
681
-
771
+
682
772
  val characteristic = service.getCharacteristic(UUID.fromString(characteristicId))
683
773
  if (characteristic == null) {
684
774
  callback(false, ArrayBuffer.allocate(0), "Characteristic not found")
685
775
  return
686
776
  }
687
-
777
+
778
+ // Store callback for when read completes in onCharacteristicRead
779
+ val callbackKey = "$deviceId:$characteristicId"
780
+ readCallbacks[callbackKey] = callback
781
+
782
+ // Initiate the read operation
688
783
  val success = gatt.readCharacteristic(characteristic)
689
784
  if (!success) {
690
- callback(false, ArrayBuffer.allocate(0), "Failed to start read operation")
785
+ // Remove callback and report failure immediately
786
+ readCallbacks.remove(callbackKey)
787
+ callback(false, ArrayBuffer.allocate(0), "Failed to initiate read operation")
691
788
  }
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
-
789
+ // If success, wait for onCharacteristicRead callback
790
+
703
791
  } catch (e: Exception) {
704
792
  callback(false, ArrayBuffer.allocate(0), "Read error: ${e.message}")
705
793
  }
@@ -772,47 +860,61 @@ class BleNitroBleManager : HybridNativeBleNitroSpec() {
772
860
  deviceId: String,
773
861
  serviceId: String,
774
862
  characteristicId: String,
775
- updateCallback: (characteristicId: String, data: ArrayBuffer) -> Unit
776
- ): OperationResult {
863
+ updateCallback: (characteristicId: String, data: ArrayBuffer) -> Unit,
864
+ completionCallback: (success: Boolean, error: String) -> Unit
865
+ ) {
777
866
  try {
778
867
  val gatt = connectedDevices[deviceId]
779
868
  if (gatt == null) {
780
- return OperationResult(success = false, error = "Device not connected")
869
+ completionCallback(false, "Device not connected")
870
+ return
781
871
  }
782
872
 
783
873
  val service = gatt.getService(UUID.fromString(serviceId))
784
874
  if (service == null) {
785
- return OperationResult(success = false, error = "Service not found")
875
+ completionCallback(false, "Service not found")
876
+ return
786
877
  }
787
878
 
788
879
  val characteristic = service.getCharacteristic(UUID.fromString(characteristicId))
789
880
  if (characteristic == null) {
790
- return OperationResult(success = false, error = "Characteristic not found")
881
+ completionCallback(false, "Characteristic not found")
882
+ return
791
883
  }
792
884
 
793
- // Enable notifications
885
+ // Enable notifications locally
794
886
  val success = gatt.setCharacteristicNotification(characteristic, true)
795
887
  if (!success) {
796
- return OperationResult(success = false, error = "Failed to enable notifications")
888
+ completionCallback(false, "Failed to enable notifications")
889
+ return
797
890
  }
798
891
 
799
- // Store the callback
892
+ // Store the update callback
800
893
  val callbacks = deviceCallbacks[deviceId]
801
894
  if (callbacks != null) {
802
895
  callbacks.characteristicSubscriptions[characteristicId] = updateCallback
803
896
  }
804
897
 
805
- // Write to the descriptor to enable notifications on the device
898
+ // Write to the CCCD descriptor to enable notifications on the remote device
899
+ // This must be queued to ensure sequential GATT operations
806
900
  val descriptor = characteristic.getDescriptor(UUID.fromString("00002902-0000-1000-8000-00805f9b34fb"))
807
901
  if (descriptor != null) {
808
- descriptor.value = BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE
809
- gatt.writeDescriptor(descriptor)
902
+ enqueueGattOperation(
903
+ GattOperation.WriteDescriptor(
904
+ gatt = gatt,
905
+ descriptor = descriptor,
906
+ value = BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE,
907
+ deviceId = deviceId,
908
+ callback = completionCallback
909
+ )
910
+ )
911
+ } else {
912
+ // No CCCD descriptor - some characteristics may not need it
913
+ completionCallback(true, "")
810
914
  }
811
915
 
812
- return OperationResult(success = true, error = null)
813
-
814
916
  } catch (e: Exception) {
815
- return OperationResult(success = false, error = "Subscription error: ${e.message}")
917
+ completionCallback(false, "Subscription error: ${e.message}")
816
918
  }
817
919
  }
818
920
 
@@ -828,39 +930,48 @@ class BleNitroBleManager : HybridNativeBleNitroSpec() {
828
930
  callback(false, "Device not connected")
829
931
  return
830
932
  }
831
-
933
+
832
934
  val service = gatt.getService(UUID.fromString(serviceId))
833
935
  if (service == null) {
834
936
  callback(false, "Service not found")
835
937
  return
836
938
  }
837
-
939
+
838
940
  val characteristic = service.getCharacteristic(UUID.fromString(characteristicId))
839
941
  if (characteristic == null) {
840
942
  callback(false, "Characteristic not found")
841
943
  return
842
944
  }
843
-
844
- // Disable notifications
945
+
946
+ // Disable notifications locally
845
947
  val success = gatt.setCharacteristicNotification(characteristic, false)
846
948
  if (!success) {
847
949
  callback(false, "Failed to disable notifications")
848
950
  return
849
951
  }
850
-
851
- // Remove the callback
952
+
953
+ // Remove the update callback
852
954
  val callbacks = deviceCallbacks[deviceId]
853
955
  callbacks?.characteristicSubscriptions?.remove(characteristicId)
854
-
855
- // Write to the descriptor to disable notifications on the device
956
+
957
+ // Write to the CCCD descriptor to disable notifications on the remote device
958
+ // This must be queued to ensure sequential GATT operations
856
959
  val descriptor = characteristic.getDescriptor(UUID.fromString("00002902-0000-1000-8000-00805f9b34fb"))
857
960
  if (descriptor != null) {
858
- descriptor.value = BluetoothGattDescriptor.DISABLE_NOTIFICATION_VALUE
859
- gatt.writeDescriptor(descriptor)
961
+ enqueueGattOperation(
962
+ GattOperation.WriteDescriptor(
963
+ gatt = gatt,
964
+ descriptor = descriptor,
965
+ value = BluetoothGattDescriptor.DISABLE_NOTIFICATION_VALUE,
966
+ deviceId = deviceId,
967
+ callback = callback
968
+ )
969
+ )
970
+ } else {
971
+ // No CCCD descriptor - some characteristics may not need it
972
+ callback(true, "")
860
973
  }
861
-
862
- callback(true, "")
863
-
974
+
864
975
  } catch (e: Exception) {
865
976
  callback(false, "Unsubscription error: ${e.message}")
866
977
  }
@@ -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":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAG1D,MAAM,MAAM,QAAQ,GAAG,WAAW,CAAC;AAGnC,oBAAY,QAAQ;IAClB,OAAO,IAAI;IACX,SAAS,IAAI;IACb,WAAW,IAAI;IACf,YAAY,IAAI;IAChB,UAAU,IAAI;IACd,SAAS,IAAI;CACd;AAED,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,QAAQ,CAAC;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC/B,kBAAkB,EAAE,qBAAqB,EAAE,CAAC;CAC7C;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,aAAa,EAAE,OAAO,CAAC;IACvB,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,oBAAY,eAAe;IACzB,UAAU,IAAI;IACd,QAAQ,IAAI;IACZ,QAAQ,IAAI;IACZ,aAAa,IAAI;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,OAAO,CAAC;IACzB,eAAe,EAAE,eAAe,CAAC;CAClC;AAED,MAAM,MAAM,YAAY,GAAG,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;AACpF,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,IAAI,CAAC;AAC7D,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;AAC7F,MAAM,MAAM,0BAA0B,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;AACzG,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;AAC1E,MAAM,MAAM,sBAAsB,GAAG,CAAC,gBAAgB,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;AACxF,MAAM,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAC;AACtD,MAAM,MAAM,eAAe,GAAG,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;AACxD,MAAM,MAAM,mBAAmB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;AAC7D,MAAM,MAAM,0BAA0B,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;AACnG,MAAM,MAAM,2BAA2B,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;AAC5G,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;AACvF,MAAM,MAAM,eAAe,GAAG,CAAC,mBAAmB,EAAE,SAAS,EAAE,KAAK,IAAI,CAAC;AAEzE,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,cAAe,SAAQ,YAAY,CAAC;IAAE,GAAG,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,QAAQ,CAAA;CAAE,CAAC;IAEvF,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,uBAAuB,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI,CAAC;IAGzD,SAAS,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAC;IAC5D,QAAQ,IAAI,OAAO,CAAC;IACpB,UAAU,IAAI,OAAO,CAAC;IAGtB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,CAAC;IAGrD,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,kBAAkB,EAAE,kBAAkB,CAAC,EAAE,0BAA0B,EAAE,kBAAkB,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC7I,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAChE,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IACvC,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;IAClD,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAG7D,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACtE,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACxC,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAGlE,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,QAAQ,EAAE,0BAA0B,GAAG,IAAI,CAAC;IAC9H,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,2BAA2B,GAAG,IAAI,CAAC;IACvK,yBAAyB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,cAAc,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAC9K,6BAA6B,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAGhI,sBAAsB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAC1D,KAAK,IAAI,QAAQ,CAAC;IAClB,sBAAsB,CAAC,aAAa,EAAE,aAAa,GAAG,eAAe,CAAC;IACtE,0BAA0B,IAAI,eAAe,CAAC;IAC9C,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/B"}
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.1",
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