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,106 @@
1
+ #include <pybind11/functional.h>
2
+ #include <pybind11/pybind11.h>
3
+ #include <pybind11/stl.h>
4
+
5
+ #include "simpleble/SimpleBLE.h"
6
+
7
+ namespace py = pybind11;
8
+
9
+ constexpr auto kDocsAdapter = R"pbdoc(
10
+ Adapter
11
+ )pbdoc";
12
+
13
+ constexpr auto kDocsAdapterBluetoothEnabled = R"pbdoc(
14
+ Whether Bluetooth is enabled
15
+ )pbdoc";
16
+
17
+ constexpr auto kDocsAdapterGetAdapters = R"pbdoc(
18
+ Get all available adapters
19
+ )pbdoc";
20
+
21
+ constexpr auto kDocsAdapterInitialized = R"pbdoc(
22
+ Whether the adapter is initialized
23
+ )pbdoc";
24
+
25
+ constexpr auto kDocsAdapterIdentifier = R"pbdoc(
26
+ Identifier of the adapter
27
+ )pbdoc";
28
+
29
+ constexpr auto kDocsAdapterAddress = R"pbdoc(
30
+ Address of the adapter
31
+ )pbdoc";
32
+
33
+ constexpr auto kDocsAdapterPowerOn = R"pbdoc(
34
+ Power on the adapter
35
+ )pbdoc";
36
+
37
+ constexpr auto kDocsAdapterPowerOff = R"pbdoc(
38
+ Power off the adapter
39
+ )pbdoc";
40
+
41
+ constexpr auto kDocsAdapterIsPowered = R"pbdoc(
42
+ Whether the adapter is powered
43
+ )pbdoc";
44
+
45
+ constexpr auto kDocsAdapterScanStart = R"pbdoc(
46
+ Start scanning for peripherals
47
+ )pbdoc";
48
+
49
+ constexpr auto kDocsAdapterScanStop = R"pbdoc(
50
+ Stop scanning for peripherals
51
+ )pbdoc";
52
+
53
+ constexpr auto kDocsAdapterScanIsActive = R"pbdoc(
54
+ Whether the adapter is scanning
55
+ )pbdoc";
56
+
57
+ constexpr auto kDocsAdapterScanFor = R"pbdoc(
58
+ Scan for peripherals for a given duration
59
+ )pbdoc";
60
+
61
+ constexpr auto kDocsAdapterScanGetResults = R"pbdoc(
62
+ Get the results of the last scan
63
+ )pbdoc";
64
+
65
+ constexpr auto kDocsAdapterSetCallbackOnScanStart = R"pbdoc(
66
+ Set the callback to be called when scanning starts
67
+ )pbdoc";
68
+
69
+ constexpr auto kDocsAdapterSetCallbackOnScanStop = R"pbdoc(
70
+ Set the callback to be called when scanning stops
71
+ )pbdoc";
72
+
73
+ constexpr auto kDocsAdapterSetCallbackOnScanFound = R"pbdoc(
74
+ Set the callback to be called when a peripheral is found
75
+ )pbdoc";
76
+
77
+ constexpr auto kDocsAdapterSetCallbackOnScanUpdated = R"pbdoc(
78
+ Set the callback to be called when a peripheral is updated
79
+ )pbdoc";
80
+
81
+ constexpr auto kDocsAdapterGetPairedPeripherals = R"pbdoc(
82
+ Get all paired peripherals
83
+ )pbdoc";
84
+
85
+ void wrap_adapter(py::module& m) {
86
+ // TODO: Add __str__ and __repr__ methods
87
+ py::class_<SimpleBLE::Adapter>(m, "Adapter")
88
+ .def("bluetooth_enabled", &SimpleBLE::Adapter::bluetooth_enabled, kDocsAdapterBluetoothEnabled)
89
+ .def("get_adapters", &SimpleBLE::Adapter::get_adapters, kDocsAdapterGetAdapters)
90
+ .def("initialized", &SimpleBLE::Adapter::initialized, kDocsAdapterInitialized)
91
+ .def("identifier", &SimpleBLE::Adapter::identifier, kDocsAdapterIdentifier)
92
+ .def("address", &SimpleBLE::Adapter::address, kDocsAdapterAddress)
93
+ .def("power_on", &SimpleBLE::Adapter::power_on, kDocsAdapterPowerOn)
94
+ .def("power_off", &SimpleBLE::Adapter::power_off, kDocsAdapterPowerOff)
95
+ .def("is_powered", &SimpleBLE::Adapter::is_powered, kDocsAdapterIsPowered)
96
+ .def("scan_start", &SimpleBLE::Adapter::scan_start, kDocsAdapterScanStart)
97
+ .def("scan_stop", &SimpleBLE::Adapter::scan_stop, kDocsAdapterScanStop)
98
+ .def("scan_is_active", &SimpleBLE::Adapter::scan_is_active, kDocsAdapterScanIsActive)
99
+ .def("scan_for", &SimpleBLE::Adapter::scan_for, py::call_guard<py::gil_scoped_release>(), kDocsAdapterScanFor)
100
+ .def("scan_get_results", &SimpleBLE::Adapter::scan_get_results, kDocsAdapterScanGetResults)
101
+ .def("set_callback_on_scan_start", &SimpleBLE::Adapter::set_callback_on_scan_start, py::keep_alive<1, 2>(), kDocsAdapterSetCallbackOnScanStart)
102
+ .def("set_callback_on_scan_stop", &SimpleBLE::Adapter::set_callback_on_scan_stop, py::keep_alive<1, 2>(), kDocsAdapterSetCallbackOnScanStop)
103
+ .def("set_callback_on_scan_found", &SimpleBLE::Adapter::set_callback_on_scan_found, py::keep_alive<1, 2>(), kDocsAdapterSetCallbackOnScanFound)
104
+ .def("set_callback_on_scan_updated", &SimpleBLE::Adapter::set_callback_on_scan_updated, py::keep_alive<1, 2>(), kDocsAdapterSetCallbackOnScanUpdated)
105
+ .def("get_paired_peripherals", &SimpleBLE::Adapter::get_paired_peripherals, kDocsAdapterGetPairedPeripherals);
106
+ }
@@ -0,0 +1,56 @@
1
+ #include <pybind11/functional.h>
2
+ #include <pybind11/pybind11.h>
3
+ #include <pybind11/stl.h>
4
+
5
+ #include "simpleble/Characteristic.h"
6
+
7
+ namespace py = pybind11;
8
+
9
+ constexpr auto kDocsCharacteristic = R"pbdoc(
10
+ Characteristic
11
+ )pbdoc";
12
+
13
+ constexpr auto kDocsCharacteristicUuid = R"pbdoc(
14
+ UUID of the characteristic
15
+ )pbdoc";
16
+
17
+ constexpr auto kDocsCharacteristicDescriptors = R"pbdoc(
18
+ Descriptors of the characteristic
19
+ )pbdoc";
20
+
21
+ constexpr auto kDocsCharacteristicCapabilities = R"pbdoc(
22
+ Capabilities of the characteristic
23
+ )pbdoc";
24
+
25
+ constexpr auto kDocsCharacteristicCanRead = R"pbdoc(
26
+ Whether the characteristic can be read
27
+ )pbdoc";
28
+
29
+ constexpr auto kDocsCharacteristicCanWriteRequest = R"pbdoc(
30
+ Whether the characteristic can be written with a request
31
+ )pbdoc";
32
+
33
+ constexpr auto kDocsCharacteristicCanWriteCommand = R"pbdoc(
34
+ Whether the characteristic can be written with a command
35
+ )pbdoc";
36
+
37
+ constexpr auto kDocsCharacteristicCanNotify = R"pbdoc(
38
+ Whether the characteristic can be notified
39
+ )pbdoc";
40
+
41
+ constexpr auto kDocsCharacteristicCanIndicate = R"pbdoc(
42
+ Whether the characteristic can be indicated
43
+ )pbdoc";
44
+
45
+ void wrap_characteristic(py::module& m) {
46
+ // TODO: Add __str__ and __repr__ methods
47
+ py::class_<SimpleBLE::Characteristic>(m, "Characteristic", kDocsCharacteristic)
48
+ .def("uuid", &SimpleBLE::Characteristic::uuid, kDocsCharacteristicUuid)
49
+ .def("descriptors", &SimpleBLE::Characteristic::descriptors, kDocsCharacteristicDescriptors)
50
+ .def("capabilities", &SimpleBLE::Characteristic::capabilities, kDocsCharacteristicCapabilities)
51
+ .def("can_read", &SimpleBLE::Characteristic::can_read, kDocsCharacteristicCanRead)
52
+ .def("can_write_request", &SimpleBLE::Characteristic::can_write_request, kDocsCharacteristicCanWriteRequest)
53
+ .def("can_write_command", &SimpleBLE::Characteristic::can_write_command, kDocsCharacteristicCanWriteCommand)
54
+ .def("can_notify", &SimpleBLE::Characteristic::can_notify, kDocsCharacteristicCanNotify)
55
+ .def("can_indicate", &SimpleBLE::Characteristic::can_indicate, kDocsCharacteristicCanIndicate);
56
+ }
@@ -0,0 +1,136 @@
1
+ #include <pybind11/pybind11.h>
2
+ #include "simpleble/Config.h"
3
+
4
+ namespace py = pybind11;
5
+
6
+ // Wrapper classes for Python bindings (not exposed to C++)
7
+ namespace PyWrappers {
8
+ struct WinRT {
9
+ static bool get_experimental_use_own_mta_apartment() {
10
+ return SimpleBLE::Config::WinRT::experimental_use_own_mta_apartment;
11
+ }
12
+ static void set_experimental_use_own_mta_apartment(bool value) {
13
+ SimpleBLE::Config::WinRT::experimental_use_own_mta_apartment = value;
14
+ }
15
+ static bool get_experimental_reinitialize_winrt_apartment_on_main_thread() {
16
+ return SimpleBLE::Config::WinRT::experimental_reinitialize_winrt_apartment_on_main_thread;
17
+ }
18
+ static void set_experimental_reinitialize_winrt_apartment_on_main_thread(bool value) {
19
+ SimpleBLE::Config::WinRT::experimental_reinitialize_winrt_apartment_on_main_thread = value;
20
+ }
21
+
22
+ static void reset() {
23
+ SimpleBLE::Config::WinRT::reset();
24
+ }
25
+ };
26
+
27
+ struct SimpleBluez {
28
+ static void reset() {
29
+ SimpleBLE::Config::SimpleBluez::reset();
30
+ }
31
+ };
32
+
33
+ struct CoreBluetooth {
34
+ static void reset() {
35
+ SimpleBLE::Config::CoreBluetooth::reset();
36
+ }
37
+ };
38
+
39
+ struct Android {
40
+ static void reset() {
41
+ SimpleBLE::Config::Android::reset();
42
+ }
43
+ };
44
+
45
+ struct Base {
46
+ static void reset_all() {
47
+ SimpleBLE::Config::Base::reset_all();
48
+ }
49
+ };
50
+ }
51
+
52
+ // Documentation strings
53
+ constexpr auto kDocsConfigModule = R"pbdoc(
54
+ Configuration options for SimpleBLE
55
+ )pbdoc";
56
+
57
+ constexpr auto kDocsConfigWinRTClass = R"pbdoc(
58
+ WinRT-specific configuration options
59
+ )pbdoc";
60
+
61
+ constexpr auto kDocsConfigSimpleBluezClass = R"pbdoc(
62
+ SimpleBluez-specific configuration options
63
+ )pbdoc";
64
+
65
+ constexpr auto kDocsConfigCoreBluetoothClass = R"pbdoc(
66
+ CoreBluetooth-specific configuration options
67
+ )pbdoc";
68
+
69
+ constexpr auto kDocsConfigAndroidClass = R"pbdoc(
70
+ Android-specific configuration options
71
+ )pbdoc";
72
+
73
+ constexpr auto kDocsConfigBaseClass = R"pbdoc(
74
+ Base configuration options
75
+ )pbdoc";
76
+
77
+ constexpr auto kDocsConfigWinRTExperimentalMTA = R"pbdoc(
78
+ Use own MTA apartment (experimental)
79
+ )pbdoc";
80
+
81
+ constexpr auto kDocsConfigWinRTExperimentalReinitializeMTAOnMainThread = R"pbdoc(
82
+ Reinitialize the WinRT apartment on the main thread (experimental)
83
+ )pbdoc";
84
+
85
+ constexpr auto kDocsConfigWinRTReset = R"pbdoc(
86
+ Reset WinRT configuration options to their default values
87
+ )pbdoc";
88
+
89
+ constexpr auto kDocsConfigSimpleBluezReset = R"pbdoc(
90
+ Reset SimpleBluez configuration options to their default values
91
+ )pbdoc";
92
+
93
+ constexpr auto kDocsConfigCoreBluetoothReset = R"pbdoc(
94
+ Reset CoreBluetooth configuration options to their default values
95
+ )pbdoc";
96
+
97
+ constexpr auto kDocsConfigAndroidReset = R"pbdoc(
98
+ Reset Android configuration options to their default values
99
+ )pbdoc";
100
+
101
+ constexpr auto kDocsConfigBaseResetAll = R"pbdoc(
102
+ Reset all configuration options to their default values
103
+ )pbdoc";
104
+
105
+ void wrap_config(py::module& m) {
106
+ auto config = m.def_submodule("config", kDocsConfigModule);
107
+
108
+ // Define classes directly under config
109
+ py::class_<PyWrappers::WinRT> winrt_config(config, "winrt", kDocsConfigWinRTClass, py::metaclass());
110
+ winrt_config
111
+ .def_property_static("experimental_use_own_mta_apartment",
112
+ [](py::object) { return PyWrappers::WinRT::get_experimental_use_own_mta_apartment(); },
113
+ [](py::object, bool value) { PyWrappers::WinRT::set_experimental_use_own_mta_apartment(value); },
114
+ kDocsConfigWinRTExperimentalMTA)
115
+ .def_property_static("experimental_reinitialize_winrt_apartment_on_main_thread",
116
+ [](py::object) { return PyWrappers::WinRT::get_experimental_reinitialize_winrt_apartment_on_main_thread(); },
117
+ [](py::object, bool value) { PyWrappers::WinRT::set_experimental_reinitialize_winrt_apartment_on_main_thread(value); },
118
+ kDocsConfigWinRTExperimentalReinitializeMTAOnMainThread)
119
+ .def_static("reset", &PyWrappers::WinRT::reset, kDocsConfigWinRTReset);
120
+
121
+ py::class_<PyWrappers::SimpleBluez> simplebluez_config(config, "simplebluez", kDocsConfigSimpleBluezClass, py::metaclass());
122
+ simplebluez_config
123
+ .def_static("reset", &PyWrappers::SimpleBluez::reset, kDocsConfigSimpleBluezReset);
124
+
125
+ py::class_<PyWrappers::CoreBluetooth> corebluetooth_config(config, "corebluetooth", kDocsConfigCoreBluetoothClass, py::metaclass());
126
+ corebluetooth_config
127
+ .def_static("reset", &PyWrappers::CoreBluetooth::reset, kDocsConfigCoreBluetoothReset);
128
+
129
+ py::class_<PyWrappers::Android> android_config(config, "android", kDocsConfigAndroidClass, py::metaclass());
130
+ android_config
131
+ .def_static("reset", &PyWrappers::Android::reset, kDocsConfigAndroidReset);
132
+
133
+ py::class_<PyWrappers::Base> base_config(config, "base", kDocsConfigBaseClass, py::metaclass());
134
+ base_config
135
+ .def_static("reset_all", &PyWrappers::Base::reset_all, kDocsConfigBaseResetAll);
136
+ }
@@ -0,0 +1,21 @@
1
+ #include <pybind11/functional.h>
2
+ #include <pybind11/pybind11.h>
3
+ #include <pybind11/stl.h>
4
+
5
+ #include "simpleble/Descriptor.h"
6
+
7
+ namespace py = pybind11;
8
+
9
+ constexpr auto kDocsDescriptor = R"pbdoc(
10
+ Descriptor
11
+ )pbdoc";
12
+
13
+ constexpr auto kDocsDescriptorUuid = R"pbdoc(
14
+ UUID of the descriptor
15
+ )pbdoc";
16
+
17
+ void wrap_descriptor(py::module& m) {
18
+ // TODO: Add __str__ and __repr__ methods
19
+ py::class_<SimpleBLE::Descriptor>(m, "Descriptor", kDocsDescriptor)
20
+ .def("uuid", &SimpleBLE::Descriptor::uuid, kDocsDescriptorUuid);
21
+ }
@@ -0,0 +1,217 @@
1
+ #include <pybind11/functional.h>
2
+ #include <pybind11/pybind11.h>
3
+ #include <pybind11/stl.h>
4
+
5
+ #include "simpleble/Peripheral.h"
6
+
7
+ namespace py = pybind11;
8
+
9
+ constexpr auto kDocsPeripheral = R"pbdoc(
10
+ Peripheral
11
+ )pbdoc";
12
+
13
+ constexpr auto kDocsPeripheralInitialized = R"pbdoc(
14
+ Whether the peripheral is initialized
15
+ )pbdoc";
16
+
17
+ constexpr auto kDocsPeripheralIdentifier = R"pbdoc(
18
+ Identifier of the peripheral
19
+ )pbdoc";
20
+
21
+ constexpr auto kDocsPeripheralAddress = R"pbdoc(
22
+ Address of the peripheral
23
+ )pbdoc";
24
+
25
+ constexpr auto kDocsPeripheralAddressType = R"pbdoc(
26
+ Address Type of the peripheral
27
+ )pbdoc";
28
+
29
+ constexpr auto kDocsPeripheralRSSI = R"pbdoc(
30
+ RSSI of the peripheral
31
+ )pbdoc";
32
+
33
+ constexpr auto kDocsPeripheralTxPower = R"pbdoc(
34
+ Transit Power of the peripheral in dBm
35
+ )pbdoc";
36
+
37
+ constexpr auto kDocsPeripheralMtu = R"pbdoc(
38
+ Get the negotiated MTU value
39
+ )pbdoc";
40
+
41
+ constexpr auto kDocsPeripheralConnect = R"pbdoc(
42
+ Connect to the peripheral
43
+ )pbdoc";
44
+
45
+ constexpr auto kDocsPeripheralDisconnect = R"pbdoc(
46
+ Disconnect from the peripheral
47
+ )pbdoc";
48
+
49
+ constexpr auto kDocsPeripheralIsConnected = R"pbdoc(
50
+ Whether the peripheral is connected
51
+ )pbdoc";
52
+
53
+ constexpr auto kDocsPeripheralIsConnectable = R"pbdoc(
54
+ Whether the peripheral is connectable
55
+ )pbdoc";
56
+
57
+ constexpr auto kDocsPeripheralIsPaired = R"pbdoc(
58
+ Whether the peripheral is paired
59
+ )pbdoc";
60
+
61
+ constexpr auto kDocsPeripheralUnpair = R"pbdoc(
62
+ Unpair the peripheral
63
+ )pbdoc";
64
+
65
+ constexpr auto kDocsPeripheralServices = R"pbdoc(
66
+ Services of the peripheral
67
+ )pbdoc";
68
+
69
+ constexpr auto kDocsPeripheralManufacturerData = R"pbdoc(
70
+ Manufacturer data of the peripheral
71
+ )pbdoc";
72
+
73
+ constexpr auto kDocsPeripheralReadCharacteristic = R"pbdoc(
74
+ Read a characteristic from the peripheral
75
+ )pbdoc";
76
+
77
+ constexpr auto kDocsPeripheralWriteRequest = R"pbdoc(
78
+ Write a request to the peripheral
79
+ )pbdoc";
80
+
81
+ constexpr auto kDocsPeripheralWriteCommand = R"pbdoc(
82
+ Write a command to the peripheral
83
+ )pbdoc";
84
+
85
+ constexpr auto kDocsPeripheralNotify = R"pbdoc(
86
+ Notify a characteristic from the peripheral
87
+ )pbdoc";
88
+
89
+ constexpr auto kDocsPeripheralIndicate = R"pbdoc(
90
+ Indicate a characteristic from the peripheral
91
+ )pbdoc";
92
+
93
+ constexpr auto kDocsPeripheralUnsubscribe = R"pbdoc(
94
+ Unsubscribe a characteristic from the peripheral
95
+ )pbdoc";
96
+
97
+ constexpr auto kDocsPeripheralDescriptorRead = R"pbdoc(
98
+ Read a descriptor from the peripheral
99
+ )pbdoc";
100
+
101
+ constexpr auto kDocsPeripheralDescriptorWrite = R"pbdoc(
102
+ Write a descriptor to the peripheral
103
+ )pbdoc";
104
+
105
+ constexpr auto kDocsPeripheralSetCallbackOnConnected = R"pbdoc(
106
+ Set callback on connected
107
+ )pbdoc";
108
+
109
+ constexpr auto kDocsPeripheralSetCallbackOnDisconnected = R"pbdoc(
110
+ Set callback on disconnected
111
+ )pbdoc";
112
+
113
+ // clang-format off
114
+
115
+ void wrap_peripheral(py::module& m) {
116
+ // TODO: Add __str__ and __repr__ methods
117
+ py::class_<SimpleBLE::Peripheral>(m, "Peripheral", kDocsPeripheral)
118
+ .def("initialized", &SimpleBLE::Peripheral::initialized, kDocsPeripheralInitialized)
119
+ .def("identifier", &SimpleBLE::Peripheral::identifier, kDocsPeripheralIdentifier)
120
+ .def("address", &SimpleBLE::Peripheral::address, kDocsPeripheralAddress)
121
+ .def("address_type", &SimpleBLE::Peripheral::address_type, kDocsPeripheralAddressType)
122
+ .def("rssi", &SimpleBLE::Peripheral::rssi, kDocsPeripheralRSSI)
123
+ .def("tx_power", &SimpleBLE::Peripheral::tx_power, kDocsPeripheralTxPower)
124
+ .def("mtu", &SimpleBLE::Peripheral::mtu, kDocsPeripheralMtu)
125
+ .def("connect", &SimpleBLE::Peripheral::connect, py::call_guard<py::gil_scoped_release>(),
126
+ kDocsPeripheralConnect)
127
+ .def("disconnect", &SimpleBLE::Peripheral::disconnect, kDocsPeripheralDisconnect)
128
+ .def("is_connected", &SimpleBLE::Peripheral::is_connected, kDocsPeripheralIsConnected)
129
+ .def("is_connectable", &SimpleBLE::Peripheral::is_connectable, kDocsPeripheralIsConnectable)
130
+ .def("is_paired", &SimpleBLE::Peripheral::is_paired, kDocsPeripheralIsPaired)
131
+ .def("unpair", &SimpleBLE::Peripheral::unpair, kDocsPeripheralUnpair)
132
+ .def("services", &SimpleBLE::Peripheral::services, kDocsPeripheralServices)
133
+ .def(
134
+ "manufacturer_data",
135
+ [](SimpleBLE::Peripheral& p) {
136
+ std::map<uint16_t, py::bytes> ret;
137
+ for (auto& kv : p.manufacturer_data()) {
138
+ ret[kv.first] = py::bytes(kv.second);
139
+ }
140
+ return ret;
141
+ },
142
+ kDocsPeripheralManufacturerData)
143
+ .def(
144
+ "read",
145
+ [](SimpleBLE::Peripheral& p, std::string const& service, std::string const& characteristic) {
146
+ SimpleBLE::ByteArray cpp_payload = p.read(service, characteristic);
147
+ py::gil_scoped_acquire gil;
148
+ return py::bytes(cpp_payload);
149
+ },
150
+ py::call_guard<py::gil_scoped_release>(),
151
+ kDocsPeripheralReadCharacteristic)
152
+ .def(
153
+ "write_request",
154
+ [](SimpleBLE::Peripheral& p, std::string service, std::string characteristic, py::bytes payload) {
155
+ // Note py::bytes implicitly converts to std::string
156
+ SimpleBLE::ByteArray cpp_payload(payload);
157
+ py::gil_scoped_release release;
158
+ p.write_request(service, characteristic, cpp_payload);
159
+ },
160
+ kDocsPeripheralWriteRequest)
161
+ .def(
162
+ "write_command",
163
+ [](SimpleBLE::Peripheral& p, std::string service, std::string characteristic, py::bytes payload) {
164
+ // Note py::bytes implicitly converts to std::string
165
+ SimpleBLE::ByteArray cpp_payload(payload);
166
+ py::gil_scoped_release release;
167
+ p.write_command(service, characteristic, cpp_payload);
168
+ },
169
+ kDocsPeripheralWriteCommand)
170
+ .def(
171
+ "notify",
172
+ [](SimpleBLE::Peripheral& p, std::string service, std::string characteristic, std::function<void(py::bytes payload)> cb) {
173
+ p.notify(service, characteristic, [cb](SimpleBLE::ByteArray payload) {
174
+ py::gil_scoped_acquire gil;
175
+ cb(py::bytes(payload));
176
+ });
177
+ },
178
+ py::call_guard<py::gil_scoped_release>(),
179
+ kDocsPeripheralNotify)
180
+ .def(
181
+ "indicate",
182
+ [](SimpleBLE::Peripheral& p, std::string service, std::string characteristic, std::function<void(py::bytes payload)> cb) {
183
+ p.indicate(service, characteristic, [cb](SimpleBLE::ByteArray payload) {
184
+ py::gil_scoped_acquire gil;
185
+ cb(py::bytes(payload));
186
+ });
187
+ },
188
+ py::call_guard<py::gil_scoped_release>(),
189
+ kDocsPeripheralIndicate)
190
+ .def("unsubscribe", &SimpleBLE::Peripheral::unsubscribe, py::call_guard<py::gil_scoped_release>(), kDocsPeripheralUnsubscribe)
191
+
192
+ .def(
193
+ "descriptor_read",
194
+ [](SimpleBLE::Peripheral& p, std::string const& service, std::string const& characteristic, std::string const& descriptor) {
195
+ SimpleBLE::ByteArray cpp_payload = p.read(service, characteristic, descriptor);
196
+ py::gil_scoped_acquire gil;
197
+ return py::bytes(cpp_payload);
198
+ },
199
+ py::call_guard<py::gil_scoped_release>(),
200
+ kDocsPeripheralDescriptorRead)
201
+ .def(
202
+ "descriptor_write",
203
+ [](SimpleBLE::Peripheral& p, std::string service, std::string characteristic, std::string const& descriptor, py::bytes payload) {
204
+ // Note py::bytes implicitly converts to std::string
205
+ SimpleBLE::ByteArray cpp_payload(payload);
206
+ py::gil_scoped_release release;
207
+ p.write(service, characteristic, descriptor, cpp_payload);
208
+ },
209
+ kDocsPeripheralDescriptorWrite)
210
+
211
+ .def("set_callback_on_connected", &SimpleBLE::Peripheral::set_callback_on_connected,
212
+ py::keep_alive<1, 2>(), kDocsPeripheralSetCallbackOnConnected)
213
+ .def("set_callback_on_disconnected", &SimpleBLE::Peripheral::set_callback_on_disconnected,
214
+ py::keep_alive<1, 2>(), kDocsPeripheralSetCallbackOnDisconnected);
215
+ }
216
+
217
+ // clang-format on
@@ -0,0 +1,32 @@
1
+ #include <pybind11/functional.h>
2
+ #include <pybind11/pybind11.h>
3
+ #include <pybind11/stl.h>
4
+
5
+ #include "simpleble/Service.h"
6
+
7
+ namespace py = pybind11;
8
+
9
+ constexpr auto kDocsService = R"pbdoc(
10
+ Service
11
+ )pbdoc";
12
+
13
+ constexpr auto kDocsServiceUuid = R"pbdoc(
14
+ UUID of the service
15
+ )pbdoc";
16
+
17
+ constexpr auto kDocsServiceData = R"pbdoc(
18
+ Advertised service data
19
+ )pbdoc";
20
+
21
+ constexpr auto kDocsServiceCharacteristics = R"pbdoc(
22
+ Characteristics of the service
23
+ )pbdoc";
24
+
25
+ void wrap_service(py::module& m) {
26
+ // TODO: Add __str__ and __repr__ methods
27
+ py::class_<SimpleBLE::Service>(m, "Service", kDocsService)
28
+ .def("uuid", &SimpleBLE::Service::uuid, kDocsServiceUuid)
29
+ .def(
30
+ "data", [](SimpleBLE::Service& s) { return py::bytes(s.data()); }, kDocsServiceData)
31
+ .def("characteristics", &SimpleBLE::Service::characteristics, kDocsServiceCharacteristics);
32
+ }
@@ -0,0 +1,21 @@
1
+ #include <pybind11/functional.h>
2
+ #include <pybind11/pybind11.h>
3
+ #include <pybind11/stl.h>
4
+
5
+ #include "simpleble/Types.h"
6
+
7
+ namespace py = pybind11;
8
+
9
+ void wrap_types(py::module& m) {
10
+ py::enum_<SimpleBLE::OperatingSystem>(m, "OperatingSystem")
11
+ .value("WINDOWS", SimpleBLE::OperatingSystem::WINDOWS)
12
+ .value("MACOS", SimpleBLE::OperatingSystem::MACOS)
13
+ .value("LINUX", SimpleBLE::OperatingSystem::LINUX)
14
+ .export_values();
15
+
16
+ py::enum_<SimpleBLE::BluetoothAddressType>(m, "BluetoothAddressType")
17
+ .value("PUBLIC", SimpleBLE::BluetoothAddressType::PUBLIC)
18
+ .value("RANDOM", SimpleBLE::BluetoothAddressType::RANDOM)
19
+ .value("UNSPECIFIED", SimpleBLE::BluetoothAddressType::UNSPECIFIED)
20
+ .export_values();
21
+ }