react-native-ble-manager 8.8.0 → 9.1.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.
Files changed (60) hide show
  1. package/README.md +131 -44
  2. package/android/.gradle/7.4/checksums/checksums.lock +0 -0
  3. package/android/.gradle/7.4/dependencies-accessors/dependencies-accessors.lock +0 -0
  4. package/android/.gradle/7.4/dependencies-accessors/gc.properties +0 -0
  5. package/android/.gradle/7.4/executionHistory/executionHistory.bin +0 -0
  6. package/android/.gradle/7.4/executionHistory/executionHistory.lock +0 -0
  7. package/android/.gradle/7.4/fileChanges/last-build.bin +0 -0
  8. package/android/.gradle/7.4/fileHashes/fileHashes.bin +0 -0
  9. package/android/.gradle/7.4/fileHashes/fileHashes.lock +0 -0
  10. package/android/.gradle/7.4/fileHashes/resourceHashesCache.bin +0 -0
  11. package/android/.gradle/7.4/gc.properties +0 -0
  12. package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
  13. package/android/.gradle/buildOutputCleanup/cache.properties +2 -0
  14. package/android/.gradle/buildOutputCleanup/outputFiles.bin +0 -0
  15. package/android/.gradle/file-system.probe +0 -0
  16. package/android/.gradle/vcs-1/gc.properties +0 -0
  17. package/android/.idea/.name +1 -0
  18. package/android/.idea/compiler.xml +6 -0
  19. package/android/.idea/gradle.xml +18 -0
  20. package/android/.idea/jarRepositories.xml +40 -0
  21. package/android/.idea/misc.xml +10 -0
  22. package/android/.idea/vcs.xml +6 -0
  23. package/android/build.gradle +17 -17
  24. package/android/gradle/wrapper/gradle-wrapper.jar +0 -0
  25. package/android/gradle/wrapper/gradle-wrapper.properties +5 -0
  26. package/android/gradle.properties +3 -1
  27. package/android/gradlew +234 -0
  28. package/android/gradlew.bat +89 -0
  29. package/android/local.properties +8 -0
  30. package/android/src/main/java/it/innove/BleManager.java +38 -17
  31. package/android/src/main/java/it/innove/LegacyScanManager.java +33 -28
  32. package/android/src/main/java/it/innove/LollipopPeripheral.java +66 -65
  33. package/android/src/main/java/it/innove/LollipopScanManager.java +52 -25
  34. package/android/src/main/java/it/innove/Peripheral.java +973 -838
  35. package/android/src/main/java/it/innove/ScanManager.java +24 -23
  36. package/dist/cjs/index.d.ts +156 -0
  37. package/dist/cjs/index.js +507 -0
  38. package/dist/cjs/index.js.map +1 -0
  39. package/dist/cjs/types.d.ts +311 -0
  40. package/dist/cjs/types.js +110 -0
  41. package/dist/cjs/types.js.map +1 -0
  42. package/dist/esm/index.d.ts +156 -0
  43. package/dist/esm/index.js +491 -0
  44. package/dist/esm/index.js.map +1 -0
  45. package/dist/esm/types.d.ts +311 -0
  46. package/dist/esm/types.js +107 -0
  47. package/dist/esm/types.js.map +1 -0
  48. package/ios/BleManager.h +1 -0
  49. package/ios/BleManager.m +213 -115
  50. package/ios/BleManager.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  51. package/ios/BleManager.xcodeproj/project.xcworkspace/xcuserdata/marco.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  52. package/ios/BleManager.xcodeproj/xcuserdata/marco.xcuserdatad/xcschemes/xcschememanagement.plist +14 -0
  53. package/ios/CBPeripheral+Extensions.m +1 -1
  54. package/package.json +31 -4
  55. package/src/index.ts +595 -0
  56. package/src/types.ts +336 -0
  57. package/.github/FUNDING.yml +0 -3
  58. package/.github/ISSUE_TEMPLATE/bug_report.md +0 -38
  59. package/BleManager.js +0 -427
  60. package/index.d.ts +0 -294
@@ -0,0 +1,507 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ const react_native_1 = require("react-native");
18
+ const types_1 = require("./types");
19
+ __exportStar(require("./types"), exports);
20
+ var bleManager = react_native_1.NativeModules.BleManager;
21
+ class BleManager {
22
+ constructor() {
23
+ this.isPeripheralConnected = this.isPeripheralConnected.bind(this);
24
+ }
25
+ /**
26
+ *
27
+ * @param peripheralId
28
+ * @param serviceUUID
29
+ * @param characteristicUUID
30
+ * @returns data as an array of numbers (which can be converted back to a Uint8Array (ByteArray) using something like [Buffer.from()](https://github.com/feross/buffer))
31
+ */
32
+ read(peripheralId, serviceUUID, characteristicUUID) {
33
+ return new Promise((fulfill, reject) => {
34
+ bleManager.read(peripheralId, serviceUUID, characteristicUUID, (error, data) => {
35
+ if (error) {
36
+ reject(error);
37
+ }
38
+ else {
39
+ fulfill(data);
40
+ }
41
+ });
42
+ });
43
+ }
44
+ /**
45
+ *
46
+ * @param peripheralId
47
+ * @param serviceUUID
48
+ * @param characteristicUUID
49
+ * @param descriptorUUID
50
+ * @returns data as an array of numbers (which can be converted back to a Uint8Array (ByteArray) using something like [Buffer.from()](https://github.com/feross/buffer))
51
+ */
52
+ readDescriptor(peripheralId, serviceUUID, characteristicUUID, descriptorUUID) {
53
+ return new Promise((fulfill, reject) => {
54
+ bleManager.readDescriptor(peripheralId, serviceUUID, characteristicUUID, descriptorUUID, (error, data) => {
55
+ if (error) {
56
+ reject(error);
57
+ }
58
+ else {
59
+ fulfill(data);
60
+ }
61
+ });
62
+ });
63
+ }
64
+ /**
65
+ *
66
+ * @param peripheralId
67
+ * @returns a promise resolving with the updated RSSI (`number`) if it succeeds.
68
+ */
69
+ readRSSI(peripheralId) {
70
+ return new Promise((fulfill, reject) => {
71
+ bleManager.readRSSI(peripheralId, (error, rssi) => {
72
+ if (error) {
73
+ reject(error);
74
+ }
75
+ else {
76
+ fulfill(rssi);
77
+ }
78
+ });
79
+ });
80
+ }
81
+ /**
82
+ * [Android only]
83
+ * @param peripheralId
84
+ * @returns a promise that resolves to a boolean indicating if gatt was successfully refreshed or not.
85
+ */
86
+ refreshCache(peripheralId) {
87
+ return new Promise((fulfill, reject) => {
88
+ bleManager.refreshCache(peripheralId, (error, result) => {
89
+ if (error) {
90
+ reject(error);
91
+ }
92
+ else {
93
+ fulfill(result);
94
+ }
95
+ });
96
+ });
97
+ }
98
+ /**
99
+ *
100
+ * @param peripheralId
101
+ * @param serviceUUIDs [iOS only] optional filter of services to retrieve.
102
+ * @returns
103
+ */
104
+ retrieveServices(peripheralId, serviceUUIDs = []) {
105
+ return new Promise((fulfill, reject) => {
106
+ bleManager.retrieveServices(peripheralId, serviceUUIDs, (error, peripheral) => {
107
+ if (error) {
108
+ reject(error);
109
+ }
110
+ else {
111
+ fulfill(peripheral);
112
+ }
113
+ });
114
+ });
115
+ }
116
+ /**
117
+ *
118
+ * @param peripheralId
119
+ * @param serviceUUID
120
+ * @param characteristicUUID
121
+ * @param data data to write as an array of numbers (which can be converted from a Uint8Array (ByteArray) using something like [Buffer.toJSON().data](https://github.com/feross/buffer))
122
+ * @param maxByteSize optional, defaults to 20
123
+ * @returns
124
+ */
125
+ write(peripheralId, serviceUUID, characteristicUUID, data, maxByteSize = 20) {
126
+ return new Promise((fulfill, reject) => {
127
+ bleManager.write(peripheralId, serviceUUID, characteristicUUID, data, maxByteSize, (error) => {
128
+ if (error) {
129
+ reject(error);
130
+ }
131
+ else {
132
+ fulfill();
133
+ }
134
+ });
135
+ });
136
+ }
137
+ /**
138
+ *
139
+ * @param peripheralId
140
+ * @param serviceUUID
141
+ * @param characteristicUUID
142
+ * @param data data to write as an array of numbers (which can be converted from a Uint8Array (ByteArray) using something like [Buffer.toJSON().data](https://github.com/feross/buffer))
143
+ * @param maxByteSize optional, defaults to 20
144
+ * @param queueSleepTime optional, defaults to 10. Only useful if data length is greater than maxByteSize.
145
+ * @returns
146
+ */
147
+ writeWithoutResponse(peripheralId, serviceUUID, characteristicUUID, data, maxByteSize = 20, queueSleepTime = 10) {
148
+ return new Promise((fulfill, reject) => {
149
+ bleManager.writeWithoutResponse(peripheralId, serviceUUID, characteristicUUID, data, maxByteSize, queueSleepTime, (error) => {
150
+ if (error) {
151
+ reject(error);
152
+ }
153
+ else {
154
+ fulfill();
155
+ }
156
+ });
157
+ });
158
+ }
159
+ connect(peripheralId) {
160
+ return new Promise((fulfill, reject) => {
161
+ bleManager.connect(peripheralId, (error) => {
162
+ if (error) {
163
+ reject(error);
164
+ }
165
+ else {
166
+ fulfill();
167
+ }
168
+ });
169
+ });
170
+ }
171
+ /**
172
+ * [Android only]
173
+ * @param peripheralId
174
+ * @param peripheralPin optional. will be used to auto-bond if possible.
175
+ * @returns
176
+ */
177
+ createBond(peripheralId, peripheralPin = null) {
178
+ return new Promise((fulfill, reject) => {
179
+ bleManager.createBond(peripheralId, peripheralPin, (error) => {
180
+ if (error) {
181
+ reject(error);
182
+ }
183
+ else {
184
+ fulfill();
185
+ }
186
+ });
187
+ });
188
+ }
189
+ /**
190
+ * [Android only]
191
+ * @param peripheralId
192
+ * @returns
193
+ */
194
+ removeBond(peripheralId) {
195
+ return new Promise((fulfill, reject) => {
196
+ bleManager.removeBond(peripheralId, (error) => {
197
+ if (error) {
198
+ reject(error);
199
+ }
200
+ else {
201
+ fulfill();
202
+ }
203
+ });
204
+ });
205
+ }
206
+ /**
207
+ *
208
+ * @param peripheralId
209
+ * @param force [Android only] defaults to true.
210
+ * @returns
211
+ */
212
+ disconnect(peripheralId, force = true) {
213
+ return new Promise((fulfill, reject) => {
214
+ bleManager.disconnect(peripheralId, force, (error) => {
215
+ if (error) {
216
+ reject(error);
217
+ }
218
+ else {
219
+ fulfill();
220
+ }
221
+ });
222
+ });
223
+ }
224
+ startNotification(peripheralId, serviceUUID, characteristicUUID) {
225
+ return new Promise((fulfill, reject) => {
226
+ bleManager.startNotification(peripheralId, serviceUUID, characteristicUUID, (error) => {
227
+ if (error) {
228
+ reject(error);
229
+ }
230
+ else {
231
+ fulfill();
232
+ }
233
+ });
234
+ });
235
+ }
236
+ /**
237
+ * [Android only]
238
+ * @param peripheralId
239
+ * @param serviceUUID
240
+ * @param characteristicUUID
241
+ * @param buffer
242
+ * @returns
243
+ */
244
+ startNotificationUseBuffer(peripheralId, serviceUUID, characteristicUUID, buffer) {
245
+ return new Promise((fulfill, reject) => {
246
+ bleManager.startNotificationUseBuffer(peripheralId, serviceUUID, characteristicUUID, buffer, (error) => {
247
+ if (error) {
248
+ reject(error);
249
+ }
250
+ else {
251
+ fulfill();
252
+ }
253
+ });
254
+ });
255
+ }
256
+ stopNotification(peripheralId, serviceUUID, characteristicUUID) {
257
+ return new Promise((fulfill, reject) => {
258
+ bleManager.stopNotification(peripheralId, serviceUUID, characteristicUUID, (error) => {
259
+ if (error) {
260
+ reject(error);
261
+ }
262
+ else {
263
+ fulfill();
264
+ }
265
+ });
266
+ });
267
+ }
268
+ checkState() {
269
+ return new Promise((fulfill, _) => {
270
+ bleManager.checkState((state) => {
271
+ fulfill(state);
272
+ });
273
+ });
274
+ }
275
+ start(options) {
276
+ return new Promise((fulfill, reject) => {
277
+ if (options == null) {
278
+ options = {};
279
+ }
280
+ bleManager.start(options, (error) => {
281
+ if (error) {
282
+ reject(error);
283
+ }
284
+ else {
285
+ fulfill();
286
+ }
287
+ });
288
+ });
289
+ }
290
+ /**
291
+ *
292
+ * @param serviceUUIDs
293
+ * @param seconds amount of seconds to scan. if set to 0 or less, will scan until you call stopScan() or the OS stops the scan (background etc).
294
+ * @param allowDuplicates [iOS only]
295
+ * @param scanningOptions [Android only] optional map of properties to fine-tune scan behavior on android, see README.
296
+ * @returns
297
+ */
298
+ scan(serviceUUIDs, seconds, allowDuplicates, scanningOptions = {}) {
299
+ return new Promise((fulfill, reject) => {
300
+ if (allowDuplicates == null) {
301
+ allowDuplicates = false;
302
+ }
303
+ // (ANDROID) Match as many advertisement per filter as hw could allow
304
+ // depends on current capability and availability of the resources in hw.
305
+ if (scanningOptions.numberOfMatches == null) {
306
+ scanningOptions.numberOfMatches = types_1.BleScanMatchCount.MaxAdvertisements;
307
+ }
308
+ // (ANDROID) Defaults to MATCH_MODE_AGGRESSIVE
309
+ if (scanningOptions.matchMode == null) {
310
+ scanningOptions.matchMode = types_1.BleScanMatchMode.Aggressive;
311
+ }
312
+ // (ANDROID) Defaults to SCAN_MODE_LOW_POWER
313
+ if (scanningOptions.scanMode == null) {
314
+ scanningOptions.scanMode = types_1.BleScanMode.LowPower;
315
+ }
316
+ // (ANDROID) Defaults to CALLBACK_TYPE_ALL_MATCHES
317
+ // WARN: sometimes, setting a scanSetting instead of leaving it untouched might result in unexpected behaviors.
318
+ // https://github.com/dariuszseweryn/RxAndroidBle/issues/462
319
+ if (scanningOptions.callbackType == null) {
320
+ scanningOptions.callbackType = types_1.BleScanCallbackType.AllMatches;
321
+ }
322
+ // (ANDROID) Defaults to 0ms (report results immediately).
323
+ if (scanningOptions.reportDelay == null) {
324
+ scanningOptions.reportDelay = 0;
325
+ }
326
+ // (ANDROID) ScanFilter used to restrict search to devices with a specific advertising name.
327
+ // https://developer.android.com/reference/android/bluetooth/le/ScanFilter.Builder#setDeviceName(java.lang.String)
328
+ if (!scanningOptions.exactAdvertisingName
329
+ || typeof scanningOptions.exactAdvertisingName !== 'string') {
330
+ delete scanningOptions.exactAdvertisingName;
331
+ }
332
+ bleManager.scan(serviceUUIDs, seconds, allowDuplicates, scanningOptions, (error) => {
333
+ if (error) {
334
+ reject(error);
335
+ }
336
+ else {
337
+ fulfill();
338
+ }
339
+ });
340
+ });
341
+ }
342
+ stopScan() {
343
+ return new Promise((fulfill, reject) => {
344
+ bleManager.stopScan((error) => {
345
+ if (error) {
346
+ reject(error);
347
+ }
348
+ else {
349
+ fulfill();
350
+ }
351
+ });
352
+ });
353
+ }
354
+ /**
355
+ * [Android only] triggers an ENABLE_REQUEST intent to the end-user to enable bluetooth.
356
+ * @returns
357
+ */
358
+ enableBluetooth() {
359
+ return new Promise((fulfill, reject) => {
360
+ bleManager.enableBluetooth((error) => {
361
+ if (error) {
362
+ reject(error);
363
+ }
364
+ else {
365
+ fulfill();
366
+ }
367
+ });
368
+ });
369
+ }
370
+ /**
371
+ *
372
+ * @param serviceUUIDs [optional] not used on android, optional on ios.
373
+ * @returns
374
+ */
375
+ getConnectedPeripherals(serviceUUIDs = []) {
376
+ return new Promise((fulfill, reject) => {
377
+ bleManager.getConnectedPeripherals(serviceUUIDs, (error, result) => {
378
+ if (error) {
379
+ reject(error);
380
+ }
381
+ else {
382
+ if (result) {
383
+ fulfill(result);
384
+ }
385
+ else {
386
+ fulfill([]);
387
+ }
388
+ }
389
+ });
390
+ });
391
+ }
392
+ /**
393
+ * [Android only]
394
+ * @returns
395
+ */
396
+ getBondedPeripherals() {
397
+ return new Promise((fulfill, reject) => {
398
+ bleManager.getBondedPeripherals((error, result) => {
399
+ if (error) {
400
+ reject(error);
401
+ }
402
+ else {
403
+ if (result) {
404
+ fulfill(result);
405
+ }
406
+ else {
407
+ fulfill([]);
408
+ }
409
+ }
410
+ });
411
+ });
412
+ }
413
+ getDiscoveredPeripherals() {
414
+ return new Promise((fulfill, reject) => {
415
+ bleManager.getDiscoveredPeripherals((error, result) => {
416
+ if (error) {
417
+ reject(error);
418
+ }
419
+ else {
420
+ if (result) {
421
+ fulfill(result);
422
+ }
423
+ else {
424
+ fulfill([]);
425
+ }
426
+ }
427
+ });
428
+ });
429
+ }
430
+ /**
431
+ * [Android only]
432
+ * @param peripheralId
433
+ * @returns
434
+ */
435
+ removePeripheral(peripheralId) {
436
+ return new Promise((fulfill, reject) => {
437
+ bleManager.removePeripheral(peripheralId, (error) => {
438
+ if (error) {
439
+ reject(error);
440
+ }
441
+ else {
442
+ fulfill();
443
+ }
444
+ });
445
+ });
446
+ }
447
+ /**
448
+ * @param peripheralId
449
+ * @param serviceUUIDs [optional] not used on android, optional on ios.
450
+ * @returns
451
+ */
452
+ isPeripheralConnected(peripheralId, serviceUUIDs = []) {
453
+ return this.getConnectedPeripherals(serviceUUIDs).then(result => {
454
+ if (result.find(p => p.id === peripheralId)) {
455
+ return true;
456
+ }
457
+ else {
458
+ return false;
459
+ }
460
+ });
461
+ }
462
+ /**
463
+ * [Android only, API 21+]
464
+ * @param peripheralId
465
+ * @param connectionPriority
466
+ * @returns a promise that resolves with a boolean indicating of the connection priority was changed successfully, or rejects with an error message.
467
+ */
468
+ requestConnectionPriority(peripheralId, connectionPriority) {
469
+ return new Promise((fulfill, reject) => {
470
+ bleManager.requestConnectionPriority(peripheralId, connectionPriority, (error, status) => {
471
+ if (error) {
472
+ reject(error);
473
+ }
474
+ else {
475
+ fulfill(status);
476
+ }
477
+ });
478
+ });
479
+ }
480
+ /**
481
+ * [Android only, API 21+]
482
+ * @param peripheralId
483
+ * @param mtu size to be requested, in bytes.
484
+ * @returns a promise resolving with the negotiated MTU if it succeeded. Beware that it might not be the one requested due to device's BLE limitations on both side of the negotiation.
485
+ */
486
+ requestMTU(peripheralId, mtu) {
487
+ return new Promise((fulfill, reject) => {
488
+ bleManager.requestMTU(peripheralId, mtu, (error, mtu) => {
489
+ if (error) {
490
+ reject(error);
491
+ }
492
+ else {
493
+ fulfill(mtu);
494
+ }
495
+ });
496
+ });
497
+ }
498
+ /**
499
+ * [Android only]
500
+ * @param name
501
+ */
502
+ setName(name) {
503
+ bleManager.setName(name);
504
+ }
505
+ }
506
+ exports.default = new BleManager();
507
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}