react-native-ble-nitro 1.0.0-beta.9 → 1.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.
- package/BleNitro.podspec +39 -0
- package/LICENSE +1 -1
- package/README.md +277 -77
- package/ios/BleNitroBleManager.swift +457 -455
- package/ios/BlePeripheralDelegate.swift +174 -0
- package/lib/commonjs/index.d.ts +176 -10
- package/lib/commonjs/index.d.ts.map +1 -1
- package/lib/commonjs/index.js +398 -38
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/specs/NativeBleNitro.d.ts +5 -0
- package/lib/commonjs/specs/NativeBleNitro.d.ts.map +1 -0
- package/lib/commonjs/{utils/index.js → specs/NativeBleNitro.js} +6 -3
- package/lib/commonjs/specs/NativeBleNitro.js.map +1 -0
- package/lib/commonjs/specs/NativeBleNitro.nitro.d.ts +72 -0
- package/lib/commonjs/specs/NativeBleNitro.nitro.d.ts.map +1 -0
- package/lib/commonjs/specs/NativeBleNitro.nitro.js +14 -0
- package/lib/commonjs/specs/NativeBleNitro.nitro.js.map +1 -0
- package/lib/index.d.ts +176 -10
- package/lib/index.js +393 -16
- package/lib/specs/NativeBleNitro.d.ts +4 -0
- package/lib/specs/NativeBleNitro.js +5 -0
- package/lib/specs/NativeBleNitro.nitro.d.ts +71 -0
- package/lib/specs/NativeBleNitro.nitro.js +10 -0
- package/nitro.json +1 -1
- package/nitrogen/generated/android/BleNitro+autolinking.cmake +2 -10
- package/nitrogen/generated/android/BleNitroOnLoad.cpp +19 -22
- package/nitrogen/generated/android/c++/JBLEDevice.hpp +95 -0
- package/nitrogen/generated/android/c++/{JState.hpp → JBLEState.hpp} +22 -22
- package/nitrogen/generated/android/c++/JFunc_void_BLEDevice.hpp +82 -0
- package/nitrogen/generated/android/c++/JFunc_void_BLEState.hpp +76 -0
- package/nitrogen/generated/android/c++/JFunc_void_bool_std__string.hpp +75 -0
- package/nitrogen/generated/android/c++/JFunc_void_bool_std__string_std__string.hpp +75 -0
- package/nitrogen/generated/android/c++/JFunc_void_bool_std__vector_double__std__string.hpp +86 -0
- package/nitrogen/generated/android/c++/JFunc_void_std__string_bool_std__string.hpp +75 -0
- package/nitrogen/generated/android/c++/JFunc_void_std__string_std__vector_double_.hpp +86 -0
- package/nitrogen/generated/android/c++/JHybridNativeBleNitroSpec.cpp +212 -0
- package/nitrogen/generated/android/c++/JHybridNativeBleNitroSpec.hpp +82 -0
- package/nitrogen/generated/android/c++/JManufacturerData.hpp +73 -0
- package/nitrogen/generated/android/c++/JManufacturerDataEntry.hpp +68 -0
- package/nitrogen/generated/android/c++/JOperationResult.hpp +58 -0
- package/nitrogen/generated/android/c++/JScanFilter.hpp +79 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/co/zyke/ble/BLEDevice.kt +44 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/co/zyke/ble/{LogLevel.kt → BLEState.kt} +9 -13
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/co/zyke/ble/{Func_void_State.kt → Func_void_BLEDevice.kt} +15 -14
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/co/zyke/ble/{Func_void.kt → Func_void_BLEState.kt} +15 -14
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/co/zyke/ble/{Func_void_std__optional_NativeBleError__std__optional_NativeDevice_.kt → Func_void_bool_std__string.kt} +15 -14
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/co/zyke/ble/{Func_void_std__optional_NativeBleError__std__optional_NativeCharacteristic_.kt → Func_void_bool_std__string_std__string.kt} +15 -14
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/co/zyke/ble/Func_void_bool_std__vector_double__std__string.kt +81 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/co/zyke/ble/Func_void_std__string_bool_std__string.kt +81 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/co/zyke/ble/Func_void_std__string_std__vector_double_.kt +81 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/co/zyke/ble/HybridNativeBleNitroSpec.kt +174 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/co/zyke/ble/{ServiceDataEntry.kt → ManufacturerData.kt} +7 -5
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/co/zyke/ble/{NativeService.kt → ManufacturerDataEntry.kt} +10 -7
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/co/zyke/ble/{ConnectionOptions.kt → OperationResult.kt} +10 -6
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/co/zyke/ble/{BleRestoredState.kt → ScanFilter.kt} +13 -4
- package/nitrogen/generated/ios/BleNitro-Swift-Cxx-Bridge.cpp +56 -188
- package/nitrogen/generated/ios/BleNitro-Swift-Cxx-Bridge.hpp +210 -881
- package/nitrogen/generated/ios/BleNitro-Swift-Cxx-Umbrella.hpp +23 -88
- package/nitrogen/generated/ios/BleNitroAutolinking.mm +3 -3
- package/nitrogen/generated/ios/BleNitroAutolinking.swift +4 -4
- package/nitrogen/generated/ios/c++/{HybridCharacteristicSpecSwift.cpp → HybridNativeBleNitroSpecSwift.cpp} +2 -2
- package/nitrogen/generated/ios/c++/HybridNativeBleNitroSpecSwift.hpp +220 -0
- package/nitrogen/generated/ios/swift/BLEDevice.swift +102 -0
- package/nitrogen/generated/ios/swift/{State.swift → BLEState.swift} +6 -6
- package/nitrogen/generated/ios/swift/Func_void.swift +1 -0
- package/nitrogen/generated/ios/swift/{Func_void_bool.swift → Func_void_BLEDevice.swift} +12 -11
- package/nitrogen/generated/ios/swift/{Func_void_LogLevel.swift → Func_void_BLEState.swift} +12 -11
- package/nitrogen/generated/ios/swift/{Func_void_NativeDescriptor.swift → Func_void_bool_std__string.swift} +12 -11
- package/nitrogen/generated/ios/swift/{Func_void_std__vector_NativeCharacteristic_.swift → Func_void_bool_std__string_std__string.swift} +12 -11
- package/nitrogen/generated/ios/swift/Func_void_bool_std__vector_double__std__string.swift +47 -0
- package/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift +1 -0
- package/nitrogen/generated/ios/swift/{Func_void_std__vector_NativeDevice_.swift → Func_void_std__string_bool_std__string.swift} +12 -11
- package/nitrogen/generated/ios/swift/{Func_void_std__optional_BleRestoredState_.swift → Func_void_std__string_std__vector_double_.swift} +12 -17
- package/nitrogen/generated/ios/swift/HybridNativeBleNitroSpec.swift +67 -0
- package/nitrogen/generated/ios/swift/HybridNativeBleNitroSpec_cxx.swift +433 -0
- package/nitrogen/generated/ios/swift/ManufacturerData.swift +47 -0
- package/nitrogen/generated/ios/swift/ManufacturerDataEntry.swift +58 -0
- package/nitrogen/generated/ios/swift/{BleManagerNitroOptions.swift → OperationResult.swift} +22 -11
- package/nitrogen/generated/ios/swift/ScanFilter.swift +69 -0
- package/nitrogen/generated/shared/c++/BLEDevice.hpp +90 -0
- package/nitrogen/generated/shared/c++/{State.hpp → BLEState.hpp} +13 -15
- package/nitrogen/generated/shared/c++/HybridNativeBleNitroSpec.cpp +39 -0
- package/nitrogen/generated/shared/c++/HybridNativeBleNitroSpec.hpp +95 -0
- package/nitrogen/generated/shared/c++/ManufacturerData.hpp +69 -0
- package/nitrogen/generated/shared/c++/{ServiceDataEntry.hpp → ManufacturerDataEntry.hpp} +19 -20
- package/nitrogen/generated/shared/c++/{BleManagerNitroOptions.hpp → OperationResult.hpp} +19 -17
- package/nitrogen/generated/shared/c++/ScanFilter.hpp +76 -0
- package/package.json +9 -11
- package/react-native.config.js +2 -7
- package/src/__tests__/index.test.ts +185 -0
- package/src/index.ts +548 -45
- package/src/specs/NativeBleNitro.nitro.ts +88 -0
- package/src/specs/NativeBleNitro.ts +8 -0
- package/android/build.gradle +0 -58
- package/android/src/main/AndroidManifest.xml +0 -23
- package/android/src/main/kotlin/com/margelo/nitro/co/zyke/ble/BleNitroBleManager.kt +0 -760
- package/ios/BleNitro.podspec +0 -44
- package/ios/BleNitroModule.swift +0 -24
- package/lib/BleManagerCompatFactory.d.ts +0 -55
- package/lib/BleManagerCompatFactory.js +0 -194
- package/lib/BleManagerFactory.d.ts +0 -30
- package/lib/BleManagerFactory.js +0 -73
- package/lib/commonjs/BleManagerCompatFactory.d.ts +0 -56
- package/lib/commonjs/BleManagerCompatFactory.d.ts.map +0 -1
- package/lib/commonjs/BleManagerCompatFactory.js +0 -201
- package/lib/commonjs/BleManagerCompatFactory.js.map +0 -1
- package/lib/commonjs/BleManagerFactory.d.ts +0 -31
- package/lib/commonjs/BleManagerFactory.d.ts.map +0 -1
- package/lib/commonjs/BleManagerFactory.js +0 -81
- package/lib/commonjs/BleManagerFactory.js.map +0 -1
- package/lib/commonjs/compatibility/constants.d.ts +0 -50
- package/lib/commonjs/compatibility/constants.d.ts.map +0 -1
- package/lib/commonjs/compatibility/constants.js +0 -58
- package/lib/commonjs/compatibility/constants.js.map +0 -1
- package/lib/commonjs/compatibility/deviceWrapper.d.ts +0 -100
- package/lib/commonjs/compatibility/deviceWrapper.d.ts.map +0 -1
- package/lib/commonjs/compatibility/deviceWrapper.js +0 -268
- package/lib/commonjs/compatibility/deviceWrapper.js.map +0 -1
- package/lib/commonjs/compatibility/enums.d.ts +0 -39
- package/lib/commonjs/compatibility/enums.d.ts.map +0 -1
- package/lib/commonjs/compatibility/enums.js +0 -179
- package/lib/commonjs/compatibility/enums.js.map +0 -1
- package/lib/commonjs/compatibility/index.d.ts +0 -13
- package/lib/commonjs/compatibility/index.d.ts.map +0 -1
- package/lib/commonjs/compatibility/index.js +0 -41
- package/lib/commonjs/compatibility/index.js.map +0 -1
- package/lib/commonjs/compatibility/serviceData.d.ts +0 -52
- package/lib/commonjs/compatibility/serviceData.d.ts.map +0 -1
- package/lib/commonjs/compatibility/serviceData.js +0 -80
- package/lib/commonjs/compatibility/serviceData.js.map +0 -1
- package/lib/commonjs/errors/BleError.d.ts +0 -60
- package/lib/commonjs/errors/BleError.d.ts.map +0 -1
- package/lib/commonjs/errors/BleError.js +0 -125
- package/lib/commonjs/errors/BleError.js.map +0 -1
- package/lib/commonjs/specs/BleManager.nitro.d.ts +0 -45
- package/lib/commonjs/specs/BleManager.nitro.d.ts.map +0 -1
- package/lib/commonjs/specs/BleManager.nitro.js +0 -3
- package/lib/commonjs/specs/BleManager.nitro.js.map +0 -1
- package/lib/commonjs/specs/Characteristic.nitro.d.ts +0 -27
- package/lib/commonjs/specs/Characteristic.nitro.d.ts.map +0 -1
- package/lib/commonjs/specs/Characteristic.nitro.js +0 -3
- package/lib/commonjs/specs/Characteristic.nitro.js.map +0 -1
- package/lib/commonjs/specs/Descriptor.nitro.d.ts +0 -18
- package/lib/commonjs/specs/Descriptor.nitro.d.ts.map +0 -1
- package/lib/commonjs/specs/Descriptor.nitro.js +0 -3
- package/lib/commonjs/specs/Descriptor.nitro.js.map +0 -1
- package/lib/commonjs/specs/Device.nitro.d.ts +0 -38
- package/lib/commonjs/specs/Device.nitro.d.ts.map +0 -1
- package/lib/commonjs/specs/Device.nitro.js +0 -3
- package/lib/commonjs/specs/Device.nitro.js.map +0 -1
- package/lib/commonjs/specs/Service.nitro.d.ts +0 -20
- package/lib/commonjs/specs/Service.nitro.d.ts.map +0 -1
- package/lib/commonjs/specs/Service.nitro.js +0 -3
- package/lib/commonjs/specs/Service.nitro.js.map +0 -1
- package/lib/commonjs/specs/types.d.ts +0 -229
- package/lib/commonjs/specs/types.d.ts.map +0 -1
- package/lib/commonjs/specs/types.js +0 -150
- package/lib/commonjs/specs/types.js.map +0 -1
- package/lib/commonjs/utils/base64.d.ts +0 -26
- package/lib/commonjs/utils/base64.d.ts.map +0 -1
- package/lib/commonjs/utils/base64.js +0 -88
- package/lib/commonjs/utils/base64.js.map +0 -1
- package/lib/commonjs/utils/index.d.ts +0 -3
- package/lib/commonjs/utils/index.d.ts.map +0 -1
- package/lib/commonjs/utils/index.js.map +0 -1
- package/lib/commonjs/utils/uuid.d.ts +0 -10
- package/lib/commonjs/utils/uuid.d.ts.map +0 -1
- package/lib/commonjs/utils/uuid.js +0 -41
- package/lib/commonjs/utils/uuid.js.map +0 -1
- package/lib/compatibility/constants.d.ts +0 -49
- package/lib/compatibility/constants.js +0 -50
- package/lib/compatibility/deviceWrapper.d.ts +0 -99
- package/lib/compatibility/deviceWrapper.js +0 -259
- package/lib/compatibility/enums.d.ts +0 -38
- package/lib/compatibility/enums.js +0 -159
- package/lib/compatibility/index.d.ts +0 -12
- package/lib/compatibility/index.js +0 -12
- package/lib/compatibility/serviceData.d.ts +0 -51
- package/lib/compatibility/serviceData.js +0 -70
- package/lib/errors/BleError.d.ts +0 -59
- package/lib/errors/BleError.js +0 -120
- package/lib/specs/BleManager.nitro.d.ts +0 -44
- package/lib/specs/BleManager.nitro.js +0 -1
- package/lib/specs/Characteristic.nitro.d.ts +0 -26
- package/lib/specs/Characteristic.nitro.js +0 -1
- package/lib/specs/Descriptor.nitro.d.ts +0 -17
- package/lib/specs/Descriptor.nitro.js +0 -1
- package/lib/specs/Device.nitro.d.ts +0 -37
- package/lib/specs/Device.nitro.js +0 -1
- package/lib/specs/Service.nitro.d.ts +0 -19
- package/lib/specs/Service.nitro.js +0 -1
- package/lib/specs/types.d.ts +0 -228
- package/lib/specs/types.js +0 -146
- package/lib/utils/base64.d.ts +0 -25
- package/lib/utils/base64.js +0 -80
- package/lib/utils/index.d.ts +0 -2
- package/lib/utils/index.js +0 -2
- package/lib/utils/uuid.d.ts +0 -9
- package/lib/utils/uuid.js +0 -37
- package/nitrogen/generated/android/c++/JBleATTErrorCode.hpp +0 -107
- package/nitrogen/generated/android/c++/JBleAndroidErrorCode.hpp +0 -101
- package/nitrogen/generated/android/c++/JBleErrorCode.hpp +0 -170
- package/nitrogen/generated/android/c++/JBleIOSErrorCode.hpp +0 -92
- package/nitrogen/generated/android/c++/JBleManagerNitroOptions.hpp +0 -54
- package/nitrogen/generated/android/c++/JBleRestoredState.hpp +0 -76
- package/nitrogen/generated/android/c++/JCharacteristicSubscriptionType.hpp +0 -59
- package/nitrogen/generated/android/c++/JConnectionOptions.hpp +0 -61
- package/nitrogen/generated/android/c++/JConnectionPriority.hpp +0 -62
- package/nitrogen/generated/android/c++/JFunc_void.hpp +0 -74
- package/nitrogen/generated/android/c++/JFunc_void_State.hpp +0 -76
- package/nitrogen/generated/android/c++/JFunc_void_std__optional_NativeBleError__std__optional_NativeCharacteristic_.hpp +0 -88
- package/nitrogen/generated/android/c++/JFunc_void_std__optional_NativeBleError__std__optional_NativeDevice_.hpp +0 -91
- package/nitrogen/generated/android/c++/JHybridBleManagerSpec.cpp +0 -653
- package/nitrogen/generated/android/c++/JHybridBleManagerSpec.hpp +0 -92
- package/nitrogen/generated/android/c++/JHybridCharacteristicSpec.cpp +0 -253
- package/nitrogen/generated/android/c++/JHybridCharacteristicSpec.hpp +0 -79
- package/nitrogen/generated/android/c++/JHybridDescriptorSpec.cpp +0 -115
- package/nitrogen/generated/android/c++/JHybridDescriptorSpec.hpp +0 -70
- package/nitrogen/generated/android/c++/JHybridDeviceSpec.cpp +0 -476
- package/nitrogen/generated/android/c++/JHybridDeviceSpec.hpp +0 -90
- package/nitrogen/generated/android/c++/JHybridServiceSpec.cpp +0 -232
- package/nitrogen/generated/android/c++/JHybridServiceSpec.hpp +0 -72
- package/nitrogen/generated/android/c++/JLogLevel.hpp +0 -71
- package/nitrogen/generated/android/c++/JNativeBleError.hpp +0 -98
- package/nitrogen/generated/android/c++/JNativeCharacteristic.hpp +0 -98
- package/nitrogen/generated/android/c++/JNativeDescriptor.hpp +0 -82
- package/nitrogen/generated/android/c++/JNativeDevice.hpp +0 -173
- package/nitrogen/generated/android/c++/JNativeService.hpp +0 -65
- package/nitrogen/generated/android/c++/JScanCallbackType.hpp +0 -62
- package/nitrogen/generated/android/c++/JScanMode.hpp +0 -65
- package/nitrogen/generated/android/c++/JScanOptions.hpp +0 -69
- package/nitrogen/generated/android/c++/JServiceDataEntry.hpp +0 -57
- package/nitrogen/generated/android/c++/JSubscription.hpp +0 -64
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/co/zyke/ble/BleATTErrorCode.kt +0 -41
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/co/zyke/ble/BleAndroidErrorCode.kt +0 -39
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/co/zyke/ble/BleErrorCode.kt +0 -62
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/co/zyke/ble/BleIOSErrorCode.kt +0 -36
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/co/zyke/ble/BleManagerNitroOptions.kt +0 -26
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/co/zyke/ble/CharacteristicSubscriptionType.kt +0 -25
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/co/zyke/ble/ConnectionPriority.kt +0 -26
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/co/zyke/ble/HybridBleManagerSpec.kt +0 -192
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/co/zyke/ble/HybridCharacteristicSpec.kt +0 -127
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/co/zyke/ble/HybridDescriptorSpec.kt +0 -86
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/co/zyke/ble/HybridDeviceSpec.kt +0 -176
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/co/zyke/ble/HybridServiceSpec.kt +0 -99
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/co/zyke/ble/NativeBleError.kt +0 -35
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/co/zyke/ble/NativeCharacteristic.kt +0 -37
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/co/zyke/ble/NativeDescriptor.kt +0 -33
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/co/zyke/ble/NativeDevice.kt +0 -38
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/co/zyke/ble/ScanCallbackType.kt +0 -26
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/co/zyke/ble/ScanMode.kt +0 -27
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/co/zyke/ble/ScanOptions.kt +0 -29
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/co/zyke/ble/State.kt +0 -29
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/co/zyke/ble/Subscription.kt +0 -30
- package/nitrogen/generated/ios/c++/HybridBleManagerSpecSwift.cpp +0 -11
- package/nitrogen/generated/ios/c++/HybridBleManagerSpecSwift.hpp +0 -377
- package/nitrogen/generated/ios/c++/HybridCharacteristicSpecSwift.hpp +0 -192
- package/nitrogen/generated/ios/c++/HybridDescriptorSpecSwift.cpp +0 -11
- package/nitrogen/generated/ios/c++/HybridDescriptorSpecSwift.hpp +0 -112
- package/nitrogen/generated/ios/c++/HybridDeviceSpecSwift.cpp +0 -11
- package/nitrogen/generated/ios/c++/HybridDeviceSpecSwift.hpp +0 -294
- package/nitrogen/generated/ios/c++/HybridServiceSpecSwift.cpp +0 -11
- package/nitrogen/generated/ios/c++/HybridServiceSpecSwift.hpp +0 -170
- package/nitrogen/generated/ios/swift/BleATTErrorCode.swift +0 -104
- package/nitrogen/generated/ios/swift/BleAndroidErrorCode.swift +0 -96
- package/nitrogen/generated/ios/swift/BleErrorCode.swift +0 -188
- package/nitrogen/generated/ios/swift/BleIOSErrorCode.swift +0 -84
- package/nitrogen/generated/ios/swift/BleRestoredState.swift +0 -47
- package/nitrogen/generated/ios/swift/CharacteristicSubscriptionType.swift +0 -40
- package/nitrogen/generated/ios/swift/ConnectionOptions.swift +0 -57
- package/nitrogen/generated/ios/swift/ConnectionPriority.swift +0 -44
- package/nitrogen/generated/ios/swift/Func_void_NativeCharacteristic.swift +0 -46
- package/nitrogen/generated/ios/swift/Func_void_NativeDevice.swift +0 -46
- package/nitrogen/generated/ios/swift/Func_void_State.swift +0 -46
- package/nitrogen/generated/ios/swift/Func_void_std__optional_NativeBleError__std__optional_NativeCharacteristic_.swift +0 -58
- package/nitrogen/generated/ios/swift/Func_void_std__optional_NativeBleError__std__optional_NativeDevice_.swift +0 -58
- package/nitrogen/generated/ios/swift/Func_void_std__shared_ptr_margelo__nitro__co__zyke__ble__HybridCharacteristicSpec_.swift +0 -50
- package/nitrogen/generated/ios/swift/Func_void_std__shared_ptr_margelo__nitro__co__zyke__ble__HybridDescriptorSpec_.swift +0 -50
- package/nitrogen/generated/ios/swift/Func_void_std__vector_NativeDescriptor_.swift +0 -46
- package/nitrogen/generated/ios/swift/Func_void_std__vector_NativeService_.swift +0 -46
- package/nitrogen/generated/ios/swift/HybridBleManagerSpec.swift +0 -78
- package/nitrogen/generated/ios/swift/HybridBleManagerSpec_cxx.swift +0 -852
- package/nitrogen/generated/ios/swift/HybridCharacteristicSpec.swift +0 -65
- package/nitrogen/generated/ios/swift/HybridCharacteristicSpec_cxx.swift +0 -384
- package/nitrogen/generated/ios/swift/HybridDescriptorSpec.swift +0 -56
- package/nitrogen/generated/ios/swift/HybridDescriptorSpec_cxx.swift +0 -218
- package/nitrogen/generated/ios/swift/HybridDeviceSpec.swift +0 -76
- package/nitrogen/generated/ios/swift/HybridDeviceSpec_cxx.swift +0 -702
- package/nitrogen/generated/ios/swift/HybridServiceSpec.swift +0 -58
- package/nitrogen/generated/ios/swift/HybridServiceSpec_cxx.swift +0 -338
- package/nitrogen/generated/ios/swift/LogLevel.swift +0 -56
- package/nitrogen/generated/ios/swift/NativeBleError.swift +0 -278
- package/nitrogen/generated/ios/swift/NativeCharacteristic.swift +0 -174
- package/nitrogen/generated/ios/swift/NativeDescriptor.swift +0 -130
- package/nitrogen/generated/ios/swift/NativeDevice.swift +0 -377
- package/nitrogen/generated/ios/swift/NativeService.swift +0 -68
- package/nitrogen/generated/ios/swift/ScanCallbackType.swift +0 -44
- package/nitrogen/generated/ios/swift/ScanMode.swift +0 -48
- package/nitrogen/generated/ios/swift/ScanOptions.swift +0 -116
- package/nitrogen/generated/ios/swift/ServiceDataEntry.swift +0 -46
- package/nitrogen/generated/ios/swift/Subscription.swift +0 -46
- package/nitrogen/generated/shared/c++/BleATTErrorCode.hpp +0 -80
- package/nitrogen/generated/shared/c++/BleAndroidErrorCode.hpp +0 -78
- package/nitrogen/generated/shared/c++/BleErrorCode.hpp +0 -101
- package/nitrogen/generated/shared/c++/BleIOSErrorCode.hpp +0 -75
- package/nitrogen/generated/shared/c++/BleRestoredState.hpp +0 -71
- package/nitrogen/generated/shared/c++/CharacteristicSubscriptionType.hpp +0 -64
- package/nitrogen/generated/shared/c++/ConnectionOptions.hpp +0 -77
- package/nitrogen/generated/shared/c++/ConnectionPriority.hpp +0 -65
- package/nitrogen/generated/shared/c++/HybridBleManagerSpec.cpp +0 -51
- package/nitrogen/generated/shared/c++/HybridBleManagerSpec.hpp +0 -137
- package/nitrogen/generated/shared/c++/HybridCharacteristicSpec.cpp +0 -39
- package/nitrogen/generated/shared/c++/HybridCharacteristicSpec.hpp +0 -101
- package/nitrogen/generated/shared/c++/HybridDescriptorSpec.cpp +0 -30
- package/nitrogen/generated/shared/c++/HybridDescriptorSpec.hpp +0 -75
- package/nitrogen/generated/shared/c++/HybridDeviceSpec.cpp +0 -50
- package/nitrogen/generated/shared/c++/HybridDeviceSpec.hpp +0 -123
- package/nitrogen/generated/shared/c++/HybridServiceSpec.cpp +0 -32
- package/nitrogen/generated/shared/c++/HybridServiceSpec.hpp +0 -90
- package/nitrogen/generated/shared/c++/LogLevel.hpp +0 -68
- package/nitrogen/generated/shared/c++/NativeBleError.hpp +0 -117
- package/nitrogen/generated/shared/c++/NativeCharacteristic.hpp +0 -114
- package/nitrogen/generated/shared/c++/NativeDescriptor.hpp +0 -98
- package/nitrogen/generated/shared/c++/NativeDevice.hpp +0 -121
- package/nitrogen/generated/shared/c++/NativeService.hpp +0 -81
- package/nitrogen/generated/shared/c++/ScanCallbackType.hpp +0 -65
- package/nitrogen/generated/shared/c++/ScanMode.hpp +0 -66
- package/nitrogen/generated/shared/c++/ScanOptions.hpp +0 -86
- package/nitrogen/generated/shared/c++/Subscription.hpp +0 -69
- package/src/BleManagerCompatFactory.ts +0 -371
- package/src/BleManagerFactory.ts +0 -93
- package/src/__tests__/BleManager.test.ts +0 -327
- package/src/__tests__/compatibility/deviceWrapper.test.ts +0 -563
- package/src/__tests__/compatibility/enums.test.ts +0 -264
- package/src/compatibility/constants.ts +0 -71
- package/src/compatibility/deviceWrapper.ts +0 -427
- package/src/compatibility/enums.ts +0 -190
- package/src/compatibility/index.ts +0 -32
- package/src/compatibility/serviceData.ts +0 -85
- package/src/errors/BleError.ts +0 -193
- package/src/specs/BleManager.nitro.ts +0 -165
- package/src/specs/Characteristic.nitro.ts +0 -61
- package/src/specs/Descriptor.nitro.ts +0 -28
- package/src/specs/Device.nitro.ts +0 -104
- package/src/specs/Service.nitro.ts +0 -64
- package/src/specs/types.ts +0 -259
- package/src/utils/base64.ts +0 -80
- package/src/utils/index.ts +0 -2
- package/src/utils/uuid.ts +0 -45
package/src/index.ts
CHANGED
|
@@ -1,45 +1,548 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
export
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
export
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
export
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
1
|
+
import BleNitroNative from './specs/NativeBleNitro';
|
|
2
|
+
import {
|
|
3
|
+
ScanFilter as NativeScanFilter,
|
|
4
|
+
BLEDevice as NativeBLEDevice,
|
|
5
|
+
BLEState as NativeBLEState,
|
|
6
|
+
} from './specs/NativeBleNitro';
|
|
7
|
+
|
|
8
|
+
export interface ScanFilter {
|
|
9
|
+
serviceUUIDs?: string[];
|
|
10
|
+
rssiThreshold?: number;
|
|
11
|
+
allowDuplicates?: boolean;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export interface ManufacturerDataEntry {
|
|
15
|
+
id: string;
|
|
16
|
+
data: number[];
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export interface ManufacturerData {
|
|
20
|
+
companyIdentifiers: ManufacturerDataEntry[];
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export interface BLEDevice {
|
|
24
|
+
id: string;
|
|
25
|
+
name: string;
|
|
26
|
+
rssi: number;
|
|
27
|
+
manufacturerData: ManufacturerData;
|
|
28
|
+
serviceUUIDs: string[];
|
|
29
|
+
isConnectable: boolean;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export type ScanCallback = (device: BLEDevice) => void;
|
|
33
|
+
export type ConnectionCallback = (
|
|
34
|
+
success: boolean,
|
|
35
|
+
deviceId: string,
|
|
36
|
+
error: string
|
|
37
|
+
) => void;
|
|
38
|
+
export type DisconnectEventCallback = (
|
|
39
|
+
deviceId: string,
|
|
40
|
+
interrupted: boolean,
|
|
41
|
+
error: string
|
|
42
|
+
) => void;
|
|
43
|
+
export type OperationCallback = (success: boolean, error: string) => void;
|
|
44
|
+
export type CharacteristicUpdateCallback = (
|
|
45
|
+
characteristicId: string,
|
|
46
|
+
data: number[]
|
|
47
|
+
) => void;
|
|
48
|
+
|
|
49
|
+
export type Subscription = {
|
|
50
|
+
remove: () => void;
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
export enum BLEState {
|
|
54
|
+
Unknown = 'Unknown',
|
|
55
|
+
Resetting = 'Resetting',
|
|
56
|
+
Unsupported = 'Unsupported',
|
|
57
|
+
Unauthorized = 'Unauthorized',
|
|
58
|
+
PoweredOff = 'PoweredOff',
|
|
59
|
+
PoweredOn = 'PoweredOn',
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
function mapNativeBLEStateToBLEState(nativeState: NativeBLEState): BLEState {
|
|
63
|
+
const map = {
|
|
64
|
+
0: BLEState.Unknown,
|
|
65
|
+
1: BLEState.Resetting,
|
|
66
|
+
2: BLEState.Unsupported,
|
|
67
|
+
3: BLEState.Unauthorized,
|
|
68
|
+
4: BLEState.PoweredOff,
|
|
69
|
+
5: BLEState.PoweredOn,
|
|
70
|
+
};
|
|
71
|
+
return map[nativeState];
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
let _instance: BleNitro;
|
|
75
|
+
|
|
76
|
+
export class BleNitro {
|
|
77
|
+
private _isScanning: boolean = false;
|
|
78
|
+
private _connectedDevices: { [deviceId: string]: boolean } = {};
|
|
79
|
+
|
|
80
|
+
public static instance(): BleNitro {
|
|
81
|
+
if (!_instance) {
|
|
82
|
+
_instance = new BleNitro();
|
|
83
|
+
}
|
|
84
|
+
return _instance;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Converts a 16- oder 32-Bit UUID to a 128-Bit UUID
|
|
89
|
+
*
|
|
90
|
+
* @param uuid 16-, 32- or 128-Bit UUID as string
|
|
91
|
+
* @returns Full 128-Bit UUID
|
|
92
|
+
*/
|
|
93
|
+
public static normalizeGattUUID(uuid: string): string {
|
|
94
|
+
const cleanUuid = uuid.toLowerCase();
|
|
95
|
+
|
|
96
|
+
// 128-Bit UUID → normalisieren
|
|
97
|
+
if (cleanUuid.length === 36 && cleanUuid.includes("-")) {
|
|
98
|
+
return cleanUuid;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
// GATT-Service UUIDs
|
|
102
|
+
// 16- oder 32-Bit UUID → 128-Bit UUID
|
|
103
|
+
const padded = cleanUuid.padStart(8, "0");
|
|
104
|
+
return `${padded}-0000-1000-8000-00805f9b34fb`;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
public static normalizeGattUUIDs(uuids: string[]): string[] {
|
|
108
|
+
return uuids.map((uuid) => BleNitro.normalizeGattUUID(uuid));
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* Start scanning for Bluetooth devices
|
|
113
|
+
* @param filter Optional scan filter
|
|
114
|
+
* @param callback Callback function called when a device is found
|
|
115
|
+
* @returns Promise resolving to success state
|
|
116
|
+
*/
|
|
117
|
+
public startScan(
|
|
118
|
+
filter: ScanFilter = {},
|
|
119
|
+
callback: ScanCallback
|
|
120
|
+
): void {
|
|
121
|
+
if (this._isScanning) {
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
// Create native scan filter with defaults
|
|
126
|
+
const nativeFilter: NativeScanFilter = {
|
|
127
|
+
serviceUUIDs: filter.serviceUUIDs || [],
|
|
128
|
+
rssiThreshold: filter.rssiThreshold ?? -100,
|
|
129
|
+
allowDuplicates: filter.allowDuplicates ?? false,
|
|
130
|
+
};
|
|
131
|
+
|
|
132
|
+
// Create callback wrapper
|
|
133
|
+
const scanCallback = (device: NativeBLEDevice) => {
|
|
134
|
+
device.serviceUUIDs = BleNitro.normalizeGattUUIDs(device.serviceUUIDs);
|
|
135
|
+
callback(device);
|
|
136
|
+
};
|
|
137
|
+
|
|
138
|
+
// Start scan
|
|
139
|
+
BleNitroNative.startScan(nativeFilter, scanCallback);
|
|
140
|
+
this._isScanning = true;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* Stop scanning for Bluetooth devices
|
|
145
|
+
* @returns Promise resolving to success state
|
|
146
|
+
*/
|
|
147
|
+
public stopScan(): void {
|
|
148
|
+
if (!this._isScanning) {
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
BleNitroNative.stopScan();
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* Check if currently scanning for devices
|
|
157
|
+
* @returns Promise resolving to scanning state
|
|
158
|
+
*/
|
|
159
|
+
public isScanning(): boolean {
|
|
160
|
+
this._isScanning = BleNitroNative.isScanning();
|
|
161
|
+
return this._isScanning;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
/**
|
|
165
|
+
* Get all currently connected devices
|
|
166
|
+
* @param services Optional list of service UUIDs to filter by
|
|
167
|
+
* @returns Array of connected devices
|
|
168
|
+
*/
|
|
169
|
+
public getConnectedDevices(services?: string[]): BLEDevice[] {
|
|
170
|
+
const devices = BleNitroNative.getConnectedDevices(services || []);
|
|
171
|
+
// Normalize service UUIDs for connected devices
|
|
172
|
+
return devices.map(device => ({
|
|
173
|
+
...device,
|
|
174
|
+
serviceUUIDs: BleNitro.normalizeGattUUIDs(device.serviceUUIDs)
|
|
175
|
+
}));
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
/**
|
|
179
|
+
* Connect to a Bluetooth device
|
|
180
|
+
* @param deviceId ID of the device to connect to
|
|
181
|
+
* @param onDisconnect Optional callback for disconnect events
|
|
182
|
+
* @returns Promise resolving when connected
|
|
183
|
+
*/
|
|
184
|
+
public connect(
|
|
185
|
+
deviceId: string,
|
|
186
|
+
onDisconnect?: DisconnectEventCallback
|
|
187
|
+
): Promise<string> {
|
|
188
|
+
return new Promise((resolve, reject) => {
|
|
189
|
+
// Check if already connected
|
|
190
|
+
if (this._connectedDevices[deviceId]) {
|
|
191
|
+
resolve(deviceId);
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
BleNitroNative.connect(
|
|
196
|
+
deviceId,
|
|
197
|
+
(success: boolean, connectedDeviceId: string, error: string) => {
|
|
198
|
+
if (success) {
|
|
199
|
+
this._connectedDevices[deviceId] = true;
|
|
200
|
+
resolve(connectedDeviceId);
|
|
201
|
+
} else {
|
|
202
|
+
reject(new Error(error));
|
|
203
|
+
}
|
|
204
|
+
},
|
|
205
|
+
onDisconnect ? (deviceId: string, interrupted: boolean, error: string) => {
|
|
206
|
+
// Remove from connected devices when disconnected
|
|
207
|
+
delete this._connectedDevices[deviceId];
|
|
208
|
+
onDisconnect(deviceId, interrupted, error);
|
|
209
|
+
} : undefined
|
|
210
|
+
);
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
/**
|
|
215
|
+
* Disconnect from a Bluetooth device
|
|
216
|
+
* @param deviceId ID of the device to disconnect from
|
|
217
|
+
* @returns Promise resolving when disconnected
|
|
218
|
+
*/
|
|
219
|
+
public disconnect(deviceId: string): Promise<void> {
|
|
220
|
+
return new Promise((resolve, reject) => {
|
|
221
|
+
// Check if already disconnected
|
|
222
|
+
if (!this._connectedDevices[deviceId]) {
|
|
223
|
+
resolve();
|
|
224
|
+
return;
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
BleNitroNative.disconnect(
|
|
228
|
+
deviceId,
|
|
229
|
+
(success: boolean, error: string) => {
|
|
230
|
+
if (success) {
|
|
231
|
+
delete this._connectedDevices[deviceId];
|
|
232
|
+
resolve();
|
|
233
|
+
} else {
|
|
234
|
+
reject(new Error(error));
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
);
|
|
238
|
+
});
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
/**
|
|
242
|
+
* Check if connected to a device
|
|
243
|
+
* @param deviceId ID of the device to check
|
|
244
|
+
* @returns Promise resolving to connection state
|
|
245
|
+
*/
|
|
246
|
+
public isConnected(deviceId: string): boolean {
|
|
247
|
+
return BleNitroNative.isConnected(deviceId);
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
/**
|
|
251
|
+
* Discover services for a connected device
|
|
252
|
+
* @param deviceId ID of the device
|
|
253
|
+
* @returns Promise resolving when services are discovered
|
|
254
|
+
*/
|
|
255
|
+
public discoverServices(deviceId: string): Promise<boolean> {
|
|
256
|
+
return new Promise((resolve, reject) => {
|
|
257
|
+
// Check if connected first
|
|
258
|
+
if (!this._connectedDevices[deviceId]) {
|
|
259
|
+
reject(new Error('Device not connected'));
|
|
260
|
+
return;
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
BleNitroNative.discoverServices(
|
|
264
|
+
deviceId,
|
|
265
|
+
(success: boolean, error: string) => {
|
|
266
|
+
if (success) {
|
|
267
|
+
resolve(true);
|
|
268
|
+
} else {
|
|
269
|
+
reject(new Error(error));
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
);
|
|
273
|
+
});
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
/**
|
|
277
|
+
* Get services for a connected device
|
|
278
|
+
* @param deviceId ID of the device
|
|
279
|
+
* @returns Promise resolving to array of service UUIDs
|
|
280
|
+
*/
|
|
281
|
+
public getServices(deviceId: string): Promise<string[]> {
|
|
282
|
+
return new Promise(async (resolve, reject) => {
|
|
283
|
+
// Check if connected first
|
|
284
|
+
if (!this._connectedDevices[deviceId]) {
|
|
285
|
+
reject(new Error('Device not connected'));
|
|
286
|
+
return;
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
const success = await this.discoverServices(deviceId);
|
|
290
|
+
if (!success) {
|
|
291
|
+
reject(new Error('Failed to discover services'));
|
|
292
|
+
return;
|
|
293
|
+
}
|
|
294
|
+
const services = BleNitroNative.getServices(deviceId);
|
|
295
|
+
resolve(BleNitro.normalizeGattUUIDs(services));
|
|
296
|
+
});
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
/**
|
|
300
|
+
* Get characteristics for a service
|
|
301
|
+
* @param deviceId ID of the device
|
|
302
|
+
* @param serviceId ID of the service
|
|
303
|
+
* @returns Promise resolving to array of characteristic UUIDs
|
|
304
|
+
*/
|
|
305
|
+
public getCharacteristics(
|
|
306
|
+
deviceId: string,
|
|
307
|
+
serviceId: string
|
|
308
|
+
): string[] {
|
|
309
|
+
if (!this._connectedDevices[deviceId]) {
|
|
310
|
+
throw new Error('Device not connected');
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
const characteristics = BleNitroNative.getCharacteristics(
|
|
314
|
+
deviceId,
|
|
315
|
+
BleNitro.normalizeGattUUID(serviceId),
|
|
316
|
+
);
|
|
317
|
+
return BleNitro.normalizeGattUUIDs(characteristics);
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
/**
|
|
321
|
+
* Read a characteristic value
|
|
322
|
+
* @param deviceId ID of the device
|
|
323
|
+
* @param serviceId ID of the service
|
|
324
|
+
* @param characteristicId ID of the characteristic
|
|
325
|
+
* @returns Promise resolving to the characteristic data as byte array
|
|
326
|
+
*/
|
|
327
|
+
public readCharacteristic(
|
|
328
|
+
deviceId: string,
|
|
329
|
+
serviceId: string,
|
|
330
|
+
characteristicId: string
|
|
331
|
+
): Promise<number[]> {
|
|
332
|
+
return new Promise((resolve, reject) => {
|
|
333
|
+
// Check if connected first
|
|
334
|
+
if (!this._connectedDevices[deviceId]) {
|
|
335
|
+
reject(new Error('Device not connected'));
|
|
336
|
+
return;
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
BleNitroNative.readCharacteristic(
|
|
340
|
+
deviceId,
|
|
341
|
+
BleNitro.normalizeGattUUID(serviceId),
|
|
342
|
+
BleNitro.normalizeGattUUID(characteristicId),
|
|
343
|
+
(success: boolean, data: number[], error: string) => {
|
|
344
|
+
if (success) {
|
|
345
|
+
resolve(data);
|
|
346
|
+
} else {
|
|
347
|
+
reject(new Error(error));
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
);
|
|
351
|
+
});
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
/**
|
|
355
|
+
* Write a value to a characteristic
|
|
356
|
+
* @param deviceId ID of the device
|
|
357
|
+
* @param serviceId ID of the service
|
|
358
|
+
* @param characteristicId ID of the characteristic
|
|
359
|
+
* @param data Data to write as an array of bytes
|
|
360
|
+
* @param withResponse Whether to wait for response
|
|
361
|
+
* @returns Promise resolving when write is complete
|
|
362
|
+
*/
|
|
363
|
+
public writeCharacteristic(
|
|
364
|
+
deviceId: string,
|
|
365
|
+
serviceId: string,
|
|
366
|
+
characteristicId: string,
|
|
367
|
+
data: number[],
|
|
368
|
+
withResponse: boolean = true
|
|
369
|
+
): Promise<boolean> {
|
|
370
|
+
return new Promise((resolve, reject) => {
|
|
371
|
+
// Check if connected first
|
|
372
|
+
if (!this._connectedDevices[deviceId]) {
|
|
373
|
+
reject(new Error('Device not connected'));
|
|
374
|
+
return;
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
BleNitroNative.writeCharacteristic(
|
|
378
|
+
deviceId,
|
|
379
|
+
BleNitro.normalizeGattUUID(serviceId),
|
|
380
|
+
BleNitro.normalizeGattUUID(characteristicId),
|
|
381
|
+
data,
|
|
382
|
+
withResponse,
|
|
383
|
+
(success: boolean, error: string) => {
|
|
384
|
+
if (success) {
|
|
385
|
+
resolve(true);
|
|
386
|
+
} else {
|
|
387
|
+
reject(new Error(error));
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
);
|
|
391
|
+
});
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
/**
|
|
395
|
+
* Subscribe to characteristic notifications
|
|
396
|
+
* @param deviceId ID of the device
|
|
397
|
+
* @param serviceId ID of the service
|
|
398
|
+
* @param characteristicId ID of the characteristic
|
|
399
|
+
* @param callback Callback function called when notification is received
|
|
400
|
+
* @returns Promise resolving when subscription is complete
|
|
401
|
+
*/
|
|
402
|
+
public subscribeToCharacteristic(
|
|
403
|
+
deviceId: string,
|
|
404
|
+
serviceId: string,
|
|
405
|
+
characteristicId: string,
|
|
406
|
+
callback: CharacteristicUpdateCallback
|
|
407
|
+
): Subscription {
|
|
408
|
+
// Check if connected first
|
|
409
|
+
if (!this._connectedDevices[deviceId]) {
|
|
410
|
+
throw new Error('Device not connected');
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
let _success = false;
|
|
414
|
+
|
|
415
|
+
BleNitroNative.subscribeToCharacteristic(
|
|
416
|
+
deviceId,
|
|
417
|
+
BleNitro.normalizeGattUUID(serviceId),
|
|
418
|
+
BleNitro.normalizeGattUUID(characteristicId),
|
|
419
|
+
(charId: string, data: number[]) => {
|
|
420
|
+
callback(charId, data);
|
|
421
|
+
},
|
|
422
|
+
(success, error) => {
|
|
423
|
+
_success = success;
|
|
424
|
+
if (!success) {
|
|
425
|
+
throw new Error(error);
|
|
426
|
+
}
|
|
427
|
+
}
|
|
428
|
+
);
|
|
429
|
+
|
|
430
|
+
return {
|
|
431
|
+
remove: () => {
|
|
432
|
+
if (!_success) {
|
|
433
|
+
return;
|
|
434
|
+
}
|
|
435
|
+
this.unsubscribeFromCharacteristic(
|
|
436
|
+
deviceId,
|
|
437
|
+
serviceId,
|
|
438
|
+
characteristicId
|
|
439
|
+
).catch(() => {});
|
|
440
|
+
}
|
|
441
|
+
};
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
/**
|
|
445
|
+
* Unsubscribe from characteristic notifications
|
|
446
|
+
* @param deviceId ID of the device
|
|
447
|
+
* @param serviceId ID of the service
|
|
448
|
+
* @param characteristicId ID of the characteristic
|
|
449
|
+
* @returns Promise resolving when unsubscription is complete
|
|
450
|
+
*/
|
|
451
|
+
public unsubscribeFromCharacteristic(
|
|
452
|
+
deviceId: string,
|
|
453
|
+
serviceId: string,
|
|
454
|
+
characteristicId: string
|
|
455
|
+
): Promise<void> {
|
|
456
|
+
return new Promise((resolve, reject) => {
|
|
457
|
+
// Check if connected first
|
|
458
|
+
if (!this._connectedDevices[deviceId]) {
|
|
459
|
+
reject(new Error('Device not connected'));
|
|
460
|
+
return;
|
|
461
|
+
}
|
|
462
|
+
|
|
463
|
+
BleNitroNative.unsubscribeFromCharacteristic(
|
|
464
|
+
deviceId,
|
|
465
|
+
BleNitro.normalizeGattUUID(serviceId),
|
|
466
|
+
BleNitro.normalizeGattUUID(characteristicId),
|
|
467
|
+
(success: boolean, error: string) => {
|
|
468
|
+
if (success) {
|
|
469
|
+
resolve();
|
|
470
|
+
} else {
|
|
471
|
+
reject(new Error(error));
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
);
|
|
475
|
+
});
|
|
476
|
+
}
|
|
477
|
+
|
|
478
|
+
/**
|
|
479
|
+
* Check if Bluetooth is enabled
|
|
480
|
+
* @returns Promise resolving to Bluetooth state
|
|
481
|
+
*/
|
|
482
|
+
public isBluetoothEnabled(): boolean {
|
|
483
|
+
return this.state() === BLEState.PoweredOn;
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
/**
|
|
487
|
+
* Request to enable Bluetooth
|
|
488
|
+
* Only works on Android
|
|
489
|
+
* @returns Promise resolving when Bluetooth is enabled
|
|
490
|
+
*/
|
|
491
|
+
public requestBluetoothEnable(): Promise<boolean> {
|
|
492
|
+
return new Promise((resolve, reject) => {
|
|
493
|
+
BleNitroNative.requestBluetoothEnable(
|
|
494
|
+
(success: boolean, error: string) => {
|
|
495
|
+
if (success) {
|
|
496
|
+
resolve(true);
|
|
497
|
+
} else {
|
|
498
|
+
reject(new Error(error));
|
|
499
|
+
}
|
|
500
|
+
}
|
|
501
|
+
);
|
|
502
|
+
});
|
|
503
|
+
}
|
|
504
|
+
|
|
505
|
+
/**
|
|
506
|
+
* Get the current Bluetooth state
|
|
507
|
+
* @returns Promise resolving to Bluetooth state
|
|
508
|
+
* @see BLEState
|
|
509
|
+
*/
|
|
510
|
+
public state(): BLEState {
|
|
511
|
+
return mapNativeBLEStateToBLEState(BleNitroNative.state());
|
|
512
|
+
}
|
|
513
|
+
|
|
514
|
+
/**
|
|
515
|
+
* Subscribe to Bluetooth state changes
|
|
516
|
+
* @param callback Callback function called when state changes
|
|
517
|
+
* @param emitInitial Whether to emit initial state callback
|
|
518
|
+
* @returns Promise resolving when subscription is complete
|
|
519
|
+
* @see BLEState
|
|
520
|
+
*/
|
|
521
|
+
public subscribeToStateChange(callback: (state: BLEState) => void, emitInitial = false): Subscription {
|
|
522
|
+
if (emitInitial) {
|
|
523
|
+
const state = this.state();
|
|
524
|
+
callback(state);
|
|
525
|
+
}
|
|
526
|
+
|
|
527
|
+
BleNitroNative.subscribeToStateChange((nativeState: NativeBLEState) => {
|
|
528
|
+
callback(mapNativeBLEStateToBLEState(nativeState));
|
|
529
|
+
});
|
|
530
|
+
|
|
531
|
+
return {
|
|
532
|
+
remove: () => {
|
|
533
|
+
BleNitroNative.unsubscribeFromStateChange();
|
|
534
|
+
},
|
|
535
|
+
};
|
|
536
|
+
}
|
|
537
|
+
|
|
538
|
+
/**
|
|
539
|
+
* Open Bluetooth settings
|
|
540
|
+
* @returns Promise resolving when settings are opened
|
|
541
|
+
*/
|
|
542
|
+
public openSettings(): Promise<void> {
|
|
543
|
+
return BleNitroNative.openSettings();
|
|
544
|
+
}
|
|
545
|
+
}
|
|
546
|
+
|
|
547
|
+
// Singleton instance
|
|
548
|
+
export const ble = BleNitro.instance();
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { HybridObject } from 'react-native-nitro-modules';
|
|
2
|
+
|
|
3
|
+
// Nitro constraint: Use numeric enums instead of string unions
|
|
4
|
+
export enum BLEState {
|
|
5
|
+
Unknown = 0,
|
|
6
|
+
Resetting = 1,
|
|
7
|
+
Unsupported = 2,
|
|
8
|
+
Unauthorized = 3,
|
|
9
|
+
PoweredOff = 4,
|
|
10
|
+
PoweredOn = 5,
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export interface ManufacturerDataEntry {
|
|
14
|
+
id: string;
|
|
15
|
+
data: number[];
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export interface ManufacturerData {
|
|
19
|
+
companyIdentifiers: ManufacturerDataEntry[];
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export interface BLEDevice {
|
|
23
|
+
id: string;
|
|
24
|
+
name: string;
|
|
25
|
+
rssi: number;
|
|
26
|
+
manufacturerData: ManufacturerData;
|
|
27
|
+
serviceUUIDs: string[];
|
|
28
|
+
isConnectable: boolean;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export interface ScanFilter {
|
|
32
|
+
serviceUUIDs: string[];
|
|
33
|
+
rssiThreshold: number;
|
|
34
|
+
allowDuplicates: boolean;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export type ScanCallback = (device: BLEDevice) => void;
|
|
38
|
+
export type DevicesCallback = (devices: BLEDevice[]) => void;
|
|
39
|
+
export type ConnectionCallback = (success: boolean, deviceId: string, error: string) => void;
|
|
40
|
+
export type DisconnectionEventCallback = (deviceId: string, interrupted: boolean, error: string) => void;
|
|
41
|
+
export type OperationCallback = (success: boolean, error: string) => void;
|
|
42
|
+
export type CharacteristicCallback = (characteristicId: string, data: number[]) => void;
|
|
43
|
+
export type StateCallback = (state: BLEState) => void;
|
|
44
|
+
export type BooleanCallback = (result: boolean) => void;
|
|
45
|
+
export type StringArrayCallback = (result: string[]) => void;
|
|
46
|
+
export type ReadCharacteristicCallback = (success: boolean, data: number[], error: string) => void;
|
|
47
|
+
|
|
48
|
+
export type OperationResult = {
|
|
49
|
+
success: boolean;
|
|
50
|
+
error?: string;
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Native BLE Nitro Module Specification
|
|
55
|
+
* Defines the interface between TypeScript and native implementations
|
|
56
|
+
*/
|
|
57
|
+
export interface NativeBleNitro extends HybridObject<{ ios: 'swift'; android: 'kotlin' }> {
|
|
58
|
+
// Scanning operations
|
|
59
|
+
startScan(filter: ScanFilter, callback: ScanCallback): void;
|
|
60
|
+
stopScan(): boolean;
|
|
61
|
+
isScanning(): boolean;
|
|
62
|
+
|
|
63
|
+
// Device discovery
|
|
64
|
+
getConnectedDevices(services: string[]): BLEDevice[];
|
|
65
|
+
|
|
66
|
+
// Connection management
|
|
67
|
+
connect(deviceId: string, callback: ConnectionCallback, disconnectCallback?: DisconnectionEventCallback): void;
|
|
68
|
+
disconnect(deviceId: string, callback: OperationCallback): void;
|
|
69
|
+
isConnected(deviceId: string): boolean;
|
|
70
|
+
|
|
71
|
+
// Service discovery
|
|
72
|
+
discoverServices(deviceId: string, callback: OperationCallback): void;
|
|
73
|
+
getServices(deviceId: string): string[];
|
|
74
|
+
getCharacteristics(deviceId: string, serviceId: string): string[];
|
|
75
|
+
|
|
76
|
+
// Characteristic operations
|
|
77
|
+
readCharacteristic(deviceId: string, serviceId: string, characteristicId: string, callback: ReadCharacteristicCallback): void;
|
|
78
|
+
writeCharacteristic(deviceId: string, serviceId: string, characteristicId: string, data: number[], withResponse: boolean, callback: OperationCallback): void;
|
|
79
|
+
subscribeToCharacteristic(deviceId: string, serviceId: string, characteristicId: string, updateCallback: CharacteristicCallback, resultCallback: OperationCallback): void;
|
|
80
|
+
unsubscribeFromCharacteristic(deviceId: string, serviceId: string, characteristicId: string, callback: OperationCallback): void;
|
|
81
|
+
|
|
82
|
+
// Bluetooth state management
|
|
83
|
+
requestBluetoothEnable(callback: OperationCallback): void;
|
|
84
|
+
state(): BLEState;
|
|
85
|
+
subscribeToStateChange(stateCallback: StateCallback): OperationResult;
|
|
86
|
+
unsubscribeFromStateChange(): OperationResult;
|
|
87
|
+
openSettings(): Promise<void>;
|
|
88
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { NitroModules } from 'react-native-nitro-modules';
|
|
2
|
+
import type { NativeBleNitro } from './NativeBleNitro.nitro';
|
|
3
|
+
|
|
4
|
+
// Export the native implementation
|
|
5
|
+
const NativeBleNitroImpl = NitroModules.createHybridObject<NativeBleNitro>('NativeBleNitro');
|
|
6
|
+
|
|
7
|
+
export default NativeBleNitroImpl;
|
|
8
|
+
export * from './NativeBleNitro.nitro';
|