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,27 @@
1
+ #pragma once
2
+
3
+ #include <simpledbus/advanced/Proxy.h>
4
+
5
+ #include <simplebluez/Characteristic.h>
6
+ #include <simplebluez/interfaces/GattService1.h>
7
+
8
+ namespace SimpleBluez {
9
+
10
+ class Service : public SimpleDBus::Proxy {
11
+ public:
12
+ Service(std::shared_ptr<SimpleDBus::Connection> conn, const std::string& bus_name, const std::string& path);
13
+ virtual ~Service() = default;
14
+
15
+ std::shared_ptr<Characteristic> get_characteristic(const std::string& uuid);
16
+
17
+ // ----- PROPERTIES -----
18
+ std::vector<std::shared_ptr<Characteristic>> characteristics();
19
+
20
+ std::string uuid();
21
+
22
+ private:
23
+ std::shared_ptr<SimpleDBus::Proxy> path_create(const std::string& path) override;
24
+ std::shared_ptr<GattService1> gattservice1();
25
+ };
26
+
27
+ } // namespace SimpleBluez
@@ -0,0 +1,9 @@
1
+ #pragma once
2
+
3
+ #include "kvn/kvn_bytearray.h"
4
+
5
+ namespace SimpleBluez {
6
+
7
+ using ByteArray = kvn::bytearray;
8
+
9
+ }
@@ -0,0 +1,49 @@
1
+ #pragma once
2
+
3
+ #include <simpledbus/advanced/Interface.h>
4
+ #include <simpledbus/advanced/InterfaceRegistry.h>
5
+
6
+ #include <optional>
7
+ #include <string>
8
+ #include <vector>
9
+
10
+ namespace SimpleBluez {
11
+
12
+ class Adapter1 : public SimpleDBus::Interface {
13
+ public:
14
+ // ----- TYPES -----
15
+ struct DiscoveryFilter {
16
+ typedef enum { AUTO, BREDR, LE } TransportType;
17
+ std::vector<std::string> UUIDs = {};
18
+ std::optional<int16_t> RSSI;
19
+ std::optional<uint16_t> Pathloss;
20
+ TransportType Transport = TransportType::AUTO;
21
+ bool DuplicateData = true;
22
+ bool Discoverable = false;
23
+ std::string Pattern = "";
24
+ };
25
+
26
+ // ----- CONSTRUCTORS -----
27
+ Adapter1(std::shared_ptr<SimpleDBus::Connection> conn, std::string path);
28
+ virtual ~Adapter1() = default;
29
+
30
+ // ----- METHODS -----
31
+ void RemoveDevice(std::string device_path);
32
+ void StartDiscovery();
33
+ void StopDiscovery();
34
+ void SetDiscoveryFilter(DiscoveryFilter filter);
35
+ SimpleDBus::Holder GetDiscoveryFilters();
36
+
37
+ // ----- PROPERTIES -----
38
+ bool Discovering(bool refresh = true);
39
+ bool Powered(bool refresh = true);
40
+ std::string Address();
41
+
42
+ protected:
43
+ void property_changed(std::string option_name) override;
44
+
45
+ private:
46
+ static const SimpleDBus::AutoRegisterInterface<Adapter1> registry;
47
+ };
48
+
49
+ } // namespace SimpleBluez
@@ -0,0 +1,100 @@
1
+ #pragma once
2
+
3
+ #include <simpledbus/advanced/Interface.h>
4
+ #include <simpledbus/advanced/InterfaceRegistry.h>
5
+
6
+ #include "kvn/kvn_safe_callback.hpp"
7
+
8
+ #include <cstdint>
9
+ #include <string>
10
+
11
+ namespace SimpleBluez {
12
+
13
+ class Agent1 : public SimpleDBus::Interface {
14
+ public:
15
+ Agent1(std::shared_ptr<SimpleDBus::Connection> conn, std::string path);
16
+ virtual ~Agent1() = default;
17
+
18
+ // ----- METHODS -----
19
+
20
+ // ----- PROPERTIES -----
21
+
22
+ // ----- CALLBACKS -----
23
+
24
+ /**
25
+ * @brief This method gets called when the service daemon
26
+ * needs to get the passkey for an authentication.
27
+ * The return value should be a string of 1-16 characters
28
+ * length. The string can be alphanumeric.
29
+ *
30
+ * @note: Invalid values will cause a rejection of the request
31
+ * be returned.
32
+ */
33
+ kvn::safe_callback<std::string()> OnRequestPinCode;
34
+
35
+ /**
36
+ * @brief This method gets called when the service daemon
37
+ * needs to display a pincode for an authentication.
38
+ * Note that the PIN will always be a 6-digit number,
39
+ * zero-padded to 6 digits.
40
+ *
41
+ * @return false if the request should be rejected.
42
+ */
43
+ kvn::safe_callback<bool(const std::string&)> OnDisplayPinCode;
44
+
45
+ /**
46
+ * @brief This method gets called when the service daemon
47
+ * needs to get the passkey for an authentication.
48
+ * The return value should be a numeric value
49
+ * between 0 and 999999.
50
+ *
51
+ * @note: Invalid values will cause a rejection of the request
52
+ * be returned.
53
+ */
54
+ kvn::safe_callback<int32_t()> OnRequestPasskey;
55
+
56
+ /**
57
+ * @brief This method gets called when the service daemon
58
+ * needs to display a passkey for an authentication.
59
+ * The entered parameter indicates the number of already
60
+ * typed keys on the remote side.
61
+ */
62
+ kvn::safe_callback<void(uint32_t, uint16_t)> OnDisplayPasskey;
63
+
64
+ /**
65
+ * @brief This method gets called when the service daemon
66
+ * needs to confirm a passkey for an authentication.
67
+ *
68
+ * @return false if the request should be rejected.
69
+ */
70
+ kvn::safe_callback<bool(uint32_t)> OnRequestConfirmation;
71
+
72
+ /**
73
+ * @brief This method gets called to request the user to
74
+ * authorize an incoming pairing attempt which
75
+ * would in other circumstances trigger the just-works
76
+ * model, or when the user plugged in a device that
77
+ * implements cable pairing.
78
+ *
79
+ * @return false if the request should be rejected.
80
+ */
81
+ kvn::safe_callback<bool()> OnRequestAuthorization;
82
+
83
+ /**
84
+ * @brief This method gets called when the service daemon
85
+ * needs to authorize a connection/service request.
86
+ *
87
+ * @return false if the request should be rejected.
88
+ */
89
+ kvn::safe_callback<bool(const std::string&)> OnAuthorizeService;
90
+
91
+ protected:
92
+ void message_handle(SimpleDBus::Message& msg) override;
93
+
94
+ void reply_error(SimpleDBus::Message& msg, const std::string& error_name, const std::string& error_message);
95
+
96
+ private:
97
+ static const SimpleDBus::AutoRegisterInterface<Agent1> registry;
98
+ };
99
+
100
+ } // namespace SimpleBluez
@@ -0,0 +1,24 @@
1
+ #pragma once
2
+
3
+ #include <simpledbus/advanced/Interface.h>
4
+ #include <simpledbus/advanced/InterfaceRegistry.h>
5
+
6
+ #include <string>
7
+
8
+ namespace SimpleBluez {
9
+
10
+ class AgentManager1 : public SimpleDBus::Interface {
11
+ public:
12
+ AgentManager1(std::shared_ptr<SimpleDBus::Connection> conn, std::string path);
13
+ virtual ~AgentManager1() = default;
14
+
15
+ // ----- METHODS -----
16
+ void RegisterAgent(std::string agent, std::string capability);
17
+ void RequestDefaultAgent(std::string agent);
18
+ void UnregisterAgent(std::string agent);
19
+
20
+ private:
21
+ static const SimpleDBus::AutoRegisterInterface<AgentManager1> registry;
22
+ };
23
+
24
+ } // namespace SimpleBluez
@@ -0,0 +1,32 @@
1
+ #pragma once
2
+
3
+ #include <simpledbus/advanced/Interface.h>
4
+ #include <simpledbus/advanced/InterfaceRegistry.h>
5
+
6
+ #include "kvn/kvn_safe_callback.hpp"
7
+
8
+ #include <string>
9
+
10
+ namespace SimpleBluez {
11
+
12
+ class Battery1 : public SimpleDBus::Interface {
13
+ public:
14
+ Battery1(std::shared_ptr<SimpleDBus::Connection> conn, std::string path);
15
+ virtual ~Battery1();
16
+
17
+ // ----- METHODS -----
18
+
19
+ // ----- PROPERTIES -----
20
+ uint8_t Percentage();
21
+
22
+ // ----- CALLBACKS -----
23
+ kvn::safe_callback<void()> OnPercentageChanged;
24
+
25
+ protected:
26
+ void property_changed(std::string option_name) override;
27
+
28
+ private:
29
+ static const SimpleDBus::AutoRegisterInterface<Battery1> registry;
30
+ };
31
+
32
+ } // namespace SimpleBluez
@@ -0,0 +1,62 @@
1
+ #pragma once
2
+
3
+ #include <simpledbus/advanced/Interface.h>
4
+ #include <simpledbus/advanced/InterfaceRegistry.h>
5
+
6
+ #include "kvn/kvn_safe_callback.hpp"
7
+
8
+ #include <string>
9
+
10
+ #include "simplebluez/Types.h"
11
+
12
+ namespace SimpleBluez {
13
+
14
+ class Device1 : public SimpleDBus::Interface {
15
+ public:
16
+ Device1(std::shared_ptr<SimpleDBus::Connection> conn, std::string path);
17
+ virtual ~Device1();
18
+
19
+ // ----- METHODS -----
20
+ void Connect();
21
+ void Disconnect();
22
+ void Pair();
23
+ void CancelPairing();
24
+
25
+ // ----- PROPERTIES -----
26
+ int16_t RSSI();
27
+ int16_t TxPower();
28
+ uint16_t Appearance(); // On Bluez 5.53, this always returns 0.
29
+ std::string Address();
30
+ std::string AddressType();
31
+ std::string Alias();
32
+ std::string Name();
33
+ std::vector<std::string> UUIDs();
34
+ std::map<uint16_t, ByteArray> ManufacturerData(bool refresh = true);
35
+ std::map<std::string, ByteArray> ServiceData(bool refresh = true);
36
+ bool Paired(bool refresh = true);
37
+ bool Connected(bool refresh = true);
38
+ bool ServicesResolved(bool refresh = true);
39
+
40
+ // ----- CALLBACKS -----
41
+ kvn::safe_callback<void()> OnServicesResolved;
42
+ kvn::safe_callback<void()> OnDisconnected;
43
+
44
+ protected:
45
+ void property_changed(std::string option_name) override;
46
+
47
+ int16_t _rssi = INT16_MIN;
48
+ int16_t _tx_power = INT16_MIN;
49
+ std::string _name;
50
+ std::string _alias;
51
+ std::string _address;
52
+ std::string _address_type;
53
+ bool _connected;
54
+ bool _services_resolved;
55
+ std::map<uint16_t, ByteArray> _manufacturer_data;
56
+ std::map<std::string, ByteArray> _service_data;
57
+
58
+ private:
59
+ static const SimpleDBus::AutoRegisterInterface<Device1> registry;
60
+ };
61
+
62
+ } // namespace SimpleBluez
@@ -0,0 +1,48 @@
1
+ #pragma once
2
+
3
+ #include <simpledbus/advanced/Interface.h>
4
+ #include <simpledbus/advanced/InterfaceRegistry.h>
5
+
6
+ #include "kvn/kvn_safe_callback.hpp"
7
+
8
+ #include <simplebluez/Types.h>
9
+
10
+ #include <string>
11
+
12
+ namespace SimpleBluez {
13
+
14
+ class GattCharacteristic1 : public SimpleDBus::Interface {
15
+ public:
16
+ typedef enum { REQUEST = 0, COMMAND } WriteType;
17
+
18
+ GattCharacteristic1(std::shared_ptr<SimpleDBus::Connection> conn, std::string path);
19
+ virtual ~GattCharacteristic1();
20
+
21
+ // ----- METHODS -----
22
+ void StartNotify();
23
+ void StopNotify();
24
+ void WriteValue(const ByteArray& value, WriteType type);
25
+ ByteArray ReadValue();
26
+
27
+ // ----- PROPERTIES -----
28
+ std::string UUID();
29
+ ByteArray Value();
30
+ bool Notifying(bool refresh = true);
31
+ std::vector<std::string> Flags();
32
+ uint16_t MTU();
33
+
34
+ // ----- CALLBACKS -----
35
+ kvn::safe_callback<void()> OnValueChanged;
36
+
37
+ protected:
38
+ void property_changed(std::string option_name) override;
39
+ void update_value(SimpleDBus::Holder& new_value);
40
+
41
+ std::string _uuid;
42
+ ByteArray _value;
43
+
44
+ private:
45
+ static const SimpleDBus::AutoRegisterInterface<GattCharacteristic1> registry;
46
+ };
47
+
48
+ } // namespace SimpleBluez
@@ -0,0 +1,41 @@
1
+ #pragma once
2
+
3
+ #include <simpledbus/advanced/Interface.h>
4
+ #include <simpledbus/advanced/InterfaceRegistry.h>
5
+
6
+ #include "kvn/kvn_safe_callback.hpp"
7
+
8
+ #include <simplebluez/Types.h>
9
+
10
+ #include <string>
11
+
12
+ namespace SimpleBluez {
13
+
14
+ class GattDescriptor1 : public SimpleDBus::Interface {
15
+ public:
16
+ GattDescriptor1(std::shared_ptr<SimpleDBus::Connection> conn, std::string path);
17
+ virtual ~GattDescriptor1();
18
+
19
+ // ----- METHODS -----
20
+ void WriteValue(const ByteArray& value);
21
+ ByteArray ReadValue();
22
+
23
+ // ----- PROPERTIES -----
24
+ std::string UUID();
25
+ ByteArray Value();
26
+
27
+ // ----- CALLBACKS -----
28
+ kvn::safe_callback<void()> OnValueChanged;
29
+
30
+ protected:
31
+ void property_changed(std::string option_name) override;
32
+ void update_value(SimpleDBus::Holder& new_value);
33
+
34
+ std::string _uuid;
35
+ ByteArray _value;
36
+
37
+ private:
38
+ static const SimpleDBus::AutoRegisterInterface<GattDescriptor1> registry;
39
+ };
40
+
41
+ } // namespace SimpleBluez
@@ -0,0 +1,28 @@
1
+ #pragma once
2
+
3
+ #include <simpledbus/advanced/Interface.h>
4
+ #include <simpledbus/advanced/InterfaceRegistry.h>
5
+ #include <string>
6
+
7
+ namespace SimpleBluez {
8
+
9
+ class GattService1 : public SimpleDBus::Interface {
10
+ public:
11
+ GattService1(std::shared_ptr<SimpleDBus::Connection> conn, std::string path);
12
+ virtual ~GattService1() = default;
13
+
14
+ // ----- METHODS -----
15
+
16
+ // ----- PROPERTIES -----
17
+ std::string UUID();
18
+
19
+ protected:
20
+ void property_changed(std::string option_name) override;
21
+
22
+ std::string _uuid;
23
+
24
+ private:
25
+ static const SimpleDBus::AutoRegisterInterface<GattService1> registry;
26
+ };
27
+
28
+ } // namespace SimpleBluez
@@ -0,0 +1,78 @@
1
+ #include <simplebluez/Adapter.h>
2
+ #include <simplebluez/Device.h>
3
+
4
+ #include <simplebluez/interfaces/Adapter1.h>
5
+
6
+ using namespace SimpleBluez;
7
+
8
+ Adapter::Adapter(std::shared_ptr<SimpleDBus::Connection> conn, const std::string& bus_name, const std::string& path)
9
+ : Proxy(conn, bus_name, path) {}
10
+
11
+ Adapter::~Adapter() {}
12
+
13
+ std::shared_ptr<SimpleDBus::Proxy> Adapter::path_create(const std::string& path) {
14
+ auto child = std::make_shared<Device>(_conn, _bus_name, path);
15
+ child->on_signal_received.load([this, child]() { _on_device_updated(child); });
16
+ return std::static_pointer_cast<SimpleDBus::Proxy>(child);
17
+ }
18
+
19
+ std::shared_ptr<Adapter1> Adapter::adapter1() {
20
+ return std::dynamic_pointer_cast<Adapter1>(interface_get("org.bluez.Adapter1"));
21
+ }
22
+
23
+ std::string Adapter::identifier() const {
24
+ std::size_t start = _path.find_last_of("/");
25
+ return _path.substr(start + 1);
26
+ }
27
+
28
+ std::string Adapter::address() { return adapter1()->Address(); }
29
+
30
+ bool Adapter::discovering() { return adapter1()->Discovering(); }
31
+
32
+ bool Adapter::powered() { return adapter1()->Powered(); }
33
+
34
+ void Adapter::discovery_filter(const DiscoveryFilter& filter) { adapter1()->SetDiscoveryFilter(filter); }
35
+
36
+ void Adapter::discovery_start() { adapter1()->StartDiscovery(); }
37
+
38
+ void Adapter::discovery_stop() { adapter1()->StopDiscovery(); }
39
+
40
+ std::shared_ptr<Device> Adapter::device_get(const std::string& path) {
41
+ return std::dynamic_pointer_cast<Device>(path_get(path));
42
+ }
43
+
44
+ void Adapter::device_remove(const std::string& path) { adapter1()->RemoveDevice(path); }
45
+
46
+ void Adapter::device_remove(const std::shared_ptr<Device>& device) { adapter1()->RemoveDevice(device->path()); }
47
+
48
+ std::vector<std::shared_ptr<Device>> Adapter::device_paired_get() {
49
+ // Traverse all child paths and return only those that are paired.
50
+ std::vector<std::shared_ptr<Device>> paired_devices;
51
+
52
+ for (auto& [path, child] : _children) {
53
+ if (!child->valid()) continue;
54
+
55
+ std::shared_ptr<Device> device = std::dynamic_pointer_cast<Device>(child);
56
+ if (device->paired()) {
57
+ paired_devices.push_back(device);
58
+ }
59
+ }
60
+
61
+ return paired_devices;
62
+ }
63
+
64
+ void Adapter::set_on_device_updated(std::function<void(std::shared_ptr<Device> device)> callback) {
65
+ _on_device_updated.load(callback);
66
+
67
+ on_child_created.load([this, callback](std::string child_path) {
68
+ auto device = device_get(child_path);
69
+ if (device) {
70
+ _on_device_updated(device);
71
+ }
72
+ });
73
+ }
74
+
75
+ void Adapter::clear_on_device_updated() {
76
+ _on_device_updated.unload();
77
+ on_child_created.unload();
78
+ }
@@ -0,0 +1,72 @@
1
+ #include <simplebluez/Agent.h>
2
+
3
+ #include <iostream>
4
+
5
+ using namespace SimpleBluez;
6
+
7
+ Agent::Agent(std::shared_ptr<SimpleDBus::Connection> conn, const std::string& bus_name, const std::string& path)
8
+ : Proxy(conn, bus_name, path) {
9
+ _interfaces.emplace(std::make_pair(
10
+ "org.bluez.Agent1", std::static_pointer_cast<SimpleDBus::Interface>(std::make_shared<Agent1>(_conn, _path))));
11
+ }
12
+
13
+ std::string Agent::capabilities() const {
14
+ switch (_capabilities) {
15
+ case DisplayOnly:
16
+ return "DisplayOnly";
17
+ case DisplayYesNo:
18
+ return "DisplayYesNo";
19
+ case KeyboardOnly:
20
+ return "KeyboardOnly";
21
+ case NoInputNoOutput:
22
+ return "NoInputNoOutput";
23
+ case KeyboardDisplay:
24
+ return "KeyboardDisplay";
25
+ default:
26
+ return "";
27
+ }
28
+ }
29
+
30
+ void Agent::set_capabilities(Agent::Capabilities capabilities) { _capabilities = capabilities; }
31
+
32
+ void Agent::set_on_request_pin_code(std::function<std::string()> callback) {
33
+ agent1()->OnRequestPinCode.load(callback);
34
+ }
35
+
36
+ void Agent::clear_on_request_pin_code() { agent1()->OnRequestPinCode.unload(); }
37
+
38
+ void Agent::set_on_display_pin_code(std::function<bool(const std::string&)> callback) {
39
+ agent1()->OnDisplayPinCode.load(callback);
40
+ }
41
+
42
+ void Agent::clear_on_display_pin_code() { agent1()->OnDisplayPinCode.unload(); }
43
+
44
+ void Agent::set_on_request_passkey(std::function<uint32_t()> callback) { agent1()->OnRequestPasskey.load(callback); }
45
+
46
+ void Agent::clear_on_request_passkey() { agent1()->OnRequestPasskey.unload(); }
47
+
48
+ void Agent::set_on_display_passkey(std::function<void(uint32_t, uint16_t)> callback) {
49
+ agent1()->OnDisplayPasskey.load(callback);
50
+ }
51
+
52
+ void Agent::clear_on_display_passkey() { agent1()->OnDisplayPasskey.unload(); }
53
+
54
+ void Agent::set_on_request_confirmation(std::function<bool(uint32_t)> callback) {
55
+ agent1()->OnRequestConfirmation.load(callback);
56
+ }
57
+
58
+ void Agent::clear_on_request_confirmation() { agent1()->OnRequestConfirmation.unload(); }
59
+
60
+ void Agent::set_on_request_authorization(std::function<bool()> callback) {
61
+ agent1()->OnRequestAuthorization.load(callback);
62
+ }
63
+
64
+ void Agent::clear_on_request_authorization() { agent1()->OnRequestAuthorization.unload(); }
65
+
66
+ void Agent::set_on_authorize_service(std::function<bool(const std::string&)> callback) {
67
+ agent1()->OnAuthorizeService.load(callback);
68
+ }
69
+
70
+ void Agent::clear_on_authorize_service() { agent1()->OnAuthorizeService.unload(); }
71
+
72
+ std::shared_ptr<Agent1> Agent::agent1() { return std::dynamic_pointer_cast<Agent1>(interface_get("org.bluez.Agent1")); }
@@ -0,0 +1,45 @@
1
+ #include <simplebluez/Bluez.h>
2
+ #include <simpledbus/interfaces/ObjectManager.h>
3
+
4
+ using namespace SimpleBluez;
5
+
6
+ #ifdef SIMPLEBLUEZ_USE_SESSION_DBUS
7
+ #define DBUS_BUS DBUS_BUS_SESSION
8
+ #else
9
+ #define DBUS_BUS DBUS_BUS_SYSTEM
10
+ #endif
11
+
12
+ Bluez::Bluez() : _conn(std::make_shared<SimpleDBus::Connection>(DBUS_BUS)) {}
13
+
14
+ Bluez::~Bluez() {
15
+ if (_conn->is_initialized()) {
16
+ _conn->remove_match("type='signal',sender='org.bluez'");
17
+ }
18
+ }
19
+
20
+ void Bluez::init() {
21
+ _conn->init();
22
+ _conn->add_match("type='signal',sender='org.bluez'");
23
+
24
+ _bluez_root = std::make_shared<BluezRoot>(_conn, "org.bluez", "/");
25
+ _bluez_root->load_managed_objects();
26
+ }
27
+
28
+ void Bluez::run_async() {
29
+ // TODO: UNCOMMENT THIS WHEN MIGRATING TO NEW PROXY FORWARDING LOGIC
30
+ //_conn->read_write_dispatch();
31
+
32
+ // BELOW IS THE LEGACY LOGIC
33
+ _conn->read_write();
34
+ SimpleDBus::Message message = _conn->pop_message();
35
+ while (message.is_valid()) {
36
+ _bluez_root->message_forward(message);
37
+ message = _conn->pop_message();
38
+ }
39
+ }
40
+
41
+ std::vector<std::shared_ptr<Adapter>> Bluez::get_adapters() { return _bluez_root->get_adapters(); }
42
+
43
+ std::shared_ptr<Agent> Bluez::get_agent() { return _bluez_root->get_agent(); }
44
+
45
+ void Bluez::register_agent() { _bluez_root->register_agent(); }
@@ -0,0 +1,20 @@
1
+ #include <simplebluez/BluezOrg.h>
2
+ #include <simplebluez/BluezOrgBluez.h>
3
+
4
+ using namespace SimpleBluez;
5
+
6
+ BluezOrg::BluezOrg(std::shared_ptr<SimpleDBus::Connection> conn, const std::string& bus_name, const std::string& path)
7
+ : Proxy(conn, bus_name, path) {}
8
+
9
+ std::vector<std::shared_ptr<Adapter>> BluezOrg::get_adapters() {
10
+ return std::dynamic_pointer_cast<BluezOrgBluez>(path_get("/org/bluez"))->get_adapters();
11
+ }
12
+
13
+ void BluezOrg::register_agent(std::shared_ptr<Agent> agent) {
14
+ std::dynamic_pointer_cast<BluezOrgBluez>(path_get("/org/bluez"))->register_agent(agent);
15
+ }
16
+
17
+ std::shared_ptr<SimpleDBus::Proxy> BluezOrg::path_create(const std::string& path) {
18
+ auto child = std::make_shared<BluezOrgBluez>(_conn, _bus_name, path);
19
+ return std::static_pointer_cast<SimpleDBus::Proxy>(child);
20
+ }
@@ -0,0 +1,23 @@
1
+ #include <simplebluez/Adapter.h>
2
+ #include <simplebluez/BluezOrgBluez.h>
3
+
4
+ using namespace SimpleBluez;
5
+
6
+ BluezOrgBluez::BluezOrgBluez(std::shared_ptr<SimpleDBus::Connection> conn, const std::string& bus_name,
7
+ const std::string& path)
8
+ : Proxy(conn, bus_name, path) {}
9
+
10
+ std::shared_ptr<SimpleDBus::Proxy> BluezOrgBluez::path_create(const std::string& path) {
11
+ auto child = std::make_shared<Adapter>(_conn, _bus_name, path);
12
+ return std::static_pointer_cast<SimpleDBus::Proxy>(child);
13
+ }
14
+
15
+ std::shared_ptr<AgentManager1> BluezOrgBluez::agentmanager1() {
16
+ return std::dynamic_pointer_cast<AgentManager1>(interface_get("org.bluez.AgentManager1"));
17
+ }
18
+
19
+ void BluezOrgBluez::register_agent(std::shared_ptr<Agent> agent) {
20
+ agentmanager1()->RegisterAgent(agent->path(), agent->capabilities());
21
+ }
22
+
23
+ std::vector<std::shared_ptr<Adapter>> BluezOrgBluez::get_adapters() { return children_casted<Adapter>(); }