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,33 @@
1
+ /* Automatically generated nanopb constant definitions */
2
+ /* Generated by nanopb-0.4.9.1 */
3
+
4
+ #include "protocol/basic.pb.h"
5
+ #if PB_PROTO_HEADER_VERSION != 40
6
+ #error Regenerate this file with the current version of nanopb generator.
7
+ #endif
8
+
9
+ PB_BIND(basic_WhoamiCmd, basic_WhoamiCmd, AUTO)
10
+
11
+
12
+ PB_BIND(basic_ResetCmd, basic_ResetCmd, AUTO)
13
+
14
+
15
+ PB_BIND(basic_DfuStartCmd, basic_DfuStartCmd, AUTO)
16
+
17
+
18
+ PB_BIND(basic_WhoamiRsp, basic_WhoamiRsp, AUTO)
19
+
20
+
21
+ PB_BIND(basic_ResetRsp, basic_ResetRsp, AUTO)
22
+
23
+
24
+ PB_BIND(basic_DfuStartRsp, basic_DfuStartRsp, AUTO)
25
+
26
+
27
+ PB_BIND(basic_Command, basic_Command, AUTO)
28
+
29
+
30
+ PB_BIND(basic_Response, basic_Response, AUTO)
31
+
32
+
33
+
@@ -0,0 +1,172 @@
1
+ /* Automatically generated nanopb header */
2
+ /* Generated by nanopb-0.4.9.1 */
3
+
4
+ #ifndef PB_BASIC_BASIC_PB_H_INCLUDED
5
+ #define PB_BASIC_BASIC_PB_H_INCLUDED
6
+ #include "nanopb/pb.h"
7
+
8
+ #if PB_PROTO_HEADER_VERSION != 40
9
+ #error Regenerate this file with the current version of nanopb generator.
10
+ #endif
11
+
12
+ /* Struct definitions */
13
+ typedef struct _basic_WhoamiCmd {
14
+ char dummy_field;
15
+ } basic_WhoamiCmd;
16
+
17
+ typedef struct _basic_ResetCmd {
18
+ char dummy_field;
19
+ } basic_ResetCmd;
20
+
21
+ typedef struct _basic_DfuStartCmd {
22
+ char dummy_field;
23
+ } basic_DfuStartCmd;
24
+
25
+ typedef struct _basic_WhoamiRsp {
26
+ uint64_t whoami;
27
+ } basic_WhoamiRsp;
28
+
29
+ typedef struct _basic_ResetRsp {
30
+ char dummy_field;
31
+ } basic_ResetRsp;
32
+
33
+ typedef struct _basic_DfuStartRsp {
34
+ char dummy_field;
35
+ } basic_DfuStartRsp;
36
+
37
+ typedef struct _basic_Command {
38
+ pb_size_t which_cmd;
39
+ union {
40
+ basic_WhoamiCmd whoami;
41
+ basic_ResetCmd reset;
42
+ basic_DfuStartCmd dfu_start;
43
+ } cmd;
44
+ } basic_Command;
45
+
46
+ typedef struct _basic_Response {
47
+ pb_size_t which_rsp;
48
+ union {
49
+ basic_WhoamiRsp whoami;
50
+ basic_ResetRsp reset;
51
+ basic_DfuStartRsp dfu_start;
52
+ } rsp;
53
+ } basic_Response;
54
+
55
+
56
+ #ifdef __cplusplus
57
+ extern "C" {
58
+ #endif
59
+
60
+ /* Initializer values for message structs */
61
+ #define basic_WhoamiCmd_init_default {0}
62
+ #define basic_ResetCmd_init_default {0}
63
+ #define basic_DfuStartCmd_init_default {0}
64
+ #define basic_WhoamiRsp_init_default {0}
65
+ #define basic_ResetRsp_init_default {0}
66
+ #define basic_DfuStartRsp_init_default {0}
67
+ #define basic_Command_init_default {0, {basic_WhoamiCmd_init_default}}
68
+ #define basic_Response_init_default {0, {basic_WhoamiRsp_init_default}}
69
+ #define basic_WhoamiCmd_init_zero {0}
70
+ #define basic_ResetCmd_init_zero {0}
71
+ #define basic_DfuStartCmd_init_zero {0}
72
+ #define basic_WhoamiRsp_init_zero {0}
73
+ #define basic_ResetRsp_init_zero {0}
74
+ #define basic_DfuStartRsp_init_zero {0}
75
+ #define basic_Command_init_zero {0, {basic_WhoamiCmd_init_zero}}
76
+ #define basic_Response_init_zero {0, {basic_WhoamiRsp_init_zero}}
77
+
78
+ /* Field tags (for use in manual encoding/decoding) */
79
+ #define basic_WhoamiRsp_whoami_tag 1
80
+ #define basic_Command_whoami_tag 1
81
+ #define basic_Command_reset_tag 2
82
+ #define basic_Command_dfu_start_tag 3
83
+ #define basic_Response_whoami_tag 1
84
+ #define basic_Response_reset_tag 2
85
+ #define basic_Response_dfu_start_tag 3
86
+
87
+ /* Struct field encoding specification for nanopb */
88
+ #define basic_WhoamiCmd_FIELDLIST(X, a) \
89
+
90
+ #define basic_WhoamiCmd_CALLBACK NULL
91
+ #define basic_WhoamiCmd_DEFAULT NULL
92
+
93
+ #define basic_ResetCmd_FIELDLIST(X, a) \
94
+
95
+ #define basic_ResetCmd_CALLBACK NULL
96
+ #define basic_ResetCmd_DEFAULT NULL
97
+
98
+ #define basic_DfuStartCmd_FIELDLIST(X, a) \
99
+
100
+ #define basic_DfuStartCmd_CALLBACK NULL
101
+ #define basic_DfuStartCmd_DEFAULT NULL
102
+
103
+ #define basic_WhoamiRsp_FIELDLIST(X, a) \
104
+ X(a, STATIC, SINGULAR, UINT64, whoami, 1)
105
+ #define basic_WhoamiRsp_CALLBACK NULL
106
+ #define basic_WhoamiRsp_DEFAULT NULL
107
+
108
+ #define basic_ResetRsp_FIELDLIST(X, a) \
109
+
110
+ #define basic_ResetRsp_CALLBACK NULL
111
+ #define basic_ResetRsp_DEFAULT NULL
112
+
113
+ #define basic_DfuStartRsp_FIELDLIST(X, a) \
114
+
115
+ #define basic_DfuStartRsp_CALLBACK NULL
116
+ #define basic_DfuStartRsp_DEFAULT NULL
117
+
118
+ #define basic_Command_FIELDLIST(X, a) \
119
+ X(a, STATIC, ONEOF, MESSAGE, (cmd,whoami,cmd.whoami), 1) \
120
+ X(a, STATIC, ONEOF, MESSAGE, (cmd,reset,cmd.reset), 2) \
121
+ X(a, STATIC, ONEOF, MESSAGE, (cmd,dfu_start,cmd.dfu_start), 3)
122
+ #define basic_Command_CALLBACK NULL
123
+ #define basic_Command_DEFAULT NULL
124
+ #define basic_Command_cmd_whoami_MSGTYPE basic_WhoamiCmd
125
+ #define basic_Command_cmd_reset_MSGTYPE basic_ResetCmd
126
+ #define basic_Command_cmd_dfu_start_MSGTYPE basic_DfuStartCmd
127
+
128
+ #define basic_Response_FIELDLIST(X, a) \
129
+ X(a, STATIC, ONEOF, MESSAGE, (rsp,whoami,rsp.whoami), 1) \
130
+ X(a, STATIC, ONEOF, MESSAGE, (rsp,reset,rsp.reset), 2) \
131
+ X(a, STATIC, ONEOF, MESSAGE, (rsp,dfu_start,rsp.dfu_start), 3)
132
+ #define basic_Response_CALLBACK NULL
133
+ #define basic_Response_DEFAULT NULL
134
+ #define basic_Response_rsp_whoami_MSGTYPE basic_WhoamiRsp
135
+ #define basic_Response_rsp_reset_MSGTYPE basic_ResetRsp
136
+ #define basic_Response_rsp_dfu_start_MSGTYPE basic_DfuStartRsp
137
+
138
+ extern const pb_msgdesc_t basic_WhoamiCmd_msg;
139
+ extern const pb_msgdesc_t basic_ResetCmd_msg;
140
+ extern const pb_msgdesc_t basic_DfuStartCmd_msg;
141
+ extern const pb_msgdesc_t basic_WhoamiRsp_msg;
142
+ extern const pb_msgdesc_t basic_ResetRsp_msg;
143
+ extern const pb_msgdesc_t basic_DfuStartRsp_msg;
144
+ extern const pb_msgdesc_t basic_Command_msg;
145
+ extern const pb_msgdesc_t basic_Response_msg;
146
+
147
+ /* Defines for backwards compatibility with code written before nanopb-0.4.0 */
148
+ #define basic_WhoamiCmd_fields &basic_WhoamiCmd_msg
149
+ #define basic_ResetCmd_fields &basic_ResetCmd_msg
150
+ #define basic_DfuStartCmd_fields &basic_DfuStartCmd_msg
151
+ #define basic_WhoamiRsp_fields &basic_WhoamiRsp_msg
152
+ #define basic_ResetRsp_fields &basic_ResetRsp_msg
153
+ #define basic_DfuStartRsp_fields &basic_DfuStartRsp_msg
154
+ #define basic_Command_fields &basic_Command_msg
155
+ #define basic_Response_fields &basic_Response_msg
156
+
157
+ /* Maximum encoded size of messages (where known) */
158
+ #define BASIC_BASIC_PB_H_MAX_SIZE basic_Response_size
159
+ #define basic_Command_size 2
160
+ #define basic_DfuStartCmd_size 0
161
+ #define basic_DfuStartRsp_size 0
162
+ #define basic_ResetCmd_size 0
163
+ #define basic_ResetRsp_size 0
164
+ #define basic_Response_size 13
165
+ #define basic_WhoamiCmd_size 0
166
+ #define basic_WhoamiRsp_size 11
167
+
168
+ #ifdef __cplusplus
169
+ } /* extern "C" */
170
+ #endif
171
+
172
+ #endif
@@ -0,0 +1,18 @@
1
+ /* Automatically generated nanopb constant definitions */
2
+ /* Generated by nanopb-0.4.9.1 */
3
+
4
+ #include "protocol/d2h.pb.h"
5
+ #if PB_PROTO_HEADER_VERSION != 40
6
+ #error Regenerate this file with the current version of nanopb generator.
7
+ #endif
8
+
9
+ PB_BIND(dongl_Response, dongl_Response, 2)
10
+
11
+
12
+ PB_BIND(dongl_Event, dongl_Event, 2)
13
+
14
+
15
+ PB_BIND(dongl_D2H, dongl_D2H, 2)
16
+
17
+
18
+
@@ -0,0 +1,118 @@
1
+ /* Automatically generated nanopb header */
2
+ /* Generated by nanopb-0.4.9.1 */
3
+
4
+ #ifndef PB_DONGL_D2H_PB_H_INCLUDED
5
+ #define PB_DONGL_D2H_PB_H_INCLUDED
6
+ #include "nanopb/pb.h"
7
+ #include "protocol/basic.pb.h"
8
+ #include "protocol/simpleble.pb.h"
9
+ #include "protocol/softdevice.pb.h"
10
+
11
+ #if PB_PROTO_HEADER_VERSION != 40
12
+ #error Regenerate this file with the current version of nanopb generator.
13
+ #endif
14
+
15
+ /* Struct definitions */
16
+ /* Top-level command union across all categories */
17
+ typedef struct _dongl_Response {
18
+ pb_size_t which_rsp;
19
+ union {
20
+ basic_Response basic;
21
+ simpleble_Response simpleble;
22
+ sd_Response softdevice;
23
+ } rsp;
24
+ } dongl_Response;
25
+
26
+ typedef struct _dongl_Event {
27
+ pb_size_t which_evt;
28
+ union {
29
+ sd_Event softdevice;
30
+ simpleble_Event simpleble;
31
+ } evt;
32
+ } dongl_Event;
33
+
34
+ typedef struct _dongl_D2H {
35
+ pb_size_t which_type;
36
+ union {
37
+ dongl_Response rsp;
38
+ dongl_Event evt;
39
+ } type;
40
+ } dongl_D2H;
41
+
42
+
43
+ #ifdef __cplusplus
44
+ extern "C" {
45
+ #endif
46
+
47
+ /* Initializer values for message structs */
48
+ #define dongl_Response_init_default {0, {basic_Response_init_default}}
49
+ #define dongl_Event_init_default {0, {sd_Event_init_default}}
50
+ #define dongl_D2H_init_default {0, {dongl_Response_init_default}}
51
+ #define dongl_Response_init_zero {0, {basic_Response_init_zero}}
52
+ #define dongl_Event_init_zero {0, {sd_Event_init_zero}}
53
+ #define dongl_D2H_init_zero {0, {dongl_Response_init_zero}}
54
+
55
+ /* Field tags (for use in manual encoding/decoding) */
56
+ #define dongl_Response_basic_tag 1
57
+ #define dongl_Response_simpleble_tag 2
58
+ #define dongl_Response_softdevice_tag 3
59
+ #define dongl_Event_softdevice_tag 2
60
+ #define dongl_Event_simpleble_tag 3
61
+ #define dongl_D2H_rsp_tag 1
62
+ #define dongl_D2H_evt_tag 2
63
+
64
+ /* Struct field encoding specification for nanopb */
65
+ #define dongl_Response_FIELDLIST(X, a) \
66
+ X(a, STATIC, ONEOF, MESSAGE, (rsp,basic,rsp.basic), 1) \
67
+ X(a, STATIC, ONEOF, MESSAGE, (rsp,simpleble,rsp.simpleble), 2) \
68
+ X(a, STATIC, ONEOF, MESSAGE, (rsp,softdevice,rsp.softdevice), 3)
69
+ #define dongl_Response_CALLBACK NULL
70
+ #define dongl_Response_DEFAULT NULL
71
+ #define dongl_Response_rsp_basic_MSGTYPE basic_Response
72
+ #define dongl_Response_rsp_simpleble_MSGTYPE simpleble_Response
73
+ #define dongl_Response_rsp_softdevice_MSGTYPE sd_Response
74
+
75
+ #define dongl_Event_FIELDLIST(X, a) \
76
+ X(a, STATIC, ONEOF, MESSAGE, (evt,softdevice,evt.softdevice), 2) \
77
+ X(a, STATIC, ONEOF, MESSAGE, (evt,simpleble,evt.simpleble), 3)
78
+ #define dongl_Event_CALLBACK NULL
79
+ #define dongl_Event_DEFAULT NULL
80
+ #define dongl_Event_evt_softdevice_MSGTYPE sd_Event
81
+ #define dongl_Event_evt_simpleble_MSGTYPE simpleble_Event
82
+
83
+ #define dongl_D2H_FIELDLIST(X, a) \
84
+ X(a, STATIC, ONEOF, MESSAGE, (type,rsp,type.rsp), 1) \
85
+ X(a, STATIC, ONEOF, MESSAGE, (type,evt,type.evt), 2)
86
+ #define dongl_D2H_CALLBACK NULL
87
+ #define dongl_D2H_DEFAULT NULL
88
+ #define dongl_D2H_type_rsp_MSGTYPE dongl_Response
89
+ #define dongl_D2H_type_evt_MSGTYPE dongl_Event
90
+
91
+ extern const pb_msgdesc_t dongl_Response_msg;
92
+ extern const pb_msgdesc_t dongl_Event_msg;
93
+ extern const pb_msgdesc_t dongl_D2H_msg;
94
+
95
+ /* Defines for backwards compatibility with code written before nanopb-0.4.0 */
96
+ #define dongl_Response_fields &dongl_Response_msg
97
+ #define dongl_Event_fields &dongl_Event_msg
98
+ #define dongl_D2H_fields &dongl_D2H_msg
99
+
100
+ /* Maximum encoded size of messages (where known) */
101
+ #if defined(sd_Event_size)
102
+ union dongl_Event_evt_size_union {char f2[(6 + sd_Event_size)]; char f0[531];};
103
+ #endif
104
+ #if defined(sd_Event_size)
105
+ union dongl_D2H_type_size_union {char f2[(6 + sizeof(union dongl_Event_evt_size_union))]; char f0[549];};
106
+ #endif
107
+ #define DONGL_D2H_PB_H_MAX_SIZE dongl_Response_size
108
+ #define dongl_Response_size 546
109
+ #if defined(sd_Event_size)
110
+ #define dongl_D2H_size (0 + sizeof(union dongl_D2H_type_size_union))
111
+ #define dongl_Event_size (0 + sizeof(union dongl_Event_evt_size_union))
112
+ #endif
113
+
114
+ #ifdef __cplusplus
115
+ } /* extern "C" */
116
+ #endif
117
+
118
+ #endif
@@ -0,0 +1,12 @@
1
+ /* Automatically generated nanopb constant definitions */
2
+ /* Generated by nanopb-0.4.9.1 */
3
+
4
+ #include "protocol/h2d.pb.h"
5
+ #if PB_PROTO_HEADER_VERSION != 40
6
+ #error Regenerate this file with the current version of nanopb generator.
7
+ #endif
8
+
9
+ PB_BIND(dongl_Command, dongl_Command, 2)
10
+
11
+
12
+
@@ -0,0 +1,69 @@
1
+ /* Automatically generated nanopb header */
2
+ /* Generated by nanopb-0.4.9.1 */
3
+
4
+ #ifndef PB_DONGL_H2D_PB_H_INCLUDED
5
+ #define PB_DONGL_H2D_PB_H_INCLUDED
6
+ #include "nanopb/pb.h"
7
+ #include "protocol/basic.pb.h"
8
+ #include "protocol/simpleble.pb.h"
9
+ #include "protocol/softdevice.pb.h"
10
+
11
+ #if PB_PROTO_HEADER_VERSION != 40
12
+ #error Regenerate this file with the current version of nanopb generator.
13
+ #endif
14
+
15
+ /* Struct definitions */
16
+ /* Top-level command union across all categories */
17
+ typedef struct _dongl_Command {
18
+ pb_size_t which_cmd;
19
+ union {
20
+ basic_Command basic;
21
+ simpleble_Command simpleble;
22
+ sd_Command softdevice;
23
+ } cmd;
24
+ } dongl_Command;
25
+
26
+
27
+ #ifdef __cplusplus
28
+ extern "C" {
29
+ #endif
30
+
31
+ /* Initializer values for message structs */
32
+ #define dongl_Command_init_default {0, {basic_Command_init_default}}
33
+ #define dongl_Command_init_zero {0, {basic_Command_init_zero}}
34
+
35
+ /* Field tags (for use in manual encoding/decoding) */
36
+ #define dongl_Command_basic_tag 1
37
+ #define dongl_Command_simpleble_tag 2
38
+ #define dongl_Command_softdevice_tag 3
39
+
40
+ /* Struct field encoding specification for nanopb */
41
+ #define dongl_Command_FIELDLIST(X, a) \
42
+ X(a, STATIC, ONEOF, MESSAGE, (cmd,basic,cmd.basic), 1) \
43
+ X(a, STATIC, ONEOF, MESSAGE, (cmd,simpleble,cmd.simpleble), 2) \
44
+ X(a, STATIC, ONEOF, MESSAGE, (cmd,softdevice,cmd.softdevice), 3)
45
+ #define dongl_Command_CALLBACK NULL
46
+ #define dongl_Command_DEFAULT NULL
47
+ #define dongl_Command_cmd_basic_MSGTYPE basic_Command
48
+ #define dongl_Command_cmd_simpleble_MSGTYPE simpleble_Command
49
+ #define dongl_Command_cmd_softdevice_MSGTYPE sd_Command
50
+
51
+ extern const pb_msgdesc_t dongl_Command_msg;
52
+
53
+ /* Defines for backwards compatibility with code written before nanopb-0.4.0 */
54
+ #define dongl_Command_fields &dongl_Command_msg
55
+
56
+ /* Maximum encoded size of messages (where known) */
57
+ #if defined(sd_Command_size)
58
+ union dongl_Command_cmd_size_union {char f3[(6 + sd_Command_size)]; char f0[531];};
59
+ #endif
60
+ #if defined(sd_Command_size)
61
+ #define DONGL_H2D_PB_H_MAX_SIZE dongl_Command_size
62
+ #define dongl_Command_size (0 + sizeof(union dongl_Command_cmd_size_union))
63
+ #endif
64
+
65
+ #ifdef __cplusplus
66
+ } /* extern "C" */
67
+ #endif
68
+
69
+ #endif
@@ -0,0 +1,123 @@
1
+ /* Automatically generated nanopb constant definitions */
2
+ /* Generated by nanopb-0.4.9.1 */
3
+
4
+ #include "protocol/simpleble.pb.h"
5
+ #if PB_PROTO_HEADER_VERSION != 40
6
+ #error Regenerate this file with the current version of nanopb generator.
7
+ #endif
8
+
9
+ PB_BIND(simpleble_UUID16Bit, simpleble_UUID16Bit, AUTO)
10
+
11
+
12
+ PB_BIND(simpleble_UUID32Bit, simpleble_UUID32Bit, AUTO)
13
+
14
+
15
+ PB_BIND(simpleble_UUID128Bit, simpleble_UUID128Bit, AUTO)
16
+
17
+
18
+ PB_BIND(simpleble_UUID, simpleble_UUID, AUTO)
19
+
20
+
21
+ PB_BIND(simpleble_ManufacturerDataEntry, simpleble_ManufacturerDataEntry, AUTO)
22
+
23
+
24
+ PB_BIND(simpleble_ServiceDataEntry, simpleble_ServiceDataEntry, AUTO)
25
+
26
+
27
+ PB_BIND(simpleble_CharacteristicProperties, simpleble_CharacteristicProperties, AUTO)
28
+
29
+
30
+ PB_BIND(simpleble_Service, simpleble_Service, AUTO)
31
+
32
+
33
+ PB_BIND(simpleble_Characteristic, simpleble_Characteristic, AUTO)
34
+
35
+
36
+ PB_BIND(simpleble_Descriptor, simpleble_Descriptor, AUTO)
37
+
38
+
39
+ PB_BIND(simpleble_Attribute, simpleble_Attribute, AUTO)
40
+
41
+
42
+ PB_BIND(simpleble_InitCmd, simpleble_InitCmd, AUTO)
43
+
44
+
45
+ PB_BIND(simpleble_ScanStartCmd, simpleble_ScanStartCmd, AUTO)
46
+
47
+
48
+ PB_BIND(simpleble_ScanStopCmd, simpleble_ScanStopCmd, AUTO)
49
+
50
+
51
+ PB_BIND(simpleble_ConnectCmd, simpleble_ConnectCmd, AUTO)
52
+
53
+
54
+ PB_BIND(simpleble_DisconnectCmd, simpleble_DisconnectCmd, AUTO)
55
+
56
+
57
+ PB_BIND(simpleble_ReadCmd, simpleble_ReadCmd, AUTO)
58
+
59
+
60
+ PB_BIND(simpleble_WriteCmd, simpleble_WriteCmd, 2)
61
+
62
+
63
+ PB_BIND(simpleble_InitRsp, simpleble_InitRsp, AUTO)
64
+
65
+
66
+ PB_BIND(simpleble_ScanStartRsp, simpleble_ScanStartRsp, AUTO)
67
+
68
+
69
+ PB_BIND(simpleble_ScanStopRsp, simpleble_ScanStopRsp, AUTO)
70
+
71
+
72
+ PB_BIND(simpleble_ConnectRsp, simpleble_ConnectRsp, AUTO)
73
+
74
+
75
+ PB_BIND(simpleble_DisconnectRsp, simpleble_DisconnectRsp, AUTO)
76
+
77
+
78
+ PB_BIND(simpleble_ReadRsp, simpleble_ReadRsp, 2)
79
+
80
+
81
+ PB_BIND(simpleble_WriteRsp, simpleble_WriteRsp, AUTO)
82
+
83
+
84
+ PB_BIND(simpleble_AdvEvt, simpleble_AdvEvt, 2)
85
+
86
+
87
+ PB_BIND(simpleble_ConnectionEvt, simpleble_ConnectionEvt, AUTO)
88
+
89
+
90
+ PB_BIND(simpleble_DisconnectionEvt, simpleble_DisconnectionEvt, AUTO)
91
+
92
+
93
+ PB_BIND(simpleble_ServiceDiscoveredEvt, simpleble_ServiceDiscoveredEvt, AUTO)
94
+
95
+
96
+ PB_BIND(simpleble_CharacteristicDiscoveredEvt, simpleble_CharacteristicDiscoveredEvt, AUTO)
97
+
98
+
99
+ PB_BIND(simpleble_DescriptorDiscoveredEvt, simpleble_DescriptorDiscoveredEvt, AUTO)
100
+
101
+
102
+ PB_BIND(simpleble_AttributeDiscoveryCompleteEvt, simpleble_AttributeDiscoveryCompleteEvt, AUTO)
103
+
104
+
105
+ PB_BIND(simpleble_ValueChangedEvt, simpleble_ValueChangedEvt, 2)
106
+
107
+
108
+ PB_BIND(simpleble_Command, simpleble_Command, 2)
109
+
110
+
111
+ PB_BIND(simpleble_Response, simpleble_Response, 2)
112
+
113
+
114
+ PB_BIND(simpleble_Event, simpleble_Event, 2)
115
+
116
+
117
+
118
+
119
+
120
+
121
+
122
+
123
+