react-native-ble-nitro 1.6.0 → 1.7.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 +27 -11
- package/android/src/main/java/com/margelo/nitro/co/zyke/ble/BleNitroBleManager.kt +8 -3
- package/android/src/main/java/com/margelo/nitro/co/zyke/ble/BleNitroBleManagerFactory.kt +21 -0
- package/ios/BleNitroBleManager.swift +36 -23
- package/ios/BleNitroBleManagerFactory.swift +19 -0
- package/lib/commonjs/index.d.ts +2 -5
- package/lib/commonjs/index.d.ts.map +1 -1
- package/lib/commonjs/index.js +7 -15
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/manager.d.ts +9 -0
- package/lib/commonjs/manager.d.ts.map +1 -1
- package/lib/commonjs/manager.js +44 -30
- package/lib/commonjs/manager.js.map +1 -1
- package/lib/commonjs/singleton.d.ts +10 -0
- package/lib/commonjs/singleton.d.ts.map +1 -0
- package/lib/commonjs/singleton.js +20 -0
- package/lib/commonjs/singleton.js.map +1 -0
- package/lib/commonjs/specs/NativeBleNitro.d.ts +1 -1
- package/lib/commonjs/specs/NativeBleNitro.d.ts.map +1 -1
- package/lib/commonjs/specs/NativeBleNitro.js +1 -0
- package/lib/commonjs/specs/NativeBleNitro.js.map +1 -1
- package/lib/commonjs/specs/NativeBleNitro.nitro.d.ts +2 -0
- package/lib/commonjs/specs/NativeBleNitro.nitro.d.ts.map +1 -1
- package/lib/commonjs/specs/NativeBleNitro.nitro.js.map +1 -1
- package/lib/commonjs/specs/NativeBleNitroFactory.d.ts +5 -0
- package/lib/commonjs/specs/NativeBleNitroFactory.d.ts.map +1 -0
- package/lib/commonjs/specs/NativeBleNitroFactory.js +23 -0
- package/lib/commonjs/specs/NativeBleNitroFactory.js.map +1 -0
- package/lib/commonjs/specs/NativeBleNitroFactory.nitro.d.ts +9 -0
- package/lib/commonjs/specs/NativeBleNitroFactory.nitro.d.ts.map +1 -0
- package/lib/commonjs/specs/NativeBleNitroFactory.nitro.js +3 -0
- package/lib/commonjs/specs/NativeBleNitroFactory.nitro.js.map +1 -0
- package/lib/index.d.ts +2 -5
- package/lib/index.js +2 -11
- package/lib/manager.d.ts +9 -0
- package/lib/manager.js +38 -25
- package/lib/singleton.d.ts +9 -0
- package/lib/singleton.js +15 -0
- package/lib/specs/NativeBleNitro.d.ts +1 -1
- package/lib/specs/NativeBleNitro.js +1 -0
- package/lib/specs/NativeBleNitro.nitro.d.ts +2 -0
- package/lib/specs/NativeBleNitroFactory.d.ts +4 -0
- package/lib/specs/NativeBleNitroFactory.js +6 -0
- package/lib/specs/NativeBleNitroFactory.nitro.d.ts +8 -0
- package/lib/specs/NativeBleNitroFactory.nitro.js +1 -0
- package/nitro.json +4 -0
- package/nitrogen/generated/android/BleNitro+autolinking.cmake +2 -0
- package/nitrogen/generated/android/BleNitroOnLoad.cpp +11 -0
- package/nitrogen/generated/android/c++/JBLEDevice.hpp +6 -2
- package/nitrogen/generated/android/c++/JFunc_void_std__vector_BLEDevice_.hpp +12 -12
- package/nitrogen/generated/android/c++/JHybridNativeBleNitroFactorySpec.cpp +71 -0
- package/nitrogen/generated/android/c++/JHybridNativeBleNitroFactorySpec.hpp +64 -0
- package/nitrogen/generated/android/c++/JHybridNativeBleNitroSpec.cpp +11 -3
- package/nitrogen/generated/android/c++/JHybridNativeBleNitroSpec.hpp +2 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/co/zyke/ble/BLEDevice.kt +4 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/co/zyke/ble/Func_void_std__vector_BLEDevice_.kt +9 -9
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/co/zyke/ble/HybridNativeBleNitroFactorySpec.kt +57 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/co/zyke/ble/HybridNativeBleNitroSpec.kt +5 -1
- package/nitrogen/generated/ios/BleNitro-Swift-Cxx-Bridge.cpp +17 -0
- package/nitrogen/generated/ios/BleNitro-Swift-Cxx-Bridge.hpp +44 -9
- package/nitrogen/generated/ios/BleNitro-Swift-Cxx-Umbrella.hpp +5 -0
- package/nitrogen/generated/ios/BleNitroAutolinking.mm +8 -0
- package/nitrogen/generated/ios/BleNitroAutolinking.swift +15 -0
- package/nitrogen/generated/ios/c++/HybridNativeBleNitroFactorySpecSwift.cpp +11 -0
- package/nitrogen/generated/ios/c++/HybridNativeBleNitroFactorySpecSwift.hpp +94 -0
- package/nitrogen/generated/ios/c++/HybridNativeBleNitroSpecSwift.hpp +9 -3
- package/nitrogen/generated/ios/swift/BLEDevice.swift +13 -2
- package/nitrogen/generated/ios/swift/Func_void_std__vector_BLEDevice_.swift +5 -5
- package/nitrogen/generated/ios/swift/HybridNativeBleNitroFactorySpec.swift +49 -0
- package/nitrogen/generated/ios/swift/HybridNativeBleNitroFactorySpec_cxx.swift +149 -0
- package/nitrogen/generated/ios/swift/HybridNativeBleNitroSpec.swift +1 -1
- package/nitrogen/generated/ios/swift/HybridNativeBleNitroSpec_cxx.swift +22 -1
- package/nitrogen/generated/shared/c++/BLEDevice.hpp +6 -2
- package/nitrogen/generated/shared/c++/HybridNativeBleNitroFactorySpec.cpp +21 -0
- package/nitrogen/generated/shared/c++/HybridNativeBleNitroFactorySpec.hpp +71 -0
- package/nitrogen/generated/shared/c++/HybridNativeBleNitroSpec.cpp +2 -0
- package/nitrogen/generated/shared/c++/HybridNativeBleNitroSpec.hpp +4 -3
- package/package.json +9 -1
- package/src/__tests__/index.test.ts +36 -26
- package/src/index.ts +2 -13
- package/src/manager.ts +41 -25
- package/src/singleton.ts +17 -0
- package/src/specs/NativeBleNitro.nitro.ts +2 -0
- package/src/specs/NativeBleNitro.ts +2 -1
- package/src/specs/NativeBleNitroFactory.nitro.ts +6 -0
- package/src/specs/NativeBleNitroFactory.ts +9 -0
package/README.md
CHANGED
|
@@ -73,6 +73,15 @@ import { BleNitro, BLEState, AndroidScanMode, type BLEDevice } from 'react-nativ
|
|
|
73
73
|
|
|
74
74
|
// Get the singleton instance
|
|
75
75
|
const ble = BleNitro.instance();
|
|
76
|
+
|
|
77
|
+
// Use custom manager instance (e.g. for iOS state restoration)
|
|
78
|
+
// It is recommended to create this instance in an extra file seperated from other BLE business logic for better fast-refresh support
|
|
79
|
+
const ble = new BleNitroManager({
|
|
80
|
+
restoreStateIdentifier: 'my-unique-identifier',
|
|
81
|
+
onRestoreState: (peripherals) => {
|
|
82
|
+
console.log('Restored peripherals:', peripherals);
|
|
83
|
+
},
|
|
84
|
+
});
|
|
76
85
|
```
|
|
77
86
|
|
|
78
87
|
### Complete API Reference
|
|
@@ -364,28 +373,35 @@ const fullUUIDs = BleNitro.normalizeGattUUIDs(['180d', '180f']);
|
|
|
364
373
|
|
|
365
374
|
### iOS Restore State
|
|
366
375
|
|
|
367
|
-
There
|
|
376
|
+
There is built-in support for iOS state restoration. You need to provide a unique identifier and a callback to handle restored peripherals. If no unique identifier is provided, state restoration is disabled.
|
|
368
377
|
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
const ble = BleNitro.instance();
|
|
372
|
-
ble.onRestoreState((peripherals) => {
|
|
373
|
-
console.log('Restored peripherals:', peripherals);
|
|
374
|
-
});
|
|
375
|
-
```
|
|
378
|
+
> [!CAUTION]
|
|
379
|
+
> From 1.7.0 on you have to create your own instance of `BleNitroManager` if you want to use state restoration. The singleton `BleNitro.instance()` will not have state restoration enabled by default anymore.
|
|
376
380
|
|
|
377
381
|
```typescript
|
|
378
|
-
|
|
379
|
-
// This way you have to assure that only one instance of BleNitroManager is created and that you always use this instance.
|
|
380
|
-
import { BleNitroManager, BLEDevice } from 'react-native-ble-nitro/manager';
|
|
382
|
+
import { BleNitroManager, BLEDevice } from 'react-native-ble-nitro';
|
|
381
383
|
|
|
382
384
|
const customBleInstance = new BleNitroManager({
|
|
385
|
+
restoreStateIdentifier: 'my-unique-identifier', // unique identifier for state restoration
|
|
383
386
|
onRestoreState: (peripherals: BLEDevice[]) => {
|
|
384
387
|
console.log('Restored peripherals:', peripherals);
|
|
388
|
+
// Handle restored peripherals
|
|
385
389
|
}
|
|
386
390
|
});
|
|
387
391
|
```
|
|
388
392
|
|
|
393
|
+
<details>
|
|
394
|
+
<summary><strong>Singleton Restore State before 1.7.0 (<= 1.6.0)</strong></summary>
|
|
395
|
+
|
|
396
|
+
```typescript
|
|
397
|
+
// Enable state restoration in BleNitro singleton
|
|
398
|
+
const ble = BleNitro.instance();
|
|
399
|
+
ble.onRestoreState((peripherals) => {
|
|
400
|
+
console.log('Restored peripherals:', peripherals);
|
|
401
|
+
});
|
|
402
|
+
```
|
|
403
|
+
</details>
|
|
404
|
+
|
|
389
405
|
### TypeScript Types
|
|
390
406
|
|
|
391
407
|
```typescript
|
|
@@ -33,7 +33,10 @@ import java.util.concurrent.ConcurrentHashMap
|
|
|
33
33
|
* This class provides the actual BLE functionality for Android devices
|
|
34
34
|
*/
|
|
35
35
|
class BleNitroBleManager : HybridNativeBleNitroSpec() {
|
|
36
|
-
|
|
36
|
+
|
|
37
|
+
// iOS-specific property (not used on Android)
|
|
38
|
+
override var restoreStateIdentifier: String? = null
|
|
39
|
+
|
|
37
40
|
private var bluetoothAdapter: BluetoothAdapter? = null
|
|
38
41
|
private var stateCallback: ((state: BLEState) -> Unit)? = null
|
|
39
42
|
private var bluetoothStateReceiver: BroadcastReceiver? = null
|
|
@@ -207,7 +210,8 @@ class BleNitroBleManager : HybridNativeBleNitroSpec() {
|
|
|
207
210
|
rssi = scanResult.rssi.toDouble(),
|
|
208
211
|
manufacturerData = manufacturerData,
|
|
209
212
|
serviceUUIDs = serviceUUIDs,
|
|
210
|
-
isConnectable = true // Assume scannable devices are connectable
|
|
213
|
+
isConnectable = true, // Assume scannable devices are connectable
|
|
214
|
+
isConnected = false // Scanned devices are not yet connected
|
|
211
215
|
)
|
|
212
216
|
}
|
|
213
217
|
|
|
@@ -491,7 +495,8 @@ class BleNitroBleManager : HybridNativeBleNitroSpec() {
|
|
|
491
495
|
rssi = 0.0, // RSSI not available for already connected devices
|
|
492
496
|
manufacturerData = ManufacturerData(companyIdentifiers = emptyArray()),
|
|
493
497
|
serviceUUIDs = emptyArray(), // Service UUIDs not available without service discovery
|
|
494
|
-
isConnectable = true
|
|
498
|
+
isConnectable = true,
|
|
499
|
+
isConnected = true
|
|
495
500
|
)
|
|
496
501
|
}.toTypedArray()
|
|
497
502
|
} catch (e: Exception) {
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
package com.margelo.nitro.co.zyke.ble
|
|
2
|
+
|
|
3
|
+
import com.margelo.nitro.core.*
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Android Factory implementation for BLE Nitro Manager
|
|
7
|
+
* Creates BleNitroBleManager instances
|
|
8
|
+
*
|
|
9
|
+
* Note: restoreStateIdentifier and restoreStateCallback are iOS-specific
|
|
10
|
+
* and ignored on Android
|
|
11
|
+
*/
|
|
12
|
+
class BleNitroBleManagerFactory : HybridNativeBleNitroFactorySpec() {
|
|
13
|
+
|
|
14
|
+
override fun create(
|
|
15
|
+
nativeRestoreStateIdentifier: String?,
|
|
16
|
+
restoreStateCallback: ((peripherals: Array<BLEDevice>) -> Unit)?
|
|
17
|
+
): HybridNativeBleNitroSpec {
|
|
18
|
+
// Ignore iOS-specific parameters on Android
|
|
19
|
+
return BleNitroBleManager()
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -5,13 +5,10 @@ import NitroModules
|
|
|
5
5
|
* iOS implementation of the BLE Nitro Manager
|
|
6
6
|
* Implements the HybridNativeBleNitroSpec protocol for Core Bluetooth operations
|
|
7
7
|
*/
|
|
8
|
-
public class BleNitroBleManager:
|
|
9
|
-
|
|
10
|
-
// MARK: - Constants
|
|
11
|
-
private static let restoreStateIdentifier = "react-native-ble-nitro"
|
|
12
|
-
|
|
8
|
+
public class BleNitroBleManager: HybridNativeBleNitroSpec {
|
|
9
|
+
|
|
13
10
|
// MARK: - Static Properties
|
|
14
|
-
|
|
11
|
+
internal static var globalRestoreStateCallback: (([BLEDevice]) -> Void)?
|
|
15
12
|
|
|
16
13
|
// MARK: - Private Properties
|
|
17
14
|
private var centralManager: CBCentralManager!
|
|
@@ -26,23 +23,30 @@ public class BleNitroBleManager: HybridNativeBleNitroSpec_base, HybridNativeBleN
|
|
|
26
23
|
private var centralManagerDelegate: BleCentralManagerDelegate!
|
|
27
24
|
|
|
28
25
|
// MARK: - Restore State Properties
|
|
29
|
-
|
|
26
|
+
internal var restoreStateCallback: (([BLEDevice]) -> Void)?
|
|
27
|
+
|
|
28
|
+
// MARK: - Public Properties (from spec)
|
|
29
|
+
public var restoreStateIdentifier: String? = nil
|
|
30
30
|
|
|
31
31
|
// MARK: - Initialization
|
|
32
|
-
public
|
|
32
|
+
public init(restoreStateIdentifier: String? = nil, restoreStateCallback: (([BLEDevice]) -> Void)? = nil) {
|
|
33
|
+
self.restoreStateIdentifier = restoreStateIdentifier
|
|
34
|
+
self.restoreStateCallback = restoreStateCallback
|
|
33
35
|
super.init()
|
|
34
36
|
setupCentralManager()
|
|
35
37
|
}
|
|
36
38
|
|
|
37
39
|
private func setupCentralManager() {
|
|
38
40
|
centralManagerDelegate = BleCentralManagerDelegate(manager: self)
|
|
39
|
-
|
|
40
|
-
// Create options dictionary for central manager with
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
41
|
+
|
|
42
|
+
// Create options dictionary for central manager with restore identifier if set
|
|
43
|
+
var options: [String: Any] = [:]
|
|
44
|
+
print("Restore Identifier: \(String(describing: restoreStateIdentifier))")
|
|
45
|
+
if let identifier = restoreStateIdentifier {
|
|
46
|
+
options[CBCentralManagerOptionRestoreIdentifierKey] = identifier
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
centralManager = CBCentralManager(delegate: centralManagerDelegate, queue: DispatchQueue.main, options: options.isEmpty ? nil : options)
|
|
46
50
|
}
|
|
47
51
|
|
|
48
52
|
|
|
@@ -72,11 +76,9 @@ public class BleNitroBleManager: HybridNativeBleNitroSpec_base, HybridNativeBleN
|
|
|
72
76
|
|
|
73
77
|
// MARK: - Restore State Management
|
|
74
78
|
public func setRestoreStateCallback(callback: @escaping ([BLEDevice]) -> Void) throws {
|
|
75
|
-
print("🔄 setRestoreStateCallback called")
|
|
76
79
|
// Set both static and instance variables
|
|
77
80
|
BleNitroBleManager.globalRestoreStateCallback = callback
|
|
78
81
|
self.restoreStateCallback = callback
|
|
79
|
-
print("🔄 Callback set successfully")
|
|
80
82
|
}
|
|
81
83
|
|
|
82
84
|
// MARK: - Scanning Operations
|
|
@@ -132,7 +134,8 @@ public class BleNitroBleManager: HybridNativeBleNitroSpec_base, HybridNativeBleN
|
|
|
132
134
|
rssi: 0, // RSSI not available for connected devices without explicit read
|
|
133
135
|
manufacturerData: ManufacturerData(companyIdentifiers: []), // Not available for connected devices
|
|
134
136
|
serviceUUIDs: peripheral.services?.map { $0.uuid.uuidString } ?? [],
|
|
135
|
-
isConnectable: true // Already connected, so it was connectable
|
|
137
|
+
isConnectable: true, // Already connected, so it was connectable
|
|
138
|
+
isConnected: true
|
|
136
139
|
)
|
|
137
140
|
connectedDevices.append(device)
|
|
138
141
|
}
|
|
@@ -152,7 +155,8 @@ public class BleNitroBleManager: HybridNativeBleNitroSpec_base, HybridNativeBleN
|
|
|
152
155
|
rssi: 0,
|
|
153
156
|
manufacturerData: ManufacturerData(companyIdentifiers: []),
|
|
154
157
|
serviceUUIDs: peripheral.services?.map { $0.uuid.uuidString } ?? [],
|
|
155
|
-
isConnectable: true
|
|
158
|
+
isConnectable: true,
|
|
159
|
+
isConnected: true
|
|
156
160
|
)
|
|
157
161
|
connectedDevices.append(device)
|
|
158
162
|
|
|
@@ -177,7 +181,8 @@ public class BleNitroBleManager: HybridNativeBleNitroSpec_base, HybridNativeBleN
|
|
|
177
181
|
rssi: 0,
|
|
178
182
|
manufacturerData: ManufacturerData(companyIdentifiers: []),
|
|
179
183
|
serviceUUIDs: peripheral.services?.map { $0.uuid.uuidString } ?? [],
|
|
180
|
-
isConnectable: true
|
|
184
|
+
isConnectable: true,
|
|
185
|
+
isConnected: true
|
|
181
186
|
)
|
|
182
187
|
connectedDevices.append(device)
|
|
183
188
|
|
|
@@ -507,7 +512,8 @@ public class BleNitroBleManager: HybridNativeBleNitroSpec_base, HybridNativeBleN
|
|
|
507
512
|
rssi: 0, // RSSI not available for restored peripherals
|
|
508
513
|
manufacturerData: ManufacturerData(companyIdentifiers: []),
|
|
509
514
|
serviceUUIDs: peripheral.services?.map { $0.uuid.uuidString } ?? [],
|
|
510
|
-
isConnectable: true
|
|
515
|
+
isConnectable: true,
|
|
516
|
+
isConnected: peripheral.state == .connected
|
|
511
517
|
)
|
|
512
518
|
restoredDevices.append(device)
|
|
513
519
|
|
|
@@ -634,7 +640,8 @@ public class BleNitroBleManager: HybridNativeBleNitroSpec_base, HybridNativeBleN
|
|
|
634
640
|
rssi: rssi,
|
|
635
641
|
manufacturerData: manufacturerData,
|
|
636
642
|
serviceUUIDs: serviceUUIDs,
|
|
637
|
-
isConnectable: isConnectable
|
|
643
|
+
isConnectable: isConnectable,
|
|
644
|
+
isConnected: peripheral.state == .connected
|
|
638
645
|
)
|
|
639
646
|
}
|
|
640
647
|
|
|
@@ -719,6 +726,12 @@ class BleCentralManagerDelegate: NSObject, CBCentralManagerDelegate {
|
|
|
719
726
|
}
|
|
720
727
|
|
|
721
728
|
func centralManager(_ central: CBCentralManager, willRestoreState dict: [String: Any]) {
|
|
722
|
-
|
|
729
|
+
// Only handle state restoration if restoreStateIdentifier is set and a callback is registered
|
|
730
|
+
guard let manager = manager,
|
|
731
|
+
manager.restoreStateIdentifier != nil,
|
|
732
|
+
(BleNitroBleManager.globalRestoreStateCallback != nil || manager.restoreStateCallback != nil) else {
|
|
733
|
+
return
|
|
734
|
+
}
|
|
735
|
+
manager.handleStateRestoration(dict)
|
|
723
736
|
}
|
|
724
737
|
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import Foundation
|
|
2
|
+
import NitroModules
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* iOS Factory implementation for BLE Nitro Manager
|
|
6
|
+
* Creates BleNitroBleManager instances with optional state restoration configuration
|
|
7
|
+
*/
|
|
8
|
+
public class BleNitroBleManagerFactory: HybridNativeBleNitroFactorySpec_base, HybridNativeBleNitroFactorySpec_protocol {
|
|
9
|
+
|
|
10
|
+
public func create(
|
|
11
|
+
nativeRestoreStateIdentifier: String?,
|
|
12
|
+
restoreStateCallback: (([BLEDevice]) -> Void)?
|
|
13
|
+
) throws -> any HybridNativeBleNitroSpec {
|
|
14
|
+
return BleNitroBleManager(
|
|
15
|
+
restoreStateIdentifier: nativeRestoreStateIdentifier,
|
|
16
|
+
restoreStateCallback: restoreStateCallback
|
|
17
|
+
)
|
|
18
|
+
}
|
|
19
|
+
}
|
package/lib/commonjs/index.d.ts
CHANGED
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
export {
|
|
3
|
-
export declare class BleNitro extends BleNitroManager {
|
|
4
|
-
static instance(): BleNitroManager;
|
|
5
|
-
}
|
|
1
|
+
export { type ByteArray, type ScanFilter, type BLEDevice, type ScanCallback, type ManufacturerDataEntry, type ManufacturerData, type ConnectionCallback, type DisconnectEventCallback, type OperationCallback, type CharacteristicUpdateCallback, type Subscription, type BleNitroManagerOptions, BLEState, AndroidScanMode, BleNitroManager, } from "./manager";
|
|
2
|
+
export { BleNitro } from './singleton';
|
|
6
3
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,EAC5B,KAAK,iBAAiB,EACtB,KAAK,4BAA4B,EACjC,KAAK,YAAY,EACjB,KAAK,sBAAsB,EAC3B,QAAQ,EACR,eAAe,EACf,eAAe,GAChB,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC"}
|
package/lib/commonjs/index.js
CHANGED
|
@@ -1,18 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.BleNitro = exports.AndroidScanMode = exports.BLEState = void 0;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
Object.defineProperty(exports, "
|
|
7
|
-
Object.defineProperty(exports, "
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
static instance() {
|
|
11
|
-
if (!_instance) {
|
|
12
|
-
_instance = new BleNitro();
|
|
13
|
-
}
|
|
14
|
-
return _instance;
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
exports.BleNitro = BleNitro;
|
|
3
|
+
exports.BleNitro = exports.BleNitroManager = exports.AndroidScanMode = exports.BLEState = void 0;
|
|
4
|
+
var manager_1 = require("./manager");
|
|
5
|
+
Object.defineProperty(exports, "BLEState", { enumerable: true, get: function () { return manager_1.BLEState; } });
|
|
6
|
+
Object.defineProperty(exports, "AndroidScanMode", { enumerable: true, get: function () { return manager_1.AndroidScanMode; } });
|
|
7
|
+
Object.defineProperty(exports, "BleNitroManager", { enumerable: true, get: function () { return manager_1.BleNitroManager; } });
|
|
8
|
+
var singleton_1 = require("./singleton");
|
|
9
|
+
Object.defineProperty(exports, "BleNitro", { enumerable: true, get: function () { return singleton_1.BleNitro; } });
|
|
18
10
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,qCAgBmB;AAHjB,mGAAA,QAAQ,OAAA;AACR,0GAAA,eAAe,OAAA;AACf,0GAAA,eAAe,OAAA;AAGjB,yCAAuC;AAA9B,qGAAA,QAAQ,OAAA"}
|
|
@@ -20,6 +20,7 @@ export interface BLEDevice {
|
|
|
20
20
|
manufacturerData: ManufacturerData;
|
|
21
21
|
serviceUUIDs: string[];
|
|
22
22
|
isConnectable: boolean;
|
|
23
|
+
isConnected: boolean;
|
|
23
24
|
}
|
|
24
25
|
export type ScanCallback = (device: BLEDevice) => void;
|
|
25
26
|
export type RestoreStateCallback = (connectedPeripherals: BLEDevice[]) => void;
|
|
@@ -45,6 +46,7 @@ export declare enum AndroidScanMode {
|
|
|
45
46
|
Opportunistic = "Opportunistic"
|
|
46
47
|
}
|
|
47
48
|
export type BleNitroManagerOptions = {
|
|
49
|
+
restoreIdentifier?: string;
|
|
48
50
|
onRestoredState?: RestoreStateCallback;
|
|
49
51
|
};
|
|
50
52
|
export declare function mapNativeBLEStateToBLEState(nativeState: NativeBLEState): BLEState;
|
|
@@ -57,8 +59,15 @@ export declare class BleNitroManager {
|
|
|
57
59
|
private _connectedDevices;
|
|
58
60
|
private _restoredStateCallback;
|
|
59
61
|
private _restoredState;
|
|
62
|
+
private _restoreStateIdentifier;
|
|
63
|
+
private Instance;
|
|
60
64
|
constructor(options?: BleNitroManagerOptions);
|
|
61
65
|
private onNativeRestoreStateCallback;
|
|
66
|
+
/**
|
|
67
|
+
*
|
|
68
|
+
* Registers callback and returns restored peripheral state in it. Not working from 1.7.x upwards for singleton implementation!
|
|
69
|
+
* @deprecated This method is deprecated and will be removed in 2.x, use onRestoredState option in BleNitroManageroptions instead!
|
|
70
|
+
*/
|
|
62
71
|
onRestoredState(callback: RestoreStateCallback): void;
|
|
63
72
|
/**
|
|
64
73
|
* Converts a 16- oder 32-Bit UUID to a 128-Bit UUID
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/manager.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,SAAS,IAAI,eAAe,EAC5B,QAAQ,IAAI,cAAc,EAE1B,eAAe,IAAI,qBAAqB,EACzC,MAAM,wBAAwB,CAAC;AAEhC,MAAM,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC;AAEjC,MAAM,WAAW,UAAU;IACzB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC;AAED,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,SAAS,CAAC;CACjB;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;
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/manager.ts"],"names":[],"mappings":"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"}
|
package/lib/commonjs/manager.js
CHANGED
|
@@ -9,8 +9,8 @@ exports.mapAndroidScanModeToNativeAndroidScanMode = mapAndroidScanModeToNativeAn
|
|
|
9
9
|
exports.convertNativeBleDeviceToBleDevice = convertNativeBleDeviceToBleDevice;
|
|
10
10
|
exports.arrayBufferToByteArray = arrayBufferToByteArray;
|
|
11
11
|
exports.byteArrayToArrayBuffer = byteArrayToArrayBuffer;
|
|
12
|
-
const
|
|
13
|
-
const
|
|
12
|
+
const NativeBleNitroFactory_1 = __importDefault(require("./specs/NativeBleNitroFactory"));
|
|
13
|
+
const NativeBleNitro_1 = require("./specs/NativeBleNitro");
|
|
14
14
|
var BLEState;
|
|
15
15
|
(function (BLEState) {
|
|
16
16
|
BLEState["Unknown"] = "Unknown";
|
|
@@ -41,10 +41,10 @@ function mapNativeBLEStateToBLEState(nativeState) {
|
|
|
41
41
|
}
|
|
42
42
|
function mapAndroidScanModeToNativeAndroidScanMode(scanMode) {
|
|
43
43
|
const map = {
|
|
44
|
-
LowLatency:
|
|
45
|
-
Balanced:
|
|
46
|
-
LowPower:
|
|
47
|
-
Opportunistic:
|
|
44
|
+
LowLatency: NativeBleNitro_1.AndroidScanMode.LowLatency,
|
|
45
|
+
Balanced: NativeBleNitro_1.AndroidScanMode.Balanced,
|
|
46
|
+
LowPower: NativeBleNitro_1.AndroidScanMode.LowPower,
|
|
47
|
+
Opportunistic: NativeBleNitro_1.AndroidScanMode.Opportunistic,
|
|
48
48
|
};
|
|
49
49
|
return map[scanMode];
|
|
50
50
|
}
|
|
@@ -68,15 +68,22 @@ function byteArrayToArrayBuffer(data) {
|
|
|
68
68
|
}
|
|
69
69
|
class BleNitroManager {
|
|
70
70
|
constructor(options) {
|
|
71
|
+
var _a, _b;
|
|
71
72
|
this._isScanning = false;
|
|
72
73
|
this._connectedDevices = {};
|
|
73
|
-
this._restoredStateCallback = null;
|
|
74
74
|
this._restoredState = null;
|
|
75
|
-
this.
|
|
76
|
-
|
|
75
|
+
this._restoreStateIdentifier = null;
|
|
76
|
+
this._restoredStateCallback = (_a = options === null || options === void 0 ? void 0 : options.onRestoredState) !== null && _a !== void 0 ? _a : null;
|
|
77
|
+
this._restoreStateIdentifier = (_b = options === null || options === void 0 ? void 0 : options.restoreIdentifier) !== null && _b !== void 0 ? _b : null;
|
|
78
|
+
this.Instance = NativeBleNitroFactory_1.default.create(options === null || options === void 0 ? void 0 : options.restoreIdentifier, (peripherals) => this.onNativeRestoreStateCallback(peripherals));
|
|
77
79
|
}
|
|
78
80
|
onNativeRestoreStateCallback(peripherals) {
|
|
81
|
+
if (!this._restoreStateIdentifier)
|
|
82
|
+
return;
|
|
79
83
|
const bleDevices = peripherals.map((peripheral) => convertNativeBleDeviceToBleDevice(peripheral));
|
|
84
|
+
bleDevices.forEach((device) => {
|
|
85
|
+
this._connectedDevices[device.id] = device.isConnected;
|
|
86
|
+
});
|
|
80
87
|
if (this._restoredStateCallback) {
|
|
81
88
|
this._restoredStateCallback(bleDevices);
|
|
82
89
|
}
|
|
@@ -84,7 +91,14 @@ class BleNitroManager {
|
|
|
84
91
|
this._restoredState = bleDevices;
|
|
85
92
|
}
|
|
86
93
|
}
|
|
94
|
+
/**
|
|
95
|
+
*
|
|
96
|
+
* Registers callback and returns restored peripheral state in it. Not working from 1.7.x upwards for singleton implementation!
|
|
97
|
+
* @deprecated This method is deprecated and will be removed in 2.x, use onRestoredState option in BleNitroManageroptions instead!
|
|
98
|
+
*/
|
|
87
99
|
onRestoredState(callback) {
|
|
100
|
+
if (!this._restoreStateIdentifier)
|
|
101
|
+
return;
|
|
88
102
|
if (this._restoredState) {
|
|
89
103
|
callback(this._restoredState);
|
|
90
104
|
this._restoredState = null;
|
|
@@ -142,7 +156,7 @@ class BleNitroManager {
|
|
|
142
156
|
callback(convertedDevice);
|
|
143
157
|
};
|
|
144
158
|
// Start scan
|
|
145
|
-
|
|
159
|
+
this.Instance.startScan(nativeFilter, scanCallback);
|
|
146
160
|
this._isScanning = true;
|
|
147
161
|
}
|
|
148
162
|
/**
|
|
@@ -153,7 +167,7 @@ class BleNitroManager {
|
|
|
153
167
|
if (!this._isScanning) {
|
|
154
168
|
return;
|
|
155
169
|
}
|
|
156
|
-
|
|
170
|
+
this.Instance.stopScan();
|
|
157
171
|
this._isScanning = false;
|
|
158
172
|
}
|
|
159
173
|
/**
|
|
@@ -161,7 +175,7 @@ class BleNitroManager {
|
|
|
161
175
|
* @returns Boolean indicating if currently scanning
|
|
162
176
|
*/
|
|
163
177
|
isScanning() {
|
|
164
|
-
this._isScanning =
|
|
178
|
+
this._isScanning = this.Instance.isScanning();
|
|
165
179
|
return this._isScanning;
|
|
166
180
|
}
|
|
167
181
|
/**
|
|
@@ -170,7 +184,7 @@ class BleNitroManager {
|
|
|
170
184
|
* @returns Array of connected devices
|
|
171
185
|
*/
|
|
172
186
|
getConnectedDevices(services) {
|
|
173
|
-
const devices =
|
|
187
|
+
const devices = this.Instance.getConnectedDevices(services || []);
|
|
174
188
|
// Normalize service UUIDs - manufacturer data already comes as ArrayBuffers
|
|
175
189
|
return devices.map(device => convertNativeBleDeviceToBleDevice(device));
|
|
176
190
|
}
|
|
@@ -187,7 +201,7 @@ class BleNitroManager {
|
|
|
187
201
|
resolve(deviceId);
|
|
188
202
|
return;
|
|
189
203
|
}
|
|
190
|
-
|
|
204
|
+
this.Instance.connect(deviceId, (success, connectedDeviceId, error) => {
|
|
191
205
|
if (success) {
|
|
192
206
|
this._connectedDevices[deviceId] = true;
|
|
193
207
|
resolve(connectedDeviceId);
|
|
@@ -247,7 +261,7 @@ class BleNitroManager {
|
|
|
247
261
|
resolve();
|
|
248
262
|
return;
|
|
249
263
|
}
|
|
250
|
-
|
|
264
|
+
this.Instance.disconnect(deviceId, (success, error) => {
|
|
251
265
|
if (success) {
|
|
252
266
|
delete this._connectedDevices[deviceId];
|
|
253
267
|
resolve();
|
|
@@ -264,7 +278,7 @@ class BleNitroManager {
|
|
|
264
278
|
* @returns Boolean indicating if device is connected
|
|
265
279
|
*/
|
|
266
280
|
isConnected(deviceId) {
|
|
267
|
-
return
|
|
281
|
+
return this.Instance.isConnected(deviceId);
|
|
268
282
|
}
|
|
269
283
|
/**
|
|
270
284
|
* Request a new MTU size
|
|
@@ -274,7 +288,7 @@ class BleNitroManager {
|
|
|
274
288
|
*/
|
|
275
289
|
requestMTU(deviceId, mtu) {
|
|
276
290
|
mtu = parseInt(mtu.toString(), 10);
|
|
277
|
-
const deviceMtu =
|
|
291
|
+
const deviceMtu = this.Instance.requestMTU(deviceId, mtu);
|
|
278
292
|
return deviceMtu;
|
|
279
293
|
}
|
|
280
294
|
/**
|
|
@@ -289,7 +303,7 @@ class BleNitroManager {
|
|
|
289
303
|
reject(new Error('Device not connected'));
|
|
290
304
|
return;
|
|
291
305
|
}
|
|
292
|
-
|
|
306
|
+
this.Instance.readRSSI(deviceId, (success, rssi, error) => {
|
|
293
307
|
if (success) {
|
|
294
308
|
resolve(rssi);
|
|
295
309
|
}
|
|
@@ -311,7 +325,7 @@ class BleNitroManager {
|
|
|
311
325
|
reject(new Error('Device not connected'));
|
|
312
326
|
return;
|
|
313
327
|
}
|
|
314
|
-
|
|
328
|
+
this.Instance.discoverServices(deviceId, (success, error) => {
|
|
315
329
|
if (success) {
|
|
316
330
|
resolve(true);
|
|
317
331
|
}
|
|
@@ -338,7 +352,7 @@ class BleNitroManager {
|
|
|
338
352
|
reject(new Error('Failed to discover services'));
|
|
339
353
|
return;
|
|
340
354
|
}
|
|
341
|
-
const services =
|
|
355
|
+
const services = this.Instance.getServices(deviceId);
|
|
342
356
|
resolve(BleNitroManager.normalizeGattUUIDs(services));
|
|
343
357
|
});
|
|
344
358
|
}
|
|
@@ -352,7 +366,7 @@ class BleNitroManager {
|
|
|
352
366
|
if (!this._connectedDevices[deviceId]) {
|
|
353
367
|
throw new Error('Device not connected');
|
|
354
368
|
}
|
|
355
|
-
const characteristics =
|
|
369
|
+
const characteristics = this.Instance.getCharacteristics(deviceId, BleNitroManager.normalizeGattUUID(serviceId));
|
|
356
370
|
return BleNitroManager.normalizeGattUUIDs(characteristics);
|
|
357
371
|
}
|
|
358
372
|
/**
|
|
@@ -386,7 +400,7 @@ class BleNitroManager {
|
|
|
386
400
|
reject(new Error('Device not connected'));
|
|
387
401
|
return;
|
|
388
402
|
}
|
|
389
|
-
|
|
403
|
+
this.Instance.readCharacteristic(deviceId, BleNitroManager.normalizeGattUUID(serviceId), BleNitroManager.normalizeGattUUID(characteristicId), (success, data, error) => {
|
|
390
404
|
if (success) {
|
|
391
405
|
resolve(arrayBufferToByteArray(data));
|
|
392
406
|
}
|
|
@@ -412,7 +426,7 @@ class BleNitroManager {
|
|
|
412
426
|
reject(new Error('Device not connected'));
|
|
413
427
|
return;
|
|
414
428
|
}
|
|
415
|
-
|
|
429
|
+
this.Instance.writeCharacteristic(deviceId, BleNitroManager.normalizeGattUUID(serviceId), BleNitroManager.normalizeGattUUID(characteristicId), byteArrayToArrayBuffer(data), withResponse, (success, responseData, error) => {
|
|
416
430
|
if (success) {
|
|
417
431
|
// Convert ArrayBuffer response to ByteArray
|
|
418
432
|
const responseByteArray = arrayBufferToByteArray(responseData);
|
|
@@ -438,7 +452,7 @@ class BleNitroManager {
|
|
|
438
452
|
throw new Error('Device not connected');
|
|
439
453
|
}
|
|
440
454
|
let _success = false;
|
|
441
|
-
|
|
455
|
+
this.Instance.subscribeToCharacteristic(deviceId, BleNitroManager.normalizeGattUUID(serviceId), BleNitroManager.normalizeGattUUID(characteristicId), (charId, data) => {
|
|
442
456
|
callback(charId, arrayBufferToByteArray(data));
|
|
443
457
|
}, (success, error) => {
|
|
444
458
|
_success = success;
|
|
@@ -469,7 +483,7 @@ class BleNitroManager {
|
|
|
469
483
|
reject(new Error('Device not connected'));
|
|
470
484
|
return;
|
|
471
485
|
}
|
|
472
|
-
|
|
486
|
+
this.Instance.unsubscribeFromCharacteristic(deviceId, BleNitroManager.normalizeGattUUID(serviceId), BleNitroManager.normalizeGattUUID(characteristicId), (success, error) => {
|
|
473
487
|
if (success) {
|
|
474
488
|
resolve();
|
|
475
489
|
}
|
|
@@ -492,7 +506,7 @@ class BleNitroManager {
|
|
|
492
506
|
*/
|
|
493
507
|
requestBluetoothEnable() {
|
|
494
508
|
return new Promise((resolve, reject) => {
|
|
495
|
-
|
|
509
|
+
this.Instance.requestBluetoothEnable((success, error) => {
|
|
496
510
|
if (success) {
|
|
497
511
|
resolve(true);
|
|
498
512
|
}
|
|
@@ -508,7 +522,7 @@ class BleNitroManager {
|
|
|
508
522
|
* @see BLEState
|
|
509
523
|
*/
|
|
510
524
|
state() {
|
|
511
|
-
return mapNativeBLEStateToBLEState(
|
|
525
|
+
return mapNativeBLEStateToBLEState(this.Instance.state());
|
|
512
526
|
}
|
|
513
527
|
/**
|
|
514
528
|
* Subscribe to Bluetooth state changes
|
|
@@ -522,12 +536,12 @@ class BleNitroManager {
|
|
|
522
536
|
const state = this.state();
|
|
523
537
|
callback(state);
|
|
524
538
|
}
|
|
525
|
-
|
|
539
|
+
this.Instance.subscribeToStateChange((nativeState) => {
|
|
526
540
|
callback(mapNativeBLEStateToBLEState(nativeState));
|
|
527
541
|
});
|
|
528
542
|
return {
|
|
529
543
|
remove: () => {
|
|
530
|
-
|
|
544
|
+
this.Instance.unsubscribeFromStateChange();
|
|
531
545
|
},
|
|
532
546
|
};
|
|
533
547
|
}
|
|
@@ -536,7 +550,7 @@ class BleNitroManager {
|
|
|
536
550
|
* @returns Promise resolving when settings are opened
|
|
537
551
|
*/
|
|
538
552
|
openSettings() {
|
|
539
|
-
return
|
|
553
|
+
return this.Instance.openSettings();
|
|
540
554
|
}
|
|
541
555
|
}
|
|
542
556
|
exports.BleNitroManager = BleNitroManager;
|