react-native-ble-nitro 1.0.0-beta.6 → 1.0.0-beta.8

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 (174) hide show
  1. package/android/build.gradle +3 -0
  2. package/android/src/main/kotlin/{co → com/margelo/nitro/co}/zyke/ble/BleNitroBleManager.kt +8 -2
  3. package/ios/BleNitro.podspec +11 -4
  4. package/ios/BleNitroModule.swift +2 -9
  5. package/nitro.json +6 -1
  6. package/nitrogen/generated/.gitattributes +1 -0
  7. package/nitrogen/generated/android/BleNitro+autolinking.cmake +86 -0
  8. package/nitrogen/generated/android/BleNitro+autolinking.gradle +27 -0
  9. package/nitrogen/generated/android/BleNitroOnLoad.cpp +62 -0
  10. package/nitrogen/generated/android/BleNitroOnLoad.hpp +25 -0
  11. package/nitrogen/generated/android/c++/JBleATTErrorCode.hpp +107 -0
  12. package/nitrogen/generated/android/c++/JBleAndroidErrorCode.hpp +101 -0
  13. package/nitrogen/generated/android/c++/JBleErrorCode.hpp +170 -0
  14. package/nitrogen/generated/android/c++/JBleIOSErrorCode.hpp +92 -0
  15. package/nitrogen/generated/android/c++/JBleManagerNitroOptions.hpp +54 -0
  16. package/nitrogen/generated/android/c++/JBleRestoredState.hpp +76 -0
  17. package/nitrogen/generated/android/c++/JCharacteristicSubscriptionType.hpp +59 -0
  18. package/nitrogen/generated/android/c++/JConnectionOptions.hpp +61 -0
  19. package/nitrogen/generated/android/c++/JConnectionPriority.hpp +62 -0
  20. package/nitrogen/generated/android/c++/JFunc_void.hpp +74 -0
  21. package/nitrogen/generated/android/c++/JFunc_void_State.hpp +76 -0
  22. package/nitrogen/generated/android/c++/JFunc_void_std__optional_NativeBleError__std__optional_NativeCharacteristic_.hpp +88 -0
  23. package/nitrogen/generated/android/c++/JFunc_void_std__optional_NativeBleError__std__optional_NativeDevice_.hpp +91 -0
  24. package/nitrogen/generated/android/c++/JHybridBleManagerSpec.cpp +653 -0
  25. package/nitrogen/generated/android/c++/JHybridBleManagerSpec.hpp +92 -0
  26. package/nitrogen/generated/android/c++/JHybridCharacteristicSpec.cpp +253 -0
  27. package/nitrogen/generated/android/c++/JHybridCharacteristicSpec.hpp +79 -0
  28. package/nitrogen/generated/android/c++/JHybridDescriptorSpec.cpp +115 -0
  29. package/nitrogen/generated/android/c++/JHybridDescriptorSpec.hpp +70 -0
  30. package/nitrogen/generated/android/c++/JHybridDeviceSpec.cpp +476 -0
  31. package/nitrogen/generated/android/c++/JHybridDeviceSpec.hpp +90 -0
  32. package/nitrogen/generated/android/c++/JHybridServiceSpec.cpp +232 -0
  33. package/nitrogen/generated/android/c++/JHybridServiceSpec.hpp +72 -0
  34. package/nitrogen/generated/android/c++/JLogLevel.hpp +71 -0
  35. package/nitrogen/generated/android/c++/JNativeBleError.hpp +98 -0
  36. package/nitrogen/generated/android/c++/JNativeCharacteristic.hpp +98 -0
  37. package/nitrogen/generated/android/c++/JNativeDescriptor.hpp +82 -0
  38. package/nitrogen/generated/android/c++/JNativeDevice.hpp +173 -0
  39. package/nitrogen/generated/android/c++/JNativeService.hpp +65 -0
  40. package/nitrogen/generated/android/c++/JScanCallbackType.hpp +62 -0
  41. package/nitrogen/generated/android/c++/JScanMode.hpp +65 -0
  42. package/nitrogen/generated/android/c++/JScanOptions.hpp +69 -0
  43. package/nitrogen/generated/android/c++/JServiceDataEntry.hpp +57 -0
  44. package/nitrogen/generated/android/c++/JState.hpp +71 -0
  45. package/nitrogen/generated/android/c++/JSubscription.hpp +64 -0
  46. package/nitrogen/generated/android/kotlin/com/margelo/nitro/co/zyke/ble/BleATTErrorCode.kt +41 -0
  47. package/nitrogen/generated/android/kotlin/com/margelo/nitro/co/zyke/ble/BleAndroidErrorCode.kt +39 -0
  48. package/nitrogen/generated/android/kotlin/com/margelo/nitro/co/zyke/ble/BleErrorCode.kt +62 -0
  49. package/nitrogen/generated/android/kotlin/com/margelo/nitro/co/zyke/ble/BleIOSErrorCode.kt +36 -0
  50. package/nitrogen/generated/android/kotlin/com/margelo/nitro/co/zyke/ble/BleManagerNitroOptions.kt +26 -0
  51. package/nitrogen/generated/android/kotlin/com/margelo/nitro/co/zyke/ble/BleNitroOnLoad.kt +35 -0
  52. package/nitrogen/generated/android/kotlin/com/margelo/nitro/co/zyke/ble/BleRestoredState.kt +26 -0
  53. package/nitrogen/generated/android/kotlin/com/margelo/nitro/co/zyke/ble/CharacteristicSubscriptionType.kt +25 -0
  54. package/nitrogen/generated/android/kotlin/com/margelo/nitro/co/zyke/ble/ConnectionOptions.kt +28 -0
  55. package/nitrogen/generated/android/kotlin/com/margelo/nitro/co/zyke/ble/ConnectionPriority.kt +26 -0
  56. package/nitrogen/generated/android/kotlin/com/margelo/nitro/co/zyke/ble/Func_void.kt +80 -0
  57. package/nitrogen/generated/android/kotlin/com/margelo/nitro/co/zyke/ble/Func_void_State.kt +80 -0
  58. package/nitrogen/generated/android/kotlin/com/margelo/nitro/co/zyke/ble/Func_void_std__optional_NativeBleError__std__optional_NativeCharacteristic_.kt +80 -0
  59. package/nitrogen/generated/android/kotlin/com/margelo/nitro/co/zyke/ble/Func_void_std__optional_NativeBleError__std__optional_NativeDevice_.kt +80 -0
  60. package/nitrogen/generated/android/kotlin/com/margelo/nitro/co/zyke/ble/HybridBleManagerSpec.kt +192 -0
  61. package/nitrogen/generated/android/kotlin/com/margelo/nitro/co/zyke/ble/HybridCharacteristicSpec.kt +127 -0
  62. package/nitrogen/generated/android/kotlin/com/margelo/nitro/co/zyke/ble/HybridDescriptorSpec.kt +86 -0
  63. package/nitrogen/generated/android/kotlin/com/margelo/nitro/co/zyke/ble/HybridDeviceSpec.kt +176 -0
  64. package/nitrogen/generated/android/kotlin/com/margelo/nitro/co/zyke/ble/HybridServiceSpec.kt +99 -0
  65. package/nitrogen/generated/android/kotlin/com/margelo/nitro/co/zyke/ble/LogLevel.kt +29 -0
  66. package/nitrogen/generated/android/kotlin/com/margelo/nitro/co/zyke/ble/NativeBleError.kt +35 -0
  67. package/nitrogen/generated/android/kotlin/com/margelo/nitro/co/zyke/ble/NativeCharacteristic.kt +37 -0
  68. package/nitrogen/generated/android/kotlin/com/margelo/nitro/co/zyke/ble/NativeDescriptor.kt +33 -0
  69. package/nitrogen/generated/android/kotlin/com/margelo/nitro/co/zyke/ble/NativeDevice.kt +38 -0
  70. package/nitrogen/generated/android/kotlin/com/margelo/nitro/co/zyke/ble/NativeService.kt +29 -0
  71. package/nitrogen/generated/android/kotlin/com/margelo/nitro/co/zyke/ble/ScanCallbackType.kt +26 -0
  72. package/nitrogen/generated/android/kotlin/com/margelo/nitro/co/zyke/ble/ScanMode.kt +27 -0
  73. package/nitrogen/generated/android/kotlin/com/margelo/nitro/co/zyke/ble/ScanOptions.kt +29 -0
  74. package/nitrogen/generated/android/kotlin/com/margelo/nitro/co/zyke/ble/ServiceDataEntry.kt +27 -0
  75. package/nitrogen/generated/android/kotlin/com/margelo/nitro/co/zyke/ble/State.kt +29 -0
  76. package/nitrogen/generated/android/kotlin/com/margelo/nitro/co/zyke/ble/Subscription.kt +30 -0
  77. package/nitrogen/generated/ios/BleNitro+autolinking.rb +60 -0
  78. package/nitrogen/generated/ios/BleNitro-Swift-Cxx-Bridge.cpp +236 -0
  79. package/nitrogen/generated/ios/BleNitro-Swift-Cxx-Bridge.hpp +1069 -0
  80. package/nitrogen/generated/ios/BleNitro-Swift-Cxx-Umbrella.hpp +131 -0
  81. package/nitrogen/generated/ios/BleNitroAutolinking.mm +33 -0
  82. package/nitrogen/generated/ios/BleNitroAutolinking.swift +25 -0
  83. package/nitrogen/generated/ios/c++/HybridBleManagerSpecSwift.cpp +11 -0
  84. package/nitrogen/generated/ios/c++/HybridBleManagerSpecSwift.hpp +377 -0
  85. package/nitrogen/generated/ios/c++/HybridCharacteristicSpecSwift.cpp +11 -0
  86. package/nitrogen/generated/ios/c++/HybridCharacteristicSpecSwift.hpp +192 -0
  87. package/nitrogen/generated/ios/c++/HybridDescriptorSpecSwift.cpp +11 -0
  88. package/nitrogen/generated/ios/c++/HybridDescriptorSpecSwift.hpp +112 -0
  89. package/nitrogen/generated/ios/c++/HybridDeviceSpecSwift.cpp +11 -0
  90. package/nitrogen/generated/ios/c++/HybridDeviceSpecSwift.hpp +294 -0
  91. package/nitrogen/generated/ios/c++/HybridServiceSpecSwift.cpp +11 -0
  92. package/nitrogen/generated/ios/c++/HybridServiceSpecSwift.hpp +170 -0
  93. package/nitrogen/generated/ios/swift/BleATTErrorCode.swift +104 -0
  94. package/nitrogen/generated/ios/swift/BleAndroidErrorCode.swift +96 -0
  95. package/nitrogen/generated/ios/swift/BleErrorCode.swift +188 -0
  96. package/nitrogen/generated/ios/swift/BleIOSErrorCode.swift +84 -0
  97. package/nitrogen/generated/ios/swift/BleManagerNitroOptions.swift +53 -0
  98. package/nitrogen/generated/ios/swift/BleRestoredState.swift +47 -0
  99. package/nitrogen/generated/ios/swift/CharacteristicSubscriptionType.swift +40 -0
  100. package/nitrogen/generated/ios/swift/ConnectionOptions.swift +57 -0
  101. package/nitrogen/generated/ios/swift/ConnectionPriority.swift +44 -0
  102. package/nitrogen/generated/ios/swift/Func_void.swift +46 -0
  103. package/nitrogen/generated/ios/swift/Func_void_LogLevel.swift +46 -0
  104. package/nitrogen/generated/ios/swift/Func_void_NativeCharacteristic.swift +46 -0
  105. package/nitrogen/generated/ios/swift/Func_void_NativeDescriptor.swift +46 -0
  106. package/nitrogen/generated/ios/swift/Func_void_NativeDevice.swift +46 -0
  107. package/nitrogen/generated/ios/swift/Func_void_State.swift +46 -0
  108. package/nitrogen/generated/ios/swift/Func_void_bool.swift +46 -0
  109. package/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift +46 -0
  110. package/nitrogen/generated/ios/swift/Func_void_std__optional_BleRestoredState_.swift +52 -0
  111. package/nitrogen/generated/ios/swift/Func_void_std__optional_NativeBleError__std__optional_NativeCharacteristic_.swift +58 -0
  112. package/nitrogen/generated/ios/swift/Func_void_std__optional_NativeBleError__std__optional_NativeDevice_.swift +58 -0
  113. package/nitrogen/generated/ios/swift/Func_void_std__shared_ptr_margelo__nitro__co__zyke__ble__HybridCharacteristicSpec_.swift +50 -0
  114. package/nitrogen/generated/ios/swift/Func_void_std__shared_ptr_margelo__nitro__co__zyke__ble__HybridDescriptorSpec_.swift +50 -0
  115. package/nitrogen/generated/ios/swift/Func_void_std__vector_NativeCharacteristic_.swift +46 -0
  116. package/nitrogen/generated/ios/swift/Func_void_std__vector_NativeDescriptor_.swift +46 -0
  117. package/nitrogen/generated/ios/swift/Func_void_std__vector_NativeDevice_.swift +46 -0
  118. package/nitrogen/generated/ios/swift/Func_void_std__vector_NativeService_.swift +46 -0
  119. package/nitrogen/generated/ios/swift/HybridBleManagerSpec.swift +78 -0
  120. package/nitrogen/generated/ios/swift/HybridBleManagerSpec_cxx.swift +852 -0
  121. package/nitrogen/generated/ios/swift/HybridCharacteristicSpec.swift +65 -0
  122. package/nitrogen/generated/ios/swift/HybridCharacteristicSpec_cxx.swift +384 -0
  123. package/nitrogen/generated/ios/swift/HybridDescriptorSpec.swift +56 -0
  124. package/nitrogen/generated/ios/swift/HybridDescriptorSpec_cxx.swift +218 -0
  125. package/nitrogen/generated/ios/swift/HybridDeviceSpec.swift +76 -0
  126. package/nitrogen/generated/ios/swift/HybridDeviceSpec_cxx.swift +702 -0
  127. package/nitrogen/generated/ios/swift/HybridServiceSpec.swift +58 -0
  128. package/nitrogen/generated/ios/swift/HybridServiceSpec_cxx.swift +338 -0
  129. package/nitrogen/generated/ios/swift/LogLevel.swift +56 -0
  130. package/nitrogen/generated/ios/swift/NativeBleError.swift +278 -0
  131. package/nitrogen/generated/ios/swift/NativeCharacteristic.swift +174 -0
  132. package/nitrogen/generated/ios/swift/NativeDescriptor.swift +130 -0
  133. package/nitrogen/generated/ios/swift/NativeDevice.swift +377 -0
  134. package/nitrogen/generated/ios/swift/NativeService.swift +68 -0
  135. package/nitrogen/generated/ios/swift/ScanCallbackType.swift +44 -0
  136. package/nitrogen/generated/ios/swift/ScanMode.swift +48 -0
  137. package/nitrogen/generated/ios/swift/ScanOptions.swift +116 -0
  138. package/nitrogen/generated/ios/swift/ServiceDataEntry.swift +46 -0
  139. package/nitrogen/generated/ios/swift/State.swift +56 -0
  140. package/nitrogen/generated/ios/swift/Subscription.swift +46 -0
  141. package/nitrogen/generated/shared/c++/BleATTErrorCode.hpp +80 -0
  142. package/nitrogen/generated/shared/c++/BleAndroidErrorCode.hpp +78 -0
  143. package/nitrogen/generated/shared/c++/BleErrorCode.hpp +101 -0
  144. package/nitrogen/generated/shared/c++/BleIOSErrorCode.hpp +75 -0
  145. package/nitrogen/generated/shared/c++/BleManagerNitroOptions.hpp +70 -0
  146. package/nitrogen/generated/shared/c++/BleRestoredState.hpp +71 -0
  147. package/nitrogen/generated/shared/c++/CharacteristicSubscriptionType.hpp +64 -0
  148. package/nitrogen/generated/shared/c++/ConnectionOptions.hpp +77 -0
  149. package/nitrogen/generated/shared/c++/ConnectionPriority.hpp +65 -0
  150. package/nitrogen/generated/shared/c++/HybridBleManagerSpec.cpp +51 -0
  151. package/nitrogen/generated/shared/c++/HybridBleManagerSpec.hpp +137 -0
  152. package/nitrogen/generated/shared/c++/HybridCharacteristicSpec.cpp +39 -0
  153. package/nitrogen/generated/shared/c++/HybridCharacteristicSpec.hpp +101 -0
  154. package/nitrogen/generated/shared/c++/HybridDescriptorSpec.cpp +30 -0
  155. package/nitrogen/generated/shared/c++/HybridDescriptorSpec.hpp +75 -0
  156. package/nitrogen/generated/shared/c++/HybridDeviceSpec.cpp +50 -0
  157. package/nitrogen/generated/shared/c++/HybridDeviceSpec.hpp +123 -0
  158. package/nitrogen/generated/shared/c++/HybridServiceSpec.cpp +32 -0
  159. package/nitrogen/generated/shared/c++/HybridServiceSpec.hpp +90 -0
  160. package/nitrogen/generated/shared/c++/LogLevel.hpp +68 -0
  161. package/nitrogen/generated/shared/c++/NativeBleError.hpp +117 -0
  162. package/nitrogen/generated/shared/c++/NativeCharacteristic.hpp +114 -0
  163. package/nitrogen/generated/shared/c++/NativeDescriptor.hpp +98 -0
  164. package/nitrogen/generated/shared/c++/NativeDevice.hpp +121 -0
  165. package/nitrogen/generated/shared/c++/NativeService.hpp +81 -0
  166. package/nitrogen/generated/shared/c++/ScanCallbackType.hpp +65 -0
  167. package/nitrogen/generated/shared/c++/ScanMode.hpp +66 -0
  168. package/nitrogen/generated/shared/c++/ScanOptions.hpp +86 -0
  169. package/nitrogen/generated/shared/c++/ServiceDataEntry.hpp +73 -0
  170. package/nitrogen/generated/shared/c++/State.hpp +68 -0
  171. package/nitrogen/generated/shared/c++/Subscription.hpp +69 -0
  172. package/package.json +6 -5
  173. package/react-native.config.js +1 -1
  174. package/android/src/main/kotlin/co/zyke/ble/BleNitroPackage.kt +0 -37
@@ -36,6 +36,9 @@ android {
36
36
  }
37
37
  }
38
38
 
39
+ // Apply Nitro autolinking
40
+ apply from: '../nitrogen/generated/android/BleNitro+autolinking.gradle'
41
+
39
42
  dependencies {
40
43
  implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
41
44
  implementation 'androidx.core:core-ktx:1.9.0'
@@ -4,7 +4,7 @@
4
4
  * Copyright © 2025 Zyke (https://zyke.co)
5
5
  */
6
6
 
7
- package co.zyke.ble
7
+ package com.margelo.nitro.co.zyke.ble
8
8
 
9
9
  import android.bluetooth.*
10
10
  import android.bluetooth.le.*
@@ -15,6 +15,7 @@ import android.util.Base64
15
15
  import android.util.Log
16
16
  import androidx.core.content.ContextCompat
17
17
  import com.facebook.react.bridge.ReactApplicationContext
18
+ import com.margelo.nitro.co.zyke.ble.HybridBleManagerSpec
18
19
  import com.margelo.nitro.NitroModules
19
20
  import kotlinx.coroutines.*
20
21
  import kotlinx.coroutines.channels.Channel
@@ -33,7 +34,12 @@ import com.margelo.nitro.co.zyke.ble.*
33
34
  * Core BLE Manager implementation using Android BLE APIs
34
35
  * Implements the HybridBleManagerSpec interface generated by Nitro
35
36
  */
36
- class BleNitroBleManager(private val context: ReactApplicationContext) : HybridBleManagerSpec {
37
+ class BleNitroBleManager : HybridBleManagerSpec {
38
+
39
+ // Get context from Nitro's context system
40
+ private val context: ReactApplicationContext by lazy {
41
+ NitroModules.getReactApplicationContext()
42
+ }
37
43
 
38
44
  companion object {
39
45
  private const val TAG = "BleNitroBleManager"
@@ -10,7 +10,7 @@ Pod::Spec.new do |s|
10
10
  s.license = package["license"]
11
11
  s.authors = package["author"]
12
12
 
13
- s.platforms = { :ios => "11.0" }
13
+ s.platforms = { :ios => "15.1" }
14
14
  s.source = { :git => "https://github.com/zykeco/react-native-ble-nitro.git", :tag => "#{s.version}" }
15
15
 
16
16
  s.source_files = "**/*.{h,m,mm,swift}"
@@ -23,14 +23,21 @@ Pod::Spec.new do |s|
23
23
  # iOS frameworks
24
24
  s.frameworks = "CoreBluetooth"
25
25
 
26
- # Build settings
27
- s.pod_target_xcconfig = {
26
+ # Apply Nitro autolinking
27
+ load '../nitrogen/generated/ios/BleNitro+autolinking.rb'
28
+ add_nitrogen_files(s)
29
+
30
+ # Base build settings (will be merged with autolinking settings)
31
+ base_xcconfig = {
28
32
  'GCC_PREPROCESSOR_DEFINITIONS' => '$(inherited) FOLLY_NO_CONFIG FOLLY_MOBILE=1 FOLLY_USE_LIBCPP=1',
29
- 'CLANG_CXX_LANGUAGE_STANDARD' => 'c++17',
30
33
  'CLANG_CXX_LIBRARY' => 'libc++',
31
34
  'OTHER_CPLUSPLUSFLAGS' => '-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1'
32
35
  }
33
36
 
37
+ # Merge with existing pod_target_xcconfig from autolinking
38
+ current_xcconfig = s.pod_target_xcconfig || {}
39
+ s.pod_target_xcconfig = base_xcconfig.merge(current_xcconfig)
40
+
34
41
  s.user_target_xcconfig = {
35
42
  'OTHER_LDFLAGS' => '-lc++'
36
43
  }
@@ -19,13 +19,6 @@ public class BleNitroModule: NSObject {
19
19
  public func constantsToExport() -> [String: Any] {
20
20
  return [:]
21
21
  }
22
- }
23
-
24
- /**
25
- * Nitro module factory for creating BLE manager instances
26
- */
27
- @_cdecl("create_ble_nitro_manager")
28
- public func createBleNitroManager() -> UnsafeMutableRawPointer {
29
- let manager = BleNitroBleManager()
30
- return Unmanaged.passRetained(manager).toOpaque()
22
+
23
+ // Autolinking handles the Nitro registration automatically
31
24
  }
package/nitro.json CHANGED
@@ -8,7 +8,12 @@
8
8
  "androidNamespace": ["co", "zyke", "ble"],
9
9
  "androidCxxLibName": "BleNitro"
10
10
  },
11
- "autolinking": {},
11
+ "autolinking": {
12
+ "BleManager": {
13
+ "swift": "BleNitroBleManager",
14
+ "kotlin": "BleNitroBleManager"
15
+ }
16
+ },
12
17
  "ignorePaths": [
13
18
  "**/node_modules"
14
19
  ]
@@ -0,0 +1 @@
1
+ ** linguist-generated=true
@@ -0,0 +1,86 @@
1
+ #
2
+ # BleNitro+autolinking.cmake
3
+ # This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ # https://github.com/mrousavy/nitro
5
+ # Copyright © 2025 Marc Rousavy @ Margelo
6
+ #
7
+
8
+ # This is a CMake file that adds all files generated by Nitrogen
9
+ # to the current CMake project.
10
+ #
11
+ # To use it, add this to your CMakeLists.txt:
12
+ # ```cmake
13
+ # include(${CMAKE_SOURCE_DIR}/../nitrogen/generated/android/BleNitro+autolinking.cmake)
14
+ # ```
15
+
16
+ # Add all headers that were generated by Nitrogen
17
+ include_directories(
18
+ "../nitrogen/generated/shared/c++"
19
+ "../nitrogen/generated/android/c++"
20
+ "../nitrogen/generated/android/"
21
+ )
22
+
23
+ # Add all .cpp sources that were generated by Nitrogen
24
+ target_sources(
25
+ # CMake project name (Android C++ library name)
26
+ BleNitro PRIVATE
27
+ # Autolinking Setup
28
+ ../nitrogen/generated/android/BleNitroOnLoad.cpp
29
+ # Shared Nitrogen C++ sources
30
+ ../nitrogen/generated/shared/c++/HybridBleManagerSpec.cpp
31
+ ../nitrogen/generated/shared/c++/HybridCharacteristicSpec.cpp
32
+ ../nitrogen/generated/shared/c++/HybridDescriptorSpec.cpp
33
+ ../nitrogen/generated/shared/c++/HybridDeviceSpec.cpp
34
+ ../nitrogen/generated/shared/c++/HybridServiceSpec.cpp
35
+ # Android-specific Nitrogen C++ sources
36
+ ../nitrogen/generated/android/c++/JHybridBleManagerSpec.cpp
37
+ ../nitrogen/generated/android/c++/JHybridCharacteristicSpec.cpp
38
+ ../nitrogen/generated/android/c++/JHybridDescriptorSpec.cpp
39
+ ../nitrogen/generated/android/c++/JHybridDeviceSpec.cpp
40
+ ../nitrogen/generated/android/c++/JHybridServiceSpec.cpp
41
+ )
42
+
43
+ # Define a flag to check if we are building properly
44
+ add_definitions(-DBUILDING_BLENITRO_WITH_GENERATED_CMAKE_PROJECT)
45
+
46
+ # From node_modules/react-native/ReactAndroid/cmake-utils/folly-flags.cmake
47
+ # Used in node_modules/react-native/ReactAndroid/cmake-utils/ReactNative-application.cmake
48
+ target_compile_definitions(
49
+ BleNitro PRIVATE
50
+ -DFOLLY_NO_CONFIG=1
51
+ -DFOLLY_HAVE_CLOCK_GETTIME=1
52
+ -DFOLLY_USE_LIBCPP=1
53
+ -DFOLLY_CFG_NO_COROUTINES=1
54
+ -DFOLLY_MOBILE=1
55
+ -DFOLLY_HAVE_RECVMMSG=1
56
+ -DFOLLY_HAVE_PTHREAD=1
57
+ # Once we target android-23 above, we can comment
58
+ # the following line. NDK uses GNU style stderror_r() after API 23.
59
+ -DFOLLY_HAVE_XSI_STRERROR_R=1
60
+ )
61
+
62
+ # Add all libraries required by the generated specs
63
+ find_package(fbjni REQUIRED) # <-- Used for communication between Java <-> C++
64
+ find_package(ReactAndroid REQUIRED) # <-- Used to set up React Native bindings (e.g. CallInvoker/TurboModule)
65
+ find_package(react-native-nitro-modules REQUIRED) # <-- Used to create all HybridObjects and use the Nitro core library
66
+
67
+ # Link all libraries together
68
+ target_link_libraries(
69
+ BleNitro
70
+ fbjni::fbjni # <-- Facebook C++ JNI helpers
71
+ ReactAndroid::jsi # <-- RN: JSI
72
+ react-native-nitro-modules::NitroModules # <-- NitroModules Core :)
73
+ )
74
+
75
+ # Link react-native (different prefab between RN 0.75 and RN 0.76)
76
+ if(ReactAndroid_VERSION_MINOR GREATER_EQUAL 76)
77
+ target_link_libraries(
78
+ BleNitro
79
+ ReactAndroid::reactnative # <-- RN: Native Modules umbrella prefab
80
+ )
81
+ else()
82
+ target_link_libraries(
83
+ BleNitro
84
+ ReactAndroid::react_nativemodule_core # <-- RN: TurboModules Core
85
+ )
86
+ endif()
@@ -0,0 +1,27 @@
1
+ ///
2
+ /// BleNitro+autolinking.gradle
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © 2025 Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ /// This is a Gradle file that adds all files generated by Nitrogen
9
+ /// to the current Gradle project.
10
+ ///
11
+ /// To use it, add this to your build.gradle:
12
+ /// ```gradle
13
+ /// apply from: '../nitrogen/generated/android/BleNitro+autolinking.gradle'
14
+ /// ```
15
+
16
+ logger.warn("[NitroModules] 🔥 BleNitro is boosted by nitro!")
17
+
18
+ android {
19
+ sourceSets {
20
+ main {
21
+ java.srcDirs += [
22
+ // Nitrogen files
23
+ "${project.projectDir}/../nitrogen/generated/android/kotlin"
24
+ ]
25
+ }
26
+ }
27
+ }
@@ -0,0 +1,62 @@
1
+ ///
2
+ /// BleNitroOnLoad.cpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © 2025 Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #ifndef BUILDING_BLENITRO_WITH_GENERATED_CMAKE_PROJECT
9
+ #error BleNitroOnLoad.cpp is not being built with the autogenerated CMakeLists.txt project. Is a different CMakeLists.txt building this?
10
+ #endif
11
+
12
+ #include "BleNitroOnLoad.hpp"
13
+
14
+ #include <jni.h>
15
+ #include <fbjni/fbjni.h>
16
+ #include <NitroModules/HybridObjectRegistry.hpp>
17
+
18
+ #include "JHybridBleManagerSpec.hpp"
19
+ #include "JFunc_void.hpp"
20
+ #include "JFunc_void_State.hpp"
21
+ #include "JFunc_void_std__optional_NativeBleError__std__optional_NativeDevice_.hpp"
22
+ #include "JFunc_void_std__optional_NativeBleError__std__optional_NativeCharacteristic_.hpp"
23
+ #include "JHybridCharacteristicSpec.hpp"
24
+ #include "JHybridDescriptorSpec.hpp"
25
+ #include "JHybridDeviceSpec.hpp"
26
+ #include "JHybridServiceSpec.hpp"
27
+ #include <NitroModules/JNISharedPtr.hpp>
28
+ #include <NitroModules/DefaultConstructableObject.hpp>
29
+
30
+ namespace margelo::nitro::co::zyke::ble {
31
+
32
+ int initialize(JavaVM* vm) {
33
+ using namespace margelo::nitro;
34
+ using namespace margelo::nitro::co::zyke::ble;
35
+ using namespace facebook;
36
+
37
+ return facebook::jni::initialize(vm, [] {
38
+ // Register native JNI methods
39
+ margelo::nitro::co::zyke::ble::JHybridBleManagerSpec::registerNatives();
40
+ margelo::nitro::co::zyke::ble::JFunc_void_cxx::registerNatives();
41
+ margelo::nitro::co::zyke::ble::JFunc_void_State_cxx::registerNatives();
42
+ margelo::nitro::co::zyke::ble::JFunc_void_std__optional_NativeBleError__std__optional_NativeDevice__cxx::registerNatives();
43
+ margelo::nitro::co::zyke::ble::JFunc_void_std__optional_NativeBleError__std__optional_NativeCharacteristic__cxx::registerNatives();
44
+ margelo::nitro::co::zyke::ble::JHybridCharacteristicSpec::registerNatives();
45
+ margelo::nitro::co::zyke::ble::JHybridDescriptorSpec::registerNatives();
46
+ margelo::nitro::co::zyke::ble::JHybridDeviceSpec::registerNatives();
47
+ margelo::nitro::co::zyke::ble::JHybridServiceSpec::registerNatives();
48
+
49
+ // Register Nitro Hybrid Objects
50
+ HybridObjectRegistry::registerHybridObjectConstructor(
51
+ "BleManager",
52
+ []() -> std::shared_ptr<HybridObject> {
53
+ static DefaultConstructableObject<JHybridBleManagerSpec::javaobject> object("com/margelo/nitro/co/zyke/ble/BleNitroBleManager");
54
+ auto instance = object.create();
55
+ auto globalRef = jni::make_global(instance);
56
+ return JNISharedPtr::make_shared_from_jni<JHybridBleManagerSpec>(globalRef);
57
+ }
58
+ );
59
+ });
60
+ }
61
+
62
+ } // namespace margelo::nitro::co::zyke::ble
@@ -0,0 +1,25 @@
1
+ ///
2
+ /// BleNitroOnLoad.hpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © 2025 Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #include <jni.h>
9
+ #include <NitroModules/NitroDefines.hpp>
10
+
11
+ namespace margelo::nitro::co::zyke::ble {
12
+
13
+ /**
14
+ * Initializes the native (C++) part of BleNitro, and autolinks all Hybrid Objects.
15
+ * Call this in your `JNI_OnLoad` function (probably inside `cpp-adapter.cpp`).
16
+ * Example:
17
+ * ```cpp (cpp-adapter.cpp)
18
+ * JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM* vm, void*) {
19
+ * return margelo::nitro::co::zyke::ble::initialize(vm);
20
+ * }
21
+ * ```
22
+ */
23
+ int initialize(JavaVM* vm);
24
+
25
+ } // namespace margelo::nitro::co::zyke::ble
@@ -0,0 +1,107 @@
1
+ ///
2
+ /// JBleATTErrorCode.hpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © 2025 Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #pragma once
9
+
10
+ #include <fbjni/fbjni.h>
11
+ #include "BleATTErrorCode.hpp"
12
+
13
+ namespace margelo::nitro::co::zyke::ble {
14
+
15
+ using namespace facebook;
16
+
17
+ /**
18
+ * The C++ JNI bridge between the C++ enum "BleATTErrorCode" and the the Kotlin enum "BleATTErrorCode".
19
+ */
20
+ struct JBleATTErrorCode final: public jni::JavaClass<JBleATTErrorCode> {
21
+ public:
22
+ static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/co/zyke/ble/BleATTErrorCode;";
23
+
24
+ public:
25
+ /**
26
+ * Convert this Java/Kotlin-based enum to the C++ enum BleATTErrorCode.
27
+ */
28
+ [[maybe_unused]]
29
+ [[nodiscard]]
30
+ BleATTErrorCode toCpp() const {
31
+ static const auto clazz = javaClassStatic();
32
+ static const auto fieldOrdinal = clazz->getField<int>("_ordinal");
33
+ int ordinal = this->getFieldValue(fieldOrdinal);
34
+ return static_cast<BleATTErrorCode>(ordinal);
35
+ }
36
+
37
+ public:
38
+ /**
39
+ * Create a Java/Kotlin-based enum with the given C++ enum's value.
40
+ */
41
+ [[maybe_unused]]
42
+ static jni::alias_ref<JBleATTErrorCode> fromCpp(BleATTErrorCode value) {
43
+ static const auto clazz = javaClassStatic();
44
+ static const auto fieldSUCCESS = clazz->getStaticField<JBleATTErrorCode>("SUCCESS");
45
+ static const auto fieldINVALIDHANDLE = clazz->getStaticField<JBleATTErrorCode>("INVALIDHANDLE");
46
+ static const auto fieldREADNOTPERMITTED = clazz->getStaticField<JBleATTErrorCode>("READNOTPERMITTED");
47
+ static const auto fieldWRITENOTPERMITTED = clazz->getStaticField<JBleATTErrorCode>("WRITENOTPERMITTED");
48
+ static const auto fieldINVALIDPDU = clazz->getStaticField<JBleATTErrorCode>("INVALIDPDU");
49
+ static const auto fieldINSUFFICIENTAUTHENTICATION = clazz->getStaticField<JBleATTErrorCode>("INSUFFICIENTAUTHENTICATION");
50
+ static const auto fieldREQUESTNOTSUPPORTED = clazz->getStaticField<JBleATTErrorCode>("REQUESTNOTSUPPORTED");
51
+ static const auto fieldINVALIDOFFSET = clazz->getStaticField<JBleATTErrorCode>("INVALIDOFFSET");
52
+ static const auto fieldINSUFFICIENTAUTHORIZATION = clazz->getStaticField<JBleATTErrorCode>("INSUFFICIENTAUTHORIZATION");
53
+ static const auto fieldPREPAREQUEUEFULL = clazz->getStaticField<JBleATTErrorCode>("PREPAREQUEUEFULL");
54
+ static const auto fieldATTRIBUTENOTFOUND = clazz->getStaticField<JBleATTErrorCode>("ATTRIBUTENOTFOUND");
55
+ static const auto fieldATTRIBUTENOTLONG = clazz->getStaticField<JBleATTErrorCode>("ATTRIBUTENOTLONG");
56
+ static const auto fieldINSUFFICIENTENCRYPTIONKEYSIZE = clazz->getStaticField<JBleATTErrorCode>("INSUFFICIENTENCRYPTIONKEYSIZE");
57
+ static const auto fieldINVALIDATTRIBUTEVALUELENGTH = clazz->getStaticField<JBleATTErrorCode>("INVALIDATTRIBUTEVALUELENGTH");
58
+ static const auto fieldUNLIKELYERROR = clazz->getStaticField<JBleATTErrorCode>("UNLIKELYERROR");
59
+ static const auto fieldINSUFFICIENTENCRYPTION = clazz->getStaticField<JBleATTErrorCode>("INSUFFICIENTENCRYPTION");
60
+ static const auto fieldUNSUPPORTEDGROUPTYPE = clazz->getStaticField<JBleATTErrorCode>("UNSUPPORTEDGROUPTYPE");
61
+ static const auto fieldINSUFFICIENTRESOURCES = clazz->getStaticField<JBleATTErrorCode>("INSUFFICIENTRESOURCES");
62
+
63
+ switch (value) {
64
+ case BleATTErrorCode::SUCCESS:
65
+ return clazz->getStaticFieldValue(fieldSUCCESS);
66
+ case BleATTErrorCode::INVALIDHANDLE:
67
+ return clazz->getStaticFieldValue(fieldINVALIDHANDLE);
68
+ case BleATTErrorCode::READNOTPERMITTED:
69
+ return clazz->getStaticFieldValue(fieldREADNOTPERMITTED);
70
+ case BleATTErrorCode::WRITENOTPERMITTED:
71
+ return clazz->getStaticFieldValue(fieldWRITENOTPERMITTED);
72
+ case BleATTErrorCode::INVALIDPDU:
73
+ return clazz->getStaticFieldValue(fieldINVALIDPDU);
74
+ case BleATTErrorCode::INSUFFICIENTAUTHENTICATION:
75
+ return clazz->getStaticFieldValue(fieldINSUFFICIENTAUTHENTICATION);
76
+ case BleATTErrorCode::REQUESTNOTSUPPORTED:
77
+ return clazz->getStaticFieldValue(fieldREQUESTNOTSUPPORTED);
78
+ case BleATTErrorCode::INVALIDOFFSET:
79
+ return clazz->getStaticFieldValue(fieldINVALIDOFFSET);
80
+ case BleATTErrorCode::INSUFFICIENTAUTHORIZATION:
81
+ return clazz->getStaticFieldValue(fieldINSUFFICIENTAUTHORIZATION);
82
+ case BleATTErrorCode::PREPAREQUEUEFULL:
83
+ return clazz->getStaticFieldValue(fieldPREPAREQUEUEFULL);
84
+ case BleATTErrorCode::ATTRIBUTENOTFOUND:
85
+ return clazz->getStaticFieldValue(fieldATTRIBUTENOTFOUND);
86
+ case BleATTErrorCode::ATTRIBUTENOTLONG:
87
+ return clazz->getStaticFieldValue(fieldATTRIBUTENOTLONG);
88
+ case BleATTErrorCode::INSUFFICIENTENCRYPTIONKEYSIZE:
89
+ return clazz->getStaticFieldValue(fieldINSUFFICIENTENCRYPTIONKEYSIZE);
90
+ case BleATTErrorCode::INVALIDATTRIBUTEVALUELENGTH:
91
+ return clazz->getStaticFieldValue(fieldINVALIDATTRIBUTEVALUELENGTH);
92
+ case BleATTErrorCode::UNLIKELYERROR:
93
+ return clazz->getStaticFieldValue(fieldUNLIKELYERROR);
94
+ case BleATTErrorCode::INSUFFICIENTENCRYPTION:
95
+ return clazz->getStaticFieldValue(fieldINSUFFICIENTENCRYPTION);
96
+ case BleATTErrorCode::UNSUPPORTEDGROUPTYPE:
97
+ return clazz->getStaticFieldValue(fieldUNSUPPORTEDGROUPTYPE);
98
+ case BleATTErrorCode::INSUFFICIENTRESOURCES:
99
+ return clazz->getStaticFieldValue(fieldINSUFFICIENTRESOURCES);
100
+ default:
101
+ std::string stringValue = std::to_string(static_cast<int>(value));
102
+ throw std::invalid_argument("Invalid enum value (" + stringValue + "!");
103
+ }
104
+ }
105
+ };
106
+
107
+ } // namespace margelo::nitro::co::zyke::ble
@@ -0,0 +1,101 @@
1
+ ///
2
+ /// JBleAndroidErrorCode.hpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © 2025 Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #pragma once
9
+
10
+ #include <fbjni/fbjni.h>
11
+ #include "BleAndroidErrorCode.hpp"
12
+
13
+ namespace margelo::nitro::co::zyke::ble {
14
+
15
+ using namespace facebook;
16
+
17
+ /**
18
+ * The C++ JNI bridge between the C++ enum "BleAndroidErrorCode" and the the Kotlin enum "BleAndroidErrorCode".
19
+ */
20
+ struct JBleAndroidErrorCode final: public jni::JavaClass<JBleAndroidErrorCode> {
21
+ public:
22
+ static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/co/zyke/ble/BleAndroidErrorCode;";
23
+
24
+ public:
25
+ /**
26
+ * Convert this Java/Kotlin-based enum to the C++ enum BleAndroidErrorCode.
27
+ */
28
+ [[maybe_unused]]
29
+ [[nodiscard]]
30
+ BleAndroidErrorCode toCpp() const {
31
+ static const auto clazz = javaClassStatic();
32
+ static const auto fieldOrdinal = clazz->getField<int>("_ordinal");
33
+ int ordinal = this->getFieldValue(fieldOrdinal);
34
+ return static_cast<BleAndroidErrorCode>(ordinal);
35
+ }
36
+
37
+ public:
38
+ /**
39
+ * Create a Java/Kotlin-based enum with the given C++ enum's value.
40
+ */
41
+ [[maybe_unused]]
42
+ static jni::alias_ref<JBleAndroidErrorCode> fromCpp(BleAndroidErrorCode value) {
43
+ static const auto clazz = javaClassStatic();
44
+ static const auto fieldNORESOURCES = clazz->getStaticField<JBleAndroidErrorCode>("NORESOURCES");
45
+ static const auto fieldINTERNALERROR = clazz->getStaticField<JBleAndroidErrorCode>("INTERNALERROR");
46
+ static const auto fieldWRONGSTATE = clazz->getStaticField<JBleAndroidErrorCode>("WRONGSTATE");
47
+ static const auto fieldDBFULL = clazz->getStaticField<JBleAndroidErrorCode>("DBFULL");
48
+ static const auto fieldBUSY = clazz->getStaticField<JBleAndroidErrorCode>("BUSY");
49
+ static const auto fieldERROR = clazz->getStaticField<JBleAndroidErrorCode>("ERROR");
50
+ static const auto fieldCMDSTARTED = clazz->getStaticField<JBleAndroidErrorCode>("CMDSTARTED");
51
+ static const auto fieldILLEGALPARAMETER = clazz->getStaticField<JBleAndroidErrorCode>("ILLEGALPARAMETER");
52
+ static const auto fieldPENDING = clazz->getStaticField<JBleAndroidErrorCode>("PENDING");
53
+ static const auto fieldAUTHFAIL = clazz->getStaticField<JBleAndroidErrorCode>("AUTHFAIL");
54
+ static const auto fieldMORE = clazz->getStaticField<JBleAndroidErrorCode>("MORE");
55
+ static const auto fieldINVALIDCFG = clazz->getStaticField<JBleAndroidErrorCode>("INVALIDCFG");
56
+ static const auto fieldSERVICESTARTED = clazz->getStaticField<JBleAndroidErrorCode>("SERVICESTARTED");
57
+ static const auto fieldENCRYPEDNOMITM = clazz->getStaticField<JBleAndroidErrorCode>("ENCRYPEDNOMITM");
58
+ static const auto fieldNOTENCRYPTED = clazz->getStaticField<JBleAndroidErrorCode>("NOTENCRYPTED");
59
+ static const auto fieldCONGESTED = clazz->getStaticField<JBleAndroidErrorCode>("CONGESTED");
60
+
61
+ switch (value) {
62
+ case BleAndroidErrorCode::NORESOURCES:
63
+ return clazz->getStaticFieldValue(fieldNORESOURCES);
64
+ case BleAndroidErrorCode::INTERNALERROR:
65
+ return clazz->getStaticFieldValue(fieldINTERNALERROR);
66
+ case BleAndroidErrorCode::WRONGSTATE:
67
+ return clazz->getStaticFieldValue(fieldWRONGSTATE);
68
+ case BleAndroidErrorCode::DBFULL:
69
+ return clazz->getStaticFieldValue(fieldDBFULL);
70
+ case BleAndroidErrorCode::BUSY:
71
+ return clazz->getStaticFieldValue(fieldBUSY);
72
+ case BleAndroidErrorCode::ERROR:
73
+ return clazz->getStaticFieldValue(fieldERROR);
74
+ case BleAndroidErrorCode::CMDSTARTED:
75
+ return clazz->getStaticFieldValue(fieldCMDSTARTED);
76
+ case BleAndroidErrorCode::ILLEGALPARAMETER:
77
+ return clazz->getStaticFieldValue(fieldILLEGALPARAMETER);
78
+ case BleAndroidErrorCode::PENDING:
79
+ return clazz->getStaticFieldValue(fieldPENDING);
80
+ case BleAndroidErrorCode::AUTHFAIL:
81
+ return clazz->getStaticFieldValue(fieldAUTHFAIL);
82
+ case BleAndroidErrorCode::MORE:
83
+ return clazz->getStaticFieldValue(fieldMORE);
84
+ case BleAndroidErrorCode::INVALIDCFG:
85
+ return clazz->getStaticFieldValue(fieldINVALIDCFG);
86
+ case BleAndroidErrorCode::SERVICESTARTED:
87
+ return clazz->getStaticFieldValue(fieldSERVICESTARTED);
88
+ case BleAndroidErrorCode::ENCRYPEDNOMITM:
89
+ return clazz->getStaticFieldValue(fieldENCRYPEDNOMITM);
90
+ case BleAndroidErrorCode::NOTENCRYPTED:
91
+ return clazz->getStaticFieldValue(fieldNOTENCRYPTED);
92
+ case BleAndroidErrorCode::CONGESTED:
93
+ return clazz->getStaticFieldValue(fieldCONGESTED);
94
+ default:
95
+ std::string stringValue = std::to_string(static_cast<int>(value));
96
+ throw std::invalid_argument("Invalid enum value (" + stringValue + "!");
97
+ }
98
+ }
99
+ };
100
+
101
+ } // namespace margelo::nitro::co::zyke::ble