react-native-ble-manager 11.0.8 → 11.2.0

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/ios/BleManager.m CHANGED
@@ -43,6 +43,14 @@ RCT_EXTERN_METHOD(readDescriptor:
43
43
  descriptorUUID:(NSString*)descriptorUUID
44
44
  callback:(nonnull RCTResponseSenderBlock)callback)
45
45
 
46
+ RCT_EXTERN_METHOD(writeDescriptor:
47
+ (NSString *)peripheralUUID
48
+ serviceUUID:(NSString*)serviceUUID
49
+ characteristicUUID:(NSString*)characteristicUUID
50
+ descriptorUUID:(NSString*)descriptorUUID
51
+ message:(NSArray*)message
52
+ callback:(nonnull RCTResponseSenderBlock)callback)
53
+
46
54
  RCT_EXTERN_METHOD(getDiscoveredPeripherals:
47
55
  (nonnull RCTResponseSenderBlock)callback)
48
56
 
@@ -90,6 +98,9 @@ RCT_EXTERN_METHOD(isPeripheralConnected:
90
98
  (NSString *)peripheralUUID
91
99
  callback:(nonnull RCTResponseSenderBlock)callback)
92
100
 
101
+ RCT_EXTERN_METHOD(isScanning:
102
+ callback:(nonnull RCTResponseSenderBlock)callback)
103
+
93
104
  RCT_EXTERN_METHOD(getMaximumWriteValueLengthForWithoutResponse:
94
105
  (NSString *)peripheralUUID
95
106
  callback:(nonnull RCTResponseSenderBlock)callback)
@@ -18,6 +18,7 @@ class BleManager: RCTEventEmitter, CBCentralManagerDelegate, CBPeripheralDelegat
18
18
  private var readCallbacks: Dictionary<String, [RCTResponseSenderBlock]>
19
19
  private var readRSSICallbacks: Dictionary<String, [RCTResponseSenderBlock]>
20
20
  private var readDescriptorCallbacks: Dictionary<String, [RCTResponseSenderBlock]>
21
+ private var writeDescriptorCallbacks: Dictionary<String, [RCTResponseSenderBlock]>
21
22
  private var retrieveServicesCallbacks: Dictionary<String, [RCTResponseSenderBlock]>
22
23
  private var writeCallbacks: Dictionary<String, [RCTResponseSenderBlock]>
23
24
  private var writeQueue: Array<Any>
@@ -41,6 +42,7 @@ class BleManager: RCTEventEmitter, CBCentralManagerDelegate, CBPeripheralDelegat
41
42
  readCallbacks = [:]
42
43
  readRSSICallbacks = [:]
43
44
  readDescriptorCallbacks = [:]
45
+ writeDescriptorCallbacks = [:]
44
46
  retrieveServicesCallbacks = [:]
45
47
  writeCallbacks = [:]
46
48
  writeQueue = []
@@ -432,6 +434,38 @@ class BleManager: RCTEventEmitter, CBCentralManagerDelegate, CBPeripheralDelegat
432
434
  peripheral?.instance.readValue(for: descriptor)
433
435
  }
434
436
 
437
+ @objc func writeDescriptor(_ peripheralUUID: String,
438
+ serviceUUID: String,
439
+ characteristicUUID: String,
440
+ descriptorUUID: String,
441
+ message: [UInt8],
442
+ callback: @escaping RCTResponseSenderBlock) {
443
+ NSLog("writeDescriptor")
444
+
445
+ guard let context = getContext(peripheralUUID, serviceUUIDString: serviceUUID, characteristicUUIDString: characteristicUUID, prop: CBCharacteristicProperties.read, callback: callback) else {
446
+ return
447
+ }
448
+
449
+ let peripheral = context.peripheral
450
+ let characteristic = context.characteristic
451
+
452
+ guard let descriptor = Helper.findDescriptor(fromUUID: CBUUID(string: descriptorUUID), characteristic: characteristic!) else {
453
+ let error = "Could not find descriptor with UUID \(descriptorUUID) on characteristic with UUID \(String(describing: characteristic?.uuid.uuidString)) on peripheral with UUID \(peripheralUUID)"
454
+ NSLog(error)
455
+ callback([error])
456
+ return
457
+ }
458
+
459
+ if let peripheral = peripheral?.instance {
460
+ let key = Helper.key(forPeripheral: peripheral, andCharacteristic: characteristic!, andDescriptor: descriptor)
461
+ insertCallback(callback, intoDictionary: &writeDescriptorCallbacks, withKey: key)
462
+
463
+ }
464
+
465
+ let dataMessage = Data(message)
466
+ peripheral?.instance.writeValue(dataMessage, for: descriptor)
467
+ }
468
+
435
469
  @objc func getDiscoveredPeripherals(_ callback: @escaping RCTResponseSenderBlock) {
436
470
  NSLog("Get discovered peripherals")
437
471
  var discoveredPeripherals: [[String: Any]] = []
@@ -495,6 +529,14 @@ class BleManager: RCTEventEmitter, CBCentralManagerDelegate, CBPeripheralDelegat
495
529
  }
496
530
  }
497
531
 
532
+ @objc func isScanning(_ callback: @escaping RCTResponseSenderBlock) {
533
+ if let manager = manager {
534
+ callback([NSNull(), manager.isScanning])
535
+ } else {
536
+ callback(["CBCentralManager not found"])
537
+ }
538
+ }
539
+
498
540
  @objc func checkState(_ callback: @escaping RCTResponseSenderBlock) {
499
541
  if let manager = manager {
500
542
  centralManagerDidUpdateState(manager)
@@ -1104,6 +1146,23 @@ class BleManager: RCTEventEmitter, CBCentralManagerDelegate, CBPeripheralDelegat
1104
1146
  }
1105
1147
  }
1106
1148
 
1149
+ func peripheral(_ peripheral: CBPeripheral,
1150
+ didWriteValueFor descriptor: CBDescriptor,
1151
+ error: Error?) {
1152
+ NSLog("didWrite descriptor")
1153
+
1154
+ let key = Helper.key(forPeripheral: peripheral, andCharacteristic: descriptor.characteristic!, andDescriptor: descriptor)
1155
+ let callbacks = writeDescriptorCallbacks[key]
1156
+ if callbacks != nil {
1157
+ if let error = error {
1158
+ NSLog("\(error)")
1159
+ invokeAndClearDictionary(&writeDescriptorCallbacks, withKey: key, usingParameters: [error.localizedDescription])
1160
+ } else {
1161
+ invokeAndClearDictionary(&writeDescriptorCallbacks, withKey: key, usingParameters: [])
1162
+ }
1163
+ }
1164
+ }
1165
+
1107
1166
  func peripheral(_ peripheral: CBPeripheral,
1108
1167
  didWriteValueFor characteristic: CBCharacteristic,
1109
1168
  error: Error?) {
@@ -1120,7 +1179,6 @@ class BleManager: RCTEventEmitter, CBCentralManagerDelegate, CBPeripheralDelegat
1120
1179
  if writeQueue.isEmpty {
1121
1180
  invokeAndClearDictionary(&writeCallbacks, withKey: key, usingParameters: [])
1122
1181
  } else {
1123
- // Rimuovi e scrivi il messaggio in coda
1124
1182
  let message = writeQueue.removeFirst() as! Data
1125
1183
  NSLog("Message to write \(message.hexadecimalString())")
1126
1184
  peripheral.writeValue(message, for: characteristic, type: .withResponse)
package/ios/Helper.swift CHANGED
@@ -105,7 +105,7 @@ class Helper {
105
105
  if mfgData.count > 1 {
106
106
  let manufactureID = UInt16(mfgData[0]) + UInt16(mfgData[1]) << 8
107
107
  var manInfo: [String: Any] = [:]
108
- manInfo[String(format: "%04X", manufactureID)] = Helper.dataToArrayBuffer(mfgData.subdata(in: 2..<mfgData.endIndex))
108
+ manInfo[String(format: "%04x", manufactureID)] = Helper.dataToArrayBuffer(mfgData.subdata(in: 2..<mfgData.endIndex))
109
109
  adv["manufacturerData"] = manInfo
110
110
  }
111
111
  adv.removeValue(forKey: CBAdvertisementDataManufacturerDataKey)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-ble-manager",
3
- "version": "11.0.8",
3
+ "version": "11.2.0",
4
4
  "description": "A BLE module for react native.",
5
5
  "repository": {
6
6
  "type": "git",