simplejsble 0.0.3 → 0.0.5

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/NitroSimplejsble.podspec +9 -4
  2. package/VERSION +1 -0
  3. package/android/CMakeLists.txt +62 -20
  4. package/cmake/epilogue.cmake +81 -0
  5. package/cmake/find/FindDBus1.cmake +20 -0
  6. package/cmake/find/Findfmt.cmake +41 -0
  7. package/cmake/find/Findgoogletest.cmake +18 -0
  8. package/cmake/parse_version.cmake +45 -0
  9. package/cmake/prelude.cmake +8 -0
  10. package/dependencies/README +4 -0
  11. package/dependencies/external/kvn/kvn_bytearray.h +297 -0
  12. package/dependencies/external/kvn/kvn_safe_callback.hpp +66 -0
  13. package/dependencies/external/kvn/logfwd.hpp +35 -0
  14. package/dependencies/internal/include/fmt/LICENSE +27 -0
  15. package/dependencies/internal/include/fmt/args.h +220 -0
  16. package/dependencies/internal/include/fmt/base.h +2962 -0
  17. package/dependencies/internal/include/fmt/chrono.h +2338 -0
  18. package/dependencies/internal/include/fmt/color.h +610 -0
  19. package/dependencies/internal/include/fmt/compile.h +539 -0
  20. package/dependencies/internal/include/fmt/core.h +5 -0
  21. package/dependencies/internal/include/fmt/format-inl.h +1949 -0
  22. package/dependencies/internal/include/fmt/format.h +4244 -0
  23. package/dependencies/internal/include/fmt/os.h +427 -0
  24. package/dependencies/internal/include/fmt/ostream.h +166 -0
  25. package/dependencies/internal/include/fmt/printf.h +633 -0
  26. package/dependencies/internal/include/fmt/ranges.h +850 -0
  27. package/dependencies/internal/include/fmt/std.h +726 -0
  28. package/dependencies/internal/include/fmt/xchar.h +373 -0
  29. package/dependencies/internal/include/nanopb/pb.h +948 -0
  30. package/dependencies/internal/include/nanopb/pb_common.h +49 -0
  31. package/dependencies/internal/include/nanopb/pb_decode.h +204 -0
  32. package/dependencies/internal/include/nanopb/pb_encode.h +195 -0
  33. package/dependencies/internal/include/simplejni/Common.hpp +598 -0
  34. package/dependencies/internal/include/simplejni/References.hpp +151 -0
  35. package/dependencies/internal/include/simplejni/Registry.hpp +249 -0
  36. package/dependencies/internal/include/simplejni/VM.hpp +93 -0
  37. package/dependencies/internal/src/nanopb/pb_common.c +388 -0
  38. package/dependencies/internal/src/nanopb/pb_decode.c +1763 -0
  39. package/dependencies/internal/src/nanopb/pb_encode.c +1009 -0
  40. package/dependencies/internal/src/simplejni/Common.cpp +4 -0
  41. package/package.json +5 -1
  42. package/simpleble/CMakeLists.txt +519 -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,48 @@
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 <simplebluezlegacy/Types.h>
9
+
10
+ #include <string>
11
+
12
+ namespace SimpleBluezLegacy {
13
+
14
+ class GattCharacteristic1 : public SimpleDBusLegacy::Interface {
15
+ public:
16
+ typedef enum { REQUEST = 0, COMMAND } WriteType;
17
+
18
+ GattCharacteristic1(std::shared_ptr<SimpleDBusLegacy::Connection> conn, std::string path);
19
+ virtual ~GattCharacteristic1();
20
+
21
+ // ----- METHODS -----
22
+ void StartNotify();
23
+ void StopNotify();
24
+ void WriteValue(const ByteArray& value, WriteType type);
25
+ ByteArray ReadValue();
26
+
27
+ // ----- PROPERTIES -----
28
+ std::string UUID();
29
+ ByteArray Value();
30
+ bool Notifying(bool refresh = true);
31
+ std::vector<std::string> Flags();
32
+ uint16_t MTU();
33
+
34
+ // ----- CALLBACKS -----
35
+ kvn::safe_callback<void()> OnValueChanged;
36
+
37
+ protected:
38
+ void property_changed(std::string option_name) override;
39
+ void update_value(SimpleDBusLegacy::Holder& new_value);
40
+
41
+ std::string _uuid;
42
+ ByteArray _value;
43
+
44
+ private:
45
+ static const SimpleDBusLegacy::AutoRegisterInterface<GattCharacteristic1> registry;
46
+ };
47
+
48
+ } // namespace SimpleBluez
@@ -0,0 +1,41 @@
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 <simplebluezlegacy/Types.h>
9
+
10
+ #include <string>
11
+
12
+ namespace SimpleBluezLegacy {
13
+
14
+ class GattDescriptor1 : public SimpleDBusLegacy::Interface {
15
+ public:
16
+ GattDescriptor1(std::shared_ptr<SimpleDBusLegacy::Connection> conn, std::string path);
17
+ virtual ~GattDescriptor1();
18
+
19
+ // ----- METHODS -----
20
+ void WriteValue(const ByteArray& value);
21
+ ByteArray ReadValue();
22
+
23
+ // ----- PROPERTIES -----
24
+ std::string UUID();
25
+ ByteArray Value();
26
+
27
+ // ----- CALLBACKS -----
28
+ kvn::safe_callback<void()> OnValueChanged;
29
+
30
+ protected:
31
+ void property_changed(std::string option_name) override;
32
+ void update_value(SimpleDBusLegacy::Holder& new_value);
33
+
34
+ std::string _uuid;
35
+ ByteArray _value;
36
+
37
+ private:
38
+ static const SimpleDBusLegacy::AutoRegisterInterface<GattDescriptor1> registry;
39
+ };
40
+
41
+ } // namespace SimpleBluez
@@ -0,0 +1,28 @@
1
+ #pragma once
2
+
3
+ #include <simpledbuslegacy/advanced/Interface.h>
4
+ #include <simpledbuslegacy/advanced/InterfaceRegistry.h>
5
+ #include <string>
6
+
7
+ namespace SimpleBluezLegacy {
8
+
9
+ class GattService1 : public SimpleDBusLegacy::Interface {
10
+ public:
11
+ GattService1(std::shared_ptr<SimpleDBusLegacy::Connection> conn, std::string path);
12
+ virtual ~GattService1() = default;
13
+
14
+ // ----- METHODS -----
15
+
16
+ // ----- PROPERTIES -----
17
+ std::string UUID();
18
+
19
+ protected:
20
+ void property_changed(std::string option_name) override;
21
+
22
+ std::string _uuid;
23
+
24
+ private:
25
+ static const SimpleDBusLegacy::AutoRegisterInterface<GattService1> registry;
26
+ };
27
+
28
+ } // namespace SimpleBluezLegacy
@@ -0,0 +1,67 @@
1
+ #pragma once
2
+
3
+ #include <simpledbuslegacy/base/Connection.h>
4
+
5
+ #include <atomic>
6
+ #include <map>
7
+ #include <memory>
8
+ #include <mutex>
9
+ #include <string>
10
+
11
+ namespace SimpleDBusLegacy {
12
+
13
+ class Interface {
14
+ public:
15
+ Interface(std::shared_ptr<Connection> conn, const std::string& bus_name, const std::string& path,
16
+ const std::string& interface_name);
17
+
18
+ virtual ~Interface() = default;
19
+
20
+ // ----- LIFE CYCLE -----
21
+ void load(Holder options);
22
+ void unload();
23
+ bool is_loaded() const;
24
+
25
+ // ----- METHODS -----
26
+ Message create_method_call(const std::string& method_name);
27
+
28
+ // ----- PROPERTIES -----
29
+ virtual void property_changed(std::string option_name);
30
+
31
+ // ! These functions are used by the Properties interface. We need better nomenclature!
32
+ Holder property_collect();
33
+ Holder property_collect_single(const std::string& property_name);
34
+ void property_modify(const std::string& property_name, const Holder& value);
35
+
36
+ // ! TODO: We need to figure out a good architecture to let any generic interface access the Properties object of its Proxy.
37
+ Holder property_get_all();
38
+ Holder property_get(const std::string& property_name);
39
+ void property_set(const std::string& property_name, const Holder& value);
40
+ void property_refresh(const std::string& property_name);
41
+
42
+ // ----- SIGNALS -----
43
+ void signal_property_changed(Holder changed_properties, Holder invalidated_properties);
44
+
45
+ // ----- MESSAGES -----
46
+ virtual void message_handle(Message& msg);
47
+
48
+ protected:
49
+ std::atomic_bool _loaded{true};
50
+
51
+ std::string _path;
52
+ std::string _bus_name;
53
+ std::string _interface_name;
54
+ std::shared_ptr<Connection> _conn;
55
+
56
+ std::recursive_mutex _property_update_mutex;
57
+ std::map<std::string, bool> _property_valid_map;
58
+
59
+ /**
60
+ * @brief Dictionary containing all properties.
61
+ *
62
+ * @note: When accessing this object, the _property_update_mutex must be locked.
63
+ */
64
+ std::map<std::string, Holder> _properties;
65
+ };
66
+
67
+ } // namespace SimpleDBusLegacy
@@ -0,0 +1,62 @@
1
+ #pragma once
2
+
3
+ #include <functional>
4
+ #include <memory>
5
+ #include <stdexcept>
6
+ #include <string>
7
+ #include <typeindex>
8
+
9
+ #include <simpledbuslegacy/base/Connection.h>
10
+ #include <simpledbuslegacy/base/Holder.h>
11
+
12
+ namespace SimpleDBusLegacy {
13
+
14
+ class Interface;
15
+
16
+ using CreatorFunction = std::shared_ptr<Interface> (*)(std::shared_ptr<Connection>, const std::string&,
17
+ const std::string&, const Holder&);
18
+
19
+ class InterfaceRegistry {
20
+ public:
21
+ static InterfaceRegistry& getInstance() {
22
+ static InterfaceRegistry instance;
23
+ return instance;
24
+ }
25
+
26
+ template <typename T>
27
+ void registerClass(const std::string& key, CreatorFunction creator) {
28
+ static_assert(std::is_base_of<Interface, T>::value, "T must inherit from Interface");
29
+ creators[key] = creator;
30
+ }
31
+
32
+ bool isRegistered(const std::string& key) const {
33
+ return creators.find(key) != creators.end();
34
+ }
35
+
36
+ // NOTES; We need a method inside Interfaces that will automatically retrieve the Interface name for the class.
37
+ std::shared_ptr<Interface> create(const std::string& key, std::shared_ptr<Connection> conn,
38
+ const std::string& bus_name, const std::string& path,
39
+ const Holder& options) const {
40
+ auto it = creators.find(key);
41
+ if (it != creators.end()) {
42
+ auto iface = it->second(conn, bus_name, path, options);
43
+ iface->load(options);
44
+ return iface;
45
+ }
46
+ return nullptr;
47
+ }
48
+
49
+ private:
50
+ std::unordered_map<std::string, CreatorFunction> creators;
51
+ InterfaceRegistry() = default;
52
+ };
53
+
54
+ template <typename T>
55
+ struct AutoRegisterInterface {
56
+ AutoRegisterInterface(const std::string& key, CreatorFunction creator) {
57
+ static_assert(std::is_base_of<Interface, T>::value, "T must inherit from Interface");
58
+ InterfaceRegistry::getInstance().registerClass<T>(key, creator);
59
+ }
60
+ };
61
+
62
+ } // namespace SimpleDBusLegacy
@@ -0,0 +1,117 @@
1
+ #pragma once
2
+
3
+ #include <simpledbuslegacy/base/Connection.h>
4
+
5
+ #include <simpledbuslegacy/advanced/Interface.h>
6
+ #include <kvn/kvn_safe_callback.hpp>
7
+ #include <simpledbuslegacy/base/Path.h>
8
+
9
+ #include <memory>
10
+ #include <mutex>
11
+ #include <string>
12
+
13
+ namespace SimpleDBusLegacy {
14
+
15
+ class Interface;
16
+
17
+ class Proxy {
18
+ public:
19
+ Proxy(std::shared_ptr<Connection> conn, const std::string& bus_name, const std::string& path);
20
+ virtual ~Proxy();
21
+
22
+ bool valid() const;
23
+ void invalidate();
24
+ std::string path() const;
25
+ std::string bus_name() const;
26
+
27
+ bool path_exists(const std::string& path);
28
+ std::shared_ptr<Proxy> path_get(const std::string& path);
29
+
30
+ bool interface_exists(const std::string& name);
31
+ std::shared_ptr<Interface> interface_get(const std::string& name);
32
+
33
+ const std::map<std::string, std::shared_ptr<Proxy>>& children();
34
+ const std::map<std::string, std::shared_ptr<Interface>>& interfaces();
35
+
36
+ virtual std::shared_ptr<Proxy> path_create(const std::string& path);
37
+
38
+ // ----- PATH HANDLING -----
39
+ void register_object_path();
40
+ void unregister_object_path();
41
+
42
+ // ----- INTROSPECTION -----
43
+ // ! TODO: This should be moved to the Introspectable interface.
44
+ std::string introspect();
45
+
46
+ // ----- INTERFACE HANDLING -----
47
+ // // ! We are making the assumption that the Properties interface is always available.
48
+ // std::shared_ptr<Properties> properties() {
49
+ // return std::dynamic_pointer_cast<Properties>(interface_get("org.freedesktop.DBus.Properties"));
50
+ // }
51
+
52
+ size_t interfaces_count();
53
+ bool interfaces_loaded();
54
+ void interfaces_load(Holder managed_interfaces);
55
+ void interfaces_reload(Holder managed_interfaces);
56
+ void interfaces_unload(Holder removed_interfaces);
57
+
58
+ // ----- CHILD HANDLING -----
59
+ void path_add(const std::string& path, Holder managed_interfaces);
60
+ bool path_remove(const std::string& path, Holder removed_interfaces);
61
+ bool path_prune();
62
+ Holder path_collect();
63
+
64
+ // ----- MANUAL CHILD HANDLING -----
65
+ // ! This function is used to manually add children to the proxy.
66
+ void path_append_child(const std::string& path, std::shared_ptr<Proxy> child);
67
+ void path_remove_child(const std::string& path);
68
+ // ----- MESSAGE HANDLING -----
69
+ void message_forward(Message& msg);
70
+ void message_handle(Message& msg);
71
+
72
+ // ----- CALLBACKS -----
73
+ kvn::safe_callback<void(std::string)> on_child_created;
74
+ kvn::safe_callback<void()> on_signal_received;
75
+
76
+ // ----- TEMPLATE METHODS -----
77
+ // ! This method returns a Proxy descendant object.
78
+ template <typename T>
79
+ std::vector<std::shared_ptr<T>> children_casted() {
80
+ std::vector<std::shared_ptr<T>> result;
81
+ std::scoped_lock lock(_child_access_mutex);
82
+ for (auto& [path, child] : _children) {
83
+ result.push_back(std::dynamic_pointer_cast<T>(child));
84
+ }
85
+ return result;
86
+ }
87
+
88
+ // ! This method returns a Proxy descendant object.
89
+ template <typename T>
90
+ std::vector<std::shared_ptr<T>> children_casted_with_prefix(const std::string& prefix) {
91
+ std::vector<std::shared_ptr<T>> result;
92
+ std::scoped_lock lock(_child_access_mutex);
93
+ for (auto& [path, child] : _children) {
94
+ const std::string next_child = SimpleDBusLegacy::Path::next_child_strip(_path, path);
95
+ if (next_child.find(prefix) == 0) {
96
+ result.push_back(std::dynamic_pointer_cast<T>(child));
97
+ }
98
+ }
99
+ return result;
100
+ }
101
+
102
+ protected:
103
+ bool _valid;
104
+ bool _registered;
105
+ std::string _path;
106
+ std::string _bus_name;
107
+
108
+ std::shared_ptr<Connection> _conn;
109
+
110
+ std::map<std::string, std::shared_ptr<Interface>> _interfaces;
111
+ std::map<std::string, std::shared_ptr<Proxy>> _children;
112
+
113
+ std::recursive_mutex _interface_access_mutex;
114
+ std::recursive_mutex _child_access_mutex;
115
+ };
116
+
117
+ } // namespace SimpleDBusLegacy
@@ -0,0 +1,50 @@
1
+ #pragma once
2
+
3
+ #include <dbus/dbus.h>
4
+ #include <mutex>
5
+ #include <unordered_map>
6
+ #include <functional>
7
+ #include "Message.h"
8
+
9
+ namespace SimpleDBusLegacy {
10
+
11
+ class Message;
12
+
13
+ class Connection {
14
+ public:
15
+ Connection(::DBusBusType dbus_bus_type);
16
+ ~Connection();
17
+
18
+ void init();
19
+ void uninit();
20
+ bool is_initialized();
21
+
22
+ void add_match(std::string rule);
23
+ void remove_match(std::string rule);
24
+
25
+ void read_write();
26
+ void read_write_dispatch();
27
+ Message pop_message();
28
+
29
+ void send(Message& msg);
30
+ Message send_with_reply_and_block(Message& msg);
31
+
32
+ bool register_object_path(const std::string& path, std::function<void(Message&)> handler);
33
+ bool unregister_object_path(const std::string& path);
34
+
35
+ // ----- PROPERTIES -----
36
+ std::string unique_name();
37
+
38
+ private:
39
+ bool _initialized = false;
40
+
41
+ ::DBusBusType _dbus_bus_type;
42
+ ::DBusConnection* _conn;
43
+
44
+ std::recursive_mutex _mutex;
45
+
46
+ static DBusHandlerResult static_message_handler(DBusConnection* connection, DBusMessage* message, void* user_data);
47
+ std::unordered_map<std::string, std::function<void(Message&)>> _message_handlers;
48
+ };
49
+
50
+ } // namespace SimpleDBusLegacy
@@ -0,0 +1,56 @@
1
+ #pragma once
2
+
3
+ #include <stdexcept>
4
+ #include <string>
5
+
6
+ namespace SimpleDBusLegacy {
7
+
8
+ namespace Exception {
9
+
10
+ class BaseException : public std::exception {};
11
+
12
+ class NotInitialized : public BaseException {
13
+ public:
14
+ NotInitialized();
15
+ const char* what() const noexcept override;
16
+ };
17
+
18
+ class DBusException : public BaseException {
19
+ public:
20
+ DBusException(const std::string& err_name, const std::string& err_message);
21
+ const char* what() const noexcept override;
22
+
23
+ private:
24
+ std::string _message;
25
+ };
26
+
27
+ class SendFailed : public BaseException {
28
+ public:
29
+ SendFailed(const std::string& err_name, const std::string& err_message, const std::string& msg_str);
30
+ const char* what() const noexcept override;
31
+
32
+ private:
33
+ std::string _message;
34
+ };
35
+
36
+ class InterfaceNotFoundException : public BaseException {
37
+ public:
38
+ InterfaceNotFoundException(const std::string& path, const std::string& interface);
39
+ const char* what() const noexcept override;
40
+
41
+ private:
42
+ std::string _message;
43
+ };
44
+
45
+ class PathNotFoundException : public BaseException {
46
+ public:
47
+ PathNotFoundException(const std::string& path, const std::string& subpath);
48
+ const char* what() const noexcept override;
49
+
50
+ private:
51
+ std::string _message;
52
+ };
53
+
54
+ } // namespace Exception
55
+
56
+ } // namespace SimpleDBusLegacy
@@ -0,0 +1,147 @@
1
+ #pragma once
2
+
3
+ #include <any>
4
+ #include <optional>
5
+ #include <cstdint>
6
+ #include <map>
7
+ #include <string>
8
+ #include <vector>
9
+
10
+ namespace SimpleDBusLegacy {
11
+
12
+ class ObjectPath {
13
+ public:
14
+ ObjectPath(const std::string& path) : path(path) {}
15
+ ObjectPath(const char* path) : path(path) {}
16
+ operator std::string() const { return path; }
17
+ bool operator<(const ObjectPath& other) const { return path < other.path; }
18
+
19
+ private:
20
+ std::string path;
21
+ };
22
+
23
+ class Signature {
24
+ public:
25
+ Signature(const std::string& signature) : signature(signature) {}
26
+ Signature(const char* signature) : signature(signature) {}
27
+ operator std::string() const { return signature; }
28
+ bool operator<(const Signature& other) const { return signature < other.signature; }
29
+
30
+ private:
31
+ std::string signature;
32
+ };
33
+
34
+ class Holder;
35
+
36
+ class Holder {
37
+ public:
38
+ Holder();
39
+ ~Holder();
40
+
41
+ bool operator!=(const Holder& rhs) const;
42
+ bool operator==(const Holder& rhs) const;
43
+
44
+ typedef enum {
45
+ NONE,
46
+ BYTE,
47
+ BOOLEAN,
48
+ INT16,
49
+ UINT16,
50
+ INT32,
51
+ UINT32,
52
+ INT64,
53
+ UINT64,
54
+ DOUBLE,
55
+ STRING,
56
+ OBJ_PATH,
57
+ SIGNATURE,
58
+ ARRAY,
59
+ DICT
60
+ } Type;
61
+
62
+ Type type() const;
63
+ std::string represent() const;
64
+ std::string signature() const;
65
+ void signature_override(const std::string& signature);
66
+
67
+ // TODO: Deprecate these functions in favor of templated version.
68
+ static Holder create_boolean(bool value);
69
+ static Holder create_byte(uint8_t value);
70
+ static Holder create_int16(int16_t value);
71
+ static Holder create_uint16(uint16_t value);
72
+ static Holder create_int32(int32_t value);
73
+ static Holder create_uint32(uint32_t value);
74
+ static Holder create_int64(int64_t value);
75
+ static Holder create_uint64(uint64_t value);
76
+ static Holder create_double(double value);
77
+ static Holder create_string(const std::string& str);
78
+ static Holder create_object_path(const ObjectPath& path);
79
+ static Holder create_signature(const Signature& signature);
80
+ static Holder create_array();
81
+ static Holder create_dict();
82
+
83
+ std::any get_contents() const;
84
+
85
+ // TODO: Deprecate these functions in favor of templated version.
86
+ bool get_boolean() const;
87
+ uint8_t get_byte() const;
88
+ int16_t get_int16() const;
89
+ uint16_t get_uint16() const;
90
+ int32_t get_int32() const;
91
+ uint32_t get_uint32() const;
92
+ int64_t get_int64() const;
93
+ uint64_t get_uint64() const;
94
+ double get_double() const;
95
+ std::string get_string() const;
96
+ std::string get_object_path() const;
97
+ std::string get_signature() const;
98
+ std::vector<Holder> get_array() const;
99
+ std::map<uint8_t, Holder> get_dict_uint8() const;
100
+ std::map<uint16_t, Holder> get_dict_uint16() const;
101
+ std::map<uint32_t, Holder> get_dict_uint32() const;
102
+ std::map<uint64_t, Holder> get_dict_uint64() const;
103
+ std::map<int16_t, Holder> get_dict_int16() const;
104
+ std::map<int32_t, Holder> get_dict_int32() const;
105
+ std::map<int64_t, Holder> get_dict_int64() const;
106
+ std::map<std::string, Holder> get_dict_string() const;
107
+ std::map<std::string, Holder> get_dict_object_path() const;
108
+ std::map<std::string, Holder> get_dict_signature() const;
109
+
110
+ void dict_append(Type key_type, std::any key, Holder value);
111
+ void array_append(Holder holder);
112
+
113
+ // Template speciallizations.
114
+ template <typename T>
115
+ static Holder create();
116
+
117
+ template <typename T>
118
+ static Holder create(T value);
119
+
120
+ template <typename T>
121
+ T get() const;
122
+
123
+ private:
124
+ Type _type = NONE;
125
+ std::optional<std::string> _signature;
126
+
127
+ bool holder_boolean = false;
128
+ uint64_t holder_integer = 0;
129
+ double holder_double = 0;
130
+ std::string holder_string;
131
+ std::vector<Holder> holder_array;
132
+
133
+ // Dictionaries are stored within a vector as a tuple of <key_type, key, holder>
134
+ std::vector<std::tuple<Type, std::any, Holder>> holder_dict;
135
+
136
+ std::vector<std::string> _represent_container() const;
137
+ std::string _represent_simple() const;
138
+ std::string _signature_simple() const;
139
+
140
+ template <typename T>
141
+ std::map<T, Holder> _get_dict(Type key_type) const;
142
+
143
+ static std::string _signature_type(Type type) noexcept;
144
+ static std::string _represent_type(Type type, std::any value) noexcept;
145
+ };
146
+
147
+ } // namespace SimpleDBusLegacy
@@ -0,0 +1,57 @@
1
+ #pragma once
2
+
3
+ #include <fmt/core.h>
4
+ #include <cstdint>
5
+ #include <string>
6
+
7
+ namespace SimpleDBusLegacy {
8
+
9
+ // clang-format off
10
+
11
+ void log_fatal(const std::string& file, uint32_t line, const std::string& function, const std::string& message);
12
+ void log_error(const std::string& file, uint32_t line, const std::string& function, const std::string& message);
13
+ void log_warn(const std::string& file, uint32_t line, const std::string& function, const std::string& message);
14
+ void log_info(const std::string& file, uint32_t line, const std::string& function, const std::string& message);
15
+ void log_debug(const std::string& file, uint32_t line, const std::string& function, const std::string& message);
16
+ void log_verbose(const std::string& file, uint32_t line, const std::string& function, const std::string& message);
17
+
18
+ template <typename T, typename... Args>
19
+ void log_fatal(const std::string& file, uint32_t line, const std::string& function, const T& t, const Args&... args) {
20
+ log_fatal(file, line, function, fmt::format(t, args...));
21
+ }
22
+
23
+ template <typename T, typename... Args>
24
+ void log_error(const std::string& file, uint32_t line, const std::string& function, const T& t, const Args&... args) {
25
+ log_error(file, line, function, fmt::format(t, args...));
26
+ }
27
+
28
+ template <typename T, typename... Args>
29
+ void log_warn(const std::string& file, uint32_t line, const std::string& function, const T& t, const Args&... args) {
30
+ log_warn(file, line, function, fmt::format(t, args...));
31
+ }
32
+
33
+ template <typename T, typename... Args>
34
+ void log_info(const std::string& file, uint32_t line, const std::string& function, const T& t, const Args&... args) {
35
+ log_info(file, line, function, fmt::format(t, args...));
36
+ }
37
+
38
+ template <typename T, typename... Args>
39
+ void log_debug(const std::string& file, uint32_t line, const std::string& function, const T& t, const Args&... args) {
40
+ log_debug(file, line, function, fmt::format(t, args...));
41
+ }
42
+
43
+ template <typename T, typename... Args>
44
+ void log_verbose(const std::string& file, uint32_t line, const std::string& function, const T& t, const Args&... args) {
45
+ log_verbose(file, line, function, fmt::format(t, args...));
46
+ }
47
+
48
+ // clang-format on
49
+
50
+ } // namespace SimpleDBusLegacy
51
+
52
+ #define LOG_FATAL(...) SimpleDBusLegacy::log_fatal(__FILE__, __LINE__, __PRETTY_FUNCTION__, __VA_ARGS__)
53
+ #define LOG_ERROR(...) SimpleDBusLegacy::log_error(__FILE__, __LINE__, __PRETTY_FUNCTION__, __VA_ARGS__)
54
+ #define LOG_WARN(...) SimpleDBusLegacy::log_warn(__FILE__, __LINE__, __PRETTY_FUNCTION__, __VA_ARGS__)
55
+ #define LOG_INFO(...) SimpleDBusLegacy::log_info(__FILE__, __LINE__, __PRETTY_FUNCTION__, __VA_ARGS__)
56
+ #define LOG_DEBUG(...) SimpleDBusLegacy::log_debug(__FILE__, __LINE__, __PRETTY_FUNCTION__, __VA_ARGS__)
57
+ #define LOG_VERBOSE(...) SimpleDBusLegacy::log_verbose(__FILE__, __LINE__, __PRETTY_FUNCTION__, __VA_ARGS__)