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/README.md +3 -893
- package/android/src/main/java/it/innove/BleManager.java +30 -0
- package/android/src/main/java/it/innove/DefaultScanManager.java +12 -2
- package/android/src/main/java/it/innove/LegacyScanManager.java +5 -0
- package/android/src/main/java/it/innove/Peripheral.java +80 -2
- package/android/src/main/java/it/innove/ScanManager.java +2 -0
- package/dist/cjs/index.d.ts +20 -4
- package/dist/cjs/index.js +46 -6
- package/dist/cjs/index.js.map +1 -1
- package/dist/esm/index.d.ts +20 -4
- package/dist/esm/index.js +49 -9
- package/dist/esm/index.js.map +1 -1
- package/ios/BleManager.m +11 -0
- package/ios/BleManager.swift +59 -1
- package/ios/Helper.swift +1 -1
- package/package.json +1 -1
- package/src/index.ts +224 -136
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)
|
package/ios/BleManager.swift
CHANGED
|
@@ -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: "%
|
|
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)
|