simplejsble 0.0.4 → 0.0.6

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 (273) hide show
  1. package/VERSION +1 -0
  2. package/android/CMakeLists.txt +62 -20
  3. package/cmake/epilogue.cmake +81 -0
  4. package/cmake/find/FindDBus1.cmake +20 -0
  5. package/cmake/find/Findfmt.cmake +41 -0
  6. package/cmake/find/Findgoogletest.cmake +18 -0
  7. package/cmake/parse_version.cmake +45 -0
  8. package/cmake/prelude.cmake +8 -0
  9. package/dependencies/README +4 -0
  10. package/dependencies/external/kvn/kvn_bytearray.h +297 -0
  11. package/dependencies/external/kvn/kvn_safe_callback.hpp +66 -0
  12. package/dependencies/external/kvn/logfwd.hpp +35 -0
  13. package/dependencies/internal/include/fmt/LICENSE +27 -0
  14. package/dependencies/internal/include/fmt/args.h +220 -0
  15. package/dependencies/internal/include/fmt/base.h +2962 -0
  16. package/dependencies/internal/include/fmt/chrono.h +2338 -0
  17. package/dependencies/internal/include/fmt/color.h +610 -0
  18. package/dependencies/internal/include/fmt/compile.h +539 -0
  19. package/dependencies/internal/include/fmt/core.h +5 -0
  20. package/dependencies/internal/include/fmt/format-inl.h +1949 -0
  21. package/dependencies/internal/include/fmt/format.h +4244 -0
  22. package/dependencies/internal/include/fmt/os.h +427 -0
  23. package/dependencies/internal/include/fmt/ostream.h +166 -0
  24. package/dependencies/internal/include/fmt/printf.h +633 -0
  25. package/dependencies/internal/include/fmt/ranges.h +850 -0
  26. package/dependencies/internal/include/fmt/std.h +726 -0
  27. package/dependencies/internal/include/fmt/xchar.h +373 -0
  28. package/dependencies/internal/include/nanopb/pb.h +948 -0
  29. package/dependencies/internal/include/nanopb/pb_common.h +49 -0
  30. package/dependencies/internal/include/nanopb/pb_decode.h +204 -0
  31. package/dependencies/internal/include/nanopb/pb_encode.h +195 -0
  32. package/dependencies/internal/include/simplejni/Common.hpp +598 -0
  33. package/dependencies/internal/include/simplejni/References.hpp +151 -0
  34. package/dependencies/internal/include/simplejni/Registry.hpp +249 -0
  35. package/dependencies/internal/include/simplejni/VM.hpp +93 -0
  36. package/dependencies/internal/src/nanopb/pb_common.c +388 -0
  37. package/dependencies/internal/src/nanopb/pb_decode.c +1763 -0
  38. package/dependencies/internal/src/nanopb/pb_encode.c +1009 -0
  39. package/dependencies/internal/src/simplejni/Common.cpp +4 -0
  40. package/package.json +5 -1
  41. package/simpleble/CMakeLists.txt +519 -0
  42. package/simpleble/cmake/simpleble.pc.in +11 -0
  43. package/simpleble/include/simpleble/Adapter.h +102 -0
  44. package/simpleble/include/simpleble/AdapterSafe.h +58 -0
  45. package/simpleble/include/simpleble/Advanced.h +50 -0
  46. package/simpleble/include/simpleble/Characteristic.h +39 -0
  47. package/simpleble/include/simpleble/Config.h +64 -0
  48. package/simpleble/include/simpleble/Descriptor.h +30 -0
  49. package/simpleble/include/simpleble/Exceptions.h +72 -0
  50. package/simpleble/include/simpleble/Logging.h +73 -0
  51. package/simpleble/include/simpleble/Peripheral.h +82 -0
  52. package/simpleble/include/simpleble/PeripheralSafe.h +64 -0
  53. package/simpleble/include/simpleble/Service.h +34 -0
  54. package/simpleble/include/simpleble/SimpleBLE.h +8 -0
  55. package/simpleble/include/simpleble/Types.h +49 -0
  56. package/simpleble/include/simpleble/Utils.h +13 -0
  57. package/simpleble/include/simpleble_c/DEPRECATED +2 -0
  58. package/simpleble/include/simpleble_c/adapter.h +188 -0
  59. package/simpleble/include/simpleble_c/logging.h +37 -0
  60. package/simpleble/include/simpleble_c/peripheral.h +304 -0
  61. package/simpleble/include/simpleble_c/simpleble.h +21 -0
  62. package/simpleble/include/simpleble_c/types.h +73 -0
  63. package/simpleble/include/simpleble_c/utils.h +27 -0
  64. package/simpleble/src/CommonUtils.h +63 -0
  65. package/simpleble/src/Config.cpp +25 -0
  66. package/simpleble/src/Exceptions.cpp +31 -0
  67. package/simpleble/src/Logging.cpp +136 -0
  68. package/simpleble/src/LoggingInternal.h +85 -0
  69. package/simpleble/src/Utils.cpp +24 -0
  70. package/simpleble/src/backends/android/AdapterAndroid.cpp +101 -0
  71. package/simpleble/src/backends/android/AdapterAndroid.h +67 -0
  72. package/simpleble/src/backends/android/BackendAndroid.cpp +41 -0
  73. package/simpleble/src/backends/android/BackendAndroid.h +26 -0
  74. package/simpleble/src/backends/android/PeripheralAndroid.cpp +365 -0
  75. package/simpleble/src/backends/android/PeripheralAndroid.h +90 -0
  76. package/simpleble/src/backends/android/bridge/BluetoothGattCallback.cpp +432 -0
  77. package/simpleble/src/backends/android/bridge/BluetoothGattCallback.h +102 -0
  78. package/simpleble/src/backends/android/bridge/ScanCallback.cpp +142 -0
  79. package/simpleble/src/backends/android/bridge/ScanCallback.h +55 -0
  80. package/simpleble/src/backends/android/types/android/bluetooth/BluetoothAdapter.cpp +107 -0
  81. package/simpleble/src/backends/android/types/android/bluetooth/BluetoothAdapter.h +55 -0
  82. package/simpleble/src/backends/android/types/android/bluetooth/BluetoothDevice.cpp +68 -0
  83. package/simpleble/src/backends/android/types/android/bluetooth/BluetoothDevice.h +54 -0
  84. package/simpleble/src/backends/android/types/android/bluetooth/BluetoothGatt.cpp +115 -0
  85. package/simpleble/src/backends/android/types/android/bluetooth/BluetoothGatt.h +75 -0
  86. package/simpleble/src/backends/android/types/android/bluetooth/BluetoothGattCharacteristic.cpp +142 -0
  87. package/simpleble/src/backends/android/types/android/bluetooth/BluetoothGattCharacteristic.h +66 -0
  88. package/simpleble/src/backends/android/types/android/bluetooth/BluetoothGattDescriptor.cpp +67 -0
  89. package/simpleble/src/backends/android/types/android/bluetooth/BluetoothGattDescriptor.h +46 -0
  90. package/simpleble/src/backends/android/types/android/bluetooth/BluetoothGattService.cpp +106 -0
  91. package/simpleble/src/backends/android/types/android/bluetooth/BluetoothGattService.h +47 -0
  92. package/simpleble/src/backends/android/types/android/bluetooth/le/BluetoothScanner.cpp +47 -0
  93. package/simpleble/src/backends/android/types/android/bluetooth/le/BluetoothScanner.h +37 -0
  94. package/simpleble/src/backends/android/types/android/bluetooth/le/ScanRecord.cpp +69 -0
  95. package/simpleble/src/backends/android/types/android/bluetooth/le/ScanRecord.h +41 -0
  96. package/simpleble/src/backends/android/types/android/bluetooth/le/ScanResult.cpp +63 -0
  97. package/simpleble/src/backends/android/types/android/bluetooth/le/ScanResult.h +42 -0
  98. package/simpleble/src/backends/android/types/android/os/ParcelUUID.cpp +32 -0
  99. package/simpleble/src/backends/android/types/android/os/ParcelUUID.h +30 -0
  100. package/simpleble/src/backends/android/types/android/util/SparseArray.cpp +54 -0
  101. package/simpleble/src/backends/android/types/android/util/SparseArray.h +37 -0
  102. package/simpleble/src/backends/android/types/java/util/Iterator.cpp +36 -0
  103. package/simpleble/src/backends/android/types/java/util/Iterator.h +28 -0
  104. package/simpleble/src/backends/android/types/java/util/List.cpp +29 -0
  105. package/simpleble/src/backends/android/types/java/util/List.h +27 -0
  106. package/simpleble/src/backends/android/types/java/util/Set.cpp +33 -0
  107. package/simpleble/src/backends/android/types/java/util/Set.h +28 -0
  108. package/simpleble/src/backends/android/types/java/util/UUID.cpp +26 -0
  109. package/simpleble/src/backends/android/types/java/util/UUID.h +29 -0
  110. package/simpleble/src/backends/common/AdapterBase.cpp +53 -0
  111. package/simpleble/src/backends/common/AdapterBase.h +81 -0
  112. package/simpleble/src/backends/common/AdapterBaseTypes.h +22 -0
  113. package/simpleble/src/backends/common/BackendBase.h +20 -0
  114. package/simpleble/src/backends/common/BackendUtils.h +33 -0
  115. package/simpleble/src/backends/common/CharacteristicBase.cpp +28 -0
  116. package/simpleble/src/backends/common/CharacteristicBase.h +38 -0
  117. package/simpleble/src/backends/common/DescriptorBase.cpp +7 -0
  118. package/simpleble/src/backends/common/DescriptorBase.h +19 -0
  119. package/simpleble/src/backends/common/PeripheralBase.h +82 -0
  120. package/simpleble/src/backends/common/ServiceBase.cpp +18 -0
  121. package/simpleble/src/backends/common/ServiceBase.h +28 -0
  122. package/simpleble/src/backends/dongl/AdapterBaseTypes.h +22 -0
  123. package/simpleble/src/backends/dongl/AdapterDongl.cpp +369 -0
  124. package/simpleble/src/backends/dongl/AdapterDongl.h +60 -0
  125. package/simpleble/src/backends/dongl/BackendDongl.cpp +35 -0
  126. package/simpleble/src/backends/dongl/PeripheralDongl.cpp +562 -0
  127. package/simpleble/src/backends/dongl/PeripheralDongl.h +136 -0
  128. package/simpleble/src/backends/dongl/protocol/basic.pb.c +33 -0
  129. package/simpleble/src/backends/dongl/protocol/basic.pb.h +172 -0
  130. package/simpleble/src/backends/dongl/protocol/d2h.pb.c +18 -0
  131. package/simpleble/src/backends/dongl/protocol/d2h.pb.h +118 -0
  132. package/simpleble/src/backends/dongl/protocol/h2d.pb.c +12 -0
  133. package/simpleble/src/backends/dongl/protocol/h2d.pb.h +69 -0
  134. package/simpleble/src/backends/dongl/protocol/simpleble.pb.c +123 -0
  135. package/simpleble/src/backends/dongl/protocol/simpleble.pb.h +908 -0
  136. package/simpleble/src/backends/dongl/protocol/softdevice.pb.c +18 -0
  137. package/simpleble/src/backends/dongl/protocol/softdevice.pb.h +815 -0
  138. package/simpleble/src/backends/dongl/protocol/softdevice_gap.pb.c +339 -0
  139. package/simpleble/src/backends/dongl/protocol/softdevice_gap.pb.h +2086 -0
  140. package/simpleble/src/backends/dongl/protocol/softdevice_gattc.pb.c +114 -0
  141. package/simpleble/src/backends/dongl/protocol/softdevice_gattc.pb.h +772 -0
  142. package/simpleble/src/backends/dongl/protocol/softdevice_gatts.pb.c +117 -0
  143. package/simpleble/src/backends/dongl/protocol/softdevice_gatts.pb.h +766 -0
  144. package/simpleble/src/backends/dongl/protocol/softdevice_types.pb.c +207 -0
  145. package/simpleble/src/backends/dongl/protocol/softdevice_types.pb.h +1686 -0
  146. package/simpleble/src/backends/dongl/serial/Protocol.cpp +887 -0
  147. package/simpleble/src/backends/dongl/serial/Protocol.h +117 -0
  148. package/simpleble/src/backends/dongl/serial/ProtocolBase.cpp +95 -0
  149. package/simpleble/src/backends/dongl/serial/ProtocolBase.h +54 -0
  150. package/simpleble/src/backends/dongl/serial/Wire.cpp +133 -0
  151. package/simpleble/src/backends/dongl/serial/Wire.h +116 -0
  152. package/simpleble/src/backends/dongl/usb/UsbHelper.cpp +53 -0
  153. package/simpleble/src/backends/dongl/usb/UsbHelper.h +32 -0
  154. package/simpleble/src/backends/dongl/usb/UsbHelperApple.cpp +266 -0
  155. package/simpleble/src/backends/dongl/usb/UsbHelperApple.h +34 -0
  156. package/simpleble/src/backends/dongl/usb/UsbHelperImpl.h +29 -0
  157. package/simpleble/src/backends/dongl/usb/UsbHelperLinux.cpp +21 -0
  158. package/simpleble/src/backends/dongl/usb/UsbHelperLinux.h +22 -0
  159. package/simpleble/src/backends/dongl/usb/UsbHelperNull.cpp +21 -0
  160. package/simpleble/src/backends/dongl/usb/UsbHelperNull.h +22 -0
  161. package/simpleble/src/backends/dongl/usb/UsbHelperWindows.cpp +21 -0
  162. package/simpleble/src/backends/dongl/usb/UsbHelperWindows.h +22 -0
  163. package/simpleble/src/backends/linux/AdapterLinux.cpp +102 -0
  164. package/simpleble/src/backends/linux/AdapterLinux.h +55 -0
  165. package/simpleble/src/backends/linux/BackendBluez.cpp +90 -0
  166. package/simpleble/src/backends/linux/PeripheralLinux.cpp +394 -0
  167. package/simpleble/src/backends/linux/PeripheralLinux.h +90 -0
  168. package/simpleble/src/backends/linux_legacy/AdapterLinuxLegacy.cpp +102 -0
  169. package/simpleble/src/backends/linux_legacy/AdapterLinuxLegacy.h +55 -0
  170. package/simpleble/src/backends/linux_legacy/BackendBluezLegacy.cpp +87 -0
  171. package/simpleble/src/backends/linux_legacy/PeripheralLinuxLegacy.cpp +376 -0
  172. package/simpleble/src/backends/linux_legacy/PeripheralLinuxLegacy.h +90 -0
  173. package/simpleble/src/backends/linux_legacy/include/simplebluezlegacy/Adapter.h +46 -0
  174. package/simpleble/src/backends/linux_legacy/include/simplebluezlegacy/Agent.h +52 -0
  175. package/simpleble/src/backends/linux_legacy/include/simplebluezlegacy/Bluez.h +37 -0
  176. package/simpleble/src/backends/linux_legacy/include/simplebluezlegacy/BluezOrg.h +22 -0
  177. package/simpleble/src/backends/linux_legacy/include/simplebluezlegacy/BluezOrgBluez.h +26 -0
  178. package/simpleble/src/backends/linux_legacy/include/simplebluezlegacy/BluezRoot.h +32 -0
  179. package/simpleble/src/backends/linux_legacy/include/simplebluezlegacy/Characteristic.h +47 -0
  180. package/simpleble/src/backends/linux_legacy/include/simplebluezlegacy/Descriptor.h +33 -0
  181. package/simpleble/src/backends/linux_legacy/include/simplebluezlegacy/Device.h +64 -0
  182. package/simpleble/src/backends/linux_legacy/include/simplebluezlegacy/Exceptions.h +43 -0
  183. package/simpleble/src/backends/linux_legacy/include/simplebluezlegacy/Service.h +27 -0
  184. package/simpleble/src/backends/linux_legacy/include/simplebluezlegacy/Types.h +9 -0
  185. package/simpleble/src/backends/linux_legacy/include/simplebluezlegacy/interfaces/Adapter1.h +49 -0
  186. package/simpleble/src/backends/linux_legacy/include/simplebluezlegacy/interfaces/Agent1.h +100 -0
  187. package/simpleble/src/backends/linux_legacy/include/simplebluezlegacy/interfaces/AgentManager1.h +24 -0
  188. package/simpleble/src/backends/linux_legacy/include/simplebluezlegacy/interfaces/Battery1.h +32 -0
  189. package/simpleble/src/backends/linux_legacy/include/simplebluezlegacy/interfaces/Device1.h +62 -0
  190. package/simpleble/src/backends/linux_legacy/include/simplebluezlegacy/interfaces/GattCharacteristic1.h +48 -0
  191. package/simpleble/src/backends/linux_legacy/include/simplebluezlegacy/interfaces/GattDescriptor1.h +41 -0
  192. package/simpleble/src/backends/linux_legacy/include/simplebluezlegacy/interfaces/GattService1.h +28 -0
  193. package/simpleble/src/backends/linux_legacy/include/simpledbuslegacy/advanced/Interface.h +67 -0
  194. package/simpleble/src/backends/linux_legacy/include/simpledbuslegacy/advanced/InterfaceRegistry.h +62 -0
  195. package/simpleble/src/backends/linux_legacy/include/simpledbuslegacy/advanced/Proxy.h +117 -0
  196. package/simpleble/src/backends/linux_legacy/include/simpledbuslegacy/base/Connection.h +50 -0
  197. package/simpleble/src/backends/linux_legacy/include/simpledbuslegacy/base/Exceptions.h +56 -0
  198. package/simpleble/src/backends/linux_legacy/include/simpledbuslegacy/base/Holder.h +147 -0
  199. package/simpleble/src/backends/linux_legacy/include/simpledbuslegacy/base/Logging.h +57 -0
  200. package/simpleble/src/backends/linux_legacy/include/simpledbuslegacy/base/Message.h +89 -0
  201. package/simpleble/src/backends/linux_legacy/include/simpledbuslegacy/base/Path.h +24 -0
  202. package/simpleble/src/backends/linux_legacy/include/simpledbuslegacy/interfaces/ObjectManager.h +26 -0
  203. package/simpleble/src/backends/linux_legacy/src/Adapter.cpp +78 -0
  204. package/simpleble/src/backends/linux_legacy/src/Agent.cpp +72 -0
  205. package/simpleble/src/backends/linux_legacy/src/Bluez.cpp +45 -0
  206. package/simpleble/src/backends/linux_legacy/src/BluezOrg.cpp +20 -0
  207. package/simpleble/src/backends/linux_legacy/src/BluezOrgBluez.cpp +23 -0
  208. package/simpleble/src/backends/linux_legacy/src/BluezRoot.cpp +44 -0
  209. package/simpleble/src/backends/linux_legacy/src/Characteristic.cpp +64 -0
  210. package/simpleble/src/backends/linux_legacy/src/Descriptor.cpp +27 -0
  211. package/simpleble/src/backends/linux_legacy/src/Device.cpp +104 -0
  212. package/simpleble/src/backends/linux_legacy/src/Exceptions.cpp +29 -0
  213. package/simpleble/src/backends/linux_legacy/src/Service.cpp +33 -0
  214. package/simpleble/src/backends/linux_legacy/src/advanced/Interface.cpp +155 -0
  215. package/simpleble/src/backends/linux_legacy/src/advanced/Proxy.cpp +374 -0
  216. package/simpleble/src/backends/linux_legacy/src/base/Connection.cpp +219 -0
  217. package/simpleble/src/backends/linux_legacy/src/base/Exceptions.cpp +39 -0
  218. package/simpleble/src/backends/linux_legacy/src/base/Holder.cpp +739 -0
  219. package/simpleble/src/backends/linux_legacy/src/base/Message.cpp +622 -0
  220. package/simpleble/src/backends/linux_legacy/src/base/Path.cpp +129 -0
  221. package/simpleble/src/backends/linux_legacy/src/interfaces/Adapter1.cpp +123 -0
  222. package/simpleble/src/backends/linux_legacy/src/interfaces/Agent1.cpp +143 -0
  223. package/simpleble/src/backends/linux_legacy/src/interfaces/AgentManager1.cpp +34 -0
  224. package/simpleble/src/backends/linux_legacy/src/interfaces/Battery1.cpp +30 -0
  225. package/simpleble/src/backends/linux_legacy/src/interfaces/Device1.cpp +170 -0
  226. package/simpleble/src/backends/linux_legacy/src/interfaces/GattCharacteristic1.cpp +118 -0
  227. package/simpleble/src/backends/linux_legacy/src/interfaces/GattDescriptor1.cpp +78 -0
  228. package/simpleble/src/backends/linux_legacy/src/interfaces/GattService1.cpp +28 -0
  229. package/simpleble/src/backends/linux_legacy/src/interfaces/ObjectManager.cpp +58 -0
  230. package/simpleble/src/backends/macos/AdapterBaseMacOS.h +29 -0
  231. package/simpleble/src/backends/macos/AdapterBaseMacOS.mm +235 -0
  232. package/simpleble/src/backends/macos/AdapterMac.h +78 -0
  233. package/simpleble/src/backends/macos/AdapterMac.mm +156 -0
  234. package/simpleble/src/backends/macos/BackendCoreBluetooth.mm +45 -0
  235. package/simpleble/src/backends/macos/PeripheralBaseMacOS.h +49 -0
  236. package/simpleble/src/backends/macos/PeripheralBaseMacOS.mm +714 -0
  237. package/simpleble/src/backends/macos/PeripheralMac.h +81 -0
  238. package/simpleble/src/backends/macos/PeripheralMac.mm +229 -0
  239. package/simpleble/src/backends/macos/Utils.h +9 -0
  240. package/simpleble/src/backends/macos/Utils.mm +23 -0
  241. package/simpleble/src/backends/plain/AdapterPlain.cpp +65 -0
  242. package/simpleble/src/backends/plain/AdapterPlain.h +49 -0
  243. package/simpleble/src/backends/plain/BackendPlain.cpp +30 -0
  244. package/simpleble/src/backends/plain/PeripheralPlain.cpp +159 -0
  245. package/simpleble/src/backends/plain/PeripheralPlain.h +72 -0
  246. package/simpleble/src/backends/windows/AdapterWindows.cpp +338 -0
  247. package/simpleble/src/backends/windows/AdapterWindows.h +89 -0
  248. package/simpleble/src/backends/windows/BackendWinRT.cpp +67 -0
  249. package/simpleble/src/backends/windows/BackendWinRT.h +18 -0
  250. package/simpleble/src/backends/windows/MtaManager.cpp +49 -0
  251. package/simpleble/src/backends/windows/MtaManager.h +90 -0
  252. package/simpleble/src/backends/windows/PeripheralWindows.cpp +487 -0
  253. package/simpleble/src/backends/windows/PeripheralWindows.h +129 -0
  254. package/simpleble/src/backends/windows/Utils.cpp +146 -0
  255. package/simpleble/src/backends/windows/Utils.h +47 -0
  256. package/simpleble/src/builders/BuildVec.h +32 -0
  257. package/simpleble/src/builders/BuilderBase.h +87 -0
  258. package/simpleble/src/external/TaskRunner.hpp +99 -0
  259. package/simpleble/src/external/ThreadRunner.h +52 -0
  260. package/simpleble/src/external/kvn_safe_callback.hpp +66 -0
  261. package/simpleble/src/external/kvn_safe_map.hpp +94 -0
  262. package/simpleble/src/external/kvn_threadrunner.hpp +70 -0
  263. package/simpleble/src/external/logfwd.hpp +35 -0
  264. package/simpleble/src/frontends/base/Adapter.cpp +111 -0
  265. package/simpleble/src/frontends/base/Advanced.cpp +34 -0
  266. package/simpleble/src/frontends/base/Backend.cpp +95 -0
  267. package/simpleble/src/frontends/base/Backend.h +76 -0
  268. package/simpleble/src/frontends/base/Characteristic.cpp +56 -0
  269. package/simpleble/src/frontends/base/Descriptor.cpp +21 -0
  270. package/simpleble/src/frontends/base/Peripheral.cpp +113 -0
  271. package/simpleble/src/frontends/base/Service.cpp +26 -0
  272. package/simpleble/src/frontends/safe/AdapterSafe.cpp +158 -0
  273. package/simpleble/src/frontends/safe/PeripheralSafe.cpp +219 -0
@@ -0,0 +1,52 @@
1
+ #pragma once
2
+
3
+ #include <simplebluezlegacy/interfaces/Agent1.h>
4
+ #include <simpledbuslegacy/advanced/Proxy.h>
5
+
6
+ namespace SimpleBluezLegacy {
7
+
8
+ class Agent : public SimpleDBusLegacy::Proxy {
9
+ public:
10
+ typedef enum {
11
+ DisplayOnly,
12
+ DisplayYesNo,
13
+ KeyboardOnly,
14
+ NoInputNoOutput,
15
+ KeyboardDisplay,
16
+ } Capabilities;
17
+
18
+ Agent(std::shared_ptr<SimpleDBusLegacy::Connection> conn, const std::string& bus_name, const std::string& path);
19
+ virtual ~Agent() = default;
20
+
21
+ // ----- PROPERTIES -----
22
+ std::string capabilities() const;
23
+ void set_capabilities(Capabilities capabilities);
24
+
25
+ // ----- METHODS -----
26
+ void set_on_request_pin_code(std::function<std::string()> callback);
27
+ void clear_on_request_pin_code();
28
+
29
+ void set_on_display_pin_code(std::function<bool(const std::string&)> callback);
30
+ void clear_on_display_pin_code();
31
+
32
+ void set_on_request_passkey(std::function<uint32_t()> callback);
33
+ void clear_on_request_passkey();
34
+
35
+ void set_on_display_passkey(std::function<void(uint32_t, uint16_t)> callback);
36
+ void clear_on_display_passkey();
37
+
38
+ void set_on_request_confirmation(std::function<bool(uint32_t)> callback);
39
+ void clear_on_request_confirmation();
40
+
41
+ void set_on_request_authorization(std::function<bool()> callback);
42
+ void clear_on_request_authorization();
43
+
44
+ void set_on_authorize_service(std::function<bool(const std::string&)> callback);
45
+ void clear_on_authorize_service();
46
+
47
+ private:
48
+ std::shared_ptr<Agent1> agent1();
49
+ Capabilities _capabilities;
50
+ };
51
+
52
+ } // namespace SimpleBluezLegacy
@@ -0,0 +1,37 @@
1
+ #pragma once
2
+
3
+ #include <simpledbuslegacy/advanced/Proxy.h>
4
+ #include <simpledbuslegacy/interfaces/ObjectManager.h>
5
+
6
+ #include <simplebluezlegacy/BluezRoot.h>
7
+ #include <simplebluezlegacy/Adapter.h>
8
+ #include <simplebluezlegacy/Agent.h>
9
+
10
+ #include <vector>
11
+
12
+ namespace SimpleBluezLegacy {
13
+
14
+ class Bluez {
15
+ public:
16
+ Bluez();
17
+ virtual ~Bluez();
18
+
19
+ // Delete copy and move operations
20
+ Bluez(const Bluez&) = delete;
21
+ Bluez& operator=(const Bluez&) = delete;
22
+ Bluez(Bluez&&) = delete;
23
+ Bluez& operator=(Bluez&&) = delete;
24
+
25
+ void init();
26
+ void run_async();
27
+
28
+ std::vector<std::shared_ptr<Adapter>> get_adapters();
29
+ std::shared_ptr<Agent> get_agent();
30
+ void register_agent();
31
+
32
+ private:
33
+ std::shared_ptr<SimpleDBusLegacy::Connection> _conn;
34
+ std::shared_ptr<SimpleBluezLegacy::BluezRoot> _bluez_root;
35
+ };
36
+
37
+ } // namespace SimpleBluezLegacy
@@ -0,0 +1,22 @@
1
+ #pragma once
2
+
3
+ #include <simpledbuslegacy/advanced/Proxy.h>
4
+
5
+ #include <simplebluezlegacy/Adapter.h>
6
+ #include <simplebluezlegacy/Agent.h>
7
+
8
+ namespace SimpleBluezLegacy {
9
+
10
+ class BluezOrg : public SimpleDBusLegacy::Proxy {
11
+ public:
12
+ BluezOrg(std::shared_ptr<SimpleDBusLegacy::Connection> conn, const std::string& bus_name, const std::string& path);
13
+ virtual ~BluezOrg() = default;
14
+
15
+ std::vector<std::shared_ptr<Adapter>> get_adapters();
16
+ void register_agent(std::shared_ptr<Agent> agent);
17
+
18
+ private:
19
+ std::shared_ptr<SimpleDBusLegacy::Proxy> path_create(const std::string& path) override;
20
+ };
21
+
22
+ } // namespace SimpleBluezLegacy
@@ -0,0 +1,26 @@
1
+ #pragma once
2
+
3
+ #include <simpledbuslegacy/advanced/Proxy.h>
4
+
5
+ #include <simplebluezlegacy/Adapter.h>
6
+ #include <simplebluezlegacy/Agent.h>
7
+
8
+ #include <simplebluezlegacy/interfaces/AgentManager1.h>
9
+
10
+ namespace SimpleBluezLegacy {
11
+
12
+ class BluezOrgBluez : public SimpleDBusLegacy::Proxy {
13
+ public:
14
+ BluezOrgBluez(std::shared_ptr<SimpleDBusLegacy::Connection> conn, const std::string& bus_name, const std::string& path);
15
+ virtual ~BluezOrgBluez() = default;
16
+
17
+ void register_agent(std::shared_ptr<Agent> agent);
18
+
19
+ std::vector<std::shared_ptr<Adapter>> get_adapters();
20
+
21
+ private:
22
+ std::shared_ptr<SimpleDBusLegacy::Proxy> path_create(const std::string& path) override;
23
+ std::shared_ptr<AgentManager1> agentmanager1();
24
+ };
25
+
26
+ } // namespace SimpleBluezLegacy
@@ -0,0 +1,32 @@
1
+ #pragma once
2
+
3
+ #include <simpledbuslegacy/advanced/Proxy.h>
4
+ #include <simpledbuslegacy/interfaces/ObjectManager.h>
5
+
6
+ #include <simplebluezlegacy/Adapter.h>
7
+ #include <simplebluezlegacy/Agent.h>
8
+
9
+ #include <vector>
10
+
11
+ namespace SimpleBluezLegacy {
12
+
13
+ class BluezRoot : public SimpleDBusLegacy::Proxy {
14
+ public:
15
+
16
+ BluezRoot(std::shared_ptr<SimpleDBusLegacy::Connection> conn, const std::string& bus_name, const std::string& path);
17
+ virtual ~BluezRoot() = default;
18
+
19
+ void load_managed_objects();
20
+
21
+ std::vector<std::shared_ptr<Adapter>> get_adapters();
22
+ std::shared_ptr<Agent> get_agent();
23
+ void register_agent();
24
+
25
+ private:
26
+ std::shared_ptr<SimpleDBusLegacy::Proxy> path_create(const std::string& path) override;
27
+ std::shared_ptr<SimpleDBusLegacy::ObjectManager> object_manager();
28
+
29
+ std::shared_ptr<Agent> _agent;
30
+ };
31
+
32
+ } // namespace SimpleBluez
@@ -0,0 +1,47 @@
1
+ #pragma once
2
+
3
+ #include <simpledbuslegacy/advanced/Proxy.h>
4
+
5
+ #include <simplebluezlegacy/Descriptor.h>
6
+ #include <simplebluezlegacy/Types.h>
7
+ #include <simplebluezlegacy/interfaces/GattCharacteristic1.h>
8
+
9
+ #include <cstdlib>
10
+
11
+ namespace SimpleBluezLegacy {
12
+
13
+ class Characteristic : public SimpleDBusLegacy::Proxy {
14
+ public:
15
+ Characteristic(std::shared_ptr<SimpleDBusLegacy::Connection> conn, const std::string& bus_name,
16
+ const std::string& path);
17
+ virtual ~Characteristic();
18
+
19
+ std::shared_ptr<Descriptor> get_descriptor(const std::string& uuid);
20
+
21
+ // ----- METHODS -----
22
+ ByteArray read();
23
+ void write_request(ByteArray value);
24
+ void write_command(ByteArray value);
25
+ void start_notify();
26
+ void stop_notify();
27
+
28
+ // ----- PROPERTIES -----
29
+ std::vector<std::shared_ptr<Descriptor>> descriptors();
30
+
31
+ std::string uuid();
32
+ ByteArray value();
33
+ bool notifying();
34
+ std::vector<std::string> flags();
35
+ uint16_t mtu();
36
+
37
+ // ----- CALLBACKS -----
38
+ void set_on_value_changed(std::function<void(ByteArray new_value)> callback);
39
+ void clear_on_value_changed();
40
+
41
+ private:
42
+ std::shared_ptr<SimpleDBusLegacy::Proxy> path_create(const std::string& path) override;
43
+
44
+ std::shared_ptr<GattCharacteristic1> gattcharacteristic1();
45
+ };
46
+
47
+ } // namespace SimpleBluezLegacy
@@ -0,0 +1,33 @@
1
+ #pragma once
2
+
3
+ #include <simpledbuslegacy/advanced/Proxy.h>
4
+
5
+ #include <simplebluezlegacy/Types.h>
6
+ #include <simplebluezlegacy/interfaces/GattDescriptor1.h>
7
+
8
+ #include <cstdlib>
9
+
10
+ namespace SimpleBluezLegacy {
11
+
12
+ class Descriptor : public SimpleDBusLegacy::Proxy {
13
+ public:
14
+ Descriptor(std::shared_ptr<SimpleDBusLegacy::Connection> conn, const std::string& bus_name, const std::string& path);
15
+ virtual ~Descriptor();
16
+
17
+ // ----- METHODS -----
18
+ ByteArray read();
19
+ void write(ByteArray value);
20
+
21
+ // ----- PROPERTIES -----
22
+ std::string uuid();
23
+ ByteArray value();
24
+
25
+ // ----- CALLBACKS -----
26
+ void set_on_value_changed(std::function<void(ByteArray new_value)> callback);
27
+ void clear_on_value_changed();
28
+
29
+ private:
30
+ std::shared_ptr<GattDescriptor1> gattdescriptor1();
31
+ };
32
+
33
+ } // namespace SimpleBluezLegacy
@@ -0,0 +1,64 @@
1
+ #pragma once
2
+
3
+ #include <simpledbuslegacy/advanced/Proxy.h>
4
+
5
+ #include <simplebluezlegacy/Characteristic.h>
6
+ #include <simplebluezlegacy/Service.h>
7
+ #include <simplebluezlegacy/interfaces/Battery1.h>
8
+ #include <simplebluezlegacy/interfaces/Device1.h>
9
+
10
+ namespace SimpleBluezLegacy {
11
+
12
+ class Device : public SimpleDBusLegacy::Proxy {
13
+ public:
14
+ Device(std::shared_ptr<SimpleDBusLegacy::Connection> conn, const std::string& bus_name, const std::string& path);
15
+ virtual ~Device();
16
+
17
+ std::shared_ptr<Service> get_service(const std::string& uuid);
18
+ std::shared_ptr<Characteristic> get_characteristic(const std::string& service_uuid,
19
+ const std::string& characteristic_uuid);
20
+
21
+ // ----- PROPERTIES -----
22
+ std::vector<std::shared_ptr<Service>> services();
23
+ std::vector<std::string> uuids();
24
+
25
+ std::string address();
26
+ std::string address_type();
27
+ std::string name();
28
+ std::string alias();
29
+ int16_t rssi();
30
+ int16_t tx_power();
31
+
32
+ std::map<uint16_t, ByteArray> manufacturer_data();
33
+ std::map<std::string, ByteArray> service_data();
34
+
35
+ bool paired();
36
+ bool connected();
37
+ bool services_resolved();
38
+
39
+ // ----- METHODS -----
40
+ void connect();
41
+ void disconnect();
42
+ void pair();
43
+ void cancel_pairing();
44
+
45
+ // ----- CALLBACKS -----
46
+ void set_on_services_resolved(std::function<void()> callback);
47
+ void clear_on_services_resolved();
48
+ void set_on_disconnected(std::function<void()> callback);
49
+ void clear_on_disconnected();
50
+
51
+ // ----- BATTERY INTERFACE -----
52
+ bool has_battery_interface();
53
+ uint8_t battery_percentage();
54
+ void set_on_battery_percentage_changed(std::function<void(uint8_t new_value)> callback);
55
+ void clear_on_battery_percentage_changed();
56
+
57
+ private:
58
+ std::shared_ptr<SimpleDBusLegacy::Proxy> path_create(const std::string& path) override;
59
+
60
+ std::shared_ptr<Device1> device1();
61
+ std::shared_ptr<Battery1> battery1();
62
+ };
63
+
64
+ } // namespace SimpleBluezLegacy
@@ -0,0 +1,43 @@
1
+ #pragma once
2
+
3
+ #include <stdexcept>
4
+ #include <string>
5
+
6
+ #include <simpledbuslegacy/base/Exceptions.h>
7
+
8
+ namespace SimpleBluezLegacy {
9
+
10
+ namespace Exception {
11
+
12
+ class BaseException : public std::exception {};
13
+
14
+ class ServiceNotFoundException : public BaseException {
15
+ public:
16
+ ServiceNotFoundException(const std::string& service);
17
+ const char* what() const noexcept override;
18
+
19
+ private:
20
+ std::string _message;
21
+ };
22
+
23
+ class CharacteristicNotFoundException : public BaseException {
24
+ public:
25
+ CharacteristicNotFoundException(const std::string& characteristic);
26
+ const char* what() const noexcept override;
27
+
28
+ private:
29
+ std::string _message;
30
+ };
31
+
32
+ class DescriptorNotFoundException : public BaseException {
33
+ public:
34
+ DescriptorNotFoundException(const std::string& descriptor);
35
+ const char* what() const noexcept override;
36
+
37
+ private:
38
+ std::string _message;
39
+ };
40
+
41
+ } // namespace Exception
42
+
43
+ } // namespace SimpleBluezLegacy
@@ -0,0 +1,27 @@
1
+ #pragma once
2
+
3
+ #include <simpledbuslegacy/advanced/Proxy.h>
4
+
5
+ #include <simplebluezlegacy/Characteristic.h>
6
+ #include <simplebluezlegacy/interfaces/GattService1.h>
7
+
8
+ namespace SimpleBluezLegacy {
9
+
10
+ class Service : public SimpleDBusLegacy::Proxy {
11
+ public:
12
+ Service(std::shared_ptr<SimpleDBusLegacy::Connection> conn, const std::string& bus_name, const std::string& path);
13
+ virtual ~Service() = default;
14
+
15
+ std::shared_ptr<Characteristic> get_characteristic(const std::string& uuid);
16
+
17
+ // ----- PROPERTIES -----
18
+ std::vector<std::shared_ptr<Characteristic>> characteristics();
19
+
20
+ std::string uuid();
21
+
22
+ private:
23
+ std::shared_ptr<SimpleDBusLegacy::Proxy> path_create(const std::string& path) override;
24
+ std::shared_ptr<GattService1> gattservice1();
25
+ };
26
+
27
+ } // namespace SimpleBluezLegacy
@@ -0,0 +1,9 @@
1
+ #pragma once
2
+
3
+ #include "kvn/kvn_bytearray.h"
4
+
5
+ namespace SimpleBluezLegacy {
6
+
7
+ using ByteArray = kvn::bytearray;
8
+
9
+ }
@@ -0,0 +1,49 @@
1
+ #pragma once
2
+
3
+ #include <simpledbuslegacy/advanced/Interface.h>
4
+ #include <simpledbuslegacy/advanced/InterfaceRegistry.h>
5
+
6
+ #include <optional>
7
+ #include <string>
8
+ #include <vector>
9
+
10
+ namespace SimpleBluezLegacy {
11
+
12
+ class Adapter1 : public SimpleDBusLegacy::Interface {
13
+ public:
14
+ // ----- TYPES -----
15
+ struct DiscoveryFilter {
16
+ typedef enum { AUTO, BREDR, LE } TransportType;
17
+ std::vector<std::string> UUIDs = {};
18
+ std::optional<int16_t> RSSI;
19
+ std::optional<uint16_t> Pathloss;
20
+ TransportType Transport = TransportType::AUTO;
21
+ bool DuplicateData = true;
22
+ bool Discoverable = false;
23
+ std::string Pattern = "";
24
+ };
25
+
26
+ // ----- CONSTRUCTORS -----
27
+ Adapter1(std::shared_ptr<SimpleDBusLegacy::Connection> conn, std::string path);
28
+ virtual ~Adapter1() = default;
29
+
30
+ // ----- METHODS -----
31
+ void RemoveDevice(std::string device_path);
32
+ void StartDiscovery();
33
+ void StopDiscovery();
34
+ void SetDiscoveryFilter(DiscoveryFilter filter);
35
+ SimpleDBusLegacy::Holder GetDiscoveryFilters();
36
+
37
+ // ----- PROPERTIES -----
38
+ bool Discovering(bool refresh = true);
39
+ bool Powered(bool refresh = true);
40
+ std::string Address();
41
+
42
+ protected:
43
+ void property_changed(std::string option_name) override;
44
+
45
+ private:
46
+ static const SimpleDBusLegacy::AutoRegisterInterface<Adapter1> registry;
47
+ };
48
+
49
+ } // namespace SimpleBluezLegacy
@@ -0,0 +1,100 @@
1
+ #pragma once
2
+
3
+ #include <simpledbuslegacy/advanced/Interface.h>
4
+ #include <simpledbuslegacy/advanced/InterfaceRegistry.h>
5
+
6
+ #include "kvn/kvn_safe_callback.hpp"
7
+
8
+ #include <cstdint>
9
+ #include <string>
10
+
11
+ namespace SimpleBluezLegacy {
12
+
13
+ class Agent1 : public SimpleDBusLegacy::Interface {
14
+ public:
15
+ Agent1(std::shared_ptr<SimpleDBusLegacy::Connection> conn, std::string path);
16
+ virtual ~Agent1() = default;
17
+
18
+ // ----- METHODS -----
19
+
20
+ // ----- PROPERTIES -----
21
+
22
+ // ----- CALLBACKS -----
23
+
24
+ /**
25
+ * @brief This method gets called when the service daemon
26
+ * needs to get the passkey for an authentication.
27
+ * The return value should be a string of 1-16 characters
28
+ * length. The string can be alphanumeric.
29
+ *
30
+ * @note: Invalid values will cause a rejection of the request
31
+ * be returned.
32
+ */
33
+ kvn::safe_callback<std::string()> OnRequestPinCode;
34
+
35
+ /**
36
+ * @brief This method gets called when the service daemon
37
+ * needs to display a pincode for an authentication.
38
+ * Note that the PIN will always be a 6-digit number,
39
+ * zero-padded to 6 digits.
40
+ *
41
+ * @return false if the request should be rejected.
42
+ */
43
+ kvn::safe_callback<bool(const std::string&)> OnDisplayPinCode;
44
+
45
+ /**
46
+ * @brief This method gets called when the service daemon
47
+ * needs to get the passkey for an authentication.
48
+ * The return value should be a numeric value
49
+ * between 0 and 999999.
50
+ *
51
+ * @note: Invalid values will cause a rejection of the request
52
+ * be returned.
53
+ */
54
+ kvn::safe_callback<int32_t()> OnRequestPasskey;
55
+
56
+ /**
57
+ * @brief This method gets called when the service daemon
58
+ * needs to display a passkey for an authentication.
59
+ * The entered parameter indicates the number of already
60
+ * typed keys on the remote side.
61
+ */
62
+ kvn::safe_callback<void(uint32_t, uint16_t)> OnDisplayPasskey;
63
+
64
+ /**
65
+ * @brief This method gets called when the service daemon
66
+ * needs to confirm a passkey for an authentication.
67
+ *
68
+ * @return false if the request should be rejected.
69
+ */
70
+ kvn::safe_callback<bool(uint32_t)> OnRequestConfirmation;
71
+
72
+ /**
73
+ * @brief This method gets called to request the user to
74
+ * authorize an incoming pairing attempt which
75
+ * would in other circumstances trigger the just-works
76
+ * model, or when the user plugged in a device that
77
+ * implements cable pairing.
78
+ *
79
+ * @return false if the request should be rejected.
80
+ */
81
+ kvn::safe_callback<bool()> OnRequestAuthorization;
82
+
83
+ /**
84
+ * @brief This method gets called when the service daemon
85
+ * needs to authorize a connection/service request.
86
+ *
87
+ * @return false if the request should be rejected.
88
+ */
89
+ kvn::safe_callback<bool(const std::string&)> OnAuthorizeService;
90
+
91
+ protected:
92
+ void message_handle(SimpleDBusLegacy::Message& msg) override;
93
+
94
+ void reply_error(SimpleDBusLegacy::Message& msg, const std::string& error_name, const std::string& error_message);
95
+
96
+ private:
97
+ static const SimpleDBusLegacy::AutoRegisterInterface<Agent1> registry;
98
+ };
99
+
100
+ } // namespace SimpleBluezLegacy
@@ -0,0 +1,24 @@
1
+ #pragma once
2
+
3
+ #include <simpledbuslegacy/advanced/Interface.h>
4
+ #include <simpledbuslegacy/advanced/InterfaceRegistry.h>
5
+
6
+ #include <string>
7
+
8
+ namespace SimpleBluezLegacy {
9
+
10
+ class AgentManager1 : public SimpleDBusLegacy::Interface {
11
+ public:
12
+ AgentManager1(std::shared_ptr<SimpleDBusLegacy::Connection> conn, std::string path);
13
+ virtual ~AgentManager1() = default;
14
+
15
+ // ----- METHODS -----
16
+ void RegisterAgent(std::string agent, std::string capability);
17
+ void RequestDefaultAgent(std::string agent);
18
+ void UnregisterAgent(std::string agent);
19
+
20
+ private:
21
+ static const SimpleDBusLegacy::AutoRegisterInterface<AgentManager1> registry;
22
+ };
23
+
24
+ } // namespace SimpleBluezLegacy
@@ -0,0 +1,32 @@
1
+ #pragma once
2
+
3
+ #include <simpledbuslegacy/advanced/Interface.h>
4
+ #include <simpledbuslegacy/advanced/InterfaceRegistry.h>
5
+
6
+ #include "kvn/kvn_safe_callback.hpp"
7
+
8
+ #include <string>
9
+
10
+ namespace SimpleBluezLegacy {
11
+
12
+ class Battery1 : public SimpleDBusLegacy::Interface {
13
+ public:
14
+ Battery1(std::shared_ptr<SimpleDBusLegacy::Connection> conn, std::string path);
15
+ virtual ~Battery1();
16
+
17
+ // ----- METHODS -----
18
+
19
+ // ----- PROPERTIES -----
20
+ uint8_t Percentage();
21
+
22
+ // ----- CALLBACKS -----
23
+ kvn::safe_callback<void()> OnPercentageChanged;
24
+
25
+ protected:
26
+ void property_changed(std::string option_name) override;
27
+
28
+ private:
29
+ static const SimpleDBusLegacy::AutoRegisterInterface<Battery1> registry;
30
+ };
31
+
32
+ } // namespace SimpleBluez
@@ -0,0 +1,62 @@
1
+ #pragma once
2
+
3
+ #include <simpledbuslegacy/advanced/Interface.h>
4
+ #include <simpledbuslegacy/advanced/InterfaceRegistry.h>
5
+
6
+ #include "kvn/kvn_safe_callback.hpp"
7
+
8
+ #include <string>
9
+
10
+ #include "simplebluezlegacy/Types.h"
11
+
12
+ namespace SimpleBluezLegacy {
13
+
14
+ class Device1 : public SimpleDBusLegacy::Interface {
15
+ public:
16
+ Device1(std::shared_ptr<SimpleDBusLegacy::Connection> conn, std::string path);
17
+ virtual ~Device1();
18
+
19
+ // ----- METHODS -----
20
+ void Connect();
21
+ void Disconnect();
22
+ void Pair();
23
+ void CancelPairing();
24
+
25
+ // ----- PROPERTIES -----
26
+ int16_t RSSI();
27
+ int16_t TxPower();
28
+ uint16_t Appearance(); // On Bluez 5.53, this always returns 0.
29
+ std::string Address();
30
+ std::string AddressType();
31
+ std::string Alias();
32
+ std::string Name();
33
+ std::vector<std::string> UUIDs();
34
+ std::map<uint16_t, ByteArray> ManufacturerData(bool refresh = true);
35
+ std::map<std::string, ByteArray> ServiceData(bool refresh = true);
36
+ bool Paired(bool refresh = true);
37
+ bool Connected(bool refresh = true);
38
+ bool ServicesResolved(bool refresh = true);
39
+
40
+ // ----- CALLBACKS -----
41
+ kvn::safe_callback<void()> OnServicesResolved;
42
+ kvn::safe_callback<void()> OnDisconnected;
43
+
44
+ protected:
45
+ void property_changed(std::string option_name) override;
46
+
47
+ int16_t _rssi = INT16_MIN;
48
+ int16_t _tx_power = INT16_MIN;
49
+ std::string _name;
50
+ std::string _alias;
51
+ std::string _address;
52
+ std::string _address_type;
53
+ bool _connected;
54
+ bool _services_resolved;
55
+ std::map<uint16_t, ByteArray> _manufacturer_data;
56
+ std::map<std::string, ByteArray> _service_data;
57
+
58
+ private:
59
+ static const SimpleDBusLegacy::AutoRegisterInterface<Device1> registry;
60
+ };
61
+
62
+ } // namespace SimpleBluezLegacy