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,4 @@
1
+ #include "simplejni/Common.hpp"
2
+
3
+ namespace SimpleJNI {
4
+ } // namespace SimpleJNI
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "simplejsble",
3
- "version": "0.0.4",
3
+ "version": "0.0.6",
4
4
  "description": "React Native Bluetooth Low Energy library using SimpleBLE with Nitro Modules",
5
5
  "main": "lib/index",
6
6
  "module": "lib/index",
@@ -14,6 +14,10 @@
14
14
  "android/",
15
15
  "ios/",
16
16
  "cpp/",
17
+ "simpleble/",
18
+ "cmake/",
19
+ "dependencies/",
20
+ "VERSION",
17
21
  "react-native.config.js",
18
22
  "nitro.json",
19
23
  "*.podspec",
@@ -0,0 +1,519 @@
1
+ cmake_minimum_required(VERSION 3.21)
2
+
3
+ include(${CMAKE_CURRENT_SOURCE_DIR}/../cmake/prelude.cmake)
4
+
5
+ project(
6
+ simpleble
7
+ VERSION ${SIMPLEBLE_VERSION_BASE}
8
+ DESCRIPTION "The ultimate fully-fledged cross-platform library for Bluetooth Low Energy (BLE)."
9
+ HOMEPAGE_URL "https://github.com/simpleble/simpleble"
10
+ LANGUAGES CXX C
11
+ )
12
+
13
+ include(${CMAKE_CURRENT_SOURCE_DIR}/../cmake/epilogue.cmake)
14
+
15
+ include(GenerateExportHeader)
16
+ include(GNUInstallDirs)
17
+
18
+ option(SIMPLEBLE_PLAIN "Use plain version of SimpleBLE" OFF)
19
+ option(SIMPLEBLE_EXCLUDE_C "Exclude C bindings from SimpleBLE" OFF)
20
+
21
+ if(SIMPLEBLE_TEST)
22
+ message(STATUS "Building tests requires plain version of SimpleBLE")
23
+ set(SIMPLEBLE_PLAIN ON)
24
+ endif()
25
+
26
+ set(SIMPLEBLE_PRIVATE_INCLUDES
27
+ ${CMAKE_CURRENT_SOURCE_DIR}/src
28
+ ${CMAKE_CURRENT_SOURCE_DIR}/include
29
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/builders
30
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/external
31
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/common
32
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/dongl
33
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/frontends/safe
34
+ ${CMAKE_CURRENT_SOURCE_DIR}/../dependencies/external
35
+ ${CMAKE_CURRENT_SOURCE_DIR}/../dependencies/internal/include)
36
+
37
+ set(SIMPLEBLE_SRC
38
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/frontends/base/Advanced.cpp
39
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/frontends/base/Adapter.cpp
40
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/frontends/base/Peripheral.cpp
41
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/frontends/base/Service.cpp
42
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/frontends/base/Characteristic.cpp
43
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/frontends/base/Descriptor.cpp
44
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/frontends/base/Backend.cpp
45
+
46
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/common/AdapterBase.cpp
47
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/common/ServiceBase.cpp
48
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/common/CharacteristicBase.cpp
49
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/common/DescriptorBase.cpp
50
+
51
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/Config.cpp
52
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/Exceptions.cpp
53
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/Utils.cpp
54
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/Logging.cpp
55
+
56
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/frontends/safe/AdapterSafe.cpp
57
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/frontends/safe/PeripheralSafe.cpp)
58
+
59
+ # Define simpleble target
60
+ add_library(simpleble ${SIMPLEBLE_SRC})
61
+ add_library(simpleble::simpleble ALIAS simpleble)
62
+
63
+ set_target_properties(simpleble PROPERTIES
64
+ CXX_VISIBILITY_PRESET hidden
65
+ VISIBILITY_INLINES_HIDDEN YES
66
+ CXX_STANDARD 17
67
+ CXX_STANDARD_REQUIRED YES
68
+ CXX_EXTENSIONS NO
69
+ POSITION_INDEPENDENT_CODE ON
70
+ VERSION "${PROJECT_VERSION}"
71
+ SOVERSION "${PROJECT_VERSION_MAJOR}"
72
+ EXPORT_NAME simpleble
73
+ OUTPUT_NAME simpleble
74
+ RELEASE_POSTFIX ""
75
+ RELWITHDEBINFO_POSTFIX "-relwithdebinfo"
76
+ MINSIZEREL_POSTFIX "-minsizerel"
77
+ DEBUG_POSTFIX "-debug")
78
+
79
+ generate_export_header(
80
+ simpleble
81
+ BASE_NAME simpleble
82
+ EXPORT_FILE_NAME export/simpleble/export.h
83
+ )
84
+
85
+ # Configure include directories for simpleble
86
+ target_include_directories(simpleble PRIVATE ${SIMPLEBLE_PRIVATE_INCLUDES})
87
+ target_include_directories(simpleble INTERFACE
88
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
89
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../dependencies/external>
90
+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
91
+ target_include_directories(simpleble SYSTEM PUBLIC
92
+ $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/export>)
93
+
94
+ append_sanitize_options("${SIMPLEBLE_SANITIZE}")
95
+
96
+ if(NOT SIMPLEBLE_LOG_LEVEL)
97
+ set(SIMPLEBLE_LOG_LEVEL "INFO")
98
+ endif()
99
+
100
+ list(APPEND PRIVATE_COMPILE_DEFINITIONS SIMPLEBLE_LOG_LEVEL=SIMPLEBLE_LOG_LEVEL_${SIMPLEBLE_LOG_LEVEL})
101
+ list(APPEND PRIVATE_COMPILE_DEFINITIONS SIMPLEBLE_VERSION="${SIMPLEBLE_VERSION}")
102
+ list(APPEND PRIVATE_COMPILE_DEFINITIONS FMT_HEADER_ONLY)
103
+
104
+ if(NOT SIMPLEBLE_TEST AND NOT SIMPLEBLE_PLAIN)
105
+ if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
106
+ set(SIMPLEBLE_BACKEND_LINUX ON)
107
+ else()
108
+ set(SIMPLEBLE_BACKEND_LINUX OFF)
109
+ endif()
110
+
111
+ if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
112
+ set(SIMPLEBLE_BACKEND_WINDOWS ON)
113
+ else()
114
+ set(SIMPLEBLE_BACKEND_WINDOWS OFF)
115
+ endif()
116
+
117
+ if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
118
+ set(SIMPLEBLE_BACKEND_MACOS ON)
119
+ else()
120
+ set(SIMPLEBLE_BACKEND_MACOS OFF)
121
+ endif()
122
+
123
+ if(CMAKE_SYSTEM_NAME STREQUAL "iOS")
124
+ set(SIMPLEBLE_BACKEND_IOS ON)
125
+ else()
126
+ set(SIMPLEBLE_BACKEND_IOS OFF)
127
+ endif()
128
+
129
+ if(CMAKE_SYSTEM_NAME STREQUAL "Android")
130
+ set(SIMPLEBLE_BACKEND_ANDROID ON)
131
+ else()
132
+ set(SIMPLEBLE_BACKEND_ANDROID OFF)
133
+ endif()
134
+ else()
135
+ set(SIMPLEBLE_BACKEND_LINUX OFF)
136
+ set(SIMPLEBLE_BACKEND_WINDOWS OFF)
137
+ set(SIMPLEBLE_BACKEND_MACOS OFF)
138
+ set(SIMPLEBLE_BACKEND_IOS OFF)
139
+ set(SIMPLEBLE_BACKEND_ANDROID OFF)
140
+ endif()
141
+
142
+ target_compile_definitions(simpleble PRIVATE
143
+ SIMPLEBLE_BACKEND_PLAIN=$<BOOL:${SIMPLEBLE_PLAIN}>
144
+ SIMPLEBLE_BACKEND_LINUX=$<BOOL:${SIMPLEBLE_BACKEND_LINUX}>
145
+ SIMPLEBLE_BACKEND_WINDOWS=$<BOOL:${SIMPLEBLE_BACKEND_WINDOWS}>
146
+ SIMPLEBLE_BACKEND_MACOS=$<BOOL:${SIMPLEBLE_BACKEND_MACOS}>
147
+ SIMPLEBLE_BACKEND_IOS=$<BOOL:${SIMPLEBLE_BACKEND_IOS}>
148
+ SIMPLEBLE_BACKEND_ANDROID=$<BOOL:${SIMPLEBLE_BACKEND_ANDROID}>)
149
+
150
+ # Dongl Source File Selection
151
+ set(SIMPLEBLE_DONGL_SOURCES
152
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/dongl/usb/UsbHelper.cpp
153
+
154
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/dongl/BackendDongl.cpp
155
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/dongl/AdapterDongl.cpp
156
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/dongl/PeripheralDongl.cpp
157
+
158
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/dongl/serial/Protocol.cpp
159
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/dongl/serial/ProtocolBase.cpp
160
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/dongl/serial/Wire.cpp
161
+
162
+ ${CMAKE_CURRENT_SOURCE_DIR}/../dependencies/internal/src/nanopb/pb_common.c
163
+ ${CMAKE_CURRENT_SOURCE_DIR}/../dependencies/internal/src/nanopb/pb_decode.c
164
+ ${CMAKE_CURRENT_SOURCE_DIR}/../dependencies/internal/src/nanopb/pb_encode.c
165
+
166
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/dongl/protocol/d2h.pb.c
167
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/dongl/protocol/h2d.pb.c
168
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/dongl/protocol/basic.pb.c
169
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/dongl/protocol/simpleble.pb.c
170
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/dongl/protocol/softdevice.pb.c
171
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/dongl/protocol/softdevice_gap.pb.c
172
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/dongl/protocol/softdevice_gattc.pb.c
173
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/dongl/protocol/softdevice_gatts.pb.c
174
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/dongl/protocol/softdevice_types.pb.c)
175
+
176
+ if(SIMPLEBLE_PLAIN)
177
+ list(APPEND SIMPLEBLE_DONGL_SOURCES
178
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/dongl/usb/UsbHelperNull.cpp)
179
+ elseif(SIMPLEBLE_BACKEND_LINUX)
180
+ list(APPEND SIMPLEBLE_DONGL_SOURCES
181
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/dongl/usb/UsbHelperLinux.cpp)
182
+ elseif(SIMPLEBLE_BACKEND_WINDOWS)
183
+ list(APPEND SIMPLEBLE_DONGL_SOURCES
184
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/dongl/usb/UsbHelperWindows.cpp)
185
+ elseif(SIMPLEBLE_BACKEND_MACOS)
186
+ list(APPEND SIMPLEBLE_DONGL_SOURCES
187
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/dongl/usb/UsbHelperApple.cpp)
188
+ elseif(SIMPLEBLE_BACKEND_IOS)
189
+ list(APPEND SIMPLEBLE_DONGL_SOURCES
190
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/dongl/usb/UsbHelperNull.cpp)
191
+ elseif(SIMPLEBLE_BACKEND_ANDROID)
192
+ list(APPEND SIMPLEBLE_DONGL_SOURCES
193
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/dongl/usb/UsbHelperNull.cpp)
194
+ endif()
195
+
196
+ # Detect the operating system and load the necessary dependencies
197
+ if(SIMPLEBLE_PLAIN)
198
+ message(STATUS "Plain Flavor Requested")
199
+
200
+ target_sources(simpleble PRIVATE
201
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/plain/AdapterPlain.cpp
202
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/plain/PeripheralPlain.cpp
203
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/plain/BackendPlain.cpp)
204
+ elseif(SIMPLEBLE_BACKEND_LINUX)
205
+ message(STATUS "Linux Host Detected")
206
+
207
+ find_package(DBus1 REQUIRED)
208
+
209
+ if(NOT SIMPLEDBUS_LOG_LEVEL)
210
+ set(SIMPLEDBUS_LOG_LEVEL "FATAL")
211
+ endif()
212
+
213
+ if(NOT SIMPLEBLUEZ_LOG_LEVEL)
214
+ set(SIMPLEBLUEZ_LOG_LEVEL "FATAL")
215
+ endif()
216
+
217
+ list(APPEND PRIVATE_COMPILE_DEFINITIONS SIMPLEDBUS_LOG_LEVEL=${SIMPLEDBUS_LOG_LEVEL})
218
+ list(APPEND PRIVATE_COMPILE_DEFINITIONS SIMPLEBLUEZ_LOG_LEVEL=${SIMPLEBLUEZ_LOG_LEVEL})
219
+
220
+ if(SIMPLEBLE_USE_SESSION_DBUS)
221
+ list(APPEND PRIVATE_COMPILE_DEFINITIONS SIMPLEBLUEZ_USE_SESSION_DBUS)
222
+ endif()
223
+
224
+ target_sources(simpleble PRIVATE
225
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/linux/AdapterLinux.cpp
226
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/linux/PeripheralLinux.cpp
227
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/linux/BackendBluez.cpp
228
+
229
+ ${CMAKE_CURRENT_SOURCE_DIR}/../simplebluez/src/Logging.cpp
230
+ ${CMAKE_CURRENT_SOURCE_DIR}/../simplebluez/src/Agent.cpp
231
+ ${CMAKE_CURRENT_SOURCE_DIR}/../simplebluez/src/Device.cpp
232
+ ${CMAKE_CURRENT_SOURCE_DIR}/../simplebluez/src/Characteristic.cpp
233
+ ${CMAKE_CURRENT_SOURCE_DIR}/../simplebluez/src/Exceptions.cpp
234
+ ${CMAKE_CURRENT_SOURCE_DIR}/../simplebluez/src/Service.cpp
235
+ ${CMAKE_CURRENT_SOURCE_DIR}/../simplebluez/src/Adapter.cpp
236
+ ${CMAKE_CURRENT_SOURCE_DIR}/../simplebluez/src/Bluez.cpp
237
+ ${CMAKE_CURRENT_SOURCE_DIR}/../simplebluez/src/BluezRoot.cpp
238
+ ${CMAKE_CURRENT_SOURCE_DIR}/../simplebluez/src/BluezOrg.cpp
239
+ ${CMAKE_CURRENT_SOURCE_DIR}/../simplebluez/src/BluezOrgBluez.cpp
240
+ ${CMAKE_CURRENT_SOURCE_DIR}/../simplebluez/src/Descriptor.cpp
241
+ ${CMAKE_CURRENT_SOURCE_DIR}/../simplebluez/src/interfaces/Adapter1.cpp
242
+ ${CMAKE_CURRENT_SOURCE_DIR}/../simplebluez/src/interfaces/Agent1.cpp
243
+ ${CMAKE_CURRENT_SOURCE_DIR}/../simplebluez/src/interfaces/GattDescriptor1.cpp
244
+ ${CMAKE_CURRENT_SOURCE_DIR}/../simplebluez/src/interfaces/GattCharacteristic1.cpp
245
+ ${CMAKE_CURRENT_SOURCE_DIR}/../simplebluez/src/interfaces/GattService1.cpp
246
+ ${CMAKE_CURRENT_SOURCE_DIR}/../simplebluez/src/interfaces/Device1.cpp
247
+ ${CMAKE_CURRENT_SOURCE_DIR}/../simplebluez/src/interfaces/Battery1.cpp
248
+ ${CMAKE_CURRENT_SOURCE_DIR}/../simplebluez/src/interfaces/AgentManager1.cpp
249
+
250
+ ${CMAKE_CURRENT_SOURCE_DIR}/../simpledbus/src/advanced/Interface.cpp
251
+ ${CMAKE_CURRENT_SOURCE_DIR}/../simpledbus/src/advanced/Proxy.cpp
252
+ ${CMAKE_CURRENT_SOURCE_DIR}/../simpledbus/src/base/Connection.cpp
253
+ ${CMAKE_CURRENT_SOURCE_DIR}/../simpledbus/src/base/Exceptions.cpp
254
+ ${CMAKE_CURRENT_SOURCE_DIR}/../simpledbus/src/base/Holder.cpp
255
+ ${CMAKE_CURRENT_SOURCE_DIR}/../simpledbus/src/base/Logging.cpp
256
+ ${CMAKE_CURRENT_SOURCE_DIR}/../simpledbus/src/base/Message.cpp
257
+ ${CMAKE_CURRENT_SOURCE_DIR}/../simpledbus/src/base/Path.cpp
258
+ ${CMAKE_CURRENT_SOURCE_DIR}/../simpledbus/src/interfaces/ObjectManager.cpp
259
+ ${CMAKE_CURRENT_SOURCE_DIR}/../simpledbus/src/interfaces/Properties.cpp
260
+
261
+ # Legacy BlueZ backend
262
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/linux_legacy/BackendBluezLegacy.cpp
263
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/linux_legacy/AdapterLinuxLegacy.cpp
264
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/linux_legacy/PeripheralLinuxLegacy.cpp
265
+
266
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/linux_legacy/src/Agent.cpp
267
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/linux_legacy/src/Device.cpp
268
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/linux_legacy/src/Characteristic.cpp
269
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/linux_legacy/src/Exceptions.cpp
270
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/linux_legacy/src/Service.cpp
271
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/linux_legacy/src/Adapter.cpp
272
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/linux_legacy/src/Bluez.cpp
273
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/linux_legacy/src/BluezRoot.cpp
274
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/linux_legacy/src/BluezOrg.cpp
275
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/linux_legacy/src/BluezOrgBluez.cpp
276
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/linux_legacy/src/Descriptor.cpp
277
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/linux_legacy/src/interfaces/Adapter1.cpp
278
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/linux_legacy/src/interfaces/Agent1.cpp
279
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/linux_legacy/src/interfaces/GattDescriptor1.cpp
280
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/linux_legacy/src/interfaces/GattCharacteristic1.cpp
281
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/linux_legacy/src/interfaces/GattService1.cpp
282
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/linux_legacy/src/interfaces/Device1.cpp
283
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/linux_legacy/src/interfaces/Battery1.cpp
284
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/linux_legacy/src/interfaces/AgentManager1.cpp
285
+
286
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/linux_legacy/src/advanced/Interface.cpp
287
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/linux_legacy/src/advanced/Proxy.cpp
288
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/linux_legacy/src/base/Connection.cpp
289
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/linux_legacy/src/base/Exceptions.cpp
290
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/linux_legacy/src/base/Holder.cpp
291
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/linux_legacy/src/base/Message.cpp
292
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/linux_legacy/src/base/Path.cpp
293
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/linux_legacy/src/interfaces/ObjectManager.cpp
294
+ )
295
+
296
+ target_link_libraries(simpleble PUBLIC pthread)
297
+ target_link_libraries(simpleble PRIVATE ${DBus1_LIBRARIES})
298
+
299
+ target_include_directories(simpleble PRIVATE
300
+ ${CMAKE_CURRENT_SOURCE_DIR}/../simplebluez/include
301
+ ${CMAKE_CURRENT_SOURCE_DIR}/../simpledbus/include
302
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/linux_legacy/include)
303
+
304
+ set_property(TARGET simpleble PROPERTY INSTALL_RPATH $ORIGIN)
305
+
306
+ elseif(SIMPLEBLE_BACKEND_WINDOWS)
307
+ message(STATUS "Windows Host Detected")
308
+
309
+ set(WINVERSION_CODE 0x0A00) # Selected Windows 10 based on https://docs.microsoft.com/en-us/cpp/porting/modifying-winver-and-win32-winnt
310
+
311
+ if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
312
+ # Add all the special definitions for Visual Studio C++
313
+
314
+ # /D_WIN32_WINNT -> Specifies the minimum version of Windows that the application is compatible with.
315
+ list(APPEND PRIVATE_COMPILE_DEFINITIONS "/D_WIN32_WINNT=${WINVERSION_CODE}")
316
+ # /D_USE_MATH_DEFINES -> Specifies that the math.h header file should be included.
317
+ list(APPEND PRIVATE_COMPILE_DEFINITIONS "/D_USE_MATH_DEFINES")
318
+
319
+ # /utf-8 -> Set source and executable character sets to utf-8. https://learn.microsoft.com/en-us/cpp/build/reference/utf-8-set-source-and-executable-character-sets-to-utf-8
320
+ list(APPEND PRIVATE_COMPILE_OPTIONS "/utf-8")
321
+ # /Gd -> Use __cdecl as the default calling convention. https://docs.microsoft.com/en-us/cpp/cpp/cdecl
322
+ list(APPEND PRIVATE_COMPILE_OPTIONS "/Gd")
323
+ # /EHsc -> Use the standard C++ exception handling model. https://learn.microsoft.com/en-us/cpp/build/reference/eh-exception-handling-model
324
+ list(APPEND PRIVATE_COMPILE_OPTIONS "/EHsc")
325
+ # /WX -> Treats all warnings as errors.
326
+ list(APPEND PRIVATE_COMPILE_OPTIONS "/WX")
327
+ # /W1 -> Use the lowest level of warnings, as there are some unsafe functions that MSVC doesn't like.
328
+ # TODO: This should be removed once the warnings are fixed.
329
+ list(APPEND PRIVATE_COMPILE_OPTIONS "/W1")
330
+ endif()
331
+
332
+ target_sources(simpleble PRIVATE
333
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/windows/AdapterWindows.cpp
334
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/windows/PeripheralWindows.cpp
335
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/windows/BackendWinRT.cpp
336
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/windows/MtaManager.cpp
337
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/windows/Utils.cpp)
338
+
339
+ elseif(SIMPLEBLE_BACKEND_MACOS OR SIMPLEBLE_BACKEND_IOS)
340
+ message(STATUS "Darwin / iOS Host Detected")
341
+
342
+ list(APPEND PRIVATE_COMPILE_OPTIONS -fobjc-arc)
343
+
344
+ target_link_libraries(simpleble PUBLIC "-framework Foundation" "-framework CoreBluetooth" ObjC)
345
+
346
+ if(SIMPLEBLE_BACKEND_MACOS)
347
+ target_link_libraries(simpleble PUBLIC "-framework IOBluetooth" "-framework IOKit")
348
+ endif()
349
+
350
+ target_sources(simpleble PRIVATE
351
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/macos/Utils.mm
352
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/macos/AdapterMac.mm
353
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/macos/AdapterBaseMacOS.mm
354
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/macos/PeripheralMac.mm
355
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/macos/PeripheralBaseMacOS.mm
356
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/macos/BackendCoreBluetooth.mm)
357
+
358
+ set_property(TARGET simpleble PROPERTY INSTALL_RPATH @loader_path)
359
+
360
+ elseif(SIMPLEBLE_BACKEND_ANDROID)
361
+ message(STATUS "Configuring for Android")
362
+
363
+ include_directories(${ANDROID_NDK}/sysroot/usr/include)
364
+ include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src/backends/android)
365
+
366
+ #add_compile_options(-DANDROID -D__ANDROID_API__=${ANDROID_NATIVE_API_LEVEL})
367
+
368
+ target_sources(simpleble PRIVATE
369
+ ${SIMPLEJNI_SOURCES}
370
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/android/AdapterAndroid.cpp
371
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/android/PeripheralAndroid.cpp
372
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/android/BackendAndroid.cpp
373
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/android/bridge/BluetoothGattCallback.cpp
374
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/android/bridge/ScanCallback.cpp
375
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/android/types/android/bluetooth/BluetoothAdapter.cpp
376
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/android/types/android/bluetooth/BluetoothDevice.cpp
377
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/android/types/android/bluetooth/BluetoothGatt.cpp
378
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/android/types/android/bluetooth/BluetoothGattService.cpp
379
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/android/types/android/bluetooth/BluetoothGattCharacteristic.cpp
380
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/android/types/android/bluetooth/BluetoothGattDescriptor.cpp
381
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/android/types/android/bluetooth/le/BluetoothScanner.cpp
382
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/android/types/java/util/UUID.cpp
383
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/android/types/android/os/ParcelUUID.cpp
384
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/android/types/android/bluetooth/le/ScanRecord.cpp
385
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/android/types/android/bluetooth/le/ScanResult.cpp
386
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/android/types/android/util/SparseArray.cpp
387
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/android/types/java/util/Iterator.cpp
388
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/android/types/java/util/List.cpp
389
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/android/types/java/util/Set.cpp)
390
+ target_link_libraries(simpleble PUBLIC android nativehelper log)
391
+ endif()
392
+
393
+ target_sources(simpleble PRIVATE
394
+ ${SIMPLEBLE_DONGL_SOURCES})
395
+
396
+ target_include_directories(simpleble PRIVATE
397
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/dongl)
398
+
399
+ apply_build_options(simpleble
400
+ "${PRIVATE_COMPILE_DEFINITIONS}"
401
+ "${PRIVATE_COMPILE_OPTIONS}"
402
+ "${PRIVATE_LINK_OPTIONS}"
403
+ "${PUBLIC_LINK_OPTIONS}")
404
+
405
+ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/cmake/simpleble.pc.in
406
+ ${CMAKE_CURRENT_BINARY_DIR}/simpleble.pc @ONLY)
407
+
408
+ install(
409
+ TARGETS simpleble
410
+ EXPORT simpleble-config
411
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
412
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
413
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
414
+
415
+ install(
416
+ EXPORT simpleble-config
417
+ NAMESPACE simpleble::
418
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/simpleble)
419
+
420
+ install(
421
+ DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/include/simpleble/
422
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/simpleble)
423
+
424
+ install(
425
+ FILES
426
+ ${CMAKE_CURRENT_LIST_DIR}/../dependencies/external/kvn/kvn_bytearray.h
427
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/simpleble/kvn)
428
+
429
+ install(
430
+ DIRECTORY ${PROJECT_BINARY_DIR}/export/simpleble/
431
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/simpleble)
432
+
433
+ install(
434
+ FILES ${CMAKE_CURRENT_BINARY_DIR}/simpleble.pc
435
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
436
+
437
+ if(SIMPLEBLE_TEST)
438
+ message(STATUS "Building Tests")
439
+ find_package(GTest REQUIRED)
440
+
441
+ add_executable(simpleble_test
442
+ ${CMAKE_CURRENT_SOURCE_DIR}/test/src/main.cpp
443
+ ${CMAKE_CURRENT_SOURCE_DIR}/test/src/test_utils.cpp
444
+ ${CMAKE_CURRENT_SOURCE_DIR}/test/src/test_bytearray.cpp)
445
+ set_target_properties(simpleble_test PROPERTIES
446
+ CXX_VISIBILITY_PRESET hidden
447
+ VISIBILITY_INLINES_HIDDEN YES
448
+ CXX_STANDARD 17
449
+ POSITION_INDEPENDENT_CODE ON
450
+ WINDOWS_EXPORT_ALL_SYMBOLS ON)
451
+
452
+ target_link_libraries(simpleble_test PRIVATE simpleble::simpleble GTest::gtest)
453
+ endif()
454
+
455
+ # *** SIMPLEBLE C BINDINGS ***
456
+
457
+ if(NOT SIMPLEBLE_EXCLUDE_C)
458
+ set(SIMPLEBLE_C_SRC
459
+ ${CMAKE_CURRENT_SOURCE_DIR}/src_c/simpleble.cpp
460
+ ${CMAKE_CURRENT_SOURCE_DIR}/src_c/adapter.cpp
461
+ ${CMAKE_CURRENT_SOURCE_DIR}/src_c/peripheral.cpp
462
+ ${CMAKE_CURRENT_SOURCE_DIR}/src_c/logging.cpp
463
+ ${CMAKE_CURRENT_SOURCE_DIR}/src_c/utils.cpp)
464
+
465
+ add_library(simpleble-c ${SIMPLEBLE_C_SRC})
466
+ add_library(simpleble::simpleble-c ALIAS simpleble-c)
467
+
468
+ set_target_properties(simpleble-c PROPERTIES
469
+ C_VISIBILITY_PRESET hidden
470
+ VISIBILITY_INLINES_HIDDEN YES
471
+ CXX_STANDARD 17
472
+ CXX_STANDARD_REQUIRED YES
473
+ CXX_EXTENSIONS NO
474
+ POSITION_INDEPENDENT_CODE ON
475
+ DEFINE_SYMBOL simpleble_EXPORTS
476
+ VERSION "${PROJECT_VERSION}"
477
+ SOVERSION "${PROJECT_VERSION_MAJOR}"
478
+ EXPORT_NAME simpleble-c
479
+ OUTPUT_NAME simpleble-c
480
+ RELEASE_POSTFIX ""
481
+ RELWITHDEBINFO_POSTFIX "-relwithdebinfo"
482
+ MINSIZEREL_POSTFIX "-minsizerel"
483
+ DEBUG_POSTFIX "-debug")
484
+
485
+ # Configure include directories for simpleble-c
486
+ target_include_directories(simpleble-c PRIVATE ${SIMPLEBLE_PRIVATE_INCLUDES})
487
+ target_include_directories(simpleble-c INTERFACE
488
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
489
+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
490
+ target_include_directories(simpleble-c SYSTEM PUBLIC
491
+ $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/export>)
492
+
493
+ # Configure linked libraries for simpleble-c
494
+ target_link_libraries(simpleble-c PRIVATE simpleble::simpleble)
495
+
496
+ # Apply OS-specific settings for simpleble-c
497
+ if(SIMPLEBLE_BACKEND_LINUX)
498
+ set_property(TARGET simpleble-c PROPERTY INSTALL_RPATH $ORIGIN)
499
+ elseif(SIMPLEBLE_BACKEND_MACOS)
500
+ set_property(TARGET simpleble-c PROPERTY INSTALL_RPATH @loader_path)
501
+ endif()
502
+
503
+ apply_build_options(simpleble-c
504
+ "${PRIVATE_COMPILE_DEFINITIONS}"
505
+ "${PRIVATE_COMPILE_OPTIONS}"
506
+ "${PRIVATE_LINK_OPTIONS}"
507
+ "${PUBLIC_LINK_OPTIONS}")
508
+
509
+ install(
510
+ TARGETS simpleble-c
511
+ EXPORT simpleble-config
512
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
513
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
514
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
515
+
516
+ install(
517
+ DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/include/simpleble_c/
518
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/simpleble_c)
519
+ endif()
@@ -0,0 +1,11 @@
1
+ prefix=@CMAKE_INSTALL_PREFIX@
2
+ exec_prefix=@CMAKE_INSTALL_PREFIX@
3
+ libdir=@CMAKE_INSTALL_FULL_LIBDIR@
4
+ includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@
5
+
6
+ Name: SimpleBLE
7
+ Description: "The ultimate fully-fledged cross-platform library for Bluetooth Low Energy (BLE)."
8
+ Version: @simpleble_VERSION@
9
+ Libs: -L${libdir} -lsimpleble @CMAKE_THREAD_LIBS_INIT@
10
+ Cflags: -I${includedir}
11
+ Conflicts:
@@ -0,0 +1,102 @@
1
+ #pragma once
2
+
3
+ #include <functional>
4
+ #include <memory>
5
+ #include <string>
6
+ #include <vector>
7
+
8
+ #include <simpleble/export.h>
9
+
10
+ #include <simpleble/Exceptions.h>
11
+ #include <simpleble/Peripheral.h>
12
+ #include <simpleble/Types.h>
13
+
14
+ namespace SimpleBLE {
15
+
16
+ class AdapterBase;
17
+
18
+ /**
19
+ * Bluetooth Adapter.
20
+ *
21
+ * A default-constructed Adapter object is not initialized. Calling any method
22
+ * other than `initialized()` on an uninitialized Adapter will throw an exception
23
+ * of type `SimpleBLE::NotInitialized`.
24
+ *
25
+ * NOTE: This class is intended to be used by the user only. Library developers
26
+ * should use shared pointers to `AdapterBase` instead.
27
+ */
28
+ class SIMPLEBLE_EXPORT Adapter {
29
+ public:
30
+ Adapter() = default;
31
+ virtual ~Adapter() = default;
32
+
33
+ bool initialized() const;
34
+
35
+ /**
36
+ * Retrieve the underlying OS object/handle.
37
+ *
38
+ * For certain compatibility with external libraries, we sometimes need to
39
+ * expose the actual OS handle to the user. This is particularly important
40
+ * for MacOS right now.
41
+ */
42
+ void* underlying() const;
43
+
44
+ std::string identifier();
45
+ BluetoothAddress address();
46
+
47
+ /**
48
+ * Control the power state of the adapter.
49
+ *
50
+ * NOTE: The power on/off functionality is only supported on Windows and Linux (implementation pending).
51
+ * On other platforms, this method will do nothing.
52
+ * NOTE: Callbacks are currently a placeholder for future implementation.
53
+ */
54
+ void power_on();
55
+ void power_off();
56
+ bool is_powered();
57
+ void set_callback_on_power_on(std::function<void()> on_power_on);
58
+ void set_callback_on_power_off(std::function<void()> on_power_off);
59
+
60
+ void scan_start();
61
+ void scan_stop();
62
+ void scan_for(int timeout_ms);
63
+ bool scan_is_active();
64
+ std::vector<Peripheral> scan_get_results();
65
+
66
+ void set_callback_on_scan_start(std::function<void()> on_scan_start);
67
+ void set_callback_on_scan_stop(std::function<void()> on_scan_stop);
68
+ void set_callback_on_scan_updated(std::function<void(Peripheral)> on_scan_updated);
69
+ void set_callback_on_scan_found(std::function<void(Peripheral)> on_scan_found);
70
+
71
+ /**
72
+ * Retrieve a list of all paired peripherals.
73
+ *
74
+ * NOTE:This method is currently only supported by the Linux, Windows and Android backends.
75
+ */
76
+ std::vector<Peripheral> get_paired_peripherals();
77
+
78
+ /**
79
+ * Retrieve a list of all connected peripherals.
80
+ *
81
+ * NOTE: This method is currently only supported by the Windows backend. (More backends coming soon.)
82
+ */
83
+ std::vector<Peripheral> get_connected_peripherals();
84
+
85
+ static bool bluetooth_enabled();
86
+
87
+ /**
88
+ * Fetches a list of all available adapters from all available backends.
89
+ *
90
+ * This will cause backends to be instantiated/initialized and adapters
91
+ * too.
92
+ */
93
+ static std::vector<Adapter> get_adapters();
94
+
95
+ protected:
96
+ AdapterBase* operator->();
97
+ const AdapterBase* operator->() const;
98
+
99
+ std::shared_ptr<AdapterBase> internal_;
100
+ };
101
+
102
+ } // namespace SimpleBLE