simpleble 0.0.1

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 (341) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +88 -0
  3. data/LICENSE.txt +21 -0
  4. data/README.md +350 -0
  5. data/ext/simpleble/extconf.rb +57 -0
  6. data/ext/simpleble/simpleble_ruby.c +682 -0
  7. data/lib/simpleble/adapter.rb +10 -0
  8. data/lib/simpleble/characteristic.rb +36 -0
  9. data/lib/simpleble/descriptor.rb +8 -0
  10. data/lib/simpleble/exceptions.rb +25 -0
  11. data/lib/simpleble/peripheral.rb +64 -0
  12. data/lib/simpleble/service.rb +16 -0
  13. data/lib/simpleble/version.rb +3 -0
  14. data/lib/simpleble.rb +40 -0
  15. data/vendor/simpleble/build_simplecble/CMakeFiles/4.0.3/CompilerIdCXX/CMakeCXXCompilerId.cpp +920 -0
  16. data/vendor/simpleble/build_simplecble/CMakeFiles/4.0.3/CompilerIdCXX/apple-sdk.cpp +1 -0
  17. data/vendor/simpleble/build_simplecble/CMakeFiles/4.1.0/CompilerIdCXX/CMakeCXXCompilerId.cpp +949 -0
  18. data/vendor/simpleble/build_simplecble/CMakeFiles/4.1.0/CompilerIdCXX/apple-sdk.cpp +1 -0
  19. data/vendor/simpleble/build_simplecble/export/simplecble/export.h +43 -0
  20. data/vendor/simpleble/build_simplecble/simpleble/export/simpleble/export.h +43 -0
  21. data/vendor/simpleble/dependencies/external/kvn/kvn_bytearray.h +222 -0
  22. data/vendor/simpleble/dependencies/external/kvn/kvn_safe_callback.hpp +66 -0
  23. data/vendor/simpleble/dependencies/external/kvn/logfwd.hpp +35 -0
  24. data/vendor/simpleble/dependencies/internal/fmt/args.h +220 -0
  25. data/vendor/simpleble/dependencies/internal/fmt/base.h +2962 -0
  26. data/vendor/simpleble/dependencies/internal/fmt/chrono.h +2338 -0
  27. data/vendor/simpleble/dependencies/internal/fmt/color.h +610 -0
  28. data/vendor/simpleble/dependencies/internal/fmt/compile.h +539 -0
  29. data/vendor/simpleble/dependencies/internal/fmt/core.h +5 -0
  30. data/vendor/simpleble/dependencies/internal/fmt/format-inl.h +1949 -0
  31. data/vendor/simpleble/dependencies/internal/fmt/format.h +4244 -0
  32. data/vendor/simpleble/dependencies/internal/fmt/os.h +427 -0
  33. data/vendor/simpleble/dependencies/internal/fmt/ostream.h +166 -0
  34. data/vendor/simpleble/dependencies/internal/fmt/printf.h +633 -0
  35. data/vendor/simpleble/dependencies/internal/fmt/ranges.h +850 -0
  36. data/vendor/simpleble/dependencies/internal/fmt/std.h +726 -0
  37. data/vendor/simpleble/dependencies/internal/fmt/xchar.h +373 -0
  38. data/vendor/simpleble/dependencies/internal/simplejni/Common.hpp +579 -0
  39. data/vendor/simpleble/dependencies/internal/simplejni/References.hpp +151 -0
  40. data/vendor/simpleble/dependencies/internal/simplejni/Registry.hpp +183 -0
  41. data/vendor/simpleble/dependencies/internal/simplejni/VM.hpp +88 -0
  42. data/vendor/simpleble/examples/simpleble/src/connect.cpp +67 -0
  43. data/vendor/simpleble/examples/simpleble/src/connect_safe.cpp +91 -0
  44. data/vendor/simpleble/examples/simpleble/src/list_adapters.cpp +22 -0
  45. data/vendor/simpleble/examples/simpleble/src/list_adapters_safe.cpp +33 -0
  46. data/vendor/simpleble/examples/simpleble/src/list_paired.cpp +27 -0
  47. data/vendor/simpleble/examples/simpleble/src/multiconnect.cpp +60 -0
  48. data/vendor/simpleble/examples/simpleble/src/notify.cpp +85 -0
  49. data/vendor/simpleble/examples/simpleble/src/notify_multi.cpp +101 -0
  50. data/vendor/simpleble/examples/simpleble/src/power_cycle.cpp +43 -0
  51. data/vendor/simpleble/examples/simpleble/src/read.cpp +82 -0
  52. data/vendor/simpleble/examples/simpleble/src/scan.cpp +62 -0
  53. data/vendor/simpleble/examples/simpleble/src/utils.cpp +59 -0
  54. data/vendor/simpleble/examples/simpleble/src/utils.hpp +27 -0
  55. data/vendor/simpleble/examples/simpleble/src/write.cpp +81 -0
  56. data/vendor/simpleble/examples/simplebluez/ble_nus/ble_nus.cpp +138 -0
  57. data/vendor/simpleble/examples/simplebluez/connect/connect.cpp +119 -0
  58. data/vendor/simpleble/examples/simplebluez/list_adapters/list_adapters.cpp +44 -0
  59. data/vendor/simpleble/examples/simplebluez/list_paired/list_paired.cpp +48 -0
  60. data/vendor/simpleble/examples/simplebluez/notify/notify.cpp +145 -0
  61. data/vendor/simpleble/examples/simplebluez/pair/pair.cpp +181 -0
  62. data/vendor/simpleble/examples/simplebluez/read/read.cpp +141 -0
  63. data/vendor/simpleble/examples/simplebluez/scan/scan.cpp +85 -0
  64. data/vendor/simpleble/examples/simplecble/c/connect.c +163 -0
  65. data/vendor/simpleble/examples/simplecble/c/notify.c +217 -0
  66. data/vendor/simpleble/examples/simplecble/c/scan.c +164 -0
  67. data/vendor/simpleble/examples/simpledbus/notification.cpp +24 -0
  68. data/vendor/simpleble/hitl/src/test_sanity.cpp +48 -0
  69. data/vendor/simpleble/install_simplecble/include/simpleble/Adapter.h +102 -0
  70. data/vendor/simpleble/install_simplecble/include/simpleble/AdapterSafe.h +58 -0
  71. data/vendor/simpleble/install_simplecble/include/simpleble/Advanced.h +50 -0
  72. data/vendor/simpleble/install_simplecble/include/simpleble/Characteristic.h +39 -0
  73. data/vendor/simpleble/install_simplecble/include/simpleble/Config.h +55 -0
  74. data/vendor/simpleble/install_simplecble/include/simpleble/Descriptor.h +30 -0
  75. data/vendor/simpleble/install_simplecble/include/simpleble/Exceptions.h +72 -0
  76. data/vendor/simpleble/install_simplecble/include/simpleble/Logging.h +73 -0
  77. data/vendor/simpleble/install_simplecble/include/simpleble/Peripheral.h +82 -0
  78. data/vendor/simpleble/install_simplecble/include/simpleble/PeripheralSafe.h +64 -0
  79. data/vendor/simpleble/install_simplecble/include/simpleble/Service.h +34 -0
  80. data/vendor/simpleble/install_simplecble/include/simpleble/SimpleBLE.h +8 -0
  81. data/vendor/simpleble/install_simplecble/include/simpleble/Types.h +49 -0
  82. data/vendor/simpleble/install_simplecble/include/simpleble/Utils.h +13 -0
  83. data/vendor/simpleble/install_simplecble/include/simpleble/export.h +43 -0
  84. data/vendor/simpleble/install_simplecble/include/simpleble/kvn/kvn_bytearray.h +222 -0
  85. data/vendor/simpleble/install_simplecble/include/simplecble/adapter.h +188 -0
  86. data/vendor/simpleble/install_simplecble/include/simplecble/logging.h +37 -0
  87. data/vendor/simpleble/install_simplecble/include/simplecble/peripheral.h +304 -0
  88. data/vendor/simpleble/install_simplecble/include/simplecble/simpleble.h +21 -0
  89. data/vendor/simpleble/install_simplecble/include/simplecble/types.h +73 -0
  90. data/vendor/simpleble/install_simplecble/include/simplecble/utils.h +27 -0
  91. data/vendor/simpleble/simpleble/include/simpleble/Adapter.h +102 -0
  92. data/vendor/simpleble/simpleble/include/simpleble/AdapterSafe.h +58 -0
  93. data/vendor/simpleble/simpleble/include/simpleble/Characteristic.h +39 -0
  94. data/vendor/simpleble/simpleble/include/simpleble/Config.h +55 -0
  95. data/vendor/simpleble/simpleble/include/simpleble/Descriptor.h +30 -0
  96. data/vendor/simpleble/simpleble/include/simpleble/Exceptions.h +72 -0
  97. data/vendor/simpleble/simpleble/include/simpleble/Logging.h +73 -0
  98. data/vendor/simpleble/simpleble/include/simpleble/Peripheral.h +82 -0
  99. data/vendor/simpleble/simpleble/include/simpleble/PeripheralSafe.h +64 -0
  100. data/vendor/simpleble/simpleble/include/simpleble/Service.h +34 -0
  101. data/vendor/simpleble/simpleble/include/simpleble/SimpleBLE.h +8 -0
  102. data/vendor/simpleble/simpleble/include/simpleble/Types.h +49 -0
  103. data/vendor/simpleble/simpleble/include/simpleble/Utils.h +13 -0
  104. data/vendor/simpleble/simpleble/include/simpleble_c/adapter.h +188 -0
  105. data/vendor/simpleble/simpleble/include/simpleble_c/logging.h +37 -0
  106. data/vendor/simpleble/simpleble/include/simpleble_c/peripheral.h +304 -0
  107. data/vendor/simpleble/simpleble/include/simpleble_c/simpleble.h +21 -0
  108. data/vendor/simpleble/simpleble/include/simpleble_c/types.h +73 -0
  109. data/vendor/simpleble/simpleble/include/simpleble_c/utils.h +27 -0
  110. data/vendor/simpleble/simpleble/src/CommonUtils.h +63 -0
  111. data/vendor/simpleble/simpleble/src/Exceptions.cpp +31 -0
  112. data/vendor/simpleble/simpleble/src/Logging.cpp +136 -0
  113. data/vendor/simpleble/simpleble/src/LoggingInternal.h +85 -0
  114. data/vendor/simpleble/simpleble/src/Utils.cpp +24 -0
  115. data/vendor/simpleble/simpleble/src/backends/android/AdapterAndroid.cpp +101 -0
  116. data/vendor/simpleble/simpleble/src/backends/android/AdapterAndroid.h +70 -0
  117. data/vendor/simpleble/simpleble/src/backends/android/BackendAndroid.cpp +40 -0
  118. data/vendor/simpleble/simpleble/src/backends/android/BackendAndroid.h +20 -0
  119. data/vendor/simpleble/simpleble/src/backends/android/PeripheralAndroid.cpp +365 -0
  120. data/vendor/simpleble/simpleble/src/backends/android/PeripheralAndroid.h +90 -0
  121. data/vendor/simpleble/simpleble/src/backends/android/bridge/BluetoothGattCallback.cpp +432 -0
  122. data/vendor/simpleble/simpleble/src/backends/android/bridge/BluetoothGattCallback.h +102 -0
  123. data/vendor/simpleble/simpleble/src/backends/android/bridge/ScanCallback.cpp +142 -0
  124. data/vendor/simpleble/simpleble/src/backends/android/bridge/ScanCallback.h +55 -0
  125. data/vendor/simpleble/simpleble/src/backends/android/types/android/bluetooth/BluetoothAdapter.cpp +107 -0
  126. data/vendor/simpleble/simpleble/src/backends/android/types/android/bluetooth/BluetoothAdapter.h +55 -0
  127. data/vendor/simpleble/simpleble/src/backends/android/types/android/bluetooth/BluetoothDevice.cpp +68 -0
  128. data/vendor/simpleble/simpleble/src/backends/android/types/android/bluetooth/BluetoothDevice.h +54 -0
  129. data/vendor/simpleble/simpleble/src/backends/android/types/android/bluetooth/BluetoothGatt.cpp +115 -0
  130. data/vendor/simpleble/simpleble/src/backends/android/types/android/bluetooth/BluetoothGatt.h +75 -0
  131. data/vendor/simpleble/simpleble/src/backends/android/types/android/bluetooth/BluetoothGattCharacteristic.cpp +142 -0
  132. data/vendor/simpleble/simpleble/src/backends/android/types/android/bluetooth/BluetoothGattCharacteristic.h +66 -0
  133. data/vendor/simpleble/simpleble/src/backends/android/types/android/bluetooth/BluetoothGattDescriptor.cpp +67 -0
  134. data/vendor/simpleble/simpleble/src/backends/android/types/android/bluetooth/BluetoothGattDescriptor.h +46 -0
  135. data/vendor/simpleble/simpleble/src/backends/android/types/android/bluetooth/BluetoothGattService.cpp +106 -0
  136. data/vendor/simpleble/simpleble/src/backends/android/types/android/bluetooth/BluetoothGattService.h +47 -0
  137. data/vendor/simpleble/simpleble/src/backends/android/types/android/bluetooth/le/BluetoothScanner.cpp +47 -0
  138. data/vendor/simpleble/simpleble/src/backends/android/types/android/bluetooth/le/BluetoothScanner.h +37 -0
  139. data/vendor/simpleble/simpleble/src/backends/android/types/android/bluetooth/le/ScanRecord.cpp +69 -0
  140. data/vendor/simpleble/simpleble/src/backends/android/types/android/bluetooth/le/ScanRecord.h +41 -0
  141. data/vendor/simpleble/simpleble/src/backends/android/types/android/bluetooth/le/ScanResult.cpp +63 -0
  142. data/vendor/simpleble/simpleble/src/backends/android/types/android/bluetooth/le/ScanResult.h +42 -0
  143. data/vendor/simpleble/simpleble/src/backends/android/types/android/os/ParcelUUID.cpp +32 -0
  144. data/vendor/simpleble/simpleble/src/backends/android/types/android/os/ParcelUUID.h +30 -0
  145. data/vendor/simpleble/simpleble/src/backends/android/types/android/util/SparseArray.cpp +54 -0
  146. data/vendor/simpleble/simpleble/src/backends/android/types/android/util/SparseArray.h +37 -0
  147. data/vendor/simpleble/simpleble/src/backends/android/types/java/util/Iterator.cpp +36 -0
  148. data/vendor/simpleble/simpleble/src/backends/android/types/java/util/Iterator.h +28 -0
  149. data/vendor/simpleble/simpleble/src/backends/android/types/java/util/List.cpp +29 -0
  150. data/vendor/simpleble/simpleble/src/backends/android/types/java/util/List.h +27 -0
  151. data/vendor/simpleble/simpleble/src/backends/android/types/java/util/Set.cpp +33 -0
  152. data/vendor/simpleble/simpleble/src/backends/android/types/java/util/Set.h +28 -0
  153. data/vendor/simpleble/simpleble/src/backends/android/types/java/util/UUID.cpp +26 -0
  154. data/vendor/simpleble/simpleble/src/backends/android/types/java/util/UUID.h +29 -0
  155. data/vendor/simpleble/simpleble/src/backends/common/AdapterBase.cpp +53 -0
  156. data/vendor/simpleble/simpleble/src/backends/common/AdapterBase.h +81 -0
  157. data/vendor/simpleble/simpleble/src/backends/common/AdapterBaseTypes.h +22 -0
  158. data/vendor/simpleble/simpleble/src/backends/common/BackendBase.h +20 -0
  159. data/vendor/simpleble/simpleble/src/backends/common/BackendUtils.h +33 -0
  160. data/vendor/simpleble/simpleble/src/backends/common/CharacteristicBase.cpp +28 -0
  161. data/vendor/simpleble/simpleble/src/backends/common/CharacteristicBase.h +38 -0
  162. data/vendor/simpleble/simpleble/src/backends/common/DescriptorBase.cpp +7 -0
  163. data/vendor/simpleble/simpleble/src/backends/common/DescriptorBase.h +19 -0
  164. data/vendor/simpleble/simpleble/src/backends/common/PeripheralBase.h +82 -0
  165. data/vendor/simpleble/simpleble/src/backends/common/ServiceBase.cpp +18 -0
  166. data/vendor/simpleble/simpleble/src/backends/common/ServiceBase.h +28 -0
  167. data/vendor/simpleble/simpleble/src/backends/linux/AdapterLinux.cpp +102 -0
  168. data/vendor/simpleble/simpleble/src/backends/linux/AdapterLinux.h +55 -0
  169. data/vendor/simpleble/simpleble/src/backends/linux/BackendBluez.cpp +87 -0
  170. data/vendor/simpleble/simpleble/src/backends/linux/PeripheralLinux.cpp +376 -0
  171. data/vendor/simpleble/simpleble/src/backends/linux/PeripheralLinux.h +90 -0
  172. data/vendor/simpleble/simpleble/src/backends/macos/AdapterBaseMacOS.h +29 -0
  173. data/vendor/simpleble/simpleble/src/backends/macos/AdapterMac.h +78 -0
  174. data/vendor/simpleble/simpleble/src/backends/macos/PeripheralBaseMacOS.h +49 -0
  175. data/vendor/simpleble/simpleble/src/backends/macos/PeripheralMac.h +81 -0
  176. data/vendor/simpleble/simpleble/src/backends/macos/Utils.h +9 -0
  177. data/vendor/simpleble/simpleble/src/backends/plain/AdapterPlain.cpp +65 -0
  178. data/vendor/simpleble/simpleble/src/backends/plain/AdapterPlain.h +49 -0
  179. data/vendor/simpleble/simpleble/src/backends/plain/BackendPlain.cpp +30 -0
  180. data/vendor/simpleble/simpleble/src/backends/plain/PeripheralPlain.cpp +159 -0
  181. data/vendor/simpleble/simpleble/src/backends/plain/PeripheralPlain.h +72 -0
  182. data/vendor/simpleble/simpleble/src/backends/windows/AdapterWindows.cpp +330 -0
  183. data/vendor/simpleble/simpleble/src/backends/windows/AdapterWindows.h +89 -0
  184. data/vendor/simpleble/simpleble/src/backends/windows/BackendWinRT.cpp +67 -0
  185. data/vendor/simpleble/simpleble/src/backends/windows/BackendWinRT.h +18 -0
  186. data/vendor/simpleble/simpleble/src/backends/windows/MtaManager.cpp +49 -0
  187. data/vendor/simpleble/simpleble/src/backends/windows/MtaManager.h +90 -0
  188. data/vendor/simpleble/simpleble/src/backends/windows/PeripheralWindows.cpp +487 -0
  189. data/vendor/simpleble/simpleble/src/backends/windows/PeripheralWindows.h +129 -0
  190. data/vendor/simpleble/simpleble/src/backends/windows/Utils.cpp +146 -0
  191. data/vendor/simpleble/simpleble/src/backends/windows/Utils.h +47 -0
  192. data/vendor/simpleble/simpleble/src/builders/BuildVec.h +32 -0
  193. data/vendor/simpleble/simpleble/src/builders/BuilderBase.h +87 -0
  194. data/vendor/simpleble/simpleble/src/external/TaskRunner.hpp +99 -0
  195. data/vendor/simpleble/simpleble/src/external/ThreadRunner.h +52 -0
  196. data/vendor/simpleble/simpleble/src/external/kvn_safe_callback.hpp +66 -0
  197. data/vendor/simpleble/simpleble/src/external/kvn_safe_map.hpp +94 -0
  198. data/vendor/simpleble/simpleble/src/external/kvn_threadrunner.hpp +70 -0
  199. data/vendor/simpleble/simpleble/src/external/logfwd.hpp +35 -0
  200. data/vendor/simpleble/simpleble/src/frontends/base/Adapter.cpp +111 -0
  201. data/vendor/simpleble/simpleble/src/frontends/base/Backend.cpp +83 -0
  202. data/vendor/simpleble/simpleble/src/frontends/base/Backend.h +76 -0
  203. data/vendor/simpleble/simpleble/src/frontends/base/Characteristic.cpp +56 -0
  204. data/vendor/simpleble/simpleble/src/frontends/base/Descriptor.cpp +21 -0
  205. data/vendor/simpleble/simpleble/src/frontends/base/Peripheral.cpp +113 -0
  206. data/vendor/simpleble/simpleble/src/frontends/base/Service.cpp +26 -0
  207. data/vendor/simpleble/simpleble/src/frontends/safe/AdapterSafe.cpp +158 -0
  208. data/vendor/simpleble/simpleble/src/frontends/safe/PeripheralSafe.cpp +219 -0
  209. data/vendor/simpleble/simpleble/src_c/adapter.cpp +204 -0
  210. data/vendor/simpleble/simpleble/src_c/logging.cpp +19 -0
  211. data/vendor/simpleble/simpleble/src_c/peripheral.cpp +444 -0
  212. data/vendor/simpleble/simpleble/src_c/simpleble.cpp +5 -0
  213. data/vendor/simpleble/simpleble/src_c/utils.cpp +15 -0
  214. data/vendor/simpleble/simpleble/test/src/main.cpp +8 -0
  215. data/vendor/simpleble/simpleble/test/src/test_bytearray.cpp +246 -0
  216. data/vendor/simpleble/simpleble/test/src/test_utils.cpp +24 -0
  217. data/vendor/simpleble/simplebluez/include/simplebluez/Adapter.h +46 -0
  218. data/vendor/simpleble/simplebluez/include/simplebluez/Agent.h +52 -0
  219. data/vendor/simpleble/simplebluez/include/simplebluez/Bluez.h +37 -0
  220. data/vendor/simpleble/simplebluez/include/simplebluez/BluezOrg.h +22 -0
  221. data/vendor/simpleble/simplebluez/include/simplebluez/BluezOrgBluez.h +26 -0
  222. data/vendor/simpleble/simplebluez/include/simplebluez/BluezRoot.h +32 -0
  223. data/vendor/simpleble/simplebluez/include/simplebluez/Characteristic.h +46 -0
  224. data/vendor/simpleble/simplebluez/include/simplebluez/Descriptor.h +33 -0
  225. data/vendor/simpleble/simplebluez/include/simplebluez/Device.h +64 -0
  226. data/vendor/simpleble/simplebluez/include/simplebluez/Exceptions.h +43 -0
  227. data/vendor/simpleble/simplebluez/include/simplebluez/Service.h +27 -0
  228. data/vendor/simpleble/simplebluez/include/simplebluez/Types.h +9 -0
  229. data/vendor/simpleble/simplebluez/include/simplebluez/interfaces/Adapter1.h +49 -0
  230. data/vendor/simpleble/simplebluez/include/simplebluez/interfaces/Agent1.h +100 -0
  231. data/vendor/simpleble/simplebluez/include/simplebluez/interfaces/AgentManager1.h +24 -0
  232. data/vendor/simpleble/simplebluez/include/simplebluez/interfaces/Battery1.h +32 -0
  233. data/vendor/simpleble/simplebluez/include/simplebluez/interfaces/Device1.h +62 -0
  234. data/vendor/simpleble/simplebluez/include/simplebluez/interfaces/GattCharacteristic1.h +48 -0
  235. data/vendor/simpleble/simplebluez/include/simplebluez/interfaces/GattDescriptor1.h +41 -0
  236. data/vendor/simpleble/simplebluez/include/simplebluez/interfaces/GattService1.h +28 -0
  237. data/vendor/simpleble/simplebluez/src/Adapter.cpp +78 -0
  238. data/vendor/simpleble/simplebluez/src/Agent.cpp +72 -0
  239. data/vendor/simpleble/simplebluez/src/Bluez.cpp +45 -0
  240. data/vendor/simpleble/simplebluez/src/BluezOrg.cpp +20 -0
  241. data/vendor/simpleble/simplebluez/src/BluezOrgBluez.cpp +23 -0
  242. data/vendor/simpleble/simplebluez/src/BluezRoot.cpp +44 -0
  243. data/vendor/simpleble/simplebluez/src/Characteristic.cpp +64 -0
  244. data/vendor/simpleble/simplebluez/src/Descriptor.cpp +27 -0
  245. data/vendor/simpleble/simplebluez/src/Device.cpp +104 -0
  246. data/vendor/simpleble/simplebluez/src/Exceptions.cpp +29 -0
  247. data/vendor/simpleble/simplebluez/src/Logging.cpp +52 -0
  248. data/vendor/simpleble/simplebluez/src/Logging.h +57 -0
  249. data/vendor/simpleble/simplebluez/src/Service.cpp +33 -0
  250. data/vendor/simpleble/simplebluez/src/interfaces/Adapter1.cpp +123 -0
  251. data/vendor/simpleble/simplebluez/src/interfaces/Agent1.cpp +143 -0
  252. data/vendor/simpleble/simplebluez/src/interfaces/AgentManager1.cpp +34 -0
  253. data/vendor/simpleble/simplebluez/src/interfaces/Battery1.cpp +30 -0
  254. data/vendor/simpleble/simplebluez/src/interfaces/Device1.cpp +170 -0
  255. data/vendor/simpleble/simplebluez/src/interfaces/GattCharacteristic1.cpp +118 -0
  256. data/vendor/simpleble/simplebluez/src/interfaces/GattDescriptor1.cpp +78 -0
  257. data/vendor/simpleble/simplebluez/src/interfaces/GattService1.cpp +28 -0
  258. data/vendor/simpleble/simplebluez/test/src/helpers/PythonRunner.cpp +53 -0
  259. data/vendor/simpleble/simplebluez/test/src/helpers/PythonRunner.h +24 -0
  260. data/vendor/simpleble/simplebluez/test/src/main.cpp +16 -0
  261. data/vendor/simpleble/simplecble/include/simplecble/adapter.h +188 -0
  262. data/vendor/simpleble/simplecble/include/simplecble/logging.h +37 -0
  263. data/vendor/simpleble/simplecble/include/simplecble/peripheral.h +304 -0
  264. data/vendor/simpleble/simplecble/include/simplecble/simpleble.h +21 -0
  265. data/vendor/simpleble/simplecble/include/simplecble/types.h +73 -0
  266. data/vendor/simpleble/simplecble/include/simplecble/utils.h +27 -0
  267. data/vendor/simpleble/simplecble/src/adapter.cpp +204 -0
  268. data/vendor/simpleble/simplecble/src/logging.cpp +19 -0
  269. data/vendor/simpleble/simplecble/src/peripheral.cpp +444 -0
  270. data/vendor/simpleble/simplecble/src/simpleble.cpp +5 -0
  271. data/vendor/simpleble/simplecble/src/utils.cpp +15 -0
  272. data/vendor/simpleble/simpledbus/include/simpledbus/advanced/Interface.h +67 -0
  273. data/vendor/simpleble/simpledbus/include/simpledbus/advanced/InterfaceRegistry.h +64 -0
  274. data/vendor/simpleble/simpledbus/include/simpledbus/advanced/Proxy.h +117 -0
  275. data/vendor/simpleble/simpledbus/include/simpledbus/base/Connection.h +50 -0
  276. data/vendor/simpleble/simpledbus/include/simpledbus/base/Exceptions.h +56 -0
  277. data/vendor/simpleble/simpledbus/include/simpledbus/base/Holder.h +147 -0
  278. data/vendor/simpleble/simpledbus/include/simpledbus/base/Logging.h +57 -0
  279. data/vendor/simpleble/simpledbus/include/simpledbus/base/Message.h +89 -0
  280. data/vendor/simpleble/simpledbus/include/simpledbus/base/Path.h +24 -0
  281. data/vendor/simpleble/simpledbus/include/simpledbus/interfaces/ObjectManager.h +26 -0
  282. data/vendor/simpleble/simpledbus/src/advanced/Interface.cpp +155 -0
  283. data/vendor/simpleble/simpledbus/src/advanced/Proxy.cpp +375 -0
  284. data/vendor/simpleble/simpledbus/src/base/Connection.cpp +222 -0
  285. data/vendor/simpleble/simpledbus/src/base/Exceptions.cpp +39 -0
  286. data/vendor/simpleble/simpledbus/src/base/Holder.cpp +739 -0
  287. data/vendor/simpleble/simpledbus/src/base/Logging.cpp +52 -0
  288. data/vendor/simpleble/simpledbus/src/base/Message.cpp +622 -0
  289. data/vendor/simpleble/simpledbus/src/base/Path.cpp +129 -0
  290. data/vendor/simpleble/simpledbus/src/interfaces/ObjectManager.cpp +58 -0
  291. data/vendor/simpleble/simpledbus/test/src/helpers/PythonRunner.cpp +53 -0
  292. data/vendor/simpleble/simpledbus/test/src/helpers/PythonRunner.h +24 -0
  293. data/vendor/simpleble/simpledbus/test/src/main.cpp +16 -0
  294. data/vendor/simpleble/simpledbus/test/src/test_holder.cpp +184 -0
  295. data/vendor/simpleble/simpledbus/test/src/test_message.cpp +397 -0
  296. data/vendor/simpleble/simpledbus/test/src/test_path.cpp +76 -0
  297. data/vendor/simpleble/simpledbus/test/src/test_proxy_children.cpp +109 -0
  298. data/vendor/simpleble/simpledbus/test/src/test_proxy_interfaces.cpp +102 -0
  299. data/vendor/simpleble/simpledbus/test/src/test_proxy_lifetime.cpp +18 -0
  300. data/vendor/simpleble/simpledroidble/simpledroidble/src/main/cpp/ThreadRunner.h +89 -0
  301. data/vendor/simpleble/simpledroidble/simpledroidble/src/main/cpp/android_utils.cpp +55 -0
  302. data/vendor/simpleble/simpledroidble/simpledroidble/src/main/cpp/android_utils.h +18 -0
  303. data/vendor/simpleble/simpledroidble/simpledroidble/src/main/cpp/simpleble_android.cpp +813 -0
  304. data/vendor/simpleble/simplejavable/cpp/src/core/AdapterWrapper.cpp +37 -0
  305. data/vendor/simpleble/simplejavable/cpp/src/core/AdapterWrapper.h +23 -0
  306. data/vendor/simpleble/simplejavable/cpp/src/core/Cache.cpp +58 -0
  307. data/vendor/simpleble/simplejavable/cpp/src/core/Cache.h +34 -0
  308. data/vendor/simpleble/simplejavable/cpp/src/core/PeripheralWrapper.cpp +17 -0
  309. data/vendor/simpleble/simplejavable/cpp/src/core/PeripheralWrapper.h +19 -0
  310. data/vendor/simpleble/simplejavable/cpp/src/java/lang/ArrayList.cpp +257 -0
  311. data/vendor/simpleble/simplejavable/cpp/src/java/lang/ArrayList.h +78 -0
  312. data/vendor/simpleble/simplejavable/cpp/src/java/lang/HashMap.cpp +96 -0
  313. data/vendor/simpleble/simplejavable/cpp/src/java/lang/HashMap.h +54 -0
  314. data/vendor/simpleble/simplejavable/cpp/src/java/lang/Integer.cpp +93 -0
  315. data/vendor/simpleble/simplejavable/cpp/src/java/lang/Integer.h +49 -0
  316. data/vendor/simpleble/simplejavable/cpp/src/java/lang/Iterator.cpp +85 -0
  317. data/vendor/simpleble/simplejavable/cpp/src/java/lang/Iterator.h +48 -0
  318. data/vendor/simpleble/simplejavable/cpp/src/org/simplejavable/AdapterCallback.cpp +91 -0
  319. data/vendor/simpleble/simplejavable/cpp/src/org/simplejavable/AdapterCallback.h +90 -0
  320. data/vendor/simpleble/simplejavable/cpp/src/org/simplejavable/Characteristic.cpp +35 -0
  321. data/vendor/simpleble/simplejavable/cpp/src/org/simplejavable/Characteristic.h +60 -0
  322. data/vendor/simpleble/simplejavable/cpp/src/org/simplejavable/DataCallback.cpp +33 -0
  323. data/vendor/simpleble/simplejavable/cpp/src/org/simplejavable/DataCallback.h +45 -0
  324. data/vendor/simpleble/simplejavable/cpp/src/org/simplejavable/Descriptor.cpp +30 -0
  325. data/vendor/simpleble/simplejavable/cpp/src/org/simplejavable/Descriptor.h +49 -0
  326. data/vendor/simpleble/simplejavable/cpp/src/org/simplejavable/PeripheralCallback.cpp +41 -0
  327. data/vendor/simpleble/simplejavable/cpp/src/org/simplejavable/PeripheralCallback.h +51 -0
  328. data/vendor/simpleble/simplejavable/cpp/src/org/simplejavable/Service.cpp +33 -0
  329. data/vendor/simpleble/simplejavable/cpp/src/org/simplejavable/Service.h +54 -0
  330. data/vendor/simpleble/simplejavable/cpp/src/simplejavable.cpp +361 -0
  331. data/vendor/simpleble/simplepyble/src/main.cpp +55 -0
  332. data/vendor/simpleble/simplepyble/src/wrap_adapter.cpp +106 -0
  333. data/vendor/simpleble/simplepyble/src/wrap_characteristic.cpp +56 -0
  334. data/vendor/simpleble/simplepyble/src/wrap_config.cpp +136 -0
  335. data/vendor/simpleble/simplepyble/src/wrap_descriptor.cpp +21 -0
  336. data/vendor/simpleble/simplepyble/src/wrap_peripheral.cpp +217 -0
  337. data/vendor/simpleble/simplepyble/src/wrap_service.cpp +32 -0
  338. data/vendor/simpleble/simplepyble/src/wrap_types.cpp +21 -0
  339. data/vendor/simpleble/simplersble/src/bindings/Bindings.cpp +338 -0
  340. data/vendor/simpleble/simplersble/src/bindings/Bindings.hpp +178 -0
  341. metadata +430 -0
@@ -0,0 +1,93 @@
1
+ #include "Integer.h"
2
+
3
+ namespace Java::Util {
4
+
5
+ template <template <typename> class RefType>
6
+ SimpleJNI::GlobalRef<jclass> Integer<RefType>::_cls;
7
+
8
+ template <template <typename> class RefType>
9
+ jmethodID Integer<RefType>::_method_init = nullptr;
10
+
11
+ template <template <typename> class RefType>
12
+ jmethodID Integer<RefType>::_method_int_value = nullptr;
13
+
14
+ template <template <typename> class RefType>
15
+ jmethodID Integer<RefType>::_method_value_of = nullptr;
16
+
17
+ template <template <typename> class RefType>
18
+ const SimpleJNI::JNIDescriptor Integer<RefType>::descriptor{"java/lang/Integer", // Java class name
19
+ &_cls, // Where to store the jclass
20
+ {
21
+ // Methods to preload
22
+ {"<init>", "(I)V", &_method_init},
23
+ {"intValue", "()I", &_method_int_value},
24
+ }};
25
+
26
+ template <template <typename> class RefType>
27
+ const SimpleJNI::AutoRegister<Integer<RefType>> Integer<RefType>::registrar{&descriptor};
28
+
29
+ template <template <typename> class RefType>
30
+ Integer<RefType>::Integer() : _obj() {}
31
+
32
+ template <template <typename> class RefType>
33
+ Integer<RefType>::Integer(jobject obj) : _obj(obj) {
34
+ if (!_cls.get()) {
35
+ throw std::runtime_error("Integer JNI resources not preloaded");
36
+ }
37
+ }
38
+
39
+ template <template <typename> class RefType>
40
+ Integer<RefType>::Integer(int value) : _obj() {
41
+ if (!_cls.get()) {
42
+ throw std::runtime_error("Integer JNI resources not preloaded");
43
+ }
44
+ JNIEnv* env = SimpleJNI::VM::env();
45
+ jobject obj = env->NewObject(_cls.get(), _method_init, value);
46
+ _obj = SimpleJNI::Object<RefType, jobject>(obj, _cls.get());
47
+ }
48
+
49
+ template <template <typename> class RefType>
50
+ template <template <typename> class OtherRefType>
51
+ Integer<RefType>::Integer(const SimpleJNI::Object<OtherRefType, jobject>& obj) : _obj(obj.get()) {}
52
+
53
+ template <template <typename> class RefType>
54
+ Integer<SimpleJNI::LocalRef> Integer<RefType>::to_local() const {
55
+ if (!*this) return Integer<SimpleJNI::LocalRef>();
56
+ return Integer<SimpleJNI::LocalRef>(_obj.get());
57
+ }
58
+
59
+ template <template <typename> class RefType>
60
+ Integer<SimpleJNI::GlobalRef> Integer<RefType>::to_global() const {
61
+ if (!*this) return Integer<SimpleJNI::GlobalRef>();
62
+ return Integer<SimpleJNI::GlobalRef>(_obj.get());
63
+ }
64
+
65
+ template <template <typename> class RefType>
66
+ jobject Integer<RefType>::get() const {
67
+ return _obj.get();
68
+ }
69
+
70
+ template <template <typename> class RefType>
71
+ Integer<RefType>::operator bool() const {
72
+ return _obj.get() != nullptr;
73
+ }
74
+
75
+ template <template <typename> class RefType>
76
+ int Integer<RefType>::int_value() const {
77
+ if (!*this) {
78
+ throw std::runtime_error("Integer is not initialized");
79
+ }
80
+ return _obj.call_int_method(_method_int_value);
81
+ }
82
+
83
+ template <template <typename> class RefType>
84
+ Integer<RefType>::operator SimpleJNI::Object<RefType, jobject>() const {
85
+ return _obj;
86
+ }
87
+
88
+ // Explicit template instantiations
89
+ template class Integer<SimpleJNI::LocalRef>;
90
+ template class Integer<SimpleJNI::GlobalRef>;
91
+ template class Integer<SimpleJNI::WeakRef>;
92
+ template class Integer<SimpleJNI::ReleasableLocalRef>;
93
+ } // namespace Java::Util
@@ -0,0 +1,49 @@
1
+ #pragma once
2
+
3
+ #include "simplejni/Common.hpp"
4
+ #include "simplejni/Registry.hpp"
5
+
6
+ namespace Java::Util {
7
+
8
+ template <template <typename> class RefType>
9
+ class Integer {
10
+ public:
11
+ Integer();
12
+ explicit Integer(jobject obj);
13
+ explicit Integer(int value);
14
+
15
+ template <template <typename> class OtherRefType>
16
+ Integer(const SimpleJNI::Object<OtherRefType, jobject>& obj);
17
+
18
+ // Conversion methods
19
+ Integer<SimpleJNI::LocalRef> to_local() const;
20
+ Integer<SimpleJNI::GlobalRef> to_global() const;
21
+
22
+ // Get the underlying jobject
23
+ jobject get() const;
24
+
25
+ // Check if the object is valid
26
+ explicit operator bool() const;
27
+
28
+ // Implicit conversion to SimpleJNI::Object
29
+ operator SimpleJNI::Object<RefType, jobject>() const;
30
+
31
+ // Integer methods
32
+ int int_value() const;
33
+
34
+ private:
35
+ // Underlying JNI object
36
+ SimpleJNI::Object<RefType, jobject> _obj;
37
+
38
+ // Static JNI resources
39
+ static SimpleJNI::GlobalRef<jclass> _cls;
40
+ static jmethodID _method_init;
41
+ static jmethodID _method_int_value;
42
+ static jmethodID _method_value_of;
43
+
44
+ // JNI descriptor for auto-registration
45
+ static const SimpleJNI::JNIDescriptor descriptor;
46
+ static const SimpleJNI::AutoRegister<Integer> registrar;
47
+ };
48
+
49
+ } // namespace Java::Util
@@ -0,0 +1,85 @@
1
+ #include "Iterator.h"
2
+
3
+ namespace Java::Util {
4
+
5
+ template <template <typename> class RefType>
6
+ SimpleJNI::GlobalRef<jclass> Iterator<RefType>::_cls;
7
+
8
+ template <template <typename> class RefType>
9
+ jmethodID Iterator<RefType>::_method_has_next = nullptr;
10
+
11
+ template <template <typename> class RefType>
12
+ jmethodID Iterator<RefType>::_method_next = nullptr;
13
+
14
+ template <template <typename> class RefType>
15
+ const SimpleJNI::JNIDescriptor Iterator<RefType>::descriptor{"java/util/Iterator", // Java interface name
16
+ &_cls, // Where to store the jclass
17
+ { // Methods to preload
18
+ {"hasNext", "()Z", &_method_has_next},
19
+ {"next", "()Ljava/lang/Object;", &_method_next}}};
20
+
21
+ template <template <typename> class RefType>
22
+ const SimpleJNI::AutoRegister<Iterator<RefType>> Iterator<RefType>::registrar{&descriptor};
23
+
24
+ template <template <typename> class RefType>
25
+ Iterator<RefType>::Iterator() : _obj() {}
26
+
27
+ template <template <typename> class RefType>
28
+ Iterator<RefType>::Iterator(jobject obj) : _obj(obj) {
29
+ if (!_cls.get()) {
30
+ throw std::runtime_error("Iterator JNI resources not preloaded");
31
+ }
32
+ _obj = SimpleJNI::Object<RefType, jobject>(obj, _cls.get());
33
+ }
34
+
35
+ template <template <typename> class RefType>
36
+ template <template <typename> class OtherRefType>
37
+ Iterator<RefType>::Iterator(const SimpleJNI::Object<OtherRefType, jobject>& obj) : _obj(obj.get()) {}
38
+
39
+ template <template <typename> class RefType>
40
+ Iterator<SimpleJNI::LocalRef> Iterator<RefType>::to_local() const {
41
+ if (!*this) return Iterator<SimpleJNI::LocalRef>();
42
+ return Iterator<SimpleJNI::LocalRef>(_obj.get());
43
+ }
44
+
45
+ template <template <typename> class RefType>
46
+ Iterator<SimpleJNI::GlobalRef> Iterator<RefType>::to_global() const {
47
+ if (!*this) return Iterator<SimpleJNI::GlobalRef>();
48
+ return Iterator<SimpleJNI::GlobalRef>(_obj.get());
49
+ }
50
+
51
+ template <template <typename> class RefType>
52
+ jobject Iterator<RefType>::get() const {
53
+ return _obj.get();
54
+ }
55
+
56
+ template <template <typename> class RefType>
57
+ Iterator<RefType>::operator bool() const {
58
+ return _obj.get() != nullptr;
59
+ }
60
+
61
+ template <template <typename> class RefType>
62
+ bool Iterator<RefType>::has_next() const {
63
+ if (!*this) return false;
64
+ return _obj.call_boolean_method(_method_has_next);
65
+ }
66
+
67
+ template <template <typename> class RefType>
68
+ SimpleJNI::Object<SimpleJNI::LocalRef> Iterator<RefType>::next() {
69
+ if (!*this) {
70
+ throw std::runtime_error("Iterator is not initialized");
71
+ }
72
+ return _obj.call_object_method(_method_next);
73
+ }
74
+
75
+ template <template <typename> class RefType>
76
+ Iterator<RefType>::operator SimpleJNI::Object<RefType, jobject>() const {
77
+ return _obj;
78
+ }
79
+
80
+ // Explicit template instantiations
81
+ template class Iterator<SimpleJNI::LocalRef>;
82
+ template class Iterator<SimpleJNI::GlobalRef>;
83
+ template class Iterator<SimpleJNI::WeakRef>;
84
+ template class Iterator<SimpleJNI::ReleasableLocalRef>;
85
+ } // namespace Java::Util
@@ -0,0 +1,48 @@
1
+ #pragma once
2
+
3
+ #include "simplejni/Common.hpp"
4
+ #include "simplejni/Registry.hpp"
5
+
6
+ namespace Java::Util {
7
+
8
+ template <template <typename> class RefType>
9
+ class Iterator {
10
+ public:
11
+ Iterator();
12
+ explicit Iterator(jobject obj);
13
+
14
+ template <template <typename> class OtherRefType>
15
+ Iterator(const SimpleJNI::Object<OtherRefType, jobject>& obj);
16
+
17
+ // Conversion methods
18
+ Iterator<SimpleJNI::LocalRef> to_local() const;
19
+ Iterator<SimpleJNI::GlobalRef> to_global() const;
20
+
21
+ // Get the underlying jobject
22
+ jobject get() const;
23
+
24
+ // Check if the object is valid
25
+ explicit operator bool() const;
26
+
27
+ // Implicit conversion to SimpleJNI::Object
28
+ operator SimpleJNI::Object<RefType, jobject>() const;
29
+
30
+ // Iterator methods
31
+ bool has_next() const;
32
+ SimpleJNI::Object<SimpleJNI::LocalRef> next();
33
+
34
+ private:
35
+ // Underlying JNI object
36
+ SimpleJNI::Object<RefType, jobject> _obj;
37
+
38
+ // Static JNI resources
39
+ static SimpleJNI::GlobalRef<jclass> _cls;
40
+ static jmethodID _method_has_next;
41
+ static jmethodID _method_next;
42
+
43
+ // JNI descriptor for auto-registration
44
+ static const SimpleJNI::JNIDescriptor descriptor;
45
+ static const SimpleJNI::AutoRegister<Iterator> registrar;
46
+ };
47
+
48
+ } // namespace Java::Util
@@ -0,0 +1,91 @@
1
+ #include "AdapterCallback.h"
2
+
3
+ namespace Org {
4
+ namespace SimpleJavaBLE {
5
+
6
+ // Define static JNI resources
7
+ SimpleJNI::GlobalRef<jclass> AdapterCallback::_cls;
8
+ jmethodID AdapterCallback::_method_on_scan_start = nullptr;
9
+ jmethodID AdapterCallback::_method_on_scan_stop = nullptr;
10
+ jmethodID AdapterCallback::_method_on_scan_updated = nullptr;
11
+ jmethodID AdapterCallback::_method_on_scan_found = nullptr;
12
+
13
+ // Define the JNI descriptor
14
+ const SimpleJNI::JNIDescriptor AdapterCallback::descriptor{
15
+ "org/simplejavable/Adapter$Callback", // Java interface name (inner class notation)
16
+ &_cls, // Where to store the jclass
17
+ { // Methods to preload
18
+ {"onScanStart", "()V", &_method_on_scan_start},
19
+ {"onScanStop", "()V", &_method_on_scan_stop},
20
+ {"onScanUpdated", "(J)V", &_method_on_scan_updated},
21
+ {"onScanFound", "(J)V", &_method_on_scan_found}}};
22
+
23
+ // Define the AutoRegister instance
24
+ const SimpleJNI::AutoRegister<AdapterCallback> AdapterCallback::registrar{&descriptor};
25
+
26
+ /**
27
+ * @brief Construct a Callback from a Java object.
28
+ *
29
+ * Initializes the internal SimpleJNI::Object with the provided jobject and the preloaded
30
+ * jclass. The check for _cls.get() ensures that JNI_OnLoad has run and preloaded the
31
+ * necessary resources, throwing an exception otherwise to catch initialization issues early.
32
+ * @param obj The Java object implementing the Callback interface.
33
+ * @throws std::runtime_error if JNI resources are not preloaded.
34
+ */
35
+ AdapterCallback::AdapterCallback(jobject obj) : _obj(obj, _cls.get()) {
36
+ if (!_cls.get()) {
37
+ throw std::runtime_error("AdapterCallback JNI resources not preloaded");
38
+ }
39
+ }
40
+
41
+ /**
42
+ * @brief Invoke the onScanStart method on the Java Callback object.
43
+ *
44
+ * Uses the preloaded _method_on_scan_start to call the Java method via SimpleJNI::Object.
45
+ * No additional checks are needed here since the constructor enforces resource availability.
46
+ */
47
+ void AdapterCallback::on_scan_start() {
48
+ if (_obj.is_valid()) {
49
+ _obj.to_local().call_void_method(_method_on_scan_start);
50
+ }
51
+ }
52
+
53
+ /**
54
+ * @brief Invoke the onScanStop method on the Java Callback object.
55
+ *
56
+ * Calls the Java onScanStop() method using the preloaded jmethodID.
57
+ */
58
+ void AdapterCallback::on_scan_stop() {
59
+ if (_obj.is_valid()) {
60
+ _obj.to_local().call_void_method(_method_on_scan_stop);
61
+ }
62
+ }
63
+
64
+ /**
65
+ * @brief Invoke the onScanUpdated method on the Java Callback object.
66
+ *
67
+ * Calls the Java onScanUpdated(long) method, converting the C++ int64_t to a JNI jlong.
68
+ * The preloaded jmethodID ensures the call is efficient and safe.
69
+ * @param peripheral_id The ID of the peripheral that was updated.
70
+ */
71
+ void AdapterCallback::on_scan_updated(int64_t peripheral_id) {
72
+ if (_obj.is_valid()) {
73
+ _obj.to_local().call_void_method(_method_on_scan_updated, static_cast<jlong>(peripheral_id));
74
+ }
75
+ }
76
+
77
+ /**
78
+ * @brief Invoke the onScanFound method on the Java Callback object.
79
+ *
80
+ * Calls the Java onScanFound(long) method with the provided peripheral ID, using the
81
+ * preloaded jmethodID for efficiency.
82
+ * @param peripheral_id The ID of the peripheral that was found.
83
+ */
84
+ void AdapterCallback::on_scan_found(int64_t peripheral_id) {
85
+ if (_obj.is_valid()) {
86
+ _obj.to_local().call_void_method(_method_on_scan_found, static_cast<jlong>(peripheral_id));
87
+ }
88
+ }
89
+
90
+ } // namespace SimpleJavaBLE
91
+ } // namespace Org
@@ -0,0 +1,90 @@
1
+ #pragma once
2
+ #include "simplejni/Common.hpp"
3
+ #include "simplejni/Registry.hpp"
4
+
5
+ namespace Org {
6
+ namespace SimpleJavaBLE {
7
+
8
+ /**
9
+ * @brief C++ wrapper for the org.simplejavable.Adapter$Callback Java interface.
10
+ *
11
+ * This class encapsulates a jobject representing an instance of the Callback interface
12
+ * from the org.simplejavable.Adapter class. It provides methods to invoke the interface's
13
+ * Java methods (onScanStart, onScanStop, onScanUpdated, onScanFound) via JNI. JNI resources
14
+ * are preloaded during JNI_OnLoad using the AutoRegister mechanism.
15
+ */
16
+ class AdapterCallback {
17
+ public:
18
+ AdapterCallback() = default;
19
+
20
+ /**
21
+ * @brief Construct a Callback from a Java object.
22
+ *
23
+ * Initializes the internal SimpleJNI::Object with the provided jobject and the preloaded
24
+ * jclass. Throws if JNI resources aren’t preloaded, enforcing initialization via JNI_OnLoad.
25
+ * @param obj The Java object implementing the Callback interface.
26
+ * @throws std::runtime_error if JNI resources are not preloaded.
27
+ */
28
+ explicit AdapterCallback(jobject obj);
29
+
30
+ /**
31
+ * @brief Invoke the onScanStart method on the Java Callback object.
32
+ *
33
+ * Calls the Java onScanStart() method, which has no arguments and returns void.
34
+ */
35
+ void on_scan_start();
36
+
37
+ /**
38
+ * @brief Invoke the onScanStop method on the Java Callback object.
39
+ *
40
+ * Calls the Java onScanStop() method, which has no arguments and returns void.
41
+ */
42
+ void on_scan_stop();
43
+
44
+ /**
45
+ * @brief Invoke the onScanUpdated method on the Java Callback object.
46
+ *
47
+ * Calls the Java onScanUpdated(long) method, passing a peripheral ID as a jlong.
48
+ * @param peripheral_id The ID of the peripheral that was updated.
49
+ */
50
+ void on_scan_updated(int64_t peripheral_id);
51
+
52
+ /**
53
+ * @brief Invoke the onScanFound method on the Java Callback object.
54
+ *
55
+ * Calls the Java onScanFound(long) method, passing a peripheral ID as a jlong.
56
+ * @param peripheral_id The ID of the peripheral that was found.
57
+ */
58
+ void on_scan_found(int64_t peripheral_id);
59
+
60
+ private:
61
+ // Static JNI resources, populated by Registrar during JNI_OnLoad
62
+ static SimpleJNI::GlobalRef<jclass> _cls; ///< Preloaded jclass for org.simplejavable.Adapter$Callback.
63
+ static jmethodID _method_on_scan_start; ///< Preloaded jmethodID for onScanStart.
64
+ static jmethodID _method_on_scan_stop; ///< Preloaded jmethodID for onScanStop.
65
+ static jmethodID _method_on_scan_updated; ///< Preloaded jmethodID for onScanUpdated.
66
+ static jmethodID _method_on_scan_found; ///< Preloaded jmethodID for onScanFound.
67
+
68
+ /**
69
+ * @brief JNI descriptor defining the Callback interface and its methods.
70
+ *
71
+ * Declares the Java interface and its methods, linking to static storage locations
72
+ * where Registrar stores resolved JNI resources. Defined in Callback.cpp to ensure
73
+ * a single point of definition.
74
+ */
75
+ static const SimpleJNI::JNIDescriptor descriptor;
76
+
77
+ /**
78
+ * @brief Automatic registration of the descriptor with Registrar.
79
+ *
80
+ * Triggers registration during static initialization of Callback.cpp, ensuring the
81
+ * descriptor is added to Registrar before JNI_OnLoad. Defined in Callback.cpp to
82
+ * maintain a single instantiation.
83
+ */
84
+ static const SimpleJNI::AutoRegister<AdapterCallback> registrar;
85
+
86
+ SimpleJNI::Object<SimpleJNI::WeakRef> _obj; ///< Wrapped Java object with WeakGlobalRef lifetime.
87
+ };
88
+
89
+ } // namespace SimpleJavaBLE
90
+ } // namespace Org
@@ -0,0 +1,35 @@
1
+ #include "Characteristic.h"
2
+
3
+ namespace Org {
4
+ namespace SimpleJavaBLE {
5
+
6
+ // Define static JNI resources
7
+ SimpleJNI::GlobalRef<jclass> Characteristic::_cls;
8
+ jmethodID Characteristic::_init_method;
9
+
10
+ // Define the JNI descriptor
11
+ const SimpleJNI::JNIDescriptor Characteristic::descriptor{
12
+ "org/simplejavable/Characteristic", // Java class name
13
+ &_cls, // Where to store the jclass
14
+ {
15
+ {"<init>", "(Ljava/lang/String;Ljava/util/List;ZZZZZ)V", &_init_method} // Constructor method
16
+ }};
17
+
18
+ // Define the AutoRegister instance
19
+ const SimpleJNI::AutoRegister<Characteristic> Characteristic::registrar{&descriptor};
20
+
21
+ // Constructor implementation
22
+ Characteristic::Characteristic(const SimpleJNI::String<SimpleJNI::LocalRef>& uuid,
23
+ const Java::Util::ArrayList<SimpleJNI::LocalRef>& descriptors, bool canRead,
24
+ bool canWriteRequest, bool canWriteCommand, bool canNotify, bool canIndicate) {
25
+ // Use call_new_object to create a new Java Characteristic object
26
+ _obj = SimpleJNI::Object<SimpleJNI::ReleasableLocalRef>::call_new_object(
27
+ _cls.get(), _init_method, uuid.get(), descriptors.get(), static_cast<jboolean>(canRead),
28
+ static_cast<jboolean>(canWriteRequest), static_cast<jboolean>(canWriteCommand),
29
+ static_cast<jboolean>(canNotify), static_cast<jboolean>(canIndicate));
30
+ }
31
+
32
+ Characteristic::operator SimpleJNI::Object<SimpleJNI::ReleasableLocalRef, jobject>() const { return _obj; }
33
+
34
+ } // namespace SimpleJavaBLE
35
+ } // namespace Org
@@ -0,0 +1,60 @@
1
+ #pragma once
2
+
3
+ #include "Descriptor.h"
4
+ #include "java/lang/ArrayList.h"
5
+ #include "simplejni/Common.hpp"
6
+ #include "simplejni/Registry.hpp"
7
+
8
+ namespace Org {
9
+ namespace SimpleJavaBLE {
10
+
11
+ /**
12
+ * @brief C++ wrapper for the org.simplejavable.Characteristic Java class.
13
+ *
14
+ * This class provides basic JNI registration functionality for the Characteristic class.
15
+ */
16
+ class Characteristic {
17
+ public:
18
+ /**
19
+ * @brief Default constructor.
20
+ */
21
+ Characteristic() = default;
22
+
23
+ /**
24
+ * @brief Constructor that creates a Characteristic with the specified properties.
25
+ *
26
+ * @param uuid The UUID string for the characteristic.
27
+ * @param descriptors List of descriptors associated with this characteristic.
28
+ * @param canRead Whether the characteristic supports read operations.
29
+ * @param canWriteRequest Whether the characteristic supports write request operations.
30
+ * @param canWriteCommand Whether the characteristic supports write command operations.
31
+ * @param canNotify Whether the characteristic supports notifications.
32
+ * @param canIndicate Whether the characteristic supports indications.
33
+ */
34
+ Characteristic(const SimpleJNI::String<SimpleJNI::LocalRef>& uuid,
35
+ const Java::Util::ArrayList<SimpleJNI::LocalRef>& descriptors, bool canRead, bool canWriteRequest,
36
+ bool canWriteCommand, bool canNotify, bool canIndicate);
37
+
38
+ // Implicit conversion to SimpleJNI::Object
39
+ operator SimpleJNI::Object<SimpleJNI::ReleasableLocalRef, jobject>() const;
40
+
41
+ private:
42
+ // Static JNI resources, populated by Registrar during JNI_OnLoad
43
+ static SimpleJNI::GlobalRef<jclass> _cls;
44
+ static jmethodID _init_method;
45
+
46
+ /**
47
+ * @brief JNI descriptor defining the Characteristic class.
48
+ */
49
+ static const SimpleJNI::JNIDescriptor descriptor;
50
+
51
+ /**
52
+ * @brief Automatic registration of the descriptor with Registrar.
53
+ */
54
+ static const SimpleJNI::AutoRegister<Characteristic> registrar;
55
+
56
+ SimpleJNI::Object<SimpleJNI::ReleasableLocalRef> _obj; ///< Wrapped Java object with ReleasableLocalRef lifetime.
57
+ };
58
+
59
+ } // namespace SimpleJavaBLE
60
+ } // namespace Org
@@ -0,0 +1,33 @@
1
+ #include "DataCallback.h"
2
+
3
+ namespace Org {
4
+ namespace SimpleJavaBLE {
5
+
6
+ // Define static JNI resources
7
+ SimpleJNI::GlobalRef<jclass> DataCallback::_cls;
8
+ jmethodID DataCallback::_method_on_data_received = nullptr;
9
+
10
+ // Define the JNI descriptor
11
+ const SimpleJNI::JNIDescriptor DataCallback::descriptor{
12
+ "org/simplejavable/Peripheral$DataCallback", // Java interface name (inner class notation)
13
+ &_cls, // Where to store the jclass
14
+ { // Methods to preload
15
+ {"onDataReceived", "([B)V", &_method_on_data_received}}};
16
+
17
+ // Define the AutoRegister instance
18
+ const SimpleJNI::AutoRegister<DataCallback> DataCallback::registrar{&descriptor};
19
+
20
+ DataCallback::DataCallback(jobject obj) : _obj(obj, _cls.get()) {
21
+ if (!_cls.get()) {
22
+ throw std::runtime_error("DataCallback JNI resources not preloaded");
23
+ }
24
+ }
25
+
26
+ void DataCallback::on_data_received(jbyteArray data) {
27
+ if (_obj.is_valid()) {
28
+ _obj.to_local().call_void_method(_method_on_data_received, data);
29
+ }
30
+ }
31
+
32
+ } // namespace SimpleJavaBLE
33
+ } // namespace Org
@@ -0,0 +1,45 @@
1
+ #pragma once
2
+ #include "simplejni/Common.hpp"
3
+ #include "simplejni/Registry.hpp"
4
+
5
+ namespace Org {
6
+ namespace SimpleJavaBLE {
7
+
8
+ /**
9
+ * @brief C++ wrapper for the org.simplejavable.Peripheral$DataCallback Java interface.
10
+ *
11
+ * This class encapsulates a jobject representing an instance of the DataCallback interface
12
+ * from the org.simplejavable.Peripheral class. It provides methods to invoke the interface's
13
+ * Java methods (onDataReceived) via JNI. JNI resources are preloaded during
14
+ * JNI_OnLoad using the AutoRegister mechanism.
15
+ */
16
+ class DataCallback {
17
+ public:
18
+ DataCallback() = default;
19
+
20
+ /**
21
+ * @brief Construct a Callback from a Java object.
22
+ *
23
+ * @param obj The Java object implementing the Callback interface.
24
+ * @throws std::runtime_error if JNI resources are not preloaded.
25
+ */
26
+ explicit DataCallback(jobject obj);
27
+
28
+ /**
29
+ * @brief Invoke the onDataReceived method on the Java DataCallback object.
30
+ */
31
+ void on_data_received(jbyteArray data);
32
+
33
+ private:
34
+ // Static JNI resources, populated by Registrar during JNI_OnLoad
35
+ static SimpleJNI::GlobalRef<jclass> _cls;
36
+ static jmethodID _method_on_data_received;
37
+
38
+ static const SimpleJNI::JNIDescriptor descriptor;
39
+ static const SimpleJNI::AutoRegister<DataCallback> registrar;
40
+
41
+ SimpleJNI::Object<SimpleJNI::WeakRef> _obj;
42
+ };
43
+
44
+ } // namespace SimpleJavaBLE
45
+ } // namespace Org
@@ -0,0 +1,30 @@
1
+ #include "Descriptor.h"
2
+
3
+ namespace Org {
4
+ namespace SimpleJavaBLE {
5
+
6
+ // Define static JNI resources
7
+ SimpleJNI::GlobalRef<jclass> Descriptor::_cls;
8
+ jmethodID Descriptor::_init_method;
9
+
10
+ // Define the JNI descriptor
11
+ const SimpleJNI::JNIDescriptor Descriptor::descriptor{
12
+ "org/simplejavable/Descriptor", // Java class name
13
+ &_cls, // Where to store the jclass
14
+ {
15
+ {"<init>", "(Ljava/lang/String;)V", &_init_method} // Constructor method
16
+ }};
17
+
18
+ // Define the AutoRegister instance
19
+ const SimpleJNI::AutoRegister<Descriptor> Descriptor::registrar{&descriptor};
20
+
21
+ // Constructor implementation
22
+ Descriptor::Descriptor(const SimpleJNI::String<SimpleJNI::LocalRef>& uuid) {
23
+ // Use call_new_object to create a new Java Descriptor object
24
+ _obj = SimpleJNI::Object<SimpleJNI::ReleasableLocalRef>::call_new_object(_cls.get(), _init_method, uuid.get());
25
+ }
26
+
27
+ Descriptor::operator SimpleJNI::Object<SimpleJNI::ReleasableLocalRef, jobject>() const { return _obj; }
28
+
29
+ } // namespace SimpleJavaBLE
30
+ } // namespace Org