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,30 @@
1
+ #pragma once
2
+
3
+ #include "types/java/util/UUID.h"
4
+ #include "simplejni/Common.hpp"
5
+ #include "simplejni/Registry.hpp"
6
+
7
+ namespace SimpleBLE {
8
+ namespace Android {
9
+
10
+ class ParcelUUID {
11
+ public:
12
+ ParcelUUID();
13
+ ParcelUUID(SimpleJNI::Object<SimpleJNI::GlobalRef, jobject> obj);
14
+
15
+ UUID getUuid();
16
+
17
+ jobject get() const { return _obj.get(); } // TODO: Remove once nothing uses this
18
+
19
+ private:
20
+ SimpleJNI::Object<SimpleJNI::GlobalRef, jobject> _obj;
21
+
22
+ static SimpleJNI::GlobalRef<jclass> _cls;
23
+ static jmethodID _method_getUuid;
24
+
25
+ static const SimpleJNI::JNIDescriptor descriptor;
26
+ static const SimpleJNI::AutoRegister<ParcelUUID> registrar;
27
+ };
28
+
29
+ } // namespace Android
30
+ } // namespace SimpleBLE
@@ -0,0 +1,54 @@
1
+ #include "SparseArray.h"
2
+
3
+ namespace SimpleBLE {
4
+ namespace Android {
5
+
6
+ // Define static JNI resources
7
+ SimpleJNI::GlobalRef<jclass> SparseArrayBase::_cls;
8
+ jmethodID SparseArrayBase::_method_size = nullptr;
9
+ jmethodID SparseArrayBase::_method_keyAt = nullptr;
10
+ jmethodID SparseArrayBase::_method_valueAt = nullptr;
11
+
12
+ // Define the JNI descriptor
13
+ const SimpleJNI::JNIDescriptor SparseArrayBase::descriptor{
14
+ "android/util/SparseArray", // Java class name
15
+ &_cls, // Where to store the jclass
16
+ { // Methods to preload
17
+ {"size", "()I", &_method_size},
18
+ {"keyAt", "(I)I", &_method_keyAt},
19
+ {"valueAt", "(I)Ljava/lang/Object;", &_method_valueAt}
20
+ }};
21
+
22
+ const SimpleJNI::AutoRegister<SparseArrayBase> SparseArrayBase::registrar{&descriptor};
23
+
24
+ template <typename T>
25
+ SparseArray<T>::SparseArray() {}
26
+
27
+ template <typename T>
28
+ SparseArray<T>::SparseArray(SimpleJNI::Object<SimpleJNI::GlobalRef, jobject> obj) : _obj(obj) {}
29
+
30
+
31
+ template <typename T>
32
+ int SparseArray<T>::size() {
33
+ if (!_obj) throw std::runtime_error("SparseArray is not initialized");
34
+ return _obj.call_int_method(_method_size);
35
+ }
36
+
37
+ template <typename T>
38
+ int SparseArray<T>::keyAt(int index) {
39
+ if (!_obj) throw std::runtime_error("SparseArray is not initialized");
40
+ return _obj.call_int_method(_method_keyAt, index);
41
+ }
42
+
43
+ template <typename T>
44
+ T SparseArray<T>::valueAt(int index) {
45
+ if (!_obj) throw std::runtime_error("SparseArray is not initialized");
46
+ SimpleJNI::Object<SimpleJNI::GlobalRef, jobject> value = _obj.call_object_method(_method_valueAt, index);
47
+ return T(value.get());
48
+ }
49
+
50
+ template class SparseArray<SimpleJNI::ByteArray<SimpleJNI::LocalRef>>;
51
+ template class SparseArray<SimpleJNI::Object<SimpleJNI::LocalRef, jobject>>;
52
+
53
+ } // namespace Android
54
+ } // namespace SimpleBLE
@@ -0,0 +1,37 @@
1
+ #pragma once
2
+
3
+ #include "simplejni/Common.hpp"
4
+ #include "simplejni/Registry.hpp"
5
+
6
+ namespace SimpleBLE {
7
+ namespace Android {
8
+
9
+ class SparseArrayBase {
10
+ public:
11
+ // Static JNI resources managed by Registrar
12
+ static SimpleJNI::GlobalRef<jclass> _cls;
13
+ static jmethodID _method_size;
14
+ static jmethodID _method_keyAt;
15
+ static jmethodID _method_valueAt;
16
+
17
+ // JNI descriptor for auto-registration
18
+ static const SimpleJNI::JNIDescriptor descriptor;
19
+ static const SimpleJNI::AutoRegister<SparseArrayBase> registrar;
20
+ };
21
+
22
+ template <typename T>
23
+ class SparseArray : public SparseArrayBase {
24
+ public:
25
+ SparseArray();
26
+ SparseArray(SimpleJNI::Object<SimpleJNI::GlobalRef, jobject> obj);
27
+
28
+ int size();
29
+ int keyAt(int index);
30
+ T valueAt(int index);
31
+
32
+ private:
33
+ SimpleJNI::Object<SimpleJNI::GlobalRef, jobject> _obj;
34
+ };
35
+
36
+ } // namespace Android
37
+ } // namespace SimpleBLE
@@ -0,0 +1,36 @@
1
+ #include "Iterator.h"
2
+
3
+ namespace SimpleBLE {
4
+ namespace Android {
5
+
6
+ // Define static JNI resources
7
+ SimpleJNI::GlobalRef<jclass> Iterator::_cls;
8
+ jmethodID Iterator::_method_hasNext = nullptr;
9
+ jmethodID Iterator::_method_next = nullptr;
10
+
11
+ // Define the JNI descriptor
12
+ const SimpleJNI::JNIDescriptor Iterator::descriptor{
13
+ "java/util/Iterator", // Java class name
14
+ &_cls, // Where to store the jclass
15
+ { // Methods to preload
16
+ {"hasNext", "()Z", &_method_hasNext},
17
+ {"next", "()Ljava/lang/Object;", &_method_next}
18
+ }
19
+ };
20
+
21
+ const SimpleJNI::AutoRegister<Iterator> Iterator::registrar{&descriptor};
22
+
23
+ Iterator::Iterator(SimpleJNI::Object<SimpleJNI::GlobalRef, jobject> obj) : _obj(obj) {}
24
+
25
+ bool Iterator::hasNext() {
26
+ if (!_obj) throw std::runtime_error("Iterator is not initialized");
27
+ return _obj.call_boolean_method(_method_hasNext);
28
+ }
29
+
30
+ SimpleJNI::Object<SimpleJNI::LocalRef> Iterator::next() {
31
+ if (!_obj) throw std::runtime_error("Iterator is not initialized");
32
+ return _obj.call_object_method(_method_next);
33
+ }
34
+
35
+ } // namespace Android
36
+ } // namespace SimpleBLE
@@ -0,0 +1,28 @@
1
+ #pragma once
2
+
3
+ #include "simplejni/Common.hpp"
4
+ #include "simplejni/Registry.hpp"
5
+ #include <vector>
6
+
7
+ namespace SimpleBLE {
8
+ namespace Android {
9
+
10
+ class Iterator {
11
+ public:
12
+ Iterator(SimpleJNI::Object<SimpleJNI::GlobalRef, jobject> obj);
13
+
14
+ bool hasNext();
15
+ SimpleJNI::Object<SimpleJNI::LocalRef> next();
16
+
17
+ private:
18
+ static SimpleJNI::GlobalRef<jclass> _cls;
19
+ static jmethodID _method_hasNext;
20
+ static jmethodID _method_next;
21
+
22
+ static const SimpleJNI::JNIDescriptor descriptor;
23
+ static const SimpleJNI::AutoRegister<Iterator> registrar;
24
+
25
+ SimpleJNI::Object<SimpleJNI::GlobalRef, jobject> _obj;
26
+ };
27
+ } // namespace Android
28
+ } // namespace SimpleBLE
@@ -0,0 +1,29 @@
1
+ #include "List.h"
2
+ #include "Iterator.h"
3
+
4
+ namespace SimpleBLE {
5
+ namespace Android {
6
+
7
+ SimpleJNI::GlobalRef<jclass> List::_cls;
8
+ jmethodID List::_method_iterator = nullptr;
9
+
10
+ const SimpleJNI::JNIDescriptor List::descriptor{
11
+ "java/util/List", // Java class name
12
+ &_cls, // Where to store the jclass
13
+ { // Methods to preload
14
+ {"iterator", "()Ljava/util/Iterator;", &_method_iterator}
15
+ }
16
+ };
17
+
18
+ const SimpleJNI::AutoRegister<List> List::registrar{&descriptor};
19
+
20
+ List::List(SimpleJNI::Object<SimpleJNI::GlobalRef, jobject> obj) : _obj(obj) {}
21
+
22
+ Iterator List::iterator() {
23
+ if (!_obj) throw std::runtime_error("List is not initialized");
24
+ SimpleJNI::Object<SimpleJNI::LocalRef> iterator_obj = _obj.call_object_method(_method_iterator);
25
+ return Iterator(iterator_obj.to_global());
26
+ }
27
+
28
+ } // namespace Android
29
+ } // namespace SimpleBLE
@@ -0,0 +1,27 @@
1
+ #pragma once
2
+
3
+ #include "simplejni/Common.hpp"
4
+ #include "simplejni/Registry.hpp"
5
+ #include "Iterator.h"
6
+ #include <vector>
7
+
8
+ namespace SimpleBLE {
9
+ namespace Android {
10
+
11
+ class List {
12
+ public:
13
+ List(SimpleJNI::Object<SimpleJNI::GlobalRef, jobject> obj);
14
+
15
+ Iterator iterator();
16
+
17
+ private:
18
+ static SimpleJNI::GlobalRef<jclass> _cls;
19
+ static jmethodID _method_iterator;
20
+
21
+ static const SimpleJNI::JNIDescriptor descriptor;
22
+ static const SimpleJNI::AutoRegister<List> registrar;
23
+
24
+ SimpleJNI::Object<SimpleJNI::GlobalRef, jobject> _obj;
25
+ };
26
+ } // namespace Android
27
+ } // namespace SimpleBLE
@@ -0,0 +1,33 @@
1
+ #include "Set.h"
2
+ #include "Iterator.h" // Ensure Iterator.h is correctly included
3
+
4
+ namespace SimpleBLE {
5
+ namespace Android { // Changed namespace
6
+
7
+ // Define static JNI resources
8
+ SimpleJNI::GlobalRef<jclass> Set::_cls;
9
+ jmethodID Set::_method_iterator = nullptr;
10
+
11
+ // Define the JNI descriptor
12
+ const SimpleJNI::JNIDescriptor Set::descriptor{
13
+ "java/util/Set", // Java class name
14
+ &_cls, // Where to store the jclass
15
+ { // Methods to preload
16
+ {"iterator", "()Ljava/util/Iterator;", &_method_iterator}
17
+ }
18
+ };
19
+
20
+ const SimpleJNI::AutoRegister<Set> Set::registrar{&descriptor};
21
+
22
+ Set::Set(SimpleJNI::Object<SimpleJNI::GlobalRef, jobject> obj) : _obj(obj) {}
23
+
24
+ Iterator Set::iterator() {
25
+ if (!_obj) throw std::runtime_error("Set is not initialized");
26
+ SimpleJNI::Object<SimpleJNI::LocalRef> iterator_obj = _obj.call_object_method(_method_iterator);
27
+ // Assuming Iterator's constructor now accepts SimpleJNI::Object<SimpleJNI::LocalRef>
28
+ // or SimpleJNI::Object<SimpleJNI::GlobalRef, jobject> as per previous refactoring.
29
+ return Iterator(iterator_obj.to_global()); // Convert to GlobalRef if Iterator stores it as such
30
+ }
31
+
32
+ } // namespace Android
33
+ } // namespace SimpleBLE
@@ -0,0 +1,28 @@
1
+ #pragma once
2
+
3
+ #include "simplejni/Common.hpp"
4
+ #include "simplejni/Registry.hpp"
5
+ #include "Iterator.h"
6
+ #include <vector>
7
+
8
+ namespace SimpleBLE {
9
+ namespace Android {
10
+ class Set {
11
+ public:
12
+ Set(SimpleJNI::Object<SimpleJNI::GlobalRef, jobject> obj);
13
+
14
+ Iterator iterator();
15
+
16
+ private:
17
+ // Static JNI resources managed by Registrar
18
+ static SimpleJNI::GlobalRef<jclass> _cls;
19
+ static jmethodID _method_iterator;
20
+
21
+ // JNI descriptor for auto-registration
22
+ static const SimpleJNI::JNIDescriptor descriptor;
23
+ static const SimpleJNI::AutoRegister<Set> registrar;
24
+
25
+ SimpleJNI::Object<SimpleJNI::GlobalRef, jobject> _obj;
26
+ };
27
+ } // namespace Android
28
+ } // namespace SimpleBLE
@@ -0,0 +1,26 @@
1
+ #include "UUID.h"
2
+
3
+ namespace SimpleBLE {
4
+ namespace Android {
5
+
6
+ SimpleJNI::GlobalRef<jclass> UUID::_cls;
7
+ jmethodID UUID::_method_toString = nullptr;
8
+
9
+ const SimpleJNI::JNIDescriptor UUID::descriptor{"java/util/UUID", // Java class name
10
+ &_cls, // Pointer to store the jclass
11
+ { // Methods to preload
12
+ {"toString", "()Ljava/lang/String;", &_method_toString}}};
13
+
14
+ const SimpleJNI::AutoRegister<UUID> UUID::registrar{&descriptor};
15
+
16
+ UUID::UUID() : _obj() {}
17
+
18
+ UUID::UUID(SimpleJNI::Object<SimpleJNI::GlobalRef, jobject> obj) : _obj(obj) {}
19
+
20
+ std::string UUID::toString() {
21
+ if (!_obj) throw std::runtime_error("UUID is not initialized");
22
+ return _obj.call_string_method(_method_toString);
23
+ }
24
+
25
+ } // namespace Android
26
+ } // namespace SimpleBLE
@@ -0,0 +1,29 @@
1
+ #pragma once
2
+
3
+ #include "simplejni/Common.hpp"
4
+ #include "simplejni/Registry.hpp"
5
+
6
+ namespace SimpleBLE {
7
+ namespace Android {
8
+
9
+ class UUID {
10
+ public:
11
+ UUID();
12
+ UUID(SimpleJNI::Object<SimpleJNI::GlobalRef, jobject> obj);
13
+
14
+ std::string toString();
15
+
16
+ jobject get() const { return _obj.get(); } // TODO: Remove once nothing uses this
17
+
18
+ private:
19
+ SimpleJNI::Object<SimpleJNI::GlobalRef, jobject> _obj;
20
+
21
+ static SimpleJNI::GlobalRef<jclass> _cls;
22
+ static jmethodID _method_toString;
23
+
24
+ static const SimpleJNI::JNIDescriptor descriptor;
25
+ static const SimpleJNI::AutoRegister<UUID> registrar;
26
+ };
27
+
28
+ } // namespace Android
29
+ } // namespace SimpleBLE
@@ -0,0 +1,53 @@
1
+ #include "AdapterBase.h"
2
+
3
+ namespace SimpleBLE {
4
+
5
+ void AdapterBase::set_callback_on_power_on(std::function<void()> on_power_on) {
6
+ if (on_power_on) {
7
+ _callback_on_power_on.load(on_power_on);
8
+ } else {
9
+ _callback_on_power_on.unload();
10
+ }
11
+ }
12
+
13
+ void AdapterBase::set_callback_on_power_off(std::function<void()> on_power_off) {
14
+ if (on_power_off) {
15
+ _callback_on_power_off.load(on_power_off);
16
+ } else {
17
+ _callback_on_power_off.unload();
18
+ }
19
+ }
20
+
21
+ void AdapterBase::set_callback_on_scan_start(std::function<void()> on_scan_start) {
22
+ if (on_scan_start) {
23
+ _callback_on_scan_start.load(on_scan_start);
24
+ } else {
25
+ _callback_on_scan_start.unload();
26
+ }
27
+ }
28
+
29
+ void AdapterBase::set_callback_on_scan_stop(std::function<void()> on_scan_stop) {
30
+ if (on_scan_stop) {
31
+ _callback_on_scan_stop.load(on_scan_stop);
32
+ } else {
33
+ _callback_on_scan_stop.unload();
34
+ }
35
+ }
36
+
37
+ void AdapterBase::set_callback_on_scan_updated(std::function<void(Peripheral)> on_scan_updated) {
38
+ if (on_scan_updated) {
39
+ _callback_on_scan_updated.load(on_scan_updated);
40
+ } else {
41
+ _callback_on_scan_updated.unload();
42
+ }
43
+ }
44
+
45
+ void AdapterBase::set_callback_on_scan_found(std::function<void(Peripheral)> on_scan_found) {
46
+ if (on_scan_found) {
47
+ _callback_on_scan_found.load(on_scan_found);
48
+ } else {
49
+ _callback_on_scan_found.unload();
50
+ }
51
+ }
52
+
53
+ }
@@ -0,0 +1,81 @@
1
+ #pragma once
2
+
3
+ #include <functional>
4
+ #include <memory>
5
+ #include <string>
6
+ #include <vector>
7
+
8
+ #include <simpleble/Exceptions.h>
9
+ #include <simpleble/Types.h>
10
+
11
+ #include <kvn_safe_callback.hpp>
12
+
13
+ namespace SimpleBLE {
14
+
15
+ class Peripheral;
16
+ class PeripheralBase;
17
+
18
+ /**
19
+ * Abstract base class for Bluetooth adapter implementations.
20
+ *
21
+ * Each backend must implement this class.
22
+ *
23
+ * Notes for implementers:
24
+ *
25
+ * - The methods here return shared pointers to AdapterBase, PeripheralBase,
26
+ * etc. The code in Adapter.cpp will automatically wrap these in Adapter,
27
+ * Peripheral, etc. objects.
28
+ * - Do not use Adapter, Peripheral, etc. Those are for the user.
29
+ * - Methods that require the adapter to be enabled will not be called by the
30
+ * frontend if `bluetooth_enabled()` returns false.
31
+ */
32
+ class AdapterBase {
33
+ public:
34
+ virtual ~AdapterBase() = default;
35
+
36
+ virtual void* underlying() const = 0;
37
+
38
+ virtual std::string identifier() = 0;
39
+ virtual BluetoothAddress address() = 0;
40
+
41
+ virtual void power_on() = 0;
42
+ virtual void power_off() = 0;
43
+ virtual bool is_powered() = 0;
44
+ virtual void set_callback_on_power_on(std::function<void()> on_power_on);
45
+ virtual void set_callback_on_power_off(std::function<void()> on_power_off);
46
+
47
+ virtual void scan_start() = 0;
48
+ virtual void scan_stop() = 0;
49
+ virtual void scan_for(int timeout_ms) = 0;
50
+ virtual bool scan_is_active() = 0;
51
+ virtual std::vector<std::shared_ptr<PeripheralBase>> scan_get_results() = 0;
52
+
53
+ virtual void set_callback_on_scan_start(std::function<void()> on_scan_start);
54
+ virtual void set_callback_on_scan_stop(std::function<void()> on_scan_stop);
55
+ virtual void set_callback_on_scan_updated(std::function<void(Peripheral)> on_scan_updated);
56
+ virtual void set_callback_on_scan_found(std::function<void(Peripheral)> on_scan_found);
57
+
58
+ virtual std::vector<std::shared_ptr<PeripheralBase>> get_paired_peripherals() = 0;
59
+ virtual std::vector<std::shared_ptr<PeripheralBase>> get_connected_peripherals() { return {}; };
60
+
61
+ /**
62
+ * Checks if Bluetooth is enabled.
63
+ *
64
+ * The enabled state may be a global setting for the system/backend, or
65
+ * it may be specific to the adapter.
66
+ */
67
+ virtual bool bluetooth_enabled() = 0;
68
+
69
+ protected:
70
+ AdapterBase() = default;
71
+
72
+ kvn::safe_callback<void()> _callback_on_power_on;
73
+ kvn::safe_callback<void()> _callback_on_power_off;
74
+
75
+ kvn::safe_callback<void()> _callback_on_scan_start;
76
+ kvn::safe_callback<void()> _callback_on_scan_stop;
77
+ kvn::safe_callback<void(Peripheral)> _callback_on_scan_updated;
78
+ kvn::safe_callback<void(Peripheral)> _callback_on_scan_found;
79
+ };
80
+
81
+ } // namespace SimpleBLE
@@ -0,0 +1,22 @@
1
+ #pragma once
2
+
3
+ #include <simpleble/Types.h>
4
+ #include <cstdint>
5
+ #include <map>
6
+ #include <string>
7
+
8
+ namespace SimpleBLE {
9
+
10
+ struct advertising_data_t {
11
+ std::string identifier;
12
+ BluetoothAddressType address_type;
13
+ BluetoothAddress mac_address;
14
+ bool connectable;
15
+ int16_t rssi;
16
+ int16_t tx_power;
17
+
18
+ std::map<uint16_t, ByteArray> manufacturer_data;
19
+ std::map<BluetoothUUID, ByteArray> service_data;
20
+ };
21
+
22
+ } // namespace SimpleBLE
@@ -0,0 +1,20 @@
1
+ #pragma once
2
+
3
+ #include <memory>
4
+ #include <string>
5
+ #include <vector>
6
+
7
+ namespace SimpleBLE {
8
+
9
+ class AdapterBase;
10
+
11
+ class BackendBase {
12
+ public:
13
+ virtual ~BackendBase() = default;
14
+
15
+ virtual std::vector<std::shared_ptr<AdapterBase>> get_adapters() = 0;
16
+ virtual bool bluetooth_enabled() = 0;
17
+ virtual std::string name() const noexcept = 0;
18
+ };
19
+
20
+ } // namespace SimpleBLE
@@ -0,0 +1,33 @@
1
+ #pragma once
2
+
3
+ #include <memory>
4
+
5
+ #include "BackendBase.h"
6
+
7
+ namespace SimpleBLE {
8
+
9
+ /**
10
+ * Convenience CRTP class to have a Backend that is a singleton.
11
+ *
12
+ * REQUIRES: T must be default-constructible.
13
+ */
14
+ template <typename T>
15
+ class BackendSingleton : public BackendBase, public std::enable_shared_from_this<T> {
16
+ public:
17
+ static std::shared_ptr<T> get() {
18
+ static T instance(buildToken{});
19
+ return std::shared_ptr<T>(&instance, [](T*) {});
20
+ }
21
+
22
+ BackendSingleton(const BackendSingleton& other) = delete; // Remove the copy constructor
23
+ T& operator=(const T&) = delete; // Remove the copy assignment
24
+
25
+ protected:
26
+ // Derived classes should have a constructor that takes a buildToken to
27
+ // ensure that the class is only constructed through the get() method.
28
+ struct buildToken {};
29
+
30
+ BackendSingleton() = default;
31
+ };
32
+
33
+ } // namespace SimpleBLE
@@ -0,0 +1,28 @@
1
+ #include <simpleble/Characteristic.h>
2
+
3
+ #include "CharacteristicBase.h"
4
+ #include "CommonUtils.h"
5
+ #include "DescriptorBase.h"
6
+
7
+ using namespace SimpleBLE;
8
+
9
+ CharacteristicBase::CharacteristicBase(const BluetoothUUID& uuid, SharedPtrVector<DescriptorBase> descriptors,
10
+ bool can_read, bool can_write_request, bool can_write_command, bool can_notify,
11
+ bool can_indicate)
12
+ : uuid_(uuid),
13
+ descriptors_(descriptors),
14
+ can_read_(can_read),
15
+ can_write_request_(can_write_request),
16
+ can_write_command_(can_write_command),
17
+ can_notify_(can_notify),
18
+ can_indicate_(can_indicate) {}
19
+
20
+ BluetoothUUID CharacteristicBase::uuid() { return uuid_; }
21
+
22
+ SharedPtrVector<DescriptorBase> CharacteristicBase::descriptors() { return descriptors_; }
23
+
24
+ bool CharacteristicBase::can_read() { return can_read_; }
25
+ bool CharacteristicBase::can_write_request() { return can_write_request_; }
26
+ bool CharacteristicBase::can_write_command() { return can_write_command_; }
27
+ bool CharacteristicBase::can_notify() { return can_notify_; }
28
+ bool CharacteristicBase::can_indicate() { return can_indicate_; }
@@ -0,0 +1,38 @@
1
+ #pragma once
2
+
3
+ #include <simpleble/Exceptions.h>
4
+ #include <simpleble/Types.h>
5
+ #include <memory>
6
+
7
+ namespace SimpleBLE {
8
+
9
+ class DescriptorBase;
10
+
11
+ class CharacteristicBase {
12
+ public:
13
+ CharacteristicBase(const BluetoothUUID& uuid, std::vector<std::shared_ptr<DescriptorBase>> descriptors,
14
+ bool can_read, bool can_write_request, bool can_write_command, bool can_notify,
15
+ bool can_indicate);
16
+ virtual ~CharacteristicBase() = default;
17
+
18
+ BluetoothUUID uuid();
19
+ std::vector<std::shared_ptr<DescriptorBase>> descriptors();
20
+
21
+ bool can_read();
22
+ bool can_write_request();
23
+ bool can_write_command();
24
+ bool can_notify();
25
+ bool can_indicate();
26
+
27
+ protected:
28
+ BluetoothUUID uuid_;
29
+ std::vector<std::shared_ptr<DescriptorBase>> descriptors_;
30
+
31
+ bool can_read_ = false;
32
+ bool can_write_request_ = false;
33
+ bool can_write_command_ = false;
34
+ bool can_notify_ = false;
35
+ bool can_indicate_ = false;
36
+ };
37
+
38
+ } // namespace SimpleBLE
@@ -0,0 +1,7 @@
1
+ #include "DescriptorBase.h"
2
+
3
+ using namespace SimpleBLE;
4
+
5
+ DescriptorBase::DescriptorBase(const BluetoothUUID& uuid) : uuid_(uuid) {}
6
+
7
+ BluetoothUUID DescriptorBase::uuid() { return uuid_; }
@@ -0,0 +1,19 @@
1
+ #pragma once
2
+
3
+ #include <simpleble/Exceptions.h>
4
+ #include <simpleble/Types.h>
5
+
6
+ namespace SimpleBLE {
7
+
8
+ class DescriptorBase {
9
+ public:
10
+ DescriptorBase(const BluetoothUUID& uuid);
11
+ virtual ~DescriptorBase() = default;
12
+
13
+ BluetoothUUID uuid();
14
+
15
+ protected:
16
+ BluetoothUUID uuid_;
17
+ };
18
+
19
+ } // namespace SimpleBLE