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,102 @@
1
+ #pragma once
2
+
3
+ #include <functional>
4
+ #include <memory>
5
+ #include <string>
6
+ #include <vector>
7
+
8
+ #include <simpleble/export.h>
9
+
10
+ #include <simpleble/Exceptions.h>
11
+ #include <simpleble/Peripheral.h>
12
+ #include <simpleble/Types.h>
13
+
14
+ namespace SimpleBLE {
15
+
16
+ class AdapterBase;
17
+
18
+ /**
19
+ * Bluetooth Adapter.
20
+ *
21
+ * A default-constructed Adapter object is not initialized. Calling any method
22
+ * other than `initialized()` on an uninitialized Adapter will throw an exception
23
+ * of type `SimpleBLE::NotInitialized`.
24
+ *
25
+ * NOTE: This class is intended to be used by the user only. Library developers
26
+ * should use shared pointers to `AdapterBase` instead.
27
+ */
28
+ class SIMPLEBLE_EXPORT Adapter {
29
+ public:
30
+ Adapter() = default;
31
+ virtual ~Adapter() = default;
32
+
33
+ bool initialized() const;
34
+
35
+ /**
36
+ * Retrieve the underlying OS object/handle.
37
+ *
38
+ * For certain compatibility with external libraries, we sometimes need to
39
+ * expose the actual OS handle to the user. This is particularly important
40
+ * for MacOS right now.
41
+ */
42
+ void* underlying() const;
43
+
44
+ std::string identifier();
45
+ BluetoothAddress address();
46
+
47
+ /**
48
+ * Control the power state of the adapter.
49
+ *
50
+ * NOTE: The power on/off functionality is only supported on Windows and Linux (implementation pending).
51
+ * On other platforms, this method will do nothing.
52
+ * NOTE: Callbacks are currently a placeholder for future implementation.
53
+ */
54
+ void power_on();
55
+ void power_off();
56
+ bool is_powered();
57
+ void set_callback_on_power_on(std::function<void()> on_power_on);
58
+ void set_callback_on_power_off(std::function<void()> on_power_off);
59
+
60
+ void scan_start();
61
+ void scan_stop();
62
+ void scan_for(int timeout_ms);
63
+ bool scan_is_active();
64
+ std::vector<Peripheral> scan_get_results();
65
+
66
+ void set_callback_on_scan_start(std::function<void()> on_scan_start);
67
+ void set_callback_on_scan_stop(std::function<void()> on_scan_stop);
68
+ void set_callback_on_scan_updated(std::function<void(Peripheral)> on_scan_updated);
69
+ void set_callback_on_scan_found(std::function<void(Peripheral)> on_scan_found);
70
+
71
+ /**
72
+ * Retrieve a list of all paired peripherals.
73
+ *
74
+ * NOTE:This method is currently only supported by the Linux, Windows and Android backends.
75
+ */
76
+ std::vector<Peripheral> get_paired_peripherals();
77
+
78
+ /**
79
+ * Retrieve a list of all connected peripherals.
80
+ *
81
+ * NOTE: This method is currently only supported by the Windows backend. (More backends coming soon.)
82
+ */
83
+ std::vector<Peripheral> get_connected_peripherals();
84
+
85
+ static bool bluetooth_enabled();
86
+
87
+ /**
88
+ * Fetches a list of all available adapters from all available backends.
89
+ *
90
+ * This will cause backends to be instantiated/initialized and adapters
91
+ * too.
92
+ */
93
+ static std::vector<Adapter> get_adapters();
94
+
95
+ protected:
96
+ AdapterBase* operator->();
97
+ const AdapterBase* operator->() const;
98
+
99
+ std::shared_ptr<AdapterBase> internal_;
100
+ };
101
+
102
+ } // namespace SimpleBLE
@@ -0,0 +1,58 @@
1
+ #pragma once
2
+
3
+ #include <simpleble/export.h>
4
+
5
+ #include <simpleble/Adapter.h>
6
+ #include <simpleble/PeripheralSafe.h>
7
+ #include <memory>
8
+ #include <optional>
9
+ #include <vector>
10
+
11
+ namespace SimpleBLE {
12
+
13
+ namespace Safe {
14
+
15
+ /**
16
+ * Wrapper around the Adapter class that provides a noexcept interface.
17
+ *
18
+ * We use instances of this class directly and not through shared_ptr because
19
+ * this is just a wrapper around the Adapter class, which is already managed by
20
+ * shared_ptr.
21
+ */
22
+ class SIMPLEBLE_EXPORT Adapter {
23
+ public:
24
+ Adapter(SimpleBLE::Adapter& adapter);
25
+ Adapter(SimpleBLE::Adapter&& adapter);
26
+ virtual ~Adapter() = default;
27
+
28
+ std::optional<std::string> identifier() noexcept;
29
+ std::optional<BluetoothAddress> address() noexcept;
30
+
31
+ bool scan_start() noexcept;
32
+ bool scan_stop() noexcept;
33
+ bool scan_for(int timeout_ms) noexcept;
34
+ std::optional<bool> scan_is_active() noexcept;
35
+ std::optional<std::vector<SimpleBLE::Safe::Peripheral>> scan_get_results() noexcept;
36
+
37
+ bool set_callback_on_scan_start(std::function<void()> on_scan_start) noexcept;
38
+ bool set_callback_on_scan_stop(std::function<void()> on_scan_stop) noexcept;
39
+ bool set_callback_on_scan_updated(std::function<void(SimpleBLE::Safe::Peripheral)> on_scan_updated) noexcept;
40
+ bool set_callback_on_scan_found(std::function<void(SimpleBLE::Safe::Peripheral)> on_scan_found) noexcept;
41
+
42
+ std::optional<std::vector<SimpleBLE::Safe::Peripheral>> get_paired_peripherals() noexcept;
43
+
44
+ static std::optional<bool> bluetooth_enabled() noexcept;
45
+ static std::optional<std::vector<SimpleBLE::Safe::Adapter>> get_adapters() noexcept;
46
+
47
+ /**
48
+ * Cast to the underlying adapter object.
49
+ */
50
+ operator SimpleBLE::Adapter() const noexcept;
51
+
52
+ protected:
53
+ SimpleBLE::Adapter internal_;
54
+ };
55
+
56
+ } // namespace Safe
57
+
58
+ } // namespace SimpleBLE
@@ -0,0 +1,39 @@
1
+ #pragma once
2
+
3
+ #include <memory>
4
+
5
+ #include <simpleble/export.h>
6
+
7
+ #include <simpleble/Descriptor.h>
8
+ #include <simpleble/Exceptions.h>
9
+ #include <simpleble/Types.h>
10
+
11
+ namespace SimpleBLE {
12
+
13
+ class CharacteristicBase;
14
+
15
+ class SIMPLEBLE_EXPORT Characteristic {
16
+ public:
17
+ Characteristic() = default;
18
+ virtual ~Characteristic() = default;
19
+
20
+ bool initialized() const;
21
+
22
+ BluetoothUUID uuid();
23
+ std::vector<Descriptor> descriptors();
24
+ std::vector<std::string> capabilities();
25
+
26
+ bool can_read();
27
+ bool can_write_request();
28
+ bool can_write_command();
29
+ bool can_notify();
30
+ bool can_indicate();
31
+
32
+ protected:
33
+ CharacteristicBase* operator->();
34
+ const CharacteristicBase* operator->() const;
35
+
36
+ std::shared_ptr<CharacteristicBase> internal_;
37
+ };
38
+
39
+ } // namespace SimpleBLE
@@ -0,0 +1,55 @@
1
+ #pragma once
2
+ #include <chrono>
3
+
4
+ namespace SimpleBLE {
5
+ namespace Config {
6
+ namespace SimpleBluez {
7
+ inline static std::chrono::steady_clock::duration connection_timeout = std::chrono::seconds(2);
8
+ inline static std::chrono::steady_clock::duration disconnection_timeout = std::chrono::seconds(1);
9
+
10
+ static void reset() {
11
+ connection_timeout = std::chrono::seconds(2);
12
+ disconnection_timeout = std::chrono::seconds(1);
13
+ }
14
+ }
15
+
16
+ namespace WinRT {
17
+ inline static bool experimental_use_own_mta_apartment = true;
18
+ inline static bool experimental_reinitialize_winrt_apartment_on_main_thread = false;
19
+
20
+ static void reset() {
21
+ experimental_use_own_mta_apartment = true;
22
+ experimental_reinitialize_winrt_apartment_on_main_thread = false;
23
+ }
24
+ }
25
+
26
+ namespace CoreBluetooth {
27
+ static void reset() {}
28
+ }
29
+
30
+ namespace Android {
31
+ enum class ConnectionPriorityRequest {
32
+ DISABLED = -1,
33
+ BALANCED = 0,
34
+ HIGH = 1,
35
+ LOW_POWER = 2,
36
+ DCK = 3
37
+ };
38
+
39
+ inline static ConnectionPriorityRequest connection_priority_request = ConnectionPriorityRequest::DISABLED;
40
+
41
+ static void reset() {
42
+ connection_priority_request = ConnectionPriorityRequest::DISABLED;
43
+ }
44
+ }
45
+
46
+ namespace Base {
47
+ static void reset_all() {
48
+ SimpleBluez::reset();
49
+ WinRT::reset();
50
+ CoreBluetooth::reset();
51
+ Android::reset();
52
+ }
53
+ }
54
+ } // namespace Config
55
+ } // namespace SimpleBLE
@@ -0,0 +1,30 @@
1
+ #pragma once
2
+
3
+ #include <memory>
4
+
5
+ #include <simpleble/export.h>
6
+
7
+ #include <simpleble/Exceptions.h>
8
+ #include <simpleble/Types.h>
9
+
10
+ namespace SimpleBLE {
11
+
12
+ class DescriptorBase;
13
+
14
+ class SIMPLEBLE_EXPORT Descriptor {
15
+ public:
16
+ Descriptor() = default;
17
+ virtual ~Descriptor() = default;
18
+
19
+ bool initialized() const;
20
+
21
+ BluetoothUUID uuid();
22
+
23
+ protected:
24
+ DescriptorBase* operator->();
25
+ const DescriptorBase* operator->() const;
26
+
27
+ std::shared_ptr<DescriptorBase> internal_;
28
+ };
29
+
30
+ } // namespace SimpleBLE
@@ -0,0 +1,72 @@
1
+ #pragma once
2
+
3
+ #include <stdexcept>
4
+ #include <string>
5
+
6
+ #include <simpleble/export.h>
7
+
8
+ #include "Types.h"
9
+
10
+ namespace SimpleBLE {
11
+
12
+ namespace Exception {
13
+
14
+ class SIMPLEBLE_EXPORT BaseException : public std::runtime_error {
15
+ public:
16
+ BaseException(const std::string& __arg) : std::runtime_error(__arg) {}
17
+ };
18
+
19
+ class SIMPLEBLE_EXPORT NotInitialized : public BaseException {
20
+ public:
21
+ NotInitialized();
22
+ };
23
+
24
+ class SIMPLEBLE_EXPORT NotConnected : public BaseException {
25
+ public:
26
+ NotConnected();
27
+ };
28
+
29
+ class SIMPLEBLE_EXPORT InvalidReference : public BaseException {
30
+ public:
31
+ InvalidReference();
32
+ };
33
+
34
+ class SIMPLEBLE_EXPORT ServiceNotFound : public BaseException {
35
+ public:
36
+ ServiceNotFound(BluetoothUUID uuid);
37
+ };
38
+
39
+ class SIMPLEBLE_EXPORT CharacteristicNotFound : public BaseException {
40
+ public:
41
+ CharacteristicNotFound(BluetoothUUID uuid);
42
+ };
43
+
44
+ class SIMPLEBLE_EXPORT DescriptorNotFound : public BaseException {
45
+ public:
46
+ DescriptorNotFound(BluetoothUUID uuid);
47
+ };
48
+
49
+ class SIMPLEBLE_EXPORT OperationNotSupported : public BaseException {
50
+ public:
51
+ OperationNotSupported();
52
+ };
53
+
54
+ class SIMPLEBLE_EXPORT OperationFailed : public BaseException {
55
+ public:
56
+ OperationFailed();
57
+ OperationFailed(const std::string& err_msg);
58
+ };
59
+
60
+ class SIMPLEBLE_EXPORT WinRTException : public BaseException {
61
+ public:
62
+ WinRTException(int32_t err_code, const std::string& err_msg);
63
+ };
64
+
65
+ class SIMPLEBLE_EXPORT CoreBluetoothException : public BaseException {
66
+ public:
67
+ CoreBluetoothException(const std::string& err_msg);
68
+ };
69
+
70
+ } // namespace Exception
71
+
72
+ } // namespace SimpleBLE
@@ -0,0 +1,73 @@
1
+ #pragma once
2
+
3
+ #include <cstdint>
4
+ #include <functional>
5
+ #include <mutex>
6
+ #include <string>
7
+
8
+ #include <simpleble/export.h>
9
+
10
+ namespace SimpleBLE {
11
+
12
+ namespace Logging {
13
+
14
+ enum Level : int {
15
+ None = 0,
16
+ Fatal,
17
+ Error,
18
+ Warn,
19
+ Info,
20
+ Debug,
21
+ Verbose,
22
+ };
23
+
24
+ // clang-format off
25
+ using Callback = std::function<void(
26
+ Level,
27
+ const std::string& module,
28
+ const std::string& file,
29
+ uint32_t line,
30
+ const std::string& function,
31
+ const std::string& message)>;
32
+ // clang-format on
33
+
34
+ class SIMPLEBLE_EXPORT Logger {
35
+ public:
36
+ static Logger* get();
37
+
38
+ void set_level(Level level);
39
+ Level get_level();
40
+
41
+ void set_callback(Callback callback);
42
+ bool has_callback();
43
+
44
+ void log_default_stdout();
45
+ void log_default_file();
46
+ void log_default_file(const std::string path);
47
+
48
+ // clang-format off
49
+ void log(
50
+ Level level,
51
+ const std::string& module,
52
+ const std::string& file,
53
+ uint32_t line,
54
+ const std::string& function,
55
+ const std::string& message);
56
+ // clang-format on
57
+
58
+ private:
59
+ Logger();
60
+ ~Logger();
61
+ Logger(Logger& other) = delete; // Remove copy constructor
62
+ void operator=(const Logger&) = delete; // Remove copy assignment
63
+
64
+ static std::string level_to_str(Level level);
65
+
66
+ Level level_{Level::Info};
67
+ Callback callback_{nullptr};
68
+ std::recursive_mutex mutex_;
69
+ };
70
+
71
+ } // namespace Logging
72
+
73
+ } // namespace SimpleBLE
@@ -0,0 +1,82 @@
1
+ #pragma once
2
+
3
+ #include <cstdint>
4
+ #include <functional>
5
+ #include <map>
6
+ #include <memory>
7
+ #include <string>
8
+ #include <vector>
9
+
10
+ #include <simpleble/export.h>
11
+
12
+ #include <simpleble/Exceptions.h>
13
+ #include <simpleble/Service.h>
14
+ #include <simpleble/Types.h>
15
+
16
+ namespace SimpleBLE {
17
+
18
+ class PeripheralBase;
19
+
20
+ class SIMPLEBLE_EXPORT Peripheral {
21
+ public:
22
+ Peripheral() = default;
23
+ virtual ~Peripheral() = default;
24
+
25
+ bool initialized() const;
26
+ void* underlying() const;
27
+
28
+ std::string identifier();
29
+ BluetoothAddress address();
30
+ BluetoothAddressType address_type();
31
+ int16_t rssi();
32
+
33
+ /**
34
+ * @brief Provides the advertised transmit power in dBm.
35
+ *
36
+ * @note If the field has not been advertised by the peripheral,
37
+ * the returned value will be -32768.
38
+ */
39
+ int16_t tx_power();
40
+ uint16_t mtu();
41
+
42
+ void connect();
43
+ void disconnect();
44
+ bool is_connected();
45
+ bool is_connectable();
46
+ bool is_paired();
47
+ void unpair();
48
+
49
+ /**
50
+ * @brief Provides a list of all services that are available on the peripheral.
51
+ *
52
+ * @note If the peripheral is not connected, it will return a list of services
53
+ * that were advertised by the device.
54
+ */
55
+ std::vector<Service> services();
56
+ std::map<uint16_t, ByteArray> manufacturer_data();
57
+
58
+ /* Calling any of the methods below when the device is not connected will throw
59
+ Exception::NotConnected */
60
+ // clang-format off
61
+ ByteArray read(BluetoothUUID const& service, BluetoothUUID const& characteristic);
62
+ void write_request(BluetoothUUID const& service, BluetoothUUID const& characteristic, ByteArray const& data);
63
+ void write_command(BluetoothUUID const& service, BluetoothUUID const& characteristic, ByteArray const& data);
64
+ void notify(BluetoothUUID const& service, BluetoothUUID const& characteristic, std::function<void(ByteArray payload)> callback);
65
+ void indicate(BluetoothUUID const& service, BluetoothUUID const& characteristic, std::function<void(ByteArray payload)> callback);
66
+ void unsubscribe(BluetoothUUID const& service, BluetoothUUID const& characteristic);
67
+
68
+ ByteArray read(BluetoothUUID const& service, BluetoothUUID const& characteristic, BluetoothUUID const& descriptor);
69
+ void write(BluetoothUUID const& service, BluetoothUUID const& characteristic, BluetoothUUID const& descriptor, ByteArray const& data);
70
+ // clang-format on
71
+
72
+ void set_callback_on_connected(std::function<void()> on_connected);
73
+ void set_callback_on_disconnected(std::function<void()> on_disconnected);
74
+
75
+ protected:
76
+ PeripheralBase* operator->();
77
+ const PeripheralBase* operator->() const;
78
+
79
+ std::shared_ptr<PeripheralBase> internal_;
80
+ };
81
+
82
+ } // namespace SimpleBLE
@@ -0,0 +1,64 @@
1
+ #pragma once
2
+
3
+ #include <memory>
4
+ #include <optional>
5
+
6
+ #include <simpleble/export.h>
7
+
8
+ #include <simpleble/Peripheral.h>
9
+ #include <simpleble/Service.h>
10
+
11
+ namespace SimpleBLE {
12
+
13
+ namespace Safe {
14
+
15
+ class SIMPLEBLE_EXPORT Peripheral {
16
+ public:
17
+ Peripheral(SimpleBLE::Peripheral& peripheral);
18
+ Peripheral(SimpleBLE::Peripheral&& peripheral);
19
+ virtual ~Peripheral() = default;
20
+
21
+ std::optional<std::string> identifier() noexcept;
22
+ std::optional<BluetoothAddress> address() noexcept;
23
+ std::optional<BluetoothAddressType> address_type() noexcept;
24
+ std::optional<int16_t> rssi() noexcept;
25
+ std::optional<int16_t> tx_power() noexcept;
26
+ std::optional<uint16_t> mtu() noexcept;
27
+
28
+ bool connect() noexcept;
29
+ bool disconnect() noexcept;
30
+ std::optional<bool> is_connected() noexcept;
31
+ std::optional<bool> is_connectable() noexcept;
32
+ std::optional<bool> is_paired() noexcept;
33
+ bool unpair() noexcept;
34
+
35
+ std::optional<std::vector<Service>> services() noexcept;
36
+ std::optional<std::map<uint16_t, ByteArray>> manufacturer_data() noexcept;
37
+
38
+ // clang-format off
39
+ std::optional<ByteArray> read(BluetoothUUID const& service, BluetoothUUID const& characteristic) noexcept;
40
+ bool write_request(BluetoothUUID const& service, BluetoothUUID const& characteristic, ByteArray const& data) noexcept;
41
+ bool write_command(BluetoothUUID const& service, BluetoothUUID const& characteristic, ByteArray const& data) noexcept;
42
+ bool notify(BluetoothUUID const& service, BluetoothUUID const& characteristic, std::function<void(ByteArray payload)> callback) noexcept;
43
+ bool indicate(BluetoothUUID const& service, BluetoothUUID const& characteristic, std::function<void(ByteArray payload)> callback) noexcept;
44
+ bool unsubscribe(BluetoothUUID const& service, BluetoothUUID const& characteristic) noexcept;
45
+
46
+ std::optional<ByteArray> read(BluetoothUUID const& service, BluetoothUUID const& characteristic, BluetoothUUID const& descriptor) noexcept;
47
+ bool write(BluetoothUUID const& service, BluetoothUUID const& characteristic, BluetoothUUID const& descriptor, ByteArray const& data) noexcept;
48
+ // clang-format on
49
+
50
+ bool set_callback_on_connected(std::function<void()> on_connected) noexcept;
51
+ bool set_callback_on_disconnected(std::function<void()> on_disconnected) noexcept;
52
+
53
+ /**
54
+ * Get the underlying peripheral object.
55
+ */
56
+ operator SimpleBLE::Peripheral() const noexcept;
57
+
58
+ protected:
59
+ SimpleBLE::Peripheral internal_;
60
+ };
61
+
62
+ } // namespace Safe
63
+
64
+ } // namespace SimpleBLE
@@ -0,0 +1,34 @@
1
+ #pragma once
2
+
3
+ #include <memory>
4
+ #include <vector>
5
+
6
+ #include <simpleble/export.h>
7
+
8
+ #include <simpleble/Exceptions.h>
9
+ #include <simpleble/Types.h>
10
+ #include "simpleble/Characteristic.h"
11
+
12
+ namespace SimpleBLE {
13
+
14
+ class ServiceBase;
15
+
16
+ class SIMPLEBLE_EXPORT Service {
17
+ public:
18
+ Service() = default;
19
+ virtual ~Service() = default;
20
+
21
+ bool initialized() const;
22
+
23
+ BluetoothUUID uuid();
24
+ ByteArray data();
25
+ std::vector<Characteristic> characteristics();
26
+
27
+ protected:
28
+ const ServiceBase* operator->() const;
29
+ ServiceBase* operator->();
30
+
31
+ std::shared_ptr<ServiceBase> internal_;
32
+ };
33
+
34
+ } // namespace SimpleBLE
@@ -0,0 +1,8 @@
1
+ #pragma once
2
+
3
+ #include <simpleble/Config.h>
4
+ #include <simpleble/Adapter.h>
5
+ #include <simpleble/AdapterSafe.h>
6
+ #include <simpleble/Peripheral.h>
7
+ #include <simpleble/PeripheralSafe.h>
8
+ #include <simpleble/Utils.h>
@@ -0,0 +1,49 @@
1
+ #pragma once
2
+
3
+ #include <cstdint>
4
+ #include <string>
5
+ #include <vector>
6
+ #include "kvn/kvn_bytearray.h"
7
+
8
+ /**
9
+ * @file Types.h
10
+ * @brief Defines types and enumerations used throughout the SimpleBLE library.
11
+ */
12
+
13
+ namespace SimpleBLE {
14
+
15
+ using BluetoothAddress = std::string;
16
+
17
+ // IDEA: Extend BluetoothUUID to include a `uuid` function that
18
+ // returns the same string, but provides a homogeneous interface.
19
+ using BluetoothUUID = std::string;
20
+
21
+ /**
22
+ * @typedef ByteArray
23
+ * @brief Represents a byte array using kvn::bytearray from the external library.
24
+ */
25
+ using ByteArray = kvn::bytearray;
26
+
27
+ #ifdef ANDROID
28
+ #pragma push_macro("ANDROID")
29
+ #undef ANDROID
30
+ #define ANDROID_WAS_DEFINED
31
+ #endif
32
+
33
+ enum class OperatingSystem {
34
+ WINDOWS,
35
+ MACOS,
36
+ IOS,
37
+ LINUX,
38
+ ANDROID,
39
+ };
40
+
41
+ #ifdef ANDROID_WAS_DEFINED
42
+ #pragma pop_macro("ANDROID")
43
+ #undef ANDROID_WAS_DEFINED
44
+ #endif
45
+
46
+ // TODO: Add to_string functions for all enums.
47
+ enum BluetoothAddressType : int32_t { PUBLIC = 0, RANDOM = 1, UNSPECIFIED = 2 };
48
+
49
+ } // namespace SimpleBLE
@@ -0,0 +1,13 @@
1
+ #pragma once
2
+
3
+ #include <simpleble/export.h>
4
+
5
+ #include <simpleble/Types.h>
6
+
7
+ namespace SimpleBLE {
8
+
9
+ OperatingSystem SIMPLEBLE_EXPORT get_operating_system();
10
+
11
+ std::string SIMPLEBLE_EXPORT get_simpleble_version();
12
+
13
+ } // namespace SimpleBLE