react-native-ble-nitro 1.0.0-beta.9 → 1.0.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 +273 -77
- package/ios/BleNitroBleManager.swift +426 -458
- package/ios/BlePeripheralDelegate.swift +174 -0
- package/lib/commonjs/index.d.ts +174 -10
- package/lib/commonjs/index.d.ts.map +1 -1
- package/lib/commonjs/index.js +461 -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 +69 -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 +174 -10
- package/lib/index.js +456 -16
- package/lib/specs/NativeBleNitro.d.ts +4 -0
- package/lib/specs/NativeBleNitro.js +5 -0
- package/lib/specs/NativeBleNitro.nitro.d.ts +68 -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 +25 -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.hpp +74 -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++/JFunc_void_std__vector_BLEDevice_.hpp +99 -0
- package/nitrogen/generated/android/c++/JFunc_void_std__vector_std__string_.hpp +93 -0
- package/nitrogen/generated/android/c++/JHybridNativeBleNitroSpec.cpp +171 -0
- package/nitrogen/generated/android/c++/JHybridNativeBleNitroSpec.hpp +83 -0
- package/nitrogen/generated/android/c++/JManufacturerData.hpp +73 -0
- package/nitrogen/generated/android/c++/JManufacturerDataEntry.hpp +68 -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_std__optional_NativeBleError__std__optional_NativeDevice_.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_State.kt → Func_void_bool.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.kt} +15 -14
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/co/zyke/ble/Func_void_bool_std__string_std__string.kt +81 -0
- 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/Func_void_std__vector_BLEDevice_.kt +81 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/co/zyke/ble/Func_void_std__vector_std__string_.kt +81 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/co/zyke/ble/HybridNativeBleNitroSpec.kt +223 -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/{ConnectionOptions.kt → ManufacturerDataEntry.kt} +10 -6
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/co/zyke/ble/{NativeService.kt → ScanFilter.kt} +13 -7
- package/nitrogen/generated/ios/BleNitro-Swift-Cxx-Bridge.cpp +67 -175
- package/nitrogen/generated/ios/BleNitro-Swift-Cxx-Bridge.hpp +205 -867
- package/nitrogen/generated/ios/BleNitro-Swift-Cxx-Umbrella.hpp +20 -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 +205 -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_State.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_bool.swift +6 -5
- 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_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/{Func_void_NativeCharacteristic.swift → Func_void_std__vector_BLEDevice_.swift} +12 -11
- package/nitrogen/generated/ios/swift/{Func_void_std__vector_NativeDevice_.swift → Func_void_std__vector_std__string_.swift} +12 -11
- package/nitrogen/generated/ios/swift/HybridNativeBleNitroSpec.swift +68 -0
- package/nitrogen/generated/ios/swift/HybridNativeBleNitroSpec_cxx.swift +485 -0
- package/nitrogen/generated/ios/swift/ManufacturerData.swift +47 -0
- package/nitrogen/generated/ios/swift/ManufacturerDataEntry.swift +58 -0
- 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 +40 -0
- package/nitrogen/generated/shared/c++/HybridNativeBleNitroSpec.hpp +93 -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++/ScanFilter.hpp +76 -0
- package/package.json +9 -11
- package/react-native.config.js +2 -7
- package/src/__tests__/index.test.ts +188 -0
- package/src/index.ts +604 -45
- package/src/specs/NativeBleNitro.nitro.ts +84 -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/BleRestoredState.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/BleManagerNitroOptions.swift +0 -53
- 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_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++/BleManagerNitroOptions.hpp +0 -70
- 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,604 @@
|
|
|
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: () => Promise<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
|
+
): Promise<boolean> {
|
|
121
|
+
return new Promise((resolve) => {
|
|
122
|
+
// Don't start scanning if already scanning
|
|
123
|
+
if (this._isScanning) {
|
|
124
|
+
resolve(true);
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
// Create native scan filter with defaults
|
|
129
|
+
const nativeFilter: NativeScanFilter = {
|
|
130
|
+
serviceUUIDs: filter.serviceUUIDs || [],
|
|
131
|
+
rssiThreshold: filter.rssiThreshold ?? -100,
|
|
132
|
+
allowDuplicates: filter.allowDuplicates ?? false,
|
|
133
|
+
};
|
|
134
|
+
|
|
135
|
+
// Create callback wrapper
|
|
136
|
+
const scanCallback = (device: NativeBLEDevice) => {
|
|
137
|
+
device.serviceUUIDs = BleNitro.normalizeGattUUIDs(device.serviceUUIDs);
|
|
138
|
+
callback(device);
|
|
139
|
+
};
|
|
140
|
+
|
|
141
|
+
// Start scan
|
|
142
|
+
BleNitroNative.startScan(nativeFilter, scanCallback);
|
|
143
|
+
this._isScanning = true;
|
|
144
|
+
resolve(true);
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
/**
|
|
149
|
+
* Stop scanning for Bluetooth devices
|
|
150
|
+
* @returns Promise resolving to success state
|
|
151
|
+
*/
|
|
152
|
+
public stopScan(): Promise<boolean> {
|
|
153
|
+
return new Promise((resolve, reject) => {
|
|
154
|
+
// Don't stop scanning if not scanning
|
|
155
|
+
if (!this._isScanning) {
|
|
156
|
+
resolve(true);
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
BleNitroNative.stopScan((success: boolean, error: string) => {
|
|
161
|
+
if (success) {
|
|
162
|
+
this._isScanning = false;
|
|
163
|
+
resolve(true);
|
|
164
|
+
} else {
|
|
165
|
+
reject(new Error(error));
|
|
166
|
+
}
|
|
167
|
+
});
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* Check if currently scanning for devices
|
|
173
|
+
* @returns Promise resolving to scanning state
|
|
174
|
+
*/
|
|
175
|
+
public isScanning(): Promise<boolean> {
|
|
176
|
+
return new Promise((resolve) => {
|
|
177
|
+
BleNitroNative.isScanning((scanning: boolean) => {
|
|
178
|
+
this._isScanning = scanning;
|
|
179
|
+
resolve(scanning);
|
|
180
|
+
});
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
/**
|
|
185
|
+
* Get all currently connected devices
|
|
186
|
+
* @returns Promise resolving to array of connected devices
|
|
187
|
+
*/
|
|
188
|
+
public getConnectedDevices(): Promise<BLEDevice[]> {
|
|
189
|
+
return new Promise((resolve) => {
|
|
190
|
+
BleNitroNative.getConnectedDevices((devices: BLEDevice[]) => {
|
|
191
|
+
// Normalize service UUIDs for connected devices
|
|
192
|
+
const normalizedDevices = devices.map(device => ({
|
|
193
|
+
...device,
|
|
194
|
+
serviceUUIDs: BleNitro.normalizeGattUUIDs(device.serviceUUIDs)
|
|
195
|
+
}));
|
|
196
|
+
resolve(normalizedDevices);
|
|
197
|
+
});
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
/**
|
|
202
|
+
* Connect to a Bluetooth device
|
|
203
|
+
* @param deviceId ID of the device to connect to
|
|
204
|
+
* @param onDisconnect Optional callback for disconnect events
|
|
205
|
+
* @returns Promise resolving when connected
|
|
206
|
+
*/
|
|
207
|
+
public connect(
|
|
208
|
+
deviceId: string,
|
|
209
|
+
onDisconnect?: DisconnectEventCallback
|
|
210
|
+
): Promise<string> {
|
|
211
|
+
return new Promise((resolve, reject) => {
|
|
212
|
+
// Check if already connected
|
|
213
|
+
if (this._connectedDevices[deviceId]) {
|
|
214
|
+
resolve(deviceId);
|
|
215
|
+
return;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
BleNitroNative.connect(
|
|
219
|
+
deviceId,
|
|
220
|
+
(success: boolean, connectedDeviceId: string, error: string) => {
|
|
221
|
+
if (success) {
|
|
222
|
+
this._connectedDevices[deviceId] = true;
|
|
223
|
+
resolve(connectedDeviceId);
|
|
224
|
+
} else {
|
|
225
|
+
reject(new Error(error));
|
|
226
|
+
}
|
|
227
|
+
},
|
|
228
|
+
onDisconnect ? (deviceId: string, interrupted: boolean, error: string) => {
|
|
229
|
+
// Remove from connected devices when disconnected
|
|
230
|
+
delete this._connectedDevices[deviceId];
|
|
231
|
+
onDisconnect(deviceId, interrupted, error);
|
|
232
|
+
} : undefined
|
|
233
|
+
);
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
/**
|
|
238
|
+
* Disconnect from a Bluetooth device
|
|
239
|
+
* @param deviceId ID of the device to disconnect from
|
|
240
|
+
* @returns Promise resolving when disconnected
|
|
241
|
+
*/
|
|
242
|
+
public disconnect(deviceId: string): Promise<boolean> {
|
|
243
|
+
return new Promise((resolve, reject) => {
|
|
244
|
+
// Check if already disconnected
|
|
245
|
+
if (!this._connectedDevices[deviceId]) {
|
|
246
|
+
resolve(true);
|
|
247
|
+
return;
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
BleNitroNative.disconnect(
|
|
251
|
+
deviceId,
|
|
252
|
+
(success: boolean, error: string) => {
|
|
253
|
+
if (success) {
|
|
254
|
+
delete this._connectedDevices[deviceId];
|
|
255
|
+
resolve(true);
|
|
256
|
+
} else {
|
|
257
|
+
reject(new Error(error));
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
);
|
|
261
|
+
});
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
/**
|
|
265
|
+
* Check if connected to a device
|
|
266
|
+
* @param deviceId ID of the device to check
|
|
267
|
+
* @returns Promise resolving to connection state
|
|
268
|
+
*/
|
|
269
|
+
public isConnected(deviceId: string): Promise<boolean> {
|
|
270
|
+
return new Promise((resolve) => {
|
|
271
|
+
BleNitroNative.isConnected(deviceId, (connected: boolean) => {
|
|
272
|
+
this._connectedDevices[deviceId] = connected;
|
|
273
|
+
resolve(connected);
|
|
274
|
+
});
|
|
275
|
+
});
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
/**
|
|
279
|
+
* Discover services for a connected device
|
|
280
|
+
* @param deviceId ID of the device
|
|
281
|
+
* @returns Promise resolving when services are discovered
|
|
282
|
+
*/
|
|
283
|
+
public discoverServices(deviceId: string): Promise<boolean> {
|
|
284
|
+
return new Promise((resolve, reject) => {
|
|
285
|
+
// Check if connected first
|
|
286
|
+
if (!this._connectedDevices[deviceId]) {
|
|
287
|
+
reject(new Error('Device not connected'));
|
|
288
|
+
return;
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
BleNitroNative.discoverServices(
|
|
292
|
+
deviceId,
|
|
293
|
+
(success: boolean, error: string) => {
|
|
294
|
+
if (success) {
|
|
295
|
+
resolve(true);
|
|
296
|
+
} else {
|
|
297
|
+
reject(new Error(error));
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
);
|
|
301
|
+
});
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
/**
|
|
305
|
+
* Get services for a connected device
|
|
306
|
+
* @param deviceId ID of the device
|
|
307
|
+
* @returns Promise resolving to array of service UUIDs
|
|
308
|
+
*/
|
|
309
|
+
public getServices(deviceId: string): Promise<string[]> {
|
|
310
|
+
return new Promise(async (resolve, reject) => {
|
|
311
|
+
// Check if connected first
|
|
312
|
+
if (!this._connectedDevices[deviceId]) {
|
|
313
|
+
reject(new Error('Device not connected'));
|
|
314
|
+
return;
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
const success = await this.discoverServices(deviceId);
|
|
318
|
+
if (!success) {
|
|
319
|
+
reject(new Error('Failed to discover services'));
|
|
320
|
+
return;
|
|
321
|
+
}
|
|
322
|
+
BleNitroNative.getServices(deviceId, (services: string[]) => {
|
|
323
|
+
resolve(BleNitro.normalizeGattUUIDs(services));
|
|
324
|
+
});
|
|
325
|
+
});
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
/**
|
|
329
|
+
* Get characteristics for a service
|
|
330
|
+
* @param deviceId ID of the device
|
|
331
|
+
* @param serviceId ID of the service
|
|
332
|
+
* @returns Promise resolving to array of characteristic UUIDs
|
|
333
|
+
*/
|
|
334
|
+
public getCharacteristics(
|
|
335
|
+
deviceId: string,
|
|
336
|
+
serviceId: string
|
|
337
|
+
): Promise<string[]> {
|
|
338
|
+
return new Promise((resolve, reject) => {
|
|
339
|
+
// Check if connected first
|
|
340
|
+
if (!this._connectedDevices[deviceId]) {
|
|
341
|
+
reject(new Error('Device not connected'));
|
|
342
|
+
return;
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
BleNitroNative.getCharacteristics(
|
|
346
|
+
deviceId,
|
|
347
|
+
BleNitro.normalizeGattUUID(serviceId),
|
|
348
|
+
(characteristics: string[]) => {
|
|
349
|
+
resolve(BleNitro.normalizeGattUUIDs(characteristics));
|
|
350
|
+
}
|
|
351
|
+
);
|
|
352
|
+
});
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
/**
|
|
356
|
+
* Read a characteristic value
|
|
357
|
+
* @param deviceId ID of the device
|
|
358
|
+
* @param serviceId ID of the service
|
|
359
|
+
* @param characteristicId ID of the characteristic
|
|
360
|
+
* @returns Promise resolving to the characteristic data as byte array
|
|
361
|
+
*/
|
|
362
|
+
public readCharacteristic(
|
|
363
|
+
deviceId: string,
|
|
364
|
+
serviceId: string,
|
|
365
|
+
characteristicId: string
|
|
366
|
+
): Promise<number[]> {
|
|
367
|
+
return new Promise((resolve, reject) => {
|
|
368
|
+
// Check if connected first
|
|
369
|
+
if (!this._connectedDevices[deviceId]) {
|
|
370
|
+
reject(new Error('Device not connected'));
|
|
371
|
+
return;
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
BleNitroNative.readCharacteristic(
|
|
375
|
+
deviceId,
|
|
376
|
+
BleNitro.normalizeGattUUID(serviceId),
|
|
377
|
+
BleNitro.normalizeGattUUID(characteristicId),
|
|
378
|
+
(success: boolean, data: number[], error: string) => {
|
|
379
|
+
if (success) {
|
|
380
|
+
resolve(data);
|
|
381
|
+
} else {
|
|
382
|
+
reject(new Error(error));
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
);
|
|
386
|
+
});
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
/**
|
|
390
|
+
* Write a value to a characteristic
|
|
391
|
+
* @param deviceId ID of the device
|
|
392
|
+
* @param serviceId ID of the service
|
|
393
|
+
* @param characteristicId ID of the characteristic
|
|
394
|
+
* @param data Data to write as an array of bytes
|
|
395
|
+
* @param withResponse Whether to wait for response
|
|
396
|
+
* @returns Promise resolving when write is complete
|
|
397
|
+
*/
|
|
398
|
+
public writeCharacteristic(
|
|
399
|
+
deviceId: string,
|
|
400
|
+
serviceId: string,
|
|
401
|
+
characteristicId: string,
|
|
402
|
+
data: number[],
|
|
403
|
+
withResponse: boolean = true
|
|
404
|
+
): Promise<boolean> {
|
|
405
|
+
return new Promise((resolve, reject) => {
|
|
406
|
+
// Check if connected first
|
|
407
|
+
if (!this._connectedDevices[deviceId]) {
|
|
408
|
+
reject(new Error('Device not connected'));
|
|
409
|
+
return;
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
BleNitroNative.writeCharacteristic(
|
|
413
|
+
deviceId,
|
|
414
|
+
BleNitro.normalizeGattUUID(serviceId),
|
|
415
|
+
BleNitro.normalizeGattUUID(characteristicId),
|
|
416
|
+
data,
|
|
417
|
+
withResponse,
|
|
418
|
+
(success: boolean, error: string) => {
|
|
419
|
+
if (success) {
|
|
420
|
+
resolve(true);
|
|
421
|
+
} else {
|
|
422
|
+
reject(new Error(error));
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
);
|
|
426
|
+
});
|
|
427
|
+
}
|
|
428
|
+
|
|
429
|
+
/**
|
|
430
|
+
* Subscribe to characteristic notifications
|
|
431
|
+
* @param deviceId ID of the device
|
|
432
|
+
* @param serviceId ID of the service
|
|
433
|
+
* @param characteristicId ID of the characteristic
|
|
434
|
+
* @param callback Callback function called when notification is received
|
|
435
|
+
* @returns Promise resolving when subscription is complete
|
|
436
|
+
*/
|
|
437
|
+
public subscribeToCharacteristic(
|
|
438
|
+
deviceId: string,
|
|
439
|
+
serviceId: string,
|
|
440
|
+
characteristicId: string,
|
|
441
|
+
callback: CharacteristicUpdateCallback
|
|
442
|
+
): Promise<Subscription> {
|
|
443
|
+
return new Promise((resolve, reject) => {
|
|
444
|
+
// Check if connected first
|
|
445
|
+
if (!this._connectedDevices[deviceId]) {
|
|
446
|
+
reject(new Error('Device not connected'));
|
|
447
|
+
return;
|
|
448
|
+
}
|
|
449
|
+
|
|
450
|
+
BleNitroNative.subscribeToCharacteristic(
|
|
451
|
+
deviceId,
|
|
452
|
+
BleNitro.normalizeGattUUID(serviceId),
|
|
453
|
+
BleNitro.normalizeGattUUID(characteristicId),
|
|
454
|
+
(charId: string, data: number[]) => {
|
|
455
|
+
callback(charId, data);
|
|
456
|
+
},
|
|
457
|
+
(success: boolean, error: string) => {
|
|
458
|
+
if (success) {
|
|
459
|
+
resolve({
|
|
460
|
+
remove: () => {
|
|
461
|
+
return new Promise((resolve, reject) => {
|
|
462
|
+
this.unsubscribeFromCharacteristic(
|
|
463
|
+
deviceId,
|
|
464
|
+
serviceId,
|
|
465
|
+
characteristicId
|
|
466
|
+
).then(resolve).catch(reject);
|
|
467
|
+
});
|
|
468
|
+
},
|
|
469
|
+
});
|
|
470
|
+
} else {
|
|
471
|
+
reject(new Error(error));
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
);
|
|
475
|
+
});
|
|
476
|
+
}
|
|
477
|
+
|
|
478
|
+
/**
|
|
479
|
+
* Unsubscribe from characteristic notifications
|
|
480
|
+
* @param deviceId ID of the device
|
|
481
|
+
* @param serviceId ID of the service
|
|
482
|
+
* @param characteristicId ID of the characteristic
|
|
483
|
+
* @returns Promise resolving when unsubscription is complete
|
|
484
|
+
*/
|
|
485
|
+
public unsubscribeFromCharacteristic(
|
|
486
|
+
deviceId: string,
|
|
487
|
+
serviceId: string,
|
|
488
|
+
characteristicId: string
|
|
489
|
+
): Promise<void> {
|
|
490
|
+
return new Promise((resolve, reject) => {
|
|
491
|
+
// Check if connected first
|
|
492
|
+
if (!this._connectedDevices[deviceId]) {
|
|
493
|
+
reject(new Error('Device not connected'));
|
|
494
|
+
return;
|
|
495
|
+
}
|
|
496
|
+
|
|
497
|
+
BleNitroNative.unsubscribeFromCharacteristic(
|
|
498
|
+
deviceId,
|
|
499
|
+
BleNitro.normalizeGattUUID(serviceId),
|
|
500
|
+
BleNitro.normalizeGattUUID(characteristicId),
|
|
501
|
+
(success: boolean, error: string) => {
|
|
502
|
+
if (success) {
|
|
503
|
+
resolve();
|
|
504
|
+
} else {
|
|
505
|
+
reject(new Error(error));
|
|
506
|
+
}
|
|
507
|
+
}
|
|
508
|
+
);
|
|
509
|
+
});
|
|
510
|
+
}
|
|
511
|
+
|
|
512
|
+
/**
|
|
513
|
+
* Check if Bluetooth is enabled
|
|
514
|
+
* @returns Promise resolving to Bluetooth state
|
|
515
|
+
*/
|
|
516
|
+
public isBluetoothEnabled(): Promise<boolean> {
|
|
517
|
+
return new Promise((resolve) => {
|
|
518
|
+
BleNitroNative.isBluetoothEnabled((enabled: boolean) => {
|
|
519
|
+
resolve(enabled);
|
|
520
|
+
});
|
|
521
|
+
});
|
|
522
|
+
}
|
|
523
|
+
|
|
524
|
+
/**
|
|
525
|
+
* Request to enable Bluetooth
|
|
526
|
+
* @returns Promise resolving when Bluetooth is enabled
|
|
527
|
+
*/
|
|
528
|
+
public requestBluetoothEnable(): Promise<boolean> {
|
|
529
|
+
return new Promise((resolve, reject) => {
|
|
530
|
+
BleNitroNative.requestBluetoothEnable(
|
|
531
|
+
(success: boolean, error: string) => {
|
|
532
|
+
if (success) {
|
|
533
|
+
resolve(true);
|
|
534
|
+
} else {
|
|
535
|
+
reject(new Error(error));
|
|
536
|
+
}
|
|
537
|
+
}
|
|
538
|
+
);
|
|
539
|
+
});
|
|
540
|
+
}
|
|
541
|
+
|
|
542
|
+
/**
|
|
543
|
+
* Get the current Bluetooth state
|
|
544
|
+
* @returns Promise resolving to Bluetooth state
|
|
545
|
+
* @see BLEState
|
|
546
|
+
*/
|
|
547
|
+
public state(): Promise<BLEState> {
|
|
548
|
+
return new Promise((resolve) => {
|
|
549
|
+
BleNitroNative.state((state: NativeBLEState) => {
|
|
550
|
+
resolve(mapNativeBLEStateToBLEState(state));
|
|
551
|
+
});
|
|
552
|
+
});
|
|
553
|
+
}
|
|
554
|
+
|
|
555
|
+
/**
|
|
556
|
+
* Subscribe to Bluetooth state changes
|
|
557
|
+
* @param callback Callback function called when state changes
|
|
558
|
+
* @param emitInitial Whether to emit initial state callback
|
|
559
|
+
* @returns Promise resolving when subscription is complete
|
|
560
|
+
* @see BLEState
|
|
561
|
+
*/
|
|
562
|
+
public subscribeToStateChange(callback: (state: BLEState) => void, emitInitial = false): Promise<Subscription> {
|
|
563
|
+
return new Promise(async (resolve, reject) => {
|
|
564
|
+
if (emitInitial) {
|
|
565
|
+
const state = await this.state().catch(() => {
|
|
566
|
+
return BLEState.Unknown;
|
|
567
|
+
});
|
|
568
|
+
callback(state);
|
|
569
|
+
}
|
|
570
|
+
BleNitroNative.subscribeToStateChange((nativeState: NativeBLEState) => {
|
|
571
|
+
callback(mapNativeBLEStateToBLEState(nativeState));
|
|
572
|
+
}, (success: boolean, error: string) => {
|
|
573
|
+
if (success) {
|
|
574
|
+
resolve({
|
|
575
|
+
remove: () => {
|
|
576
|
+
return new Promise((resolve, reject) => {
|
|
577
|
+
BleNitroNative.unsubscribeFromStateChange((success, error) => {
|
|
578
|
+
if (success) {
|
|
579
|
+
resolve();
|
|
580
|
+
} else {
|
|
581
|
+
reject(new Error(error));
|
|
582
|
+
}
|
|
583
|
+
});
|
|
584
|
+
});
|
|
585
|
+
},
|
|
586
|
+
});
|
|
587
|
+
} else {
|
|
588
|
+
reject(new Error(error));
|
|
589
|
+
}
|
|
590
|
+
});
|
|
591
|
+
})
|
|
592
|
+
}
|
|
593
|
+
|
|
594
|
+
/**
|
|
595
|
+
* Open Bluetooth settings
|
|
596
|
+
* @returns Promise resolving when settings are opened
|
|
597
|
+
*/
|
|
598
|
+
public openSettings(): Promise<void> {
|
|
599
|
+
return BleNitroNative.openSettings();
|
|
600
|
+
}
|
|
601
|
+
}
|
|
602
|
+
|
|
603
|
+
// Singleton instance
|
|
604
|
+
export const ble = BleNitro.instance();
|