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