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