@alteriom/painlessmesh 1.7.3 → 1.7.4

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 (1735) hide show
  1. package/CHANGELOG.md +473 -435
  2. package/LICENSE +674 -674
  3. package/README.md +491 -491
  4. package/RELEASE_GUIDE.md +504 -504
  5. package/docs/DOCUMENTATION_MIGRATION_PLAN.md +175 -175
  6. package/docs/IMPLEMENTATION_PLAN_MESH_TOPOLOGY.md +1062 -1062
  7. package/docs/MESH_TOPOLOGY_GUIDE.md +992 -992
  8. package/docs/MESH_TOPOLOGY_PROGRESS.md +422 -422
  9. package/docs/MQTT_BRIDGE_COMMANDS.md +894 -894
  10. package/docs/MQTT_BRIDGE_IMPLEMENTATION_SUMMARY.md +324 -324
  11. package/docs/MQTT_COMMAND_SCHEMA_PROPOSAL.md +576 -576
  12. package/docs/MQTT_SCHEMA_COMPLIANCE.md +285 -285
  13. package/docs/MQTT_SCHEMA_PROPOSALS.md +446 -446
  14. package/docs/MQTT_SCHEMA_REVIEW.md +690 -690
  15. package/docs/OTA_COMMANDS_REFERENCE.md +554 -554
  16. package/docs/PHASE1_GUIDE.md +349 -349
  17. package/docs/PHASE2_GUIDE.md +543 -543
  18. package/docs/README.md +130 -130
  19. package/docs/SCHEMA_VALIDATION_CHECKLIST.md +222 -222
  20. package/docs/alteriom/overview.md +507 -507
  21. package/docs/api/core-api.md +606 -606
  22. package/docs/architecture/mesh-architecture.md +378 -378
  23. package/docs/architecture/plugin-system.md +516 -516
  24. package/docs/archive/DOCUSAURUS_DEPLOYMENT.md +165 -165
  25. package/docs/archive/FEATURE_PROPOSALS.md +337 -337
  26. package/docs/archive/LIBRARY_JSON_FIX.md +98 -98
  27. package/docs/archive/LIBRARY_STRUCTURE_FIX.md +215 -215
  28. package/docs/archive/PHASE1_IMPLEMENTATION.md +325 -325
  29. package/docs/archive/PHASE2_IMPLEMENTATION.md +567 -567
  30. package/docs/archive/RELEASE_SUMMARY.md +172 -172
  31. package/docs/archive/SCONS_BUILD_FIX.md +313 -313
  32. package/docs/archive/TRIGGER_RELEASE.md +279 -279
  33. package/docs/archive/VECTOR_INCLUDE_FIX.md +129 -129
  34. package/docs/archive/ota-and-status-enhancements.md +911 -911
  35. package/docs/archive/ota-status-architecture-diagrams.md +658 -658
  36. package/docs/archive/ota-status-quick-reference.md +284 -284
  37. package/docs/development/ARDUINO_COMPLIANCE_SUMMARY.md +70 -70
  38. package/docs/development/CODE_REFACTORING_RECOMMENDATIONS.md +1011 -1011
  39. package/docs/development/DOCKER_TESTING.md +196 -196
  40. package/docs/development/PLATFORMIO_USAGE.md +180 -180
  41. package/docs/development/TESTING_SUMMARY.md +126 -126
  42. package/docs/development/contributing.md +301 -301
  43. package/docs/development/documentation.md +583 -583
  44. package/docs/getting-started/first-mesh.md +409 -409
  45. package/docs/getting-started/installation.md +274 -274
  46. package/docs/getting-started/quickstart.md +157 -157
  47. package/docs/improvements/FUTURE_PROPOSALS.md +1016 -1016
  48. package/docs/improvements/IMPLEMENTATION_HISTORY.md +1091 -1091
  49. package/docs/improvements/OTA_STATUS_ENHANCEMENTS.md +709 -709
  50. package/docs/improvements/README.md +211 -211
  51. package/docs/platformio-publishing.md +254 -254
  52. package/docs/platformio-setup-summary.md +120 -120
  53. package/docs/releases/FEATURE_HISTORY.md +543 -543
  54. package/docs/releases/PATCH_v1.7.2.md +262 -0
  55. package/docs/releases/PATCH_v1.7.3.md +262 -262
  56. package/docs/releases/PATCH_v1.7.4.md +219 -0
  57. package/docs/releases/PHASE1_SUMMARY.md +246 -246
  58. package/docs/releases/PHASE2_SUMMARY.md +499 -499
  59. package/docs/releases/RELEASE_CHECKLIST_v1.7.4.md +253 -0
  60. package/docs/releases/RELEASE_NOTES_1.7.0.md +539 -539
  61. package/docs/releases/RELEASE_SUMMARY_v1.7.4.md +276 -0
  62. package/docs/troubleshooting/CRASH_QUICK_REF.md +93 -0
  63. package/docs/troubleshooting/FREERTOS_ASSERTION_FAILURE.md +288 -0
  64. package/docs/troubleshooting/FREERTOS_FIX_IMPLEMENTATION.md +267 -0
  65. package/docs/troubleshooting/QUICK_FIX_FREERTOS.md +164 -0
  66. package/docs/troubleshooting/SENSOR_NODE_CONNECTION_CRASH.md +257 -0
  67. package/docs/troubleshooting/common-issues.md +520 -520
  68. package/docs/troubleshooting/debugging.md +455 -455
  69. package/docs/troubleshooting/faq.md +472 -472
  70. package/docs/tutorials/basic-examples.md +717 -717
  71. package/docs/wiki/API-Reference.md +245 -245
  72. package/docs/wiki/Complete-Documentation.md +122 -122
  73. package/examples/alteriom/.pio/build/esp32/.sconsign311.dblite +0 -0
  74. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/Esp.cpp.d +146 -0
  75. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/Esp.cpp.o +0 -0
  76. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/FirmwareMSC.cpp.d +5 -0
  77. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/FirmwareMSC.cpp.o +0 -0
  78. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/FunctionalInterrupt.cpp.d +137 -0
  79. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/FunctionalInterrupt.cpp.o +0 -0
  80. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/HWCDC.cpp.d +4 -0
  81. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/HWCDC.cpp.o +0 -0
  82. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/HardwareSerial.cpp.d +138 -0
  83. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/HardwareSerial.cpp.o +0 -0
  84. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/IPAddress.cpp.d +137 -0
  85. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/IPAddress.cpp.o +0 -0
  86. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/IPv6Address.cpp.d +138 -0
  87. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/IPv6Address.cpp.o +0 -0
  88. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/MD5Builder.cpp.d +138 -0
  89. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/MD5Builder.cpp.o +0 -0
  90. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/Print.cpp.d +136 -0
  91. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/Print.cpp.o +0 -0
  92. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/Stream.cpp.d +136 -0
  93. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/Stream.cpp.o +0 -0
  94. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/StreamString.cpp.d +137 -0
  95. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/StreamString.cpp.o +0 -0
  96. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/Tone.cpp.d +136 -0
  97. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/Tone.cpp.o +0 -0
  98. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/USB.cpp.d +4 -0
  99. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/USB.cpp.o +0 -0
  100. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/USBCDC.cpp.d +4 -0
  101. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/USBCDC.cpp.o +0 -0
  102. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/USBMSC.cpp.d +4 -0
  103. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/USBMSC.cpp.o +0 -0
  104. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/WMath.cpp.d +18 -0
  105. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/WMath.cpp.o +0 -0
  106. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/WString.cpp.d +136 -0
  107. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/WString.cpp.o +0 -0
  108. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/base64.cpp.d +139 -0
  109. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/base64.cpp.o +0 -0
  110. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/cbuf.cpp.d +3 -0
  111. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/cbuf.cpp.o +0 -0
  112. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/esp32-hal-adc.c.d +110 -0
  113. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/esp32-hal-adc.c.o +0 -0
  114. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/esp32-hal-bt.c.d +107 -0
  115. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/esp32-hal-bt.c.o +0 -0
  116. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/esp32-hal-cpu.c.d +123 -0
  117. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/esp32-hal-cpu.c.o +0 -0
  118. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/esp32-hal-dac.c.d +108 -0
  119. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/esp32-hal-dac.c.o +0 -0
  120. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/esp32-hal-gpio.c.d +122 -0
  121. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/esp32-hal-gpio.c.o +0 -0
  122. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/esp32-hal-i2c-slave.c.d +92 -0
  123. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/esp32-hal-i2c-slave.c.o +0 -0
  124. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/esp32-hal-i2c.c.d +114 -0
  125. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/esp32-hal-i2c.c.o +0 -0
  126. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/esp32-hal-ledc.c.d +108 -0
  127. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/esp32-hal-ledc.c.o +0 -0
  128. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/esp32-hal-matrix.c.d +105 -0
  129. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/esp32-hal-matrix.c.o +0 -0
  130. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/esp32-hal-misc.c.d +136 -0
  131. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/esp32-hal-misc.c.o +0 -0
  132. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/esp32-hal-psram.c.d +104 -0
  133. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/esp32-hal-psram.c.o +0 -0
  134. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/esp32-hal-rgb-led.c.d +104 -0
  135. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/esp32-hal-rgb-led.c.o +0 -0
  136. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/esp32-hal-rmt.c.d +108 -0
  137. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/esp32-hal-rmt.c.o +0 -0
  138. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/esp32-hal-sigmadelta.c.d +109 -0
  139. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/esp32-hal-sigmadelta.c.o +0 -0
  140. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/esp32-hal-spi.c.d +122 -0
  141. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/esp32-hal-spi.c.o +0 -0
  142. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/esp32-hal-time.c.d +145 -0
  143. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/esp32-hal-time.c.o +0 -0
  144. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/esp32-hal-timer.c.d +110 -0
  145. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/esp32-hal-timer.c.o +0 -0
  146. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/esp32-hal-tinyusb.c.d +3 -0
  147. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/esp32-hal-tinyusb.c.o +0 -0
  148. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/esp32-hal-touch.c.d +107 -0
  149. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/esp32-hal-touch.c.o +0 -0
  150. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/esp32-hal-uart.c.d +121 -0
  151. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/esp32-hal-uart.c.o +0 -0
  152. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/firmware_msc_fat.c.d +3 -0
  153. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/firmware_msc_fat.c.o +0 -0
  154. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/libb64/cdecode.c.d +3 -0
  155. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/libb64/cdecode.c.o +0 -0
  156. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/libb64/cencode.c.d +3 -0
  157. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/libb64/cencode.c.o +0 -0
  158. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/main.cpp.d +139 -0
  159. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/main.cpp.o +0 -0
  160. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/stdlib_noniso.c.d +12 -0
  161. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/stdlib_noniso.c.o +0 -0
  162. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/wiring_pulse.c.d +111 -0
  163. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/wiring_pulse.c.o +0 -0
  164. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/wiring_shift.c.d +111 -0
  165. package/examples/alteriom/.pio/build/esp32/FrameworkArduino/wiring_shift.c.o +0 -0
  166. package/examples/alteriom/.pio/build/esp32/bootloader.bin +0 -0
  167. package/examples/alteriom/.pio/build/esp32/firmware.bin +0 -0
  168. package/examples/alteriom/.pio/build/esp32/firmware.elf +0 -0
  169. package/examples/alteriom/.pio/build/esp32/firmware.map +102570 -0
  170. package/examples/alteriom/.pio/build/esp32/lib373/LittleFS/LittleFS.cpp.d +142 -0
  171. package/examples/alteriom/.pio/build/esp32/lib373/LittleFS/LittleFS.cpp.o +0 -0
  172. package/examples/alteriom/.pio/build/esp32/lib373/libLittleFS.a +0 -0
  173. package/examples/alteriom/.pio/build/esp32/lib399/TaskScheduler/TaskScheduler.cpp.d +2 -0
  174. package/examples/alteriom/.pio/build/esp32/lib399/TaskScheduler/TaskScheduler.cpp.o +0 -0
  175. package/examples/alteriom/.pio/build/esp32/lib399/libTaskScheduler.a +0 -0
  176. package/examples/alteriom/.pio/build/esp32/lib4f2/FS/FS.cpp.d +138 -0
  177. package/examples/alteriom/.pio/build/esp32/lib4f2/FS/FS.cpp.o +0 -0
  178. package/examples/alteriom/.pio/build/esp32/lib4f2/FS/vfs_api.cpp.d +139 -0
  179. package/examples/alteriom/.pio/build/esp32/lib4f2/FS/vfs_api.cpp.o +0 -0
  180. package/examples/alteriom/.pio/build/esp32/lib4f2/libFS.a +0 -0
  181. package/examples/alteriom/.pio/build/esp32/lib71a/WiFi/WiFi.cpp.d +203 -0
  182. package/examples/alteriom/.pio/build/esp32/lib71a/WiFi/WiFi.cpp.o +0 -0
  183. package/examples/alteriom/.pio/build/esp32/lib71a/WiFi/WiFiAP.cpp.d +204 -0
  184. package/examples/alteriom/.pio/build/esp32/lib71a/WiFi/WiFiAP.cpp.o +0 -0
  185. package/examples/alteriom/.pio/build/esp32/lib71a/WiFi/WiFiClient.cpp.d +209 -0
  186. package/examples/alteriom/.pio/build/esp32/lib71a/WiFi/WiFiClient.cpp.o +0 -0
  187. package/examples/alteriom/.pio/build/esp32/lib71a/WiFi/WiFiGeneric.cpp.d +206 -0
  188. package/examples/alteriom/.pio/build/esp32/lib71a/WiFi/WiFiGeneric.cpp.o +0 -0
  189. package/examples/alteriom/.pio/build/esp32/lib71a/WiFi/WiFiMulti.cpp.d +199 -0
  190. package/examples/alteriom/.pio/build/esp32/lib71a/WiFi/WiFiMulti.cpp.o +0 -0
  191. package/examples/alteriom/.pio/build/esp32/lib71a/WiFi/WiFiSTA.cpp.d +206 -0
  192. package/examples/alteriom/.pio/build/esp32/lib71a/WiFi/WiFiSTA.cpp.o +0 -0
  193. package/examples/alteriom/.pio/build/esp32/lib71a/WiFi/WiFiScan.cpp.d +204 -0
  194. package/examples/alteriom/.pio/build/esp32/lib71a/WiFi/WiFiScan.cpp.o +0 -0
  195. package/examples/alteriom/.pio/build/esp32/lib71a/WiFi/WiFiServer.cpp.d +172 -0
  196. package/examples/alteriom/.pio/build/esp32/lib71a/WiFi/WiFiServer.cpp.o +0 -0
  197. package/examples/alteriom/.pio/build/esp32/lib71a/WiFi/WiFiUdp.cpp.d +171 -0
  198. package/examples/alteriom/.pio/build/esp32/lib71a/WiFi/WiFiUdp.cpp.o +0 -0
  199. package/examples/alteriom/.pio/build/esp32/lib71a/libWiFi.a +0 -0
  200. package/examples/alteriom/.pio/build/esp32/lib7d0/AsyncTCP/AsyncTCP.cpp.d +189 -0
  201. package/examples/alteriom/.pio/build/esp32/lib7d0/AsyncTCP/AsyncTCP.cpp.o +0 -0
  202. package/examples/alteriom/.pio/build/esp32/lib7d0/libAsyncTCP.a +0 -0
  203. package/examples/alteriom/.pio/build/esp32/lib837/libsrc.a +0 -0
  204. package/examples/alteriom/.pio/build/esp32/lib837/src/painlessMeshSTA.cpp.d +229 -0
  205. package/examples/alteriom/.pio/build/esp32/lib837/src/painlessMeshSTA.cpp.o +0 -0
  206. package/examples/alteriom/.pio/build/esp32/lib837/src/scheduler.cpp.d +139 -0
  207. package/examples/alteriom/.pio/build/esp32/lib837/src/scheduler.cpp.o +0 -0
  208. package/examples/alteriom/.pio/build/esp32/lib837/src/wifi.cpp.d +227 -0
  209. package/examples/alteriom/.pio/build/esp32/lib837/src/wifi.cpp.o +0 -0
  210. package/examples/alteriom/.pio/build/esp32/lib97a/SPIFFS/SPIFFS.cpp.d +142 -0
  211. package/examples/alteriom/.pio/build/esp32/lib97a/SPIFFS/SPIFFS.cpp.o +0 -0
  212. package/examples/alteriom/.pio/build/esp32/lib97a/libSPIFFS.a +0 -0
  213. package/examples/alteriom/.pio/build/esp32/libFrameworkArduino.a +0 -0
  214. package/examples/alteriom/.pio/build/esp32/libf48/Update/HttpsOTAUpdate.cpp.d +120 -0
  215. package/examples/alteriom/.pio/build/esp32/libf48/Update/HttpsOTAUpdate.cpp.o +0 -0
  216. package/examples/alteriom/.pio/build/esp32/libf48/Update/Updater.cpp.d +144 -0
  217. package/examples/alteriom/.pio/build/esp32/libf48/Update/Updater.cpp.o +0 -0
  218. package/examples/alteriom/.pio/build/esp32/libf48/libUpdate.a +0 -0
  219. package/examples/alteriom/.pio/build/esp32/partitions.bin +0 -0
  220. package/examples/alteriom/.pio/build/esp32/src/alteriom.ino.cpp.d +240 -0
  221. package/examples/alteriom/.pio/build/esp32/src/alteriom.ino.cpp.o +0 -0
  222. package/examples/alteriom/.pio/build/esp32/tmprz74bdta.tmp +1 -0
  223. package/examples/alteriom/.pio/build/esp32/tmps5iu5vvf.tmp +1 -0
  224. package/examples/alteriom/.pio/build/esp32/tmptxf7cu25.tmp +1 -0
  225. package/examples/alteriom/.pio/build/esp32/tmpuwwn0jz2.tmp +1 -0
  226. package/examples/alteriom/.pio/build/esp32/tmpz4zb75rq.tmp +1 -0
  227. package/examples/alteriom/.pio/build/esp8266/.sconsign311.dblite +0 -0
  228. package/examples/alteriom/.pio/build/esp8266/FrameworkArduino/Crypto.cpp.o +0 -0
  229. package/examples/alteriom/.pio/build/esp8266/FrameworkArduino/Esp-frag.cpp.o +0 -0
  230. package/examples/alteriom/.pio/build/esp8266/FrameworkArduino/Esp-version.cpp.o +0 -0
  231. package/examples/alteriom/.pio/build/esp8266/ld/local.eagle.app.v6.common.ld +285 -0
  232. package/examples/alteriom/.pio/build/esp8266/lib720/ESP8266WiFi/CertStoreBearSSL.cpp.o +0 -0
  233. package/examples/alteriom/.pio/build/esp8266/lib720/ESP8266WiFi/ESP8266WiFi.cpp.o +0 -0
  234. package/examples/alteriom/.pio/build/esp8266/lib720/ESP8266WiFi/ESP8266WiFiAP.cpp.o +0 -0
  235. package/examples/alteriom/.pio/build/esp8266/lib720/ESP8266WiFi/ESP8266WiFiGeneric.cpp.o +0 -0
  236. package/examples/alteriom/.pio/build/esp8266/lib720/ESP8266WiFi/ESP8266WiFiGratuitous.cpp.o +0 -0
  237. package/examples/alteriom/.pio/build/esp8266/lib720/ESP8266WiFi/ESP8266WiFiSTA-WPS.cpp.o +0 -0
  238. package/examples/alteriom/.pio/build/esp8266/lib720/ESP8266WiFi/ESP8266WiFiScan.cpp.o +0 -0
  239. package/examples/alteriom/.pio/build/esp8266/lib720/ESP8266WiFi/WiFiClient.cpp.o +0 -0
  240. package/examples/alteriom/.pio/build/esp8266/lib720/ESP8266WiFi/WiFiClientSecureBearSSL.cpp.o +0 -0
  241. package/examples/alteriom/.pio/build/esp8266/lib720/ESP8266WiFi/WiFiServerSecureBearSSL.cpp.o +0 -0
  242. package/examples/alteriom/.pio/build/esp8266/lib720/ESP8266WiFi/WiFiUdp.cpp.o +0 -0
  243. package/examples/alteriom/.pio/build/esp8266/lib720/ESP8266WiFi/enable_wifi_at_boot_time.cpp.o +0 -0
  244. package/examples/alteriom/.pio/build/esp8266/lib837/src/painlessMeshSTA.cpp.o +0 -0
  245. package/examples/alteriom/.pio/build/esp8266/lib837/src/scheduler.cpp.o +0 -0
  246. package/examples/alteriom/.pio/build/esp8266/lib837/src/wifi.cpp.o +0 -0
  247. package/examples/alteriom/.pio/build/esp8266/lib875/TaskScheduler/TaskScheduler.cpp.o +0 -0
  248. package/examples/alteriom/.pio/build/esp8266/lib875/libTaskScheduler.a +0 -0
  249. package/examples/alteriom/.pio/build/esp8266/libFrameworkArduinoVariant.a +1 -0
  250. package/examples/alteriom/.pio/build/esp8266/libdb3/LittleFS/LittleFS.cpp.o +0 -0
  251. package/examples/alteriom/.pio/build/esp8266/libdb3/LittleFS/lfs_util.c.o +0 -0
  252. package/examples/alteriom/.pio/build/esp8266/libf33/ESPAsyncTCP/AsyncPrinter.cpp.o +0 -0
  253. package/examples/alteriom/.pio/build/esp8266/libf33/ESPAsyncTCP/ESPAsyncTCP.cpp.o +0 -0
  254. package/examples/alteriom/.pio/build/esp8266/libf33/ESPAsyncTCP/ESPAsyncTCPbuffer.cpp.o +0 -0
  255. package/examples/alteriom/.pio/build/esp8266/libf33/ESPAsyncTCP/SyncClient.cpp.o +0 -0
  256. package/examples/alteriom/.pio/build/esp8266/libf33/ESPAsyncTCP/tcp_axtls.c.o +0 -0
  257. package/examples/alteriom/.pio/build/esp8266/src/alteriom.ino.cpp.o +0 -0
  258. package/examples/alteriom/.pio/build/project.checksum +1 -0
  259. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/.piopm +1 -0
  260. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/ArduinoJson.h +5 -0
  261. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/LICENSE.txt +10 -0
  262. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/README.md +153 -0
  263. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/examples/JsonConfigFile/JsonConfigFile.ino +152 -0
  264. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/examples/JsonFilterExample/JsonFilterExample.ino +64 -0
  265. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/examples/JsonGeneratorExample/JsonGeneratorExample.ino +65 -0
  266. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/examples/JsonHttpClient/JsonHttpClient.ino +125 -0
  267. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/examples/JsonParserExample/JsonParserExample.ino +65 -0
  268. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/examples/JsonServer/JsonServer.ino +118 -0
  269. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/examples/JsonUdpBeacon/JsonUdpBeacon.ino +106 -0
  270. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/examples/MsgPackParser/MsgPackParser.ino +61 -0
  271. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/examples/ProgmemExample/ProgmemExample.ino +63 -0
  272. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/examples/StringExample/StringExample.ino +76 -0
  273. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/library.json +23 -0
  274. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/library.properties +11 -0
  275. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Array/ArrayData.hpp +66 -0
  276. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Array/ArrayImpl.hpp +79 -0
  277. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Array/ElementProxy.hpp +75 -0
  278. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Array/JsonArray.hpp +219 -0
  279. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Array/JsonArrayConst.hpp +133 -0
  280. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Array/JsonArrayIterator.hpp +96 -0
  281. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Array/Utilities.hpp +112 -0
  282. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Collection/CollectionData.hpp +122 -0
  283. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Collection/CollectionImpl.hpp +137 -0
  284. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Configuration.hpp +285 -0
  285. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Deserialization/DeserializationError.hpp +106 -0
  286. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Deserialization/DeserializationOptions.hpp +35 -0
  287. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Deserialization/Filter.hpp +77 -0
  288. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Deserialization/NestingLimit.hpp +32 -0
  289. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Deserialization/Reader.hpp +74 -0
  290. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStreamReader.hpp +30 -0
  291. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStringReader.hpp +18 -0
  292. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Deserialization/Readers/FlashReader.hpp +56 -0
  293. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Deserialization/Readers/IteratorReader.hpp +42 -0
  294. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Deserialization/Readers/RamReader.hpp +49 -0
  295. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Deserialization/Readers/StdStreamReader.hpp +29 -0
  296. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Deserialization/Readers/VariantReader.hpp +19 -0
  297. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Deserialization/deserialize.hpp +79 -0
  298. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Document/JsonDocument.hpp +426 -0
  299. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Json/EscapeSequence.hpp +40 -0
  300. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Json/JsonDeserializer.hpp +720 -0
  301. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Json/JsonSerializer.hpp +165 -0
  302. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Json/Latch.hpp +56 -0
  303. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Json/PrettyJsonSerializer.hpp +110 -0
  304. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Json/TextFormatter.hpp +177 -0
  305. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Json/Utf16.hpp +67 -0
  306. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Json/Utf8.hpp +46 -0
  307. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Memory/Alignment.hpp +60 -0
  308. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Memory/Allocator.hpp +49 -0
  309. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Memory/MemoryPool.hpp +110 -0
  310. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Memory/MemoryPoolList.hpp +214 -0
  311. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Memory/ResourceManager.hpp +131 -0
  312. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Memory/ResourceManagerImpl.hpp +52 -0
  313. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Memory/StringBuffer.hpp +79 -0
  314. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Memory/StringBuilder.hpp +88 -0
  315. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Memory/StringNode.hpp +75 -0
  316. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Memory/StringPool.hpp +102 -0
  317. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Misc/SerializedValue.hpp +71 -0
  318. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackBinary.hpp +97 -0
  319. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackDeserializer.hpp +487 -0
  320. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackExtension.hpp +120 -0
  321. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackSerializer.hpp +244 -0
  322. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/MsgPack/endianness.hpp +46 -0
  323. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/MsgPack/ieee754.hpp +18 -0
  324. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Namespace.hpp +42 -0
  325. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Numbers/FloatParts.hpp +95 -0
  326. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Numbers/FloatTraits.hpp +212 -0
  327. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Numbers/JsonFloat.hpp +18 -0
  328. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Numbers/JsonInteger.hpp +28 -0
  329. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Numbers/arithmeticCompare.hpp +116 -0
  330. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Numbers/convertNumber.hpp +145 -0
  331. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Numbers/parseNumber.hpp +238 -0
  332. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Object/JsonObject.hpp +245 -0
  333. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Object/JsonObjectConst.hpp +166 -0
  334. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Object/JsonObjectIterator.hpp +83 -0
  335. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Object/JsonPair.hpp +70 -0
  336. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Object/MemberProxy.hpp +77 -0
  337. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Object/ObjectData.hpp +70 -0
  338. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Object/ObjectImpl.hpp +92 -0
  339. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/alias_cast.hpp +30 -0
  340. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/assert.hpp +14 -0
  341. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/attributes.hpp +45 -0
  342. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/ctype.hpp +21 -0
  343. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/integer.hpp +34 -0
  344. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/limits.hpp +45 -0
  345. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/math.hpp +27 -0
  346. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/mpl/max.hpp +27 -0
  347. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/pgmspace.hpp +144 -0
  348. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/pgmspace_generic.hpp +67 -0
  349. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/preprocessor.hpp +33 -0
  350. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/conditional.hpp +25 -0
  351. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/decay.hpp +33 -0
  352. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/declval.hpp +14 -0
  353. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/enable_if.hpp +23 -0
  354. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/function_traits.hpp +27 -0
  355. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/integral_constant.hpp +22 -0
  356. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_array.hpp +22 -0
  357. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_base_of.hpp +27 -0
  358. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_class.hpp +23 -0
  359. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_const.hpp +18 -0
  360. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_convertible.hpp +46 -0
  361. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_enum.hpp +22 -0
  362. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_floating_point.hpp +19 -0
  363. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_integral.hpp +32 -0
  364. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_pointer.hpp +17 -0
  365. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_same.hpp +18 -0
  366. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_signed.hpp +26 -0
  367. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_unsigned.hpp +24 -0
  368. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/make_unsigned.hpp +44 -0
  369. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/remove_const.hpp +24 -0
  370. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/remove_cv.hpp +31 -0
  371. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/remove_reference.hpp +24 -0
  372. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/type_identity.hpp +16 -0
  373. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/void_t.hpp +20 -0
  374. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits.hpp +27 -0
  375. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/utility.hpp +33 -0
  376. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Serialization/CountingDecorator.hpp +33 -0
  377. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Serialization/Writer.hpp +47 -0
  378. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Serialization/Writers/ArduinoStringWriter.hpp +55 -0
  379. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Serialization/Writers/DummyWriter.hpp +22 -0
  380. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Serialization/Writers/PrintWriter.hpp +29 -0
  381. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Serialization/Writers/StaticStringWriter.hpp +36 -0
  382. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Serialization/Writers/StdStreamWriter.hpp +32 -0
  383. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Serialization/Writers/StdStringWriter.hpp +42 -0
  384. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Serialization/measure.hpp +20 -0
  385. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Serialization/serialize.hpp +50 -0
  386. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Strings/Adapters/FlashString.hpp +93 -0
  387. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Strings/Adapters/RamString.hpp +118 -0
  388. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Strings/Adapters/StringObject.hpp +48 -0
  389. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Strings/IsString.hpp +19 -0
  390. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Strings/JsonString.hpp +100 -0
  391. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Strings/StringAdapter.hpp +47 -0
  392. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Strings/StringAdapters.hpp +72 -0
  393. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Strings/StringTraits.hpp +73 -0
  394. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/Converter.hpp +23 -0
  395. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/ConverterImpl.hpp +406 -0
  396. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/JsonVariant.hpp +78 -0
  397. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/JsonVariantConst.hpp +197 -0
  398. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/JsonVariantCopier.hpp +34 -0
  399. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/JsonVariantVisitor.hpp +61 -0
  400. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/VariantAttorney.hpp +35 -0
  401. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/VariantCompare.hpp +211 -0
  402. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/VariantContent.hpp +82 -0
  403. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/VariantData.hpp +609 -0
  404. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/VariantDataVisitor.hpp +24 -0
  405. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/VariantImpl.hpp +146 -0
  406. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/VariantOperators.hpp +188 -0
  407. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/VariantRefBase.hpp +313 -0
  408. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/VariantRefBaseImpl.hpp +175 -0
  409. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/VariantTag.hpp +16 -0
  410. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/VariantTo.hpp +34 -0
  411. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/compatibility.hpp +144 -0
  412. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/version.hpp +11 -0
  413. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson.h +17 -0
  414. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson.hpp +65 -0
  415. package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/CMakeLists.txt +91 -0
  416. package/examples/alteriom/.pio/libdeps/esp32/AsyncTCP/.piopm +1 -0
  417. package/examples/alteriom/.pio/libdeps/esp32/AsyncTCP/LICENSE +165 -0
  418. package/examples/alteriom/.pio/libdeps/esp32/AsyncTCP/README.md +55 -0
  419. package/examples/alteriom/.pio/libdeps/esp32/AsyncTCP/examples/AsyncSend/AsyncSend.ino +169 -0
  420. package/examples/alteriom/.pio/libdeps/esp32/AsyncTCP/examples/Client/Client.ino +87 -0
  421. package/examples/alteriom/.pio/libdeps/esp32/AsyncTCP/examples/FetchWebsite/FetchWebsite.ino +107 -0
  422. package/examples/alteriom/.pio/libdeps/esp32/AsyncTCP/library.json +31 -0
  423. package/examples/alteriom/.pio/libdeps/esp32/AsyncTCP/library.properties +11 -0
  424. package/examples/alteriom/.pio/libdeps/esp32/AsyncTCP/src/AsyncTCP.cpp +1612 -0
  425. package/examples/alteriom/.pio/libdeps/esp32/AsyncTCP/src/AsyncTCP.h +335 -0
  426. package/examples/alteriom/.pio/libdeps/esp32/AsyncTCP/src/AsyncTCPLogging.h +66 -0
  427. package/examples/alteriom/.pio/libdeps/esp32/AsyncTCP/src/AsyncTCPSimpleIntrusiveList.h +134 -0
  428. package/examples/alteriom/.pio/libdeps/esp32/AsyncTCP/src/AsyncTCPVersion.h +40 -0
  429. package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/.github/FUNDING.yml +1 -0
  430. package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/.github/workflows/doxygen.yml +310 -0
  431. package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/.github/workflows/main.yml +309 -0
  432. package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/.github/workflows/test.yml +523 -0
  433. package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/.piopm +1 -0
  434. package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/LICENSE.txt +27 -0
  435. package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/README.md +157 -0
  436. package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example00_Blink/Scheduler_example00_Blink.ino +303 -0
  437. package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example00_Blink_Namespace/Scheduler_example00_Blink_Namespace.ino +302 -0
  438. package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example01/Scheduler_example01.ino +84 -0
  439. package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example02/Scheduler_example02.ino +78 -0
  440. package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example03/Scheduler_example03.ino +80 -0
  441. package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example04_StatusRequest/Scheduler_example04_StatusRequest.ino +90 -0
  442. package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example05_StatusRequest/Scheduler_example05_StatusRequest.ino +181 -0
  443. package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example06_IDLE/Scheduler_example06_IDLE.ino +117 -0
  444. package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example07_WDT/Scheduler_example07_WDT.ino +133 -0
  445. package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example08_LTS/Scheduler_example08_LTS.ino +147 -0
  446. package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example09_TimeCritical/Scheduler_example09_TimeCritical.ino +57 -0
  447. package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example10_Benchmark/Scheduler_example10_Benchmark.ino +106 -0
  448. package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example11_Priority/Scheduler_example11_Priority.ino +105 -0
  449. package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example12_Priority/Scheduler_example12_Priority.ino +136 -0
  450. package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example13_Micros/Scheduler_example13_Micros.ino +71 -0
  451. package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example14_Yield/Scheduler_example14_Yield.ino +339 -0
  452. package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example15_STDFunction/Scheduler_example15_STDFunction.ino +53 -0
  453. package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example16_Multitab/Scheduler_example16_Multitab.ino +18 -0
  454. package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example16_Multitab/file1.cpp +31 -0
  455. package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example16_Multitab/file2.cpp +55 -0
  456. package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example16_Multitab/header.hpp +15 -0
  457. package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example16_Multitab/ts.cpp +20 -0
  458. package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example17_Timeout/Scheduler_example17_Timeout.ino +90 -0
  459. package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example18_StatusRequest_LTS_WDT_Timeout/Scheduler_example18_StatusRequest_LTS_WDT_Timeout.ino +172 -0
  460. package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example19_Dynamic_Tasks/Scheduler_example19_Dynamic_Tasks.ino +137 -0
  461. package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example19_Dynamic_Tasks_SelfDestruct/Scheduler_example19_Dynamic_Tasks_SelfDestruct.ino +130 -0
  462. package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example19_Dynamic_Tasks_stdQueue/Scheduler_example19_Dynamic_Tasks_stdQueue.ino +137 -0
  463. package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example20_StatusRequest_LTS_WDT_Timeout_Object/Scheduler_example20_StatusRequest_LTS_WDT_Timeout_Object.ino +185 -0
  464. package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example20_StatusRequest_LTS_WDT_Timeout_Object/SuperSensor.cpp +36 -0
  465. package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example20_StatusRequest_LTS_WDT_Timeout_Object/SuperSensor.h +25 -0
  466. package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example21_OO_Callbacks/Calculator.cpp +66 -0
  467. package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example21_OO_Callbacks/Calculator.h +34 -0
  468. package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example21_OO_Callbacks/Scheduler_example21_OO_Callbacks.ino +76 -0
  469. package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example21_OO_Callbacks/SuperSensor.cpp +83 -0
  470. package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example21_OO_Callbacks/SuperSensor.h +44 -0
  471. package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example21_OO_Callbacks/Ticker.cpp +21 -0
  472. package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example21_OO_Callbacks/Ticker.h +28 -0
  473. package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example23_IDLE_Callback/Scheduler_example23_IDLE_Callback.ino +157 -0
  474. package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example24_CPU_LOAD/Scheduler_example24_CPU_LOAD.ino +87 -0
  475. package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example25_SCHEDULER_CHAIN/Scheduler_example25_SCHEDULER_CHAIN.ino +127 -0
  476. package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example26_SCHEDULING_OPTIONS/Scheduler_example26_SCHEDULING_OPTIONS.ino +181 -0
  477. package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example27_PlatformIO/include/README +39 -0
  478. package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example27_PlatformIO/include/led.h +12 -0
  479. package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example27_PlatformIO/include/main.h +25 -0
  480. package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example27_PlatformIO/lib/README +46 -0
  481. package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example27_PlatformIO/platformio.ini +37 -0
  482. package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example27_PlatformIO/src/led.cpp +11 -0
  483. package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example27_PlatformIO/src/main.cpp +254 -0
  484. package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example27_PlatformIO/test/README +11 -0
  485. package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example28_Tickless/Scheduler_example28_Tickless.ino +105 -0
  486. package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example29_NonArduino/include/README +39 -0
  487. package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example29_NonArduino/include/led.h +12 -0
  488. package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example29_NonArduino/include/main.h +27 -0
  489. package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example29_NonArduino/lib/README +46 -0
  490. package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example29_NonArduino/platformio.ini +38 -0
  491. package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example29_NonArduino/src/led.cpp +13 -0
  492. package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example29_NonArduino/src/main.cpp +267 -0
  493. package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example29_NonArduino/test/README +11 -0
  494. package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example30_THREAD_SAFE/README.md +232 -0
  495. package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example30_THREAD_SAFE/platformio.ini +44 -0
  496. package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example30_THREAD_SAFE/src/main.cpp +310 -0
  497. package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_template/Scheduler_template.ino +166 -0
  498. package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/keywords.txt +161 -0
  499. package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/library.json +22 -0
  500. package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/library.properties +9 -0
  501. package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/src/TScheduler.hpp +29 -0
  502. package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/src/TSchedulerDeclarations.hpp +29 -0
  503. package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/src/TaskScheduler.cpp +3 -0
  504. package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/src/TaskScheduler.h +1811 -0
  505. package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/src/TaskSchedulerDeclarations.h +3096 -0
  506. package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/src/TaskSchedulerSleepMethods.h +399 -0
  507. package/examples/alteriom/.pio/libdeps/esp32/integrity.dat +3 -0
  508. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/.piopm +1 -0
  509. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/ArduinoJson.h +5 -0
  510. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/LICENSE.txt +10 -0
  511. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/README.md +153 -0
  512. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/examples/JsonConfigFile/JsonConfigFile.ino +152 -0
  513. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/examples/JsonFilterExample/JsonFilterExample.ino +64 -0
  514. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/examples/JsonGeneratorExample/JsonGeneratorExample.ino +65 -0
  515. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/examples/JsonHttpClient/JsonHttpClient.ino +125 -0
  516. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/examples/JsonParserExample/JsonParserExample.ino +65 -0
  517. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/examples/JsonServer/JsonServer.ino +118 -0
  518. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/examples/JsonUdpBeacon/JsonUdpBeacon.ino +106 -0
  519. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/examples/MsgPackParser/MsgPackParser.ino +61 -0
  520. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/examples/ProgmemExample/ProgmemExample.ino +63 -0
  521. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/examples/StringExample/StringExample.ino +76 -0
  522. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/library.json +23 -0
  523. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/library.properties +11 -0
  524. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Array/ArrayData.hpp +66 -0
  525. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Array/ArrayImpl.hpp +79 -0
  526. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Array/ElementProxy.hpp +75 -0
  527. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Array/JsonArray.hpp +219 -0
  528. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Array/JsonArrayConst.hpp +133 -0
  529. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Array/JsonArrayIterator.hpp +96 -0
  530. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Array/Utilities.hpp +112 -0
  531. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Collection/CollectionData.hpp +122 -0
  532. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Collection/CollectionImpl.hpp +137 -0
  533. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Configuration.hpp +285 -0
  534. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/DeserializationError.hpp +106 -0
  535. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/DeserializationOptions.hpp +35 -0
  536. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/Filter.hpp +77 -0
  537. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/NestingLimit.hpp +32 -0
  538. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/Reader.hpp +74 -0
  539. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStreamReader.hpp +30 -0
  540. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStringReader.hpp +18 -0
  541. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/Readers/FlashReader.hpp +56 -0
  542. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/Readers/IteratorReader.hpp +42 -0
  543. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/Readers/RamReader.hpp +49 -0
  544. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/Readers/StdStreamReader.hpp +29 -0
  545. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/Readers/VariantReader.hpp +19 -0
  546. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/deserialize.hpp +79 -0
  547. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Document/JsonDocument.hpp +426 -0
  548. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Json/EscapeSequence.hpp +40 -0
  549. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Json/JsonDeserializer.hpp +720 -0
  550. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Json/JsonSerializer.hpp +165 -0
  551. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Json/Latch.hpp +56 -0
  552. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Json/PrettyJsonSerializer.hpp +110 -0
  553. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Json/TextFormatter.hpp +177 -0
  554. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Json/Utf16.hpp +67 -0
  555. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Json/Utf8.hpp +46 -0
  556. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Memory/Alignment.hpp +60 -0
  557. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Memory/Allocator.hpp +49 -0
  558. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Memory/MemoryPool.hpp +110 -0
  559. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Memory/MemoryPoolList.hpp +214 -0
  560. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Memory/ResourceManager.hpp +131 -0
  561. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Memory/ResourceManagerImpl.hpp +52 -0
  562. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Memory/StringBuffer.hpp +79 -0
  563. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Memory/StringBuilder.hpp +88 -0
  564. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Memory/StringNode.hpp +75 -0
  565. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Memory/StringPool.hpp +102 -0
  566. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Misc/SerializedValue.hpp +71 -0
  567. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackBinary.hpp +97 -0
  568. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackDeserializer.hpp +487 -0
  569. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackExtension.hpp +120 -0
  570. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackSerializer.hpp +244 -0
  571. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/MsgPack/endianness.hpp +46 -0
  572. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/MsgPack/ieee754.hpp +18 -0
  573. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Namespace.hpp +42 -0
  574. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Numbers/FloatParts.hpp +95 -0
  575. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Numbers/FloatTraits.hpp +212 -0
  576. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Numbers/JsonFloat.hpp +18 -0
  577. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Numbers/JsonInteger.hpp +28 -0
  578. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Numbers/arithmeticCompare.hpp +116 -0
  579. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Numbers/convertNumber.hpp +145 -0
  580. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Numbers/parseNumber.hpp +238 -0
  581. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Object/JsonObject.hpp +245 -0
  582. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Object/JsonObjectConst.hpp +166 -0
  583. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Object/JsonObjectIterator.hpp +83 -0
  584. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Object/JsonPair.hpp +70 -0
  585. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Object/MemberProxy.hpp +77 -0
  586. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Object/ObjectData.hpp +70 -0
  587. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Object/ObjectImpl.hpp +92 -0
  588. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/alias_cast.hpp +30 -0
  589. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/assert.hpp +14 -0
  590. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/attributes.hpp +45 -0
  591. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/ctype.hpp +21 -0
  592. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/integer.hpp +34 -0
  593. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/limits.hpp +45 -0
  594. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/math.hpp +27 -0
  595. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/mpl/max.hpp +27 -0
  596. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/pgmspace.hpp +144 -0
  597. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/pgmspace_generic.hpp +67 -0
  598. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/preprocessor.hpp +33 -0
  599. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/conditional.hpp +25 -0
  600. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/decay.hpp +33 -0
  601. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/declval.hpp +14 -0
  602. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/enable_if.hpp +23 -0
  603. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/function_traits.hpp +27 -0
  604. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/integral_constant.hpp +22 -0
  605. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_array.hpp +22 -0
  606. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_base_of.hpp +27 -0
  607. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_class.hpp +23 -0
  608. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_const.hpp +18 -0
  609. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_convertible.hpp +46 -0
  610. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_enum.hpp +22 -0
  611. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_floating_point.hpp +19 -0
  612. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_integral.hpp +32 -0
  613. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_pointer.hpp +17 -0
  614. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_same.hpp +18 -0
  615. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_signed.hpp +26 -0
  616. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_unsigned.hpp +24 -0
  617. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/make_unsigned.hpp +44 -0
  618. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/remove_const.hpp +24 -0
  619. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/remove_cv.hpp +31 -0
  620. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/remove_reference.hpp +24 -0
  621. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/type_identity.hpp +16 -0
  622. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/void_t.hpp +20 -0
  623. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits.hpp +27 -0
  624. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/utility.hpp +33 -0
  625. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Serialization/CountingDecorator.hpp +33 -0
  626. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Serialization/Writer.hpp +47 -0
  627. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Serialization/Writers/ArduinoStringWriter.hpp +55 -0
  628. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Serialization/Writers/DummyWriter.hpp +22 -0
  629. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Serialization/Writers/PrintWriter.hpp +29 -0
  630. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Serialization/Writers/StaticStringWriter.hpp +36 -0
  631. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Serialization/Writers/StdStreamWriter.hpp +32 -0
  632. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Serialization/Writers/StdStringWriter.hpp +42 -0
  633. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Serialization/measure.hpp +20 -0
  634. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Serialization/serialize.hpp +50 -0
  635. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/Adapters/FlashString.hpp +93 -0
  636. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/Adapters/RamString.hpp +118 -0
  637. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/Adapters/StringObject.hpp +48 -0
  638. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/IsString.hpp +19 -0
  639. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/JsonString.hpp +100 -0
  640. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/StringAdapter.hpp +47 -0
  641. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/StringAdapters.hpp +72 -0
  642. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/StringTraits.hpp +73 -0
  643. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/Converter.hpp +23 -0
  644. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/ConverterImpl.hpp +406 -0
  645. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/JsonVariant.hpp +78 -0
  646. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/JsonVariantConst.hpp +197 -0
  647. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/JsonVariantCopier.hpp +34 -0
  648. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/JsonVariantVisitor.hpp +61 -0
  649. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantAttorney.hpp +35 -0
  650. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantCompare.hpp +211 -0
  651. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantContent.hpp +82 -0
  652. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantData.hpp +609 -0
  653. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantDataVisitor.hpp +24 -0
  654. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantImpl.hpp +146 -0
  655. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantOperators.hpp +188 -0
  656. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantRefBase.hpp +313 -0
  657. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantRefBaseImpl.hpp +175 -0
  658. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantTag.hpp +16 -0
  659. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantTo.hpp +34 -0
  660. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/compatibility.hpp +144 -0
  661. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/version.hpp +11 -0
  662. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson.h +17 -0
  663. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson.hpp +65 -0
  664. package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/CMakeLists.txt +91 -0
  665. package/examples/alteriom/.pio/libdeps/esp8266/ESPAsyncTCP/.github/scripts/install-arduino-core-esp8266.sh +29 -0
  666. package/examples/alteriom/.pio/libdeps/esp8266/ESPAsyncTCP/.github/scripts/install-arduino-ide.sh +220 -0
  667. package/examples/alteriom/.pio/libdeps/esp8266/ESPAsyncTCP/.github/scripts/install-platformio.sh +133 -0
  668. package/examples/alteriom/.pio/libdeps/esp8266/ESPAsyncTCP/.github/scripts/on-push.sh +64 -0
  669. package/examples/alteriom/.pio/libdeps/esp8266/ESPAsyncTCP/.github/stale.yml +31 -0
  670. package/examples/alteriom/.pio/libdeps/esp8266/ESPAsyncTCP/.github/workflows/push.yml +30 -0
  671. package/examples/alteriom/.pio/libdeps/esp8266/ESPAsyncTCP/.piopm +1 -0
  672. package/examples/alteriom/.pio/libdeps/esp8266/ESPAsyncTCP/LICENSE.txt +165 -0
  673. package/examples/alteriom/.pio/libdeps/esp8266/ESPAsyncTCP/README.md +43 -0
  674. package/examples/alteriom/.pio/libdeps/esp8266/ESPAsyncTCP/examples/ClientServer/Client/Client.ino +62 -0
  675. package/examples/alteriom/.pio/libdeps/esp8266/ESPAsyncTCP/examples/ClientServer/Client/config.h +23 -0
  676. package/examples/alteriom/.pio/libdeps/esp8266/ESPAsyncTCP/examples/ClientServer/Server/Server.ino +73 -0
  677. package/examples/alteriom/.pio/libdeps/esp8266/ESPAsyncTCP/examples/ClientServer/Server/config.h +23 -0
  678. package/examples/alteriom/.pio/libdeps/esp8266/ESPAsyncTCP/examples/SyncClient/.esp31b.skip +0 -0
  679. package/examples/alteriom/.pio/libdeps/esp8266/ESPAsyncTCP/examples/SyncClient/SyncClient.ino +54 -0
  680. package/examples/alteriom/.pio/libdeps/esp8266/ESPAsyncTCP/library.json +19 -0
  681. package/examples/alteriom/.pio/libdeps/esp8266/ESPAsyncTCP/library.properties +10 -0
  682. package/examples/alteriom/.pio/libdeps/esp8266/ESPAsyncTCP/src/AsyncPrinter.cpp +214 -0
  683. package/examples/alteriom/.pio/libdeps/esp8266/ESPAsyncTCP/src/AsyncPrinter.h +73 -0
  684. package/examples/alteriom/.pio/libdeps/esp8266/ESPAsyncTCP/src/DebugPrintMacros.h +112 -0
  685. package/examples/alteriom/.pio/libdeps/esp8266/ESPAsyncTCP/src/ESPAsyncTCP.cpp +1406 -0
  686. package/examples/alteriom/.pio/libdeps/esp8266/ESPAsyncTCP/src/ESPAsyncTCP.h +324 -0
  687. package/examples/alteriom/.pio/libdeps/esp8266/ESPAsyncTCP/src/ESPAsyncTCPbuffer.cpp +555 -0
  688. package/examples/alteriom/.pio/libdeps/esp8266/ESPAsyncTCP/src/ESPAsyncTCPbuffer.h +118 -0
  689. package/examples/alteriom/.pio/libdeps/esp8266/ESPAsyncTCP/src/SyncClient.cpp +414 -0
  690. package/examples/alteriom/.pio/libdeps/esp8266/ESPAsyncTCP/src/SyncClient.h +109 -0
  691. package/examples/alteriom/.pio/libdeps/esp8266/ESPAsyncTCP/src/async_config.h +42 -0
  692. package/examples/alteriom/.pio/libdeps/esp8266/ESPAsyncTCP/src/tcp_axtls.c +613 -0
  693. package/examples/alteriom/.pio/libdeps/esp8266/ESPAsyncTCP/src/tcp_axtls.h +98 -0
  694. package/examples/alteriom/.pio/libdeps/esp8266/ESPAsyncTCP/ssl/gen_server_cert.sh +36 -0
  695. package/examples/alteriom/.pio/libdeps/esp8266/ESPAsyncTCP/ssl/server.cer +0 -0
  696. package/examples/alteriom/.pio/libdeps/esp8266/ESPAsyncTCP/ssl/server.key +0 -0
  697. package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/.github/FUNDING.yml +1 -0
  698. package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/.github/workflows/doxygen.yml +310 -0
  699. package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/.github/workflows/main.yml +309 -0
  700. package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/.github/workflows/test.yml +523 -0
  701. package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/.piopm +1 -0
  702. package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/LICENSE.txt +27 -0
  703. package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/README.md +157 -0
  704. package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example00_Blink/Scheduler_example00_Blink.ino +303 -0
  705. package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example00_Blink_Namespace/Scheduler_example00_Blink_Namespace.ino +302 -0
  706. package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example01/Scheduler_example01.ino +84 -0
  707. package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example02/Scheduler_example02.ino +78 -0
  708. package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example03/Scheduler_example03.ino +80 -0
  709. package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example04_StatusRequest/Scheduler_example04_StatusRequest.ino +90 -0
  710. package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example05_StatusRequest/Scheduler_example05_StatusRequest.ino +181 -0
  711. package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example06_IDLE/Scheduler_example06_IDLE.ino +117 -0
  712. package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example07_WDT/Scheduler_example07_WDT.ino +133 -0
  713. package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example08_LTS/Scheduler_example08_LTS.ino +147 -0
  714. package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example09_TimeCritical/Scheduler_example09_TimeCritical.ino +57 -0
  715. package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example10_Benchmark/Scheduler_example10_Benchmark.ino +106 -0
  716. package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example11_Priority/Scheduler_example11_Priority.ino +105 -0
  717. package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example12_Priority/Scheduler_example12_Priority.ino +136 -0
  718. package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example13_Micros/Scheduler_example13_Micros.ino +71 -0
  719. package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example14_Yield/Scheduler_example14_Yield.ino +339 -0
  720. package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example15_STDFunction/Scheduler_example15_STDFunction.ino +53 -0
  721. package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example16_Multitab/Scheduler_example16_Multitab.ino +18 -0
  722. package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example16_Multitab/file1.cpp +31 -0
  723. package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example16_Multitab/file2.cpp +55 -0
  724. package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example16_Multitab/header.hpp +15 -0
  725. package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example16_Multitab/ts.cpp +20 -0
  726. package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example17_Timeout/Scheduler_example17_Timeout.ino +90 -0
  727. package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example18_StatusRequest_LTS_WDT_Timeout/Scheduler_example18_StatusRequest_LTS_WDT_Timeout.ino +172 -0
  728. package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example19_Dynamic_Tasks/Scheduler_example19_Dynamic_Tasks.ino +137 -0
  729. package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example19_Dynamic_Tasks_SelfDestruct/Scheduler_example19_Dynamic_Tasks_SelfDestruct.ino +130 -0
  730. package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example19_Dynamic_Tasks_stdQueue/Scheduler_example19_Dynamic_Tasks_stdQueue.ino +137 -0
  731. package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example20_StatusRequest_LTS_WDT_Timeout_Object/Scheduler_example20_StatusRequest_LTS_WDT_Timeout_Object.ino +185 -0
  732. package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example20_StatusRequest_LTS_WDT_Timeout_Object/SuperSensor.cpp +36 -0
  733. package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example20_StatusRequest_LTS_WDT_Timeout_Object/SuperSensor.h +25 -0
  734. package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example21_OO_Callbacks/Calculator.cpp +66 -0
  735. package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example21_OO_Callbacks/Calculator.h +34 -0
  736. package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example21_OO_Callbacks/Scheduler_example21_OO_Callbacks.ino +76 -0
  737. package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example21_OO_Callbacks/SuperSensor.cpp +83 -0
  738. package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example21_OO_Callbacks/SuperSensor.h +44 -0
  739. package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example21_OO_Callbacks/Ticker.cpp +21 -0
  740. package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example21_OO_Callbacks/Ticker.h +28 -0
  741. package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example23_IDLE_Callback/Scheduler_example23_IDLE_Callback.ino +157 -0
  742. package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example24_CPU_LOAD/Scheduler_example24_CPU_LOAD.ino +87 -0
  743. package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example25_SCHEDULER_CHAIN/Scheduler_example25_SCHEDULER_CHAIN.ino +127 -0
  744. package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example26_SCHEDULING_OPTIONS/Scheduler_example26_SCHEDULING_OPTIONS.ino +181 -0
  745. package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example27_PlatformIO/include/README +39 -0
  746. package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example27_PlatformIO/include/led.h +12 -0
  747. package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example27_PlatformIO/include/main.h +25 -0
  748. package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example27_PlatformIO/lib/README +46 -0
  749. package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example27_PlatformIO/platformio.ini +37 -0
  750. package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example27_PlatformIO/src/led.cpp +11 -0
  751. package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example27_PlatformIO/src/main.cpp +254 -0
  752. package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example27_PlatformIO/test/README +11 -0
  753. package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example28_Tickless/Scheduler_example28_Tickless.ino +105 -0
  754. package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example29_NonArduino/include/README +39 -0
  755. package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example29_NonArduino/include/led.h +12 -0
  756. package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example29_NonArduino/include/main.h +27 -0
  757. package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example29_NonArduino/lib/README +46 -0
  758. package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example29_NonArduino/platformio.ini +38 -0
  759. package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example29_NonArduino/src/led.cpp +13 -0
  760. package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example29_NonArduino/src/main.cpp +267 -0
  761. package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example29_NonArduino/test/README +11 -0
  762. package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example30_THREAD_SAFE/README.md +232 -0
  763. package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example30_THREAD_SAFE/platformio.ini +44 -0
  764. package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example30_THREAD_SAFE/src/main.cpp +310 -0
  765. package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_template/Scheduler_template.ino +166 -0
  766. package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/keywords.txt +161 -0
  767. package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/library.json +22 -0
  768. package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/library.properties +9 -0
  769. package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/src/TScheduler.hpp +29 -0
  770. package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/src/TSchedulerDeclarations.hpp +29 -0
  771. package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/src/TaskScheduler.cpp +3 -0
  772. package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/src/TaskScheduler.h +1811 -0
  773. package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/src/TaskSchedulerDeclarations.h +3096 -0
  774. package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/src/TaskSchedulerSleepMethods.h +399 -0
  775. package/examples/alteriom/.pio/libdeps/esp8266/integrity.dat +3 -0
  776. package/examples/alteriom/README.md +139 -139
  777. package/examples/alteriom/alteriom.ino +186 -186
  778. package/examples/alteriom/alteriom_sensor_package.hpp +240 -240
  779. package/examples/alteriom/platformio.ini +24 -24
  780. package/examples/alteriomImproved/alteriom_sensor_package.hpp +223 -223
  781. package/examples/alteriomImproved/improved_sensor_node.ino +245 -245
  782. package/examples/alteriomImproved/platformio.ini +24 -24
  783. package/examples/alteriomPhase1/alteriom_sensor_package.hpp +223 -223
  784. package/examples/alteriomPhase1/phase1_features.ino +242 -242
  785. package/examples/alteriomPhase1/platformio.ini +24 -24
  786. package/examples/alteriomPhase2/alteriom_sensor_package.hpp +223 -223
  787. package/examples/alteriomPhase2/phase2_features.ino +186 -186
  788. package/examples/alteriomPhase2/platformio.ini +24 -24
  789. package/examples/alteriomSensorNode/alteriom_sensor_node.ino +183 -183
  790. package/examples/alteriomSensorNode/alteriom_sensor_package.hpp +223 -223
  791. package/examples/alteriomSensorNode/platformio.ini +24 -24
  792. package/examples/basic/.pio/build/esp32/.sconsign311.dblite +0 -0
  793. package/examples/basic/.pio/build/esp32/bootloader.bin +0 -0
  794. package/examples/basic/.pio/build/esp32/lib241/TaskScheduler/TaskScheduler.cpp.d +2 -0
  795. package/examples/basic/.pio/build/esp32/lib241/TaskScheduler/TaskScheduler.cpp.o +0 -0
  796. package/examples/basic/.pio/build/esp32/lib241/libTaskScheduler.a +0 -0
  797. package/examples/basic/.pio/build/esp32/lib4f2/FS/FS.cpp.d +138 -0
  798. package/examples/basic/.pio/build/esp32/lib4f2/FS/FS.cpp.o +0 -0
  799. package/examples/basic/.pio/build/esp32/lib4f2/FS/vfs_api.cpp.d +139 -0
  800. package/examples/basic/.pio/build/esp32/lib4f2/FS/vfs_api.cpp.o +0 -0
  801. package/examples/basic/.pio/build/esp32/lib71a/WiFi/WiFi.cpp.d +203 -0
  802. package/examples/basic/.pio/build/esp32/lib71a/WiFi/WiFi.cpp.o +0 -0
  803. package/examples/basic/.pio/build/esp32/lib71a/WiFi/WiFiAP.cpp.d +204 -0
  804. package/examples/basic/.pio/build/esp32/lib71a/WiFi/WiFiAP.cpp.o +0 -0
  805. package/examples/basic/.pio/build/esp32/lib71a/WiFi/WiFiClient.cpp.d +209 -0
  806. package/examples/basic/.pio/build/esp32/lib71a/WiFi/WiFiClient.cpp.o +0 -0
  807. package/examples/basic/.pio/build/esp32/lib71a/WiFi/WiFiGeneric.cpp.d +206 -0
  808. package/examples/basic/.pio/build/esp32/lib71a/WiFi/WiFiGeneric.cpp.o +0 -0
  809. package/examples/basic/.pio/build/esp32/lib71a/WiFi/WiFiMulti.cpp.d +199 -0
  810. package/examples/basic/.pio/build/esp32/lib71a/WiFi/WiFiMulti.cpp.o +0 -0
  811. package/examples/basic/.pio/build/esp32/lib71a/WiFi/WiFiSTA.cpp.d +206 -0
  812. package/examples/basic/.pio/build/esp32/lib71a/WiFi/WiFiSTA.cpp.o +0 -0
  813. package/examples/basic/.pio/build/esp32/lib71a/WiFi/WiFiScan.cpp.d +204 -0
  814. package/examples/basic/.pio/build/esp32/lib71a/WiFi/WiFiScan.cpp.o +0 -0
  815. package/examples/basic/.pio/build/esp32/lib71a/WiFi/WiFiServer.cpp.d +172 -0
  816. package/examples/basic/.pio/build/esp32/lib71a/WiFi/WiFiServer.cpp.o +0 -0
  817. package/examples/basic/.pio/build/esp32/lib71a/WiFi/WiFiUdp.cpp.d +171 -0
  818. package/examples/basic/.pio/build/esp32/lib71a/WiFi/WiFiUdp.cpp.o +0 -0
  819. package/examples/basic/.pio/build/esp32/lib8c7/AsyncTCP/AsyncTCP.cpp.d +189 -0
  820. package/examples/basic/.pio/build/esp32/lib8c7/AsyncTCP/AsyncTCP.cpp.o +0 -0
  821. package/examples/basic/.pio/build/esp32/partitions.bin +0 -0
  822. package/examples/basic/.pio/build/esp32/src/basic.ino.cpp.d +238 -0
  823. package/examples/basic/.pio/build/esp32/src/basic.ino.cpp.o +0 -0
  824. package/examples/basic/.pio/build/esp8266/.sconsign311.dblite +0 -0
  825. package/examples/basic/.pio/build/esp8266/FrameworkArduino/Esp-frag.cpp.o +0 -0
  826. package/examples/basic/.pio/build/esp8266/FrameworkArduino/Esp-version.cpp.o +0 -0
  827. package/examples/basic/.pio/build/esp8266/FrameworkArduino/Esp.cpp.o +0 -0
  828. package/examples/basic/.pio/build/esp8266/FrameworkArduino/FS.cpp.o +0 -0
  829. package/examples/basic/.pio/build/esp8266/FrameworkArduino/FSnoop.cpp.o +0 -0
  830. package/examples/basic/.pio/build/esp8266/FrameworkArduino/FunctionalInterrupt.cpp.o +0 -0
  831. package/examples/basic/.pio/build/esp8266/ld/local.eagle.app.v6.common.ld +285 -0
  832. package/examples/basic/.pio/build/esp8266/lib5e7/TaskScheduler/TaskScheduler.cpp.o +0 -0
  833. package/examples/basic/.pio/build/esp8266/lib5e7/libTaskScheduler.a +0 -0
  834. package/examples/basic/.pio/build/esp8266/lib720/ESP8266WiFi/BearSSLHelpers.cpp.o +0 -0
  835. package/examples/basic/.pio/build/esp8266/lib720/ESP8266WiFi/CertStoreBearSSL.cpp.o +0 -0
  836. package/examples/basic/.pio/build/esp8266/lib720/ESP8266WiFi/ESP8266WiFi.cpp.o +0 -0
  837. package/examples/basic/.pio/build/esp8266/lib720/ESP8266WiFi/ESP8266WiFiAP.cpp.o +0 -0
  838. package/examples/basic/.pio/build/esp8266/lib720/ESP8266WiFi/ESP8266WiFiGeneric.cpp.o +0 -0
  839. package/examples/basic/.pio/build/esp8266/lib720/ESP8266WiFi/ESP8266WiFiGratuitous.cpp.o +0 -0
  840. package/examples/basic/.pio/build/esp8266/lib720/ESP8266WiFi/ESP8266WiFiMulti.cpp.o +0 -0
  841. package/examples/basic/.pio/build/esp8266/lib720/ESP8266WiFi/ESP8266WiFiSTA-WPS.cpp.o +0 -0
  842. package/examples/basic/.pio/build/esp8266/lib720/ESP8266WiFi/ESP8266WiFiSTA.cpp.o +0 -0
  843. package/examples/basic/.pio/build/esp8266/lib720/ESP8266WiFi/ESP8266WiFiScan.cpp.o +0 -0
  844. package/examples/basic/.pio/build/esp8266/lib720/ESP8266WiFi/WiFiClient.cpp.o +0 -0
  845. package/examples/basic/.pio/build/esp8266/lib720/ESP8266WiFi/WiFiClientSecureBearSSL.cpp.o +0 -0
  846. package/examples/basic/.pio/build/esp8266/lib720/ESP8266WiFi/WiFiServerSecureBearSSL.cpp.o +0 -0
  847. package/examples/basic/.pio/build/esp8266/lib720/ESP8266WiFi/WiFiUdp.cpp.o +0 -0
  848. package/examples/basic/.pio/build/esp8266/lib837/src/scheduler.cpp.o +0 -0
  849. package/examples/basic/.pio/build/esp8266/libFrameworkArduinoVariant.a +1 -0
  850. package/examples/basic/.pio/build/esp8266/libdb3/LittleFS/LittleFS.cpp.o +0 -0
  851. package/examples/basic/.pio/build/esp8266/libdb3/LittleFS/lfs_util.c.o +0 -0
  852. package/examples/basic/.pio/build/esp8266/libf28/ESPAsyncTCP/AsyncPrinter.cpp.o +0 -0
  853. package/examples/basic/.pio/build/esp8266/libf28/ESPAsyncTCP/ESPAsyncTCP.cpp.o +0 -0
  854. package/examples/basic/.pio/build/esp8266/libf28/ESPAsyncTCP/ESPAsyncTCPbuffer.cpp.o +0 -0
  855. package/examples/basic/.pio/build/esp8266/libf28/ESPAsyncTCP/SyncClient.cpp.o +0 -0
  856. package/examples/basic/.pio/build/esp8266/libf28/ESPAsyncTCP/tcp_axtls.c.o +0 -0
  857. package/examples/basic/.pio/build/esp8266/src/basic.ino.cpp.o +0 -0
  858. package/examples/basic/.pio/build/project.checksum +1 -0
  859. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/.piopm +1 -0
  860. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/ArduinoJson.h +5 -0
  861. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/LICENSE.txt +10 -0
  862. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/README.md +153 -0
  863. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/examples/JsonConfigFile/JsonConfigFile.ino +152 -0
  864. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/examples/JsonFilterExample/JsonFilterExample.ino +64 -0
  865. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/examples/JsonGeneratorExample/JsonGeneratorExample.ino +65 -0
  866. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/examples/JsonHttpClient/JsonHttpClient.ino +125 -0
  867. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/examples/JsonParserExample/JsonParserExample.ino +65 -0
  868. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/examples/JsonServer/JsonServer.ino +118 -0
  869. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/examples/JsonUdpBeacon/JsonUdpBeacon.ino +106 -0
  870. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/examples/MsgPackParser/MsgPackParser.ino +61 -0
  871. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/examples/ProgmemExample/ProgmemExample.ino +63 -0
  872. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/examples/StringExample/StringExample.ino +76 -0
  873. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/library.json +23 -0
  874. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/library.properties +11 -0
  875. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Array/ArrayData.hpp +66 -0
  876. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Array/ArrayImpl.hpp +79 -0
  877. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Array/ElementProxy.hpp +75 -0
  878. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Array/JsonArray.hpp +219 -0
  879. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Array/JsonArrayConst.hpp +133 -0
  880. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Array/JsonArrayIterator.hpp +96 -0
  881. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Array/Utilities.hpp +112 -0
  882. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Collection/CollectionData.hpp +122 -0
  883. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Collection/CollectionImpl.hpp +137 -0
  884. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Configuration.hpp +285 -0
  885. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Deserialization/DeserializationError.hpp +106 -0
  886. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Deserialization/DeserializationOptions.hpp +35 -0
  887. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Deserialization/Filter.hpp +77 -0
  888. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Deserialization/NestingLimit.hpp +32 -0
  889. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Deserialization/Reader.hpp +74 -0
  890. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStreamReader.hpp +30 -0
  891. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStringReader.hpp +18 -0
  892. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Deserialization/Readers/FlashReader.hpp +56 -0
  893. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Deserialization/Readers/IteratorReader.hpp +42 -0
  894. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Deserialization/Readers/RamReader.hpp +49 -0
  895. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Deserialization/Readers/StdStreamReader.hpp +29 -0
  896. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Deserialization/Readers/VariantReader.hpp +19 -0
  897. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Deserialization/deserialize.hpp +79 -0
  898. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Document/JsonDocument.hpp +426 -0
  899. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Json/EscapeSequence.hpp +40 -0
  900. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Json/JsonDeserializer.hpp +720 -0
  901. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Json/JsonSerializer.hpp +165 -0
  902. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Json/Latch.hpp +56 -0
  903. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Json/PrettyJsonSerializer.hpp +110 -0
  904. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Json/TextFormatter.hpp +177 -0
  905. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Json/Utf16.hpp +67 -0
  906. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Json/Utf8.hpp +46 -0
  907. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Memory/Alignment.hpp +60 -0
  908. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Memory/Allocator.hpp +49 -0
  909. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Memory/MemoryPool.hpp +110 -0
  910. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Memory/MemoryPoolList.hpp +214 -0
  911. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Memory/ResourceManager.hpp +131 -0
  912. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Memory/ResourceManagerImpl.hpp +52 -0
  913. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Memory/StringBuffer.hpp +79 -0
  914. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Memory/StringBuilder.hpp +88 -0
  915. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Memory/StringNode.hpp +75 -0
  916. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Memory/StringPool.hpp +102 -0
  917. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Misc/SerializedValue.hpp +71 -0
  918. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackBinary.hpp +97 -0
  919. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackDeserializer.hpp +487 -0
  920. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackExtension.hpp +120 -0
  921. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackSerializer.hpp +244 -0
  922. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/MsgPack/endianness.hpp +46 -0
  923. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/MsgPack/ieee754.hpp +18 -0
  924. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Namespace.hpp +42 -0
  925. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Numbers/FloatParts.hpp +95 -0
  926. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Numbers/FloatTraits.hpp +212 -0
  927. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Numbers/JsonFloat.hpp +18 -0
  928. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Numbers/JsonInteger.hpp +28 -0
  929. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Numbers/arithmeticCompare.hpp +116 -0
  930. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Numbers/convertNumber.hpp +145 -0
  931. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Numbers/parseNumber.hpp +238 -0
  932. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Object/JsonObject.hpp +245 -0
  933. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Object/JsonObjectConst.hpp +166 -0
  934. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Object/JsonObjectIterator.hpp +83 -0
  935. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Object/JsonPair.hpp +70 -0
  936. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Object/MemberProxy.hpp +77 -0
  937. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Object/ObjectData.hpp +70 -0
  938. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Object/ObjectImpl.hpp +92 -0
  939. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/alias_cast.hpp +30 -0
  940. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/assert.hpp +14 -0
  941. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/attributes.hpp +45 -0
  942. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/ctype.hpp +21 -0
  943. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/integer.hpp +34 -0
  944. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/limits.hpp +45 -0
  945. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/math.hpp +27 -0
  946. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/mpl/max.hpp +27 -0
  947. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/pgmspace.hpp +144 -0
  948. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/pgmspace_generic.hpp +67 -0
  949. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/preprocessor.hpp +33 -0
  950. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/conditional.hpp +25 -0
  951. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/decay.hpp +33 -0
  952. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/declval.hpp +14 -0
  953. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/enable_if.hpp +23 -0
  954. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/function_traits.hpp +27 -0
  955. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/integral_constant.hpp +22 -0
  956. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_array.hpp +22 -0
  957. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_base_of.hpp +27 -0
  958. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_class.hpp +23 -0
  959. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_const.hpp +18 -0
  960. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_convertible.hpp +46 -0
  961. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_enum.hpp +22 -0
  962. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_floating_point.hpp +19 -0
  963. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_integral.hpp +32 -0
  964. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_pointer.hpp +17 -0
  965. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_same.hpp +18 -0
  966. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_signed.hpp +26 -0
  967. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_unsigned.hpp +24 -0
  968. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/make_unsigned.hpp +44 -0
  969. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/remove_const.hpp +24 -0
  970. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/remove_cv.hpp +31 -0
  971. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/remove_reference.hpp +24 -0
  972. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/type_identity.hpp +16 -0
  973. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/void_t.hpp +20 -0
  974. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits.hpp +27 -0
  975. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/utility.hpp +33 -0
  976. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Serialization/CountingDecorator.hpp +33 -0
  977. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Serialization/Writer.hpp +47 -0
  978. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Serialization/Writers/ArduinoStringWriter.hpp +55 -0
  979. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Serialization/Writers/DummyWriter.hpp +22 -0
  980. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Serialization/Writers/PrintWriter.hpp +29 -0
  981. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Serialization/Writers/StaticStringWriter.hpp +36 -0
  982. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Serialization/Writers/StdStreamWriter.hpp +32 -0
  983. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Serialization/Writers/StdStringWriter.hpp +42 -0
  984. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Serialization/measure.hpp +20 -0
  985. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Serialization/serialize.hpp +50 -0
  986. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Strings/Adapters/FlashString.hpp +93 -0
  987. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Strings/Adapters/RamString.hpp +118 -0
  988. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Strings/Adapters/StringObject.hpp +48 -0
  989. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Strings/IsString.hpp +19 -0
  990. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Strings/JsonString.hpp +100 -0
  991. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Strings/StringAdapter.hpp +47 -0
  992. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Strings/StringAdapters.hpp +72 -0
  993. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Strings/StringTraits.hpp +73 -0
  994. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/Converter.hpp +23 -0
  995. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/ConverterImpl.hpp +406 -0
  996. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/JsonVariant.hpp +78 -0
  997. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/JsonVariantConst.hpp +197 -0
  998. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/JsonVariantCopier.hpp +34 -0
  999. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/JsonVariantVisitor.hpp +61 -0
  1000. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/VariantAttorney.hpp +35 -0
  1001. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/VariantCompare.hpp +211 -0
  1002. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/VariantContent.hpp +82 -0
  1003. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/VariantData.hpp +609 -0
  1004. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/VariantDataVisitor.hpp +24 -0
  1005. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/VariantImpl.hpp +146 -0
  1006. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/VariantOperators.hpp +188 -0
  1007. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/VariantRefBase.hpp +313 -0
  1008. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/VariantRefBaseImpl.hpp +175 -0
  1009. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/VariantTag.hpp +16 -0
  1010. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/VariantTo.hpp +34 -0
  1011. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/compatibility.hpp +144 -0
  1012. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/version.hpp +11 -0
  1013. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson.h +17 -0
  1014. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson.hpp +65 -0
  1015. package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/CMakeLists.txt +91 -0
  1016. package/examples/basic/.pio/libdeps/esp32/AsyncTCP/.piopm +1 -0
  1017. package/examples/basic/.pio/libdeps/esp32/AsyncTCP/LICENSE +165 -0
  1018. package/examples/basic/.pio/libdeps/esp32/AsyncTCP/README.md +55 -0
  1019. package/examples/basic/.pio/libdeps/esp32/AsyncTCP/examples/AsyncSend/AsyncSend.ino +169 -0
  1020. package/examples/basic/.pio/libdeps/esp32/AsyncTCP/examples/Client/Client.ino +87 -0
  1021. package/examples/basic/.pio/libdeps/esp32/AsyncTCP/examples/FetchWebsite/FetchWebsite.ino +107 -0
  1022. package/examples/basic/.pio/libdeps/esp32/AsyncTCP/library.json +31 -0
  1023. package/examples/basic/.pio/libdeps/esp32/AsyncTCP/library.properties +11 -0
  1024. package/examples/basic/.pio/libdeps/esp32/AsyncTCP/src/AsyncTCP.cpp +1612 -0
  1025. package/examples/basic/.pio/libdeps/esp32/AsyncTCP/src/AsyncTCP.h +335 -0
  1026. package/examples/basic/.pio/libdeps/esp32/AsyncTCP/src/AsyncTCPLogging.h +66 -0
  1027. package/examples/basic/.pio/libdeps/esp32/AsyncTCP/src/AsyncTCPSimpleIntrusiveList.h +134 -0
  1028. package/examples/basic/.pio/libdeps/esp32/AsyncTCP/src/AsyncTCPVersion.h +40 -0
  1029. package/examples/basic/.pio/libdeps/esp32/TaskScheduler/.github/FUNDING.yml +1 -0
  1030. package/examples/basic/.pio/libdeps/esp32/TaskScheduler/.github/workflows/doxygen.yml +310 -0
  1031. package/examples/basic/.pio/libdeps/esp32/TaskScheduler/.github/workflows/main.yml +309 -0
  1032. package/examples/basic/.pio/libdeps/esp32/TaskScheduler/.github/workflows/test.yml +523 -0
  1033. package/examples/basic/.pio/libdeps/esp32/TaskScheduler/.piopm +1 -0
  1034. package/examples/basic/.pio/libdeps/esp32/TaskScheduler/LICENSE.txt +27 -0
  1035. package/examples/basic/.pio/libdeps/esp32/TaskScheduler/README.md +157 -0
  1036. package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example00_Blink/Scheduler_example00_Blink.ino +303 -0
  1037. package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example00_Blink_Namespace/Scheduler_example00_Blink_Namespace.ino +302 -0
  1038. package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example01/Scheduler_example01.ino +84 -0
  1039. package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example02/Scheduler_example02.ino +78 -0
  1040. package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example03/Scheduler_example03.ino +80 -0
  1041. package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example04_StatusRequest/Scheduler_example04_StatusRequest.ino +90 -0
  1042. package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example05_StatusRequest/Scheduler_example05_StatusRequest.ino +181 -0
  1043. package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example06_IDLE/Scheduler_example06_IDLE.ino +117 -0
  1044. package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example07_WDT/Scheduler_example07_WDT.ino +133 -0
  1045. package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example08_LTS/Scheduler_example08_LTS.ino +147 -0
  1046. package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example09_TimeCritical/Scheduler_example09_TimeCritical.ino +57 -0
  1047. package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example10_Benchmark/Scheduler_example10_Benchmark.ino +106 -0
  1048. package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example11_Priority/Scheduler_example11_Priority.ino +105 -0
  1049. package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example12_Priority/Scheduler_example12_Priority.ino +136 -0
  1050. package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example13_Micros/Scheduler_example13_Micros.ino +71 -0
  1051. package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example14_Yield/Scheduler_example14_Yield.ino +339 -0
  1052. package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example15_STDFunction/Scheduler_example15_STDFunction.ino +53 -0
  1053. package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example16_Multitab/Scheduler_example16_Multitab.ino +18 -0
  1054. package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example16_Multitab/file1.cpp +31 -0
  1055. package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example16_Multitab/file2.cpp +55 -0
  1056. package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example16_Multitab/header.hpp +15 -0
  1057. package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example16_Multitab/ts.cpp +20 -0
  1058. package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example17_Timeout/Scheduler_example17_Timeout.ino +90 -0
  1059. package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example18_StatusRequest_LTS_WDT_Timeout/Scheduler_example18_StatusRequest_LTS_WDT_Timeout.ino +172 -0
  1060. package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example19_Dynamic_Tasks/Scheduler_example19_Dynamic_Tasks.ino +137 -0
  1061. package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example19_Dynamic_Tasks_SelfDestruct/Scheduler_example19_Dynamic_Tasks_SelfDestruct.ino +130 -0
  1062. package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example19_Dynamic_Tasks_stdQueue/Scheduler_example19_Dynamic_Tasks_stdQueue.ino +137 -0
  1063. package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example20_StatusRequest_LTS_WDT_Timeout_Object/Scheduler_example20_StatusRequest_LTS_WDT_Timeout_Object.ino +185 -0
  1064. package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example20_StatusRequest_LTS_WDT_Timeout_Object/SuperSensor.cpp +36 -0
  1065. package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example20_StatusRequest_LTS_WDT_Timeout_Object/SuperSensor.h +25 -0
  1066. package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example21_OO_Callbacks/Calculator.cpp +66 -0
  1067. package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example21_OO_Callbacks/Calculator.h +34 -0
  1068. package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example21_OO_Callbacks/Scheduler_example21_OO_Callbacks.ino +76 -0
  1069. package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example21_OO_Callbacks/SuperSensor.cpp +83 -0
  1070. package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example21_OO_Callbacks/SuperSensor.h +44 -0
  1071. package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example21_OO_Callbacks/Ticker.cpp +21 -0
  1072. package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example21_OO_Callbacks/Ticker.h +28 -0
  1073. package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example23_IDLE_Callback/Scheduler_example23_IDLE_Callback.ino +157 -0
  1074. package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example24_CPU_LOAD/Scheduler_example24_CPU_LOAD.ino +87 -0
  1075. package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example25_SCHEDULER_CHAIN/Scheduler_example25_SCHEDULER_CHAIN.ino +127 -0
  1076. package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example26_SCHEDULING_OPTIONS/Scheduler_example26_SCHEDULING_OPTIONS.ino +181 -0
  1077. package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example27_PlatformIO/include/README +39 -0
  1078. package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example27_PlatformIO/include/led.h +12 -0
  1079. package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example27_PlatformIO/include/main.h +25 -0
  1080. package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example27_PlatformIO/lib/README +46 -0
  1081. package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example27_PlatformIO/platformio.ini +37 -0
  1082. package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example27_PlatformIO/src/led.cpp +11 -0
  1083. package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example27_PlatformIO/src/main.cpp +254 -0
  1084. package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example27_PlatformIO/test/README +11 -0
  1085. package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example28_Tickless/Scheduler_example28_Tickless.ino +105 -0
  1086. package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example29_NonArduino/include/README +39 -0
  1087. package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example29_NonArduino/include/led.h +12 -0
  1088. package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example29_NonArduino/include/main.h +27 -0
  1089. package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example29_NonArduino/lib/README +46 -0
  1090. package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example29_NonArduino/platformio.ini +38 -0
  1091. package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example29_NonArduino/src/led.cpp +13 -0
  1092. package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example29_NonArduino/src/main.cpp +267 -0
  1093. package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example29_NonArduino/test/README +11 -0
  1094. package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example30_THREAD_SAFE/README.md +232 -0
  1095. package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example30_THREAD_SAFE/platformio.ini +44 -0
  1096. package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example30_THREAD_SAFE/src/main.cpp +310 -0
  1097. package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_template/Scheduler_template.ino +166 -0
  1098. package/examples/basic/.pio/libdeps/esp32/TaskScheduler/keywords.txt +161 -0
  1099. package/examples/basic/.pio/libdeps/esp32/TaskScheduler/library.json +22 -0
  1100. package/examples/basic/.pio/libdeps/esp32/TaskScheduler/library.properties +9 -0
  1101. package/examples/basic/.pio/libdeps/esp32/TaskScheduler/src/TScheduler.hpp +29 -0
  1102. package/examples/basic/.pio/libdeps/esp32/TaskScheduler/src/TSchedulerDeclarations.hpp +29 -0
  1103. package/examples/basic/.pio/libdeps/esp32/TaskScheduler/src/TaskScheduler.cpp +3 -0
  1104. package/examples/basic/.pio/libdeps/esp32/TaskScheduler/src/TaskScheduler.h +1811 -0
  1105. package/examples/basic/.pio/libdeps/esp32/TaskScheduler/src/TaskSchedulerDeclarations.h +3096 -0
  1106. package/examples/basic/.pio/libdeps/esp32/TaskScheduler/src/TaskSchedulerSleepMethods.h +399 -0
  1107. package/examples/basic/.pio/libdeps/esp32/integrity.dat +3 -0
  1108. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/.piopm +1 -0
  1109. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/ArduinoJson.h +5 -0
  1110. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/LICENSE.txt +10 -0
  1111. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/README.md +153 -0
  1112. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/examples/JsonConfigFile/JsonConfigFile.ino +152 -0
  1113. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/examples/JsonFilterExample/JsonFilterExample.ino +64 -0
  1114. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/examples/JsonGeneratorExample/JsonGeneratorExample.ino +65 -0
  1115. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/examples/JsonHttpClient/JsonHttpClient.ino +125 -0
  1116. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/examples/JsonParserExample/JsonParserExample.ino +65 -0
  1117. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/examples/JsonServer/JsonServer.ino +118 -0
  1118. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/examples/JsonUdpBeacon/JsonUdpBeacon.ino +106 -0
  1119. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/examples/MsgPackParser/MsgPackParser.ino +61 -0
  1120. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/examples/ProgmemExample/ProgmemExample.ino +63 -0
  1121. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/examples/StringExample/StringExample.ino +76 -0
  1122. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/library.json +23 -0
  1123. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/library.properties +11 -0
  1124. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Array/ArrayData.hpp +66 -0
  1125. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Array/ArrayImpl.hpp +79 -0
  1126. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Array/ElementProxy.hpp +75 -0
  1127. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Array/JsonArray.hpp +219 -0
  1128. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Array/JsonArrayConst.hpp +133 -0
  1129. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Array/JsonArrayIterator.hpp +96 -0
  1130. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Array/Utilities.hpp +112 -0
  1131. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Collection/CollectionData.hpp +122 -0
  1132. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Collection/CollectionImpl.hpp +137 -0
  1133. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Configuration.hpp +285 -0
  1134. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/DeserializationError.hpp +106 -0
  1135. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/DeserializationOptions.hpp +35 -0
  1136. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/Filter.hpp +77 -0
  1137. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/NestingLimit.hpp +32 -0
  1138. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/Reader.hpp +74 -0
  1139. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStreamReader.hpp +30 -0
  1140. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStringReader.hpp +18 -0
  1141. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/Readers/FlashReader.hpp +56 -0
  1142. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/Readers/IteratorReader.hpp +42 -0
  1143. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/Readers/RamReader.hpp +49 -0
  1144. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/Readers/StdStreamReader.hpp +29 -0
  1145. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/Readers/VariantReader.hpp +19 -0
  1146. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/deserialize.hpp +79 -0
  1147. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Document/JsonDocument.hpp +426 -0
  1148. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Json/EscapeSequence.hpp +40 -0
  1149. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Json/JsonDeserializer.hpp +720 -0
  1150. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Json/JsonSerializer.hpp +165 -0
  1151. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Json/Latch.hpp +56 -0
  1152. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Json/PrettyJsonSerializer.hpp +110 -0
  1153. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Json/TextFormatter.hpp +177 -0
  1154. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Json/Utf16.hpp +67 -0
  1155. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Json/Utf8.hpp +46 -0
  1156. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Memory/Alignment.hpp +60 -0
  1157. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Memory/Allocator.hpp +49 -0
  1158. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Memory/MemoryPool.hpp +110 -0
  1159. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Memory/MemoryPoolList.hpp +214 -0
  1160. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Memory/ResourceManager.hpp +131 -0
  1161. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Memory/ResourceManagerImpl.hpp +52 -0
  1162. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Memory/StringBuffer.hpp +79 -0
  1163. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Memory/StringBuilder.hpp +88 -0
  1164. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Memory/StringNode.hpp +75 -0
  1165. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Memory/StringPool.hpp +102 -0
  1166. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Misc/SerializedValue.hpp +71 -0
  1167. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackBinary.hpp +97 -0
  1168. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackDeserializer.hpp +487 -0
  1169. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackExtension.hpp +120 -0
  1170. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackSerializer.hpp +244 -0
  1171. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/MsgPack/endianness.hpp +46 -0
  1172. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/MsgPack/ieee754.hpp +18 -0
  1173. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Namespace.hpp +42 -0
  1174. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Numbers/FloatParts.hpp +95 -0
  1175. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Numbers/FloatTraits.hpp +212 -0
  1176. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Numbers/JsonFloat.hpp +18 -0
  1177. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Numbers/JsonInteger.hpp +28 -0
  1178. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Numbers/arithmeticCompare.hpp +116 -0
  1179. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Numbers/convertNumber.hpp +145 -0
  1180. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Numbers/parseNumber.hpp +238 -0
  1181. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Object/JsonObject.hpp +245 -0
  1182. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Object/JsonObjectConst.hpp +166 -0
  1183. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Object/JsonObjectIterator.hpp +83 -0
  1184. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Object/JsonPair.hpp +70 -0
  1185. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Object/MemberProxy.hpp +77 -0
  1186. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Object/ObjectData.hpp +70 -0
  1187. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Object/ObjectImpl.hpp +92 -0
  1188. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/alias_cast.hpp +30 -0
  1189. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/assert.hpp +14 -0
  1190. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/attributes.hpp +45 -0
  1191. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/ctype.hpp +21 -0
  1192. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/integer.hpp +34 -0
  1193. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/limits.hpp +45 -0
  1194. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/math.hpp +27 -0
  1195. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/mpl/max.hpp +27 -0
  1196. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/pgmspace.hpp +144 -0
  1197. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/pgmspace_generic.hpp +67 -0
  1198. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/preprocessor.hpp +33 -0
  1199. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/conditional.hpp +25 -0
  1200. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/decay.hpp +33 -0
  1201. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/declval.hpp +14 -0
  1202. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/enable_if.hpp +23 -0
  1203. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/function_traits.hpp +27 -0
  1204. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/integral_constant.hpp +22 -0
  1205. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_array.hpp +22 -0
  1206. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_base_of.hpp +27 -0
  1207. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_class.hpp +23 -0
  1208. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_const.hpp +18 -0
  1209. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_convertible.hpp +46 -0
  1210. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_enum.hpp +22 -0
  1211. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_floating_point.hpp +19 -0
  1212. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_integral.hpp +32 -0
  1213. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_pointer.hpp +17 -0
  1214. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_same.hpp +18 -0
  1215. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_signed.hpp +26 -0
  1216. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_unsigned.hpp +24 -0
  1217. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/make_unsigned.hpp +44 -0
  1218. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/remove_const.hpp +24 -0
  1219. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/remove_cv.hpp +31 -0
  1220. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/remove_reference.hpp +24 -0
  1221. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/type_identity.hpp +16 -0
  1222. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/void_t.hpp +20 -0
  1223. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits.hpp +27 -0
  1224. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/utility.hpp +33 -0
  1225. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Serialization/CountingDecorator.hpp +33 -0
  1226. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Serialization/Writer.hpp +47 -0
  1227. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Serialization/Writers/ArduinoStringWriter.hpp +55 -0
  1228. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Serialization/Writers/DummyWriter.hpp +22 -0
  1229. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Serialization/Writers/PrintWriter.hpp +29 -0
  1230. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Serialization/Writers/StaticStringWriter.hpp +36 -0
  1231. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Serialization/Writers/StdStreamWriter.hpp +32 -0
  1232. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Serialization/Writers/StdStringWriter.hpp +42 -0
  1233. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Serialization/measure.hpp +20 -0
  1234. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Serialization/serialize.hpp +50 -0
  1235. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/Adapters/FlashString.hpp +93 -0
  1236. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/Adapters/RamString.hpp +118 -0
  1237. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/Adapters/StringObject.hpp +48 -0
  1238. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/IsString.hpp +19 -0
  1239. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/JsonString.hpp +100 -0
  1240. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/StringAdapter.hpp +47 -0
  1241. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/StringAdapters.hpp +72 -0
  1242. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/StringTraits.hpp +73 -0
  1243. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/Converter.hpp +23 -0
  1244. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/ConverterImpl.hpp +406 -0
  1245. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/JsonVariant.hpp +78 -0
  1246. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/JsonVariantConst.hpp +197 -0
  1247. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/JsonVariantCopier.hpp +34 -0
  1248. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/JsonVariantVisitor.hpp +61 -0
  1249. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantAttorney.hpp +35 -0
  1250. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantCompare.hpp +211 -0
  1251. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantContent.hpp +82 -0
  1252. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantData.hpp +609 -0
  1253. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantDataVisitor.hpp +24 -0
  1254. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantImpl.hpp +146 -0
  1255. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantOperators.hpp +188 -0
  1256. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantRefBase.hpp +313 -0
  1257. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantRefBaseImpl.hpp +175 -0
  1258. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantTag.hpp +16 -0
  1259. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantTo.hpp +34 -0
  1260. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/compatibility.hpp +144 -0
  1261. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/version.hpp +11 -0
  1262. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson.h +17 -0
  1263. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson.hpp +65 -0
  1264. package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/CMakeLists.txt +91 -0
  1265. package/examples/basic/.pio/libdeps/esp8266/ESPAsyncTCP/.github/scripts/install-arduino-core-esp8266.sh +29 -0
  1266. package/examples/basic/.pio/libdeps/esp8266/ESPAsyncTCP/.github/scripts/install-arduino-ide.sh +220 -0
  1267. package/examples/basic/.pio/libdeps/esp8266/ESPAsyncTCP/.github/scripts/install-platformio.sh +133 -0
  1268. package/examples/basic/.pio/libdeps/esp8266/ESPAsyncTCP/.github/scripts/on-push.sh +64 -0
  1269. package/examples/basic/.pio/libdeps/esp8266/ESPAsyncTCP/.github/stale.yml +31 -0
  1270. package/examples/basic/.pio/libdeps/esp8266/ESPAsyncTCP/.github/workflows/push.yml +30 -0
  1271. package/examples/basic/.pio/libdeps/esp8266/ESPAsyncTCP/.piopm +1 -0
  1272. package/examples/basic/.pio/libdeps/esp8266/ESPAsyncTCP/LICENSE.txt +165 -0
  1273. package/examples/basic/.pio/libdeps/esp8266/ESPAsyncTCP/README.md +43 -0
  1274. package/examples/basic/.pio/libdeps/esp8266/ESPAsyncTCP/examples/ClientServer/Client/Client.ino +62 -0
  1275. package/examples/basic/.pio/libdeps/esp8266/ESPAsyncTCP/examples/ClientServer/Client/config.h +23 -0
  1276. package/examples/basic/.pio/libdeps/esp8266/ESPAsyncTCP/examples/ClientServer/Server/Server.ino +73 -0
  1277. package/examples/basic/.pio/libdeps/esp8266/ESPAsyncTCP/examples/ClientServer/Server/config.h +23 -0
  1278. package/examples/basic/.pio/libdeps/esp8266/ESPAsyncTCP/examples/SyncClient/.esp31b.skip +0 -0
  1279. package/examples/basic/.pio/libdeps/esp8266/ESPAsyncTCP/examples/SyncClient/SyncClient.ino +54 -0
  1280. package/examples/basic/.pio/libdeps/esp8266/ESPAsyncTCP/library.json +19 -0
  1281. package/examples/basic/.pio/libdeps/esp8266/ESPAsyncTCP/library.properties +10 -0
  1282. package/examples/basic/.pio/libdeps/esp8266/ESPAsyncTCP/src/AsyncPrinter.cpp +214 -0
  1283. package/examples/basic/.pio/libdeps/esp8266/ESPAsyncTCP/src/AsyncPrinter.h +73 -0
  1284. package/examples/basic/.pio/libdeps/esp8266/ESPAsyncTCP/src/DebugPrintMacros.h +112 -0
  1285. package/examples/basic/.pio/libdeps/esp8266/ESPAsyncTCP/src/ESPAsyncTCP.cpp +1406 -0
  1286. package/examples/basic/.pio/libdeps/esp8266/ESPAsyncTCP/src/ESPAsyncTCP.h +324 -0
  1287. package/examples/basic/.pio/libdeps/esp8266/ESPAsyncTCP/src/ESPAsyncTCPbuffer.cpp +555 -0
  1288. package/examples/basic/.pio/libdeps/esp8266/ESPAsyncTCP/src/ESPAsyncTCPbuffer.h +118 -0
  1289. package/examples/basic/.pio/libdeps/esp8266/ESPAsyncTCP/src/SyncClient.cpp +414 -0
  1290. package/examples/basic/.pio/libdeps/esp8266/ESPAsyncTCP/src/SyncClient.h +109 -0
  1291. package/examples/basic/.pio/libdeps/esp8266/ESPAsyncTCP/src/async_config.h +42 -0
  1292. package/examples/basic/.pio/libdeps/esp8266/ESPAsyncTCP/src/tcp_axtls.c +613 -0
  1293. package/examples/basic/.pio/libdeps/esp8266/ESPAsyncTCP/src/tcp_axtls.h +98 -0
  1294. package/examples/basic/.pio/libdeps/esp8266/ESPAsyncTCP/ssl/gen_server_cert.sh +36 -0
  1295. package/examples/basic/.pio/libdeps/esp8266/ESPAsyncTCP/ssl/server.cer +0 -0
  1296. package/examples/basic/.pio/libdeps/esp8266/ESPAsyncTCP/ssl/server.key +0 -0
  1297. package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/.github/FUNDING.yml +1 -0
  1298. package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/.github/workflows/doxygen.yml +310 -0
  1299. package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/.github/workflows/main.yml +309 -0
  1300. package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/.github/workflows/test.yml +523 -0
  1301. package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/.piopm +1 -0
  1302. package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/LICENSE.txt +27 -0
  1303. package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/README.md +157 -0
  1304. package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example00_Blink/Scheduler_example00_Blink.ino +303 -0
  1305. package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example00_Blink_Namespace/Scheduler_example00_Blink_Namespace.ino +302 -0
  1306. package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example01/Scheduler_example01.ino +84 -0
  1307. package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example02/Scheduler_example02.ino +78 -0
  1308. package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example03/Scheduler_example03.ino +80 -0
  1309. package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example04_StatusRequest/Scheduler_example04_StatusRequest.ino +90 -0
  1310. package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example05_StatusRequest/Scheduler_example05_StatusRequest.ino +181 -0
  1311. package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example06_IDLE/Scheduler_example06_IDLE.ino +117 -0
  1312. package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example07_WDT/Scheduler_example07_WDT.ino +133 -0
  1313. package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example08_LTS/Scheduler_example08_LTS.ino +147 -0
  1314. package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example09_TimeCritical/Scheduler_example09_TimeCritical.ino +57 -0
  1315. package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example10_Benchmark/Scheduler_example10_Benchmark.ino +106 -0
  1316. package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example11_Priority/Scheduler_example11_Priority.ino +105 -0
  1317. package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example12_Priority/Scheduler_example12_Priority.ino +136 -0
  1318. package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example13_Micros/Scheduler_example13_Micros.ino +71 -0
  1319. package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example14_Yield/Scheduler_example14_Yield.ino +339 -0
  1320. package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example15_STDFunction/Scheduler_example15_STDFunction.ino +53 -0
  1321. package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example16_Multitab/Scheduler_example16_Multitab.ino +18 -0
  1322. package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example16_Multitab/file1.cpp +31 -0
  1323. package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example16_Multitab/file2.cpp +55 -0
  1324. package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example16_Multitab/header.hpp +15 -0
  1325. package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example16_Multitab/ts.cpp +20 -0
  1326. package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example17_Timeout/Scheduler_example17_Timeout.ino +90 -0
  1327. package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example18_StatusRequest_LTS_WDT_Timeout/Scheduler_example18_StatusRequest_LTS_WDT_Timeout.ino +172 -0
  1328. package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example19_Dynamic_Tasks/Scheduler_example19_Dynamic_Tasks.ino +137 -0
  1329. package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example19_Dynamic_Tasks_SelfDestruct/Scheduler_example19_Dynamic_Tasks_SelfDestruct.ino +130 -0
  1330. package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example19_Dynamic_Tasks_stdQueue/Scheduler_example19_Dynamic_Tasks_stdQueue.ino +137 -0
  1331. package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example20_StatusRequest_LTS_WDT_Timeout_Object/Scheduler_example20_StatusRequest_LTS_WDT_Timeout_Object.ino +185 -0
  1332. package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example20_StatusRequest_LTS_WDT_Timeout_Object/SuperSensor.cpp +36 -0
  1333. package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example20_StatusRequest_LTS_WDT_Timeout_Object/SuperSensor.h +25 -0
  1334. package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example21_OO_Callbacks/Calculator.cpp +66 -0
  1335. package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example21_OO_Callbacks/Calculator.h +34 -0
  1336. package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example21_OO_Callbacks/Scheduler_example21_OO_Callbacks.ino +76 -0
  1337. package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example21_OO_Callbacks/SuperSensor.cpp +83 -0
  1338. package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example21_OO_Callbacks/SuperSensor.h +44 -0
  1339. package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example21_OO_Callbacks/Ticker.cpp +21 -0
  1340. package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example21_OO_Callbacks/Ticker.h +28 -0
  1341. package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example23_IDLE_Callback/Scheduler_example23_IDLE_Callback.ino +157 -0
  1342. package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example24_CPU_LOAD/Scheduler_example24_CPU_LOAD.ino +87 -0
  1343. package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example25_SCHEDULER_CHAIN/Scheduler_example25_SCHEDULER_CHAIN.ino +127 -0
  1344. package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example26_SCHEDULING_OPTIONS/Scheduler_example26_SCHEDULING_OPTIONS.ino +181 -0
  1345. package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example27_PlatformIO/include/README +39 -0
  1346. package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example27_PlatformIO/include/led.h +12 -0
  1347. package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example27_PlatformIO/include/main.h +25 -0
  1348. package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example27_PlatformIO/lib/README +46 -0
  1349. package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example27_PlatformIO/platformio.ini +37 -0
  1350. package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example27_PlatformIO/src/led.cpp +11 -0
  1351. package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example27_PlatformIO/src/main.cpp +254 -0
  1352. package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example27_PlatformIO/test/README +11 -0
  1353. package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example28_Tickless/Scheduler_example28_Tickless.ino +105 -0
  1354. package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example29_NonArduino/include/README +39 -0
  1355. package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example29_NonArduino/include/led.h +12 -0
  1356. package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example29_NonArduino/include/main.h +27 -0
  1357. package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example29_NonArduino/lib/README +46 -0
  1358. package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example29_NonArduino/platformio.ini +38 -0
  1359. package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example29_NonArduino/src/led.cpp +13 -0
  1360. package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example29_NonArduino/src/main.cpp +267 -0
  1361. package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example29_NonArduino/test/README +11 -0
  1362. package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example30_THREAD_SAFE/README.md +232 -0
  1363. package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example30_THREAD_SAFE/platformio.ini +44 -0
  1364. package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example30_THREAD_SAFE/src/main.cpp +310 -0
  1365. package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_template/Scheduler_template.ino +166 -0
  1366. package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/keywords.txt +161 -0
  1367. package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/library.json +22 -0
  1368. package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/library.properties +9 -0
  1369. package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/src/TScheduler.hpp +29 -0
  1370. package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/src/TSchedulerDeclarations.hpp +29 -0
  1371. package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/src/TaskScheduler.cpp +3 -0
  1372. package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/src/TaskScheduler.h +1811 -0
  1373. package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/src/TaskSchedulerDeclarations.h +3096 -0
  1374. package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/src/TaskSchedulerSleepMethods.h +399 -0
  1375. package/examples/basic/.pio/libdeps/esp8266/integrity.dat +3 -0
  1376. package/examples/basic/basic.ino +66 -66
  1377. package/examples/basic/platformio.ini +25 -25
  1378. package/examples/bridge/bridge.ino +51 -51
  1379. package/examples/bridge/mesh_event_publisher.hpp +253 -253
  1380. package/examples/bridge/mesh_topology_reporter.hpp +303 -303
  1381. package/examples/bridge/mqtt_command_bridge.hpp +459 -459
  1382. package/examples/bridge/mqtt_status_bridge.hpp +519 -519
  1383. package/examples/bridge/platformio.ini +25 -25
  1384. package/examples/echoNode/echoNode.ino +33 -33
  1385. package/examples/echoNode/platformio.ini +25 -25
  1386. package/examples/logClient/logClient.ino +109 -109
  1387. package/examples/logClient/platformio.ini +25 -25
  1388. package/examples/logServer/logServer.ino +81 -81
  1389. package/examples/logServer/platformio.ini +25 -25
  1390. package/examples/meshCommandNode/.pio/build/esp32/.sconsign311.dblite +0 -0
  1391. package/examples/meshCommandNode/.pio/build/esp32/bootloader.bin +0 -0
  1392. package/examples/meshCommandNode/.pio/build/esp32/lib327/TaskScheduler/TaskScheduler.cpp.d +2 -0
  1393. package/examples/meshCommandNode/.pio/build/esp32/lib327/TaskScheduler/TaskScheduler.cpp.o +0 -0
  1394. package/examples/meshCommandNode/.pio/build/esp32/lib373/LittleFS/LittleFS.cpp.d +142 -0
  1395. package/examples/meshCommandNode/.pio/build/esp32/lib373/LittleFS/LittleFS.cpp.o +0 -0
  1396. package/examples/meshCommandNode/.pio/build/esp32/lib4f2/FS/FS.cpp.d +138 -0
  1397. package/examples/meshCommandNode/.pio/build/esp32/lib4f2/FS/FS.cpp.o +0 -0
  1398. package/examples/meshCommandNode/.pio/build/esp32/lib4f2/FS/vfs_api.cpp.d +139 -0
  1399. package/examples/meshCommandNode/.pio/build/esp32/lib4f2/FS/vfs_api.cpp.o +0 -0
  1400. package/examples/meshCommandNode/.pio/build/esp32/lib71a/WiFi/WiFi.cpp.d +203 -0
  1401. package/examples/meshCommandNode/.pio/build/esp32/lib71a/WiFi/WiFi.cpp.o +0 -0
  1402. package/examples/meshCommandNode/.pio/build/esp32/lib71a/WiFi/WiFiAP.cpp.d +204 -0
  1403. package/examples/meshCommandNode/.pio/build/esp32/lib71a/WiFi/WiFiAP.cpp.o +0 -0
  1404. package/examples/meshCommandNode/.pio/build/esp32/lib71a/WiFi/WiFiClient.cpp.d +209 -0
  1405. package/examples/meshCommandNode/.pio/build/esp32/lib71a/WiFi/WiFiClient.cpp.o +0 -0
  1406. package/examples/meshCommandNode/.pio/build/esp32/lib71a/WiFi/WiFiGeneric.cpp.d +206 -0
  1407. package/examples/meshCommandNode/.pio/build/esp32/lib71a/WiFi/WiFiGeneric.cpp.o +0 -0
  1408. package/examples/meshCommandNode/.pio/build/esp32/lib71a/WiFi/WiFiMulti.cpp.d +199 -0
  1409. package/examples/meshCommandNode/.pio/build/esp32/lib71a/WiFi/WiFiMulti.cpp.o +0 -0
  1410. package/examples/meshCommandNode/.pio/build/esp32/lib71a/WiFi/WiFiSTA.cpp.d +206 -0
  1411. package/examples/meshCommandNode/.pio/build/esp32/lib71a/WiFi/WiFiSTA.cpp.o +0 -0
  1412. package/examples/meshCommandNode/.pio/build/esp32/lib71a/WiFi/WiFiScan.cpp.d +204 -0
  1413. package/examples/meshCommandNode/.pio/build/esp32/lib71a/WiFi/WiFiScan.cpp.o +0 -0
  1414. package/examples/meshCommandNode/.pio/build/esp32/lib71a/WiFi/WiFiServer.cpp.d +172 -0
  1415. package/examples/meshCommandNode/.pio/build/esp32/lib71a/WiFi/WiFiServer.cpp.o +0 -0
  1416. package/examples/meshCommandNode/.pio/build/esp32/lib71a/WiFi/WiFiUdp.cpp.d +171 -0
  1417. package/examples/meshCommandNode/.pio/build/esp32/lib71a/WiFi/WiFiUdp.cpp.o +0 -0
  1418. package/examples/meshCommandNode/.pio/build/esp32/lib97a/SPIFFS/SPIFFS.cpp.d +142 -0
  1419. package/examples/meshCommandNode/.pio/build/esp32/lib97a/SPIFFS/SPIFFS.cpp.o +0 -0
  1420. package/examples/meshCommandNode/.pio/build/esp32/libf48/Update/HttpsOTAUpdate.cpp.d +120 -0
  1421. package/examples/meshCommandNode/.pio/build/esp32/libf48/Update/HttpsOTAUpdate.cpp.o +0 -0
  1422. package/examples/meshCommandNode/.pio/build/esp32/libf48/Update/Updater.cpp.d +144 -0
  1423. package/examples/meshCommandNode/.pio/build/esp32/libf48/Update/Updater.cpp.o +0 -0
  1424. package/examples/meshCommandNode/.pio/build/esp32/partitions.bin +0 -0
  1425. package/examples/meshCommandNode/.pio/build/esp32/src/meshCommandNode.ino.cpp.d +238 -0
  1426. package/examples/meshCommandNode/.pio/build/esp32/tmpkxz_1u4u.tmp +1 -0
  1427. package/examples/meshCommandNode/.pio/build/esp32/tmpo9qt_9vc.tmp +1 -0
  1428. package/examples/meshCommandNode/.pio/build/esp32/tmprrmligyc.tmp +1 -0
  1429. package/examples/meshCommandNode/.pio/build/esp32/tmpt8s9ha45.tmp +1 -0
  1430. package/examples/meshCommandNode/.pio/build/project.checksum +1 -0
  1431. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/.piopm +1 -0
  1432. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/ArduinoJson.h +5 -0
  1433. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/LICENSE.txt +10 -0
  1434. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/README.md +153 -0
  1435. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/examples/JsonConfigFile/JsonConfigFile.ino +152 -0
  1436. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/examples/JsonFilterExample/JsonFilterExample.ino +64 -0
  1437. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/examples/JsonGeneratorExample/JsonGeneratorExample.ino +65 -0
  1438. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/examples/JsonHttpClient/JsonHttpClient.ino +125 -0
  1439. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/examples/JsonParserExample/JsonParserExample.ino +65 -0
  1440. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/examples/JsonServer/JsonServer.ino +118 -0
  1441. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/examples/JsonUdpBeacon/JsonUdpBeacon.ino +106 -0
  1442. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/examples/MsgPackParser/MsgPackParser.ino +61 -0
  1443. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/examples/ProgmemExample/ProgmemExample.ino +63 -0
  1444. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/examples/StringExample/StringExample.ino +76 -0
  1445. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/library.json +23 -0
  1446. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/library.properties +11 -0
  1447. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Array/ArrayData.hpp +66 -0
  1448. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Array/ArrayImpl.hpp +79 -0
  1449. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Array/ElementProxy.hpp +75 -0
  1450. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Array/JsonArray.hpp +219 -0
  1451. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Array/JsonArrayConst.hpp +133 -0
  1452. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Array/JsonArrayIterator.hpp +96 -0
  1453. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Array/Utilities.hpp +112 -0
  1454. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Collection/CollectionData.hpp +122 -0
  1455. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Collection/CollectionImpl.hpp +137 -0
  1456. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Configuration.hpp +285 -0
  1457. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Deserialization/DeserializationError.hpp +106 -0
  1458. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Deserialization/DeserializationOptions.hpp +35 -0
  1459. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Deserialization/Filter.hpp +77 -0
  1460. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Deserialization/NestingLimit.hpp +32 -0
  1461. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Deserialization/Reader.hpp +74 -0
  1462. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStreamReader.hpp +30 -0
  1463. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStringReader.hpp +18 -0
  1464. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Deserialization/Readers/FlashReader.hpp +56 -0
  1465. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Deserialization/Readers/IteratorReader.hpp +42 -0
  1466. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Deserialization/Readers/RamReader.hpp +49 -0
  1467. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Deserialization/Readers/StdStreamReader.hpp +29 -0
  1468. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Deserialization/Readers/VariantReader.hpp +19 -0
  1469. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Deserialization/deserialize.hpp +79 -0
  1470. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Document/JsonDocument.hpp +426 -0
  1471. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Json/EscapeSequence.hpp +40 -0
  1472. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Json/JsonDeserializer.hpp +720 -0
  1473. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Json/JsonSerializer.hpp +165 -0
  1474. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Json/Latch.hpp +56 -0
  1475. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Json/PrettyJsonSerializer.hpp +110 -0
  1476. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Json/TextFormatter.hpp +177 -0
  1477. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Json/Utf16.hpp +67 -0
  1478. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Json/Utf8.hpp +46 -0
  1479. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Memory/Alignment.hpp +60 -0
  1480. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Memory/Allocator.hpp +49 -0
  1481. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Memory/MemoryPool.hpp +110 -0
  1482. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Memory/MemoryPoolList.hpp +214 -0
  1483. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Memory/ResourceManager.hpp +131 -0
  1484. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Memory/ResourceManagerImpl.hpp +52 -0
  1485. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Memory/StringBuffer.hpp +79 -0
  1486. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Memory/StringBuilder.hpp +88 -0
  1487. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Memory/StringNode.hpp +75 -0
  1488. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Memory/StringPool.hpp +102 -0
  1489. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Misc/SerializedValue.hpp +71 -0
  1490. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackBinary.hpp +97 -0
  1491. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackDeserializer.hpp +487 -0
  1492. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackExtension.hpp +120 -0
  1493. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackSerializer.hpp +244 -0
  1494. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/MsgPack/endianness.hpp +46 -0
  1495. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/MsgPack/ieee754.hpp +18 -0
  1496. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Namespace.hpp +42 -0
  1497. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Numbers/FloatParts.hpp +95 -0
  1498. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Numbers/FloatTraits.hpp +212 -0
  1499. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Numbers/JsonFloat.hpp +18 -0
  1500. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Numbers/JsonInteger.hpp +28 -0
  1501. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Numbers/arithmeticCompare.hpp +116 -0
  1502. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Numbers/convertNumber.hpp +145 -0
  1503. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Numbers/parseNumber.hpp +238 -0
  1504. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Object/JsonObject.hpp +245 -0
  1505. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Object/JsonObjectConst.hpp +166 -0
  1506. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Object/JsonObjectIterator.hpp +83 -0
  1507. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Object/JsonPair.hpp +70 -0
  1508. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Object/MemberProxy.hpp +77 -0
  1509. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Object/ObjectData.hpp +70 -0
  1510. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Object/ObjectImpl.hpp +92 -0
  1511. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/alias_cast.hpp +30 -0
  1512. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/assert.hpp +14 -0
  1513. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/attributes.hpp +45 -0
  1514. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/ctype.hpp +21 -0
  1515. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/integer.hpp +34 -0
  1516. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/limits.hpp +45 -0
  1517. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/math.hpp +27 -0
  1518. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/mpl/max.hpp +27 -0
  1519. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/pgmspace.hpp +144 -0
  1520. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/pgmspace_generic.hpp +67 -0
  1521. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/preprocessor.hpp +33 -0
  1522. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/conditional.hpp +25 -0
  1523. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/decay.hpp +33 -0
  1524. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/declval.hpp +14 -0
  1525. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/enable_if.hpp +23 -0
  1526. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/function_traits.hpp +27 -0
  1527. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/integral_constant.hpp +22 -0
  1528. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_array.hpp +22 -0
  1529. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_base_of.hpp +27 -0
  1530. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_class.hpp +23 -0
  1531. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_const.hpp +18 -0
  1532. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_convertible.hpp +46 -0
  1533. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_enum.hpp +22 -0
  1534. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_floating_point.hpp +19 -0
  1535. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_integral.hpp +32 -0
  1536. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_pointer.hpp +17 -0
  1537. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_same.hpp +18 -0
  1538. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_signed.hpp +26 -0
  1539. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_unsigned.hpp +24 -0
  1540. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/make_unsigned.hpp +44 -0
  1541. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/remove_const.hpp +24 -0
  1542. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/remove_cv.hpp +31 -0
  1543. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/remove_reference.hpp +24 -0
  1544. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/type_identity.hpp +16 -0
  1545. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/void_t.hpp +20 -0
  1546. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits.hpp +27 -0
  1547. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/utility.hpp +33 -0
  1548. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Serialization/CountingDecorator.hpp +33 -0
  1549. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Serialization/Writer.hpp +47 -0
  1550. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Serialization/Writers/ArduinoStringWriter.hpp +55 -0
  1551. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Serialization/Writers/DummyWriter.hpp +22 -0
  1552. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Serialization/Writers/PrintWriter.hpp +29 -0
  1553. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Serialization/Writers/StaticStringWriter.hpp +36 -0
  1554. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Serialization/Writers/StdStreamWriter.hpp +32 -0
  1555. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Serialization/Writers/StdStringWriter.hpp +42 -0
  1556. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Serialization/measure.hpp +20 -0
  1557. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Serialization/serialize.hpp +50 -0
  1558. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Strings/Adapters/FlashString.hpp +93 -0
  1559. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Strings/Adapters/RamString.hpp +118 -0
  1560. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Strings/Adapters/StringObject.hpp +48 -0
  1561. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Strings/IsString.hpp +19 -0
  1562. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Strings/JsonString.hpp +100 -0
  1563. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Strings/StringAdapter.hpp +47 -0
  1564. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Strings/StringAdapters.hpp +72 -0
  1565. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Strings/StringTraits.hpp +73 -0
  1566. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/Converter.hpp +23 -0
  1567. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/ConverterImpl.hpp +406 -0
  1568. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/JsonVariant.hpp +78 -0
  1569. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/JsonVariantConst.hpp +197 -0
  1570. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/JsonVariantCopier.hpp +34 -0
  1571. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/JsonVariantVisitor.hpp +61 -0
  1572. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/VariantAttorney.hpp +35 -0
  1573. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/VariantCompare.hpp +211 -0
  1574. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/VariantContent.hpp +82 -0
  1575. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/VariantData.hpp +609 -0
  1576. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/VariantDataVisitor.hpp +24 -0
  1577. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/VariantImpl.hpp +146 -0
  1578. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/VariantOperators.hpp +188 -0
  1579. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/VariantRefBase.hpp +313 -0
  1580. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/VariantRefBaseImpl.hpp +175 -0
  1581. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/VariantTag.hpp +16 -0
  1582. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/VariantTo.hpp +34 -0
  1583. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/compatibility.hpp +144 -0
  1584. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/version.hpp +11 -0
  1585. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson.h +17 -0
  1586. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson.hpp +65 -0
  1587. package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/CMakeLists.txt +91 -0
  1588. package/examples/meshCommandNode/.pio/libdeps/esp32/AsyncTCP/.piopm +1 -0
  1589. package/examples/meshCommandNode/.pio/libdeps/esp32/AsyncTCP/LICENSE +165 -0
  1590. package/examples/meshCommandNode/.pio/libdeps/esp32/AsyncTCP/README.md +62 -0
  1591. package/examples/meshCommandNode/.pio/libdeps/esp32/AsyncTCP/examples/Client/Client.ino +81 -0
  1592. package/examples/meshCommandNode/.pio/libdeps/esp32/AsyncTCP/library.json +35 -0
  1593. package/examples/meshCommandNode/.pio/libdeps/esp32/AsyncTCP/library.properties +10 -0
  1594. package/examples/meshCommandNode/.pio/libdeps/esp32/AsyncTCP/src/AsyncTCP.cpp +1661 -0
  1595. package/examples/meshCommandNode/.pio/libdeps/esp32/AsyncTCP/src/AsyncTCP.h +344 -0
  1596. package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/.github/FUNDING.yml +1 -0
  1597. package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/.github/workflows/doxygen.yml +310 -0
  1598. package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/.github/workflows/main.yml +309 -0
  1599. package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/.github/workflows/test.yml +523 -0
  1600. package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/.piopm +1 -0
  1601. package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/LICENSE.txt +27 -0
  1602. package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/README.md +157 -0
  1603. package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example00_Blink/Scheduler_example00_Blink.ino +303 -0
  1604. package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example00_Blink_Namespace/Scheduler_example00_Blink_Namespace.ino +302 -0
  1605. package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example01/Scheduler_example01.ino +84 -0
  1606. package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example02/Scheduler_example02.ino +78 -0
  1607. package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example03/Scheduler_example03.ino +80 -0
  1608. package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example04_StatusRequest/Scheduler_example04_StatusRequest.ino +90 -0
  1609. package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example05_StatusRequest/Scheduler_example05_StatusRequest.ino +181 -0
  1610. package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example06_IDLE/Scheduler_example06_IDLE.ino +117 -0
  1611. package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example07_WDT/Scheduler_example07_WDT.ino +133 -0
  1612. package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example08_LTS/Scheduler_example08_LTS.ino +147 -0
  1613. package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example09_TimeCritical/Scheduler_example09_TimeCritical.ino +57 -0
  1614. package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example10_Benchmark/Scheduler_example10_Benchmark.ino +106 -0
  1615. package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example11_Priority/Scheduler_example11_Priority.ino +105 -0
  1616. package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example12_Priority/Scheduler_example12_Priority.ino +136 -0
  1617. package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example13_Micros/Scheduler_example13_Micros.ino +71 -0
  1618. package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example14_Yield/Scheduler_example14_Yield.ino +339 -0
  1619. package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example15_STDFunction/Scheduler_example15_STDFunction.ino +53 -0
  1620. package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example16_Multitab/Scheduler_example16_Multitab.ino +18 -0
  1621. package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example16_Multitab/file1.cpp +31 -0
  1622. package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example16_Multitab/file2.cpp +55 -0
  1623. package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example16_Multitab/header.hpp +15 -0
  1624. package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example16_Multitab/ts.cpp +20 -0
  1625. package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example17_Timeout/Scheduler_example17_Timeout.ino +90 -0
  1626. package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example18_StatusRequest_LTS_WDT_Timeout/Scheduler_example18_StatusRequest_LTS_WDT_Timeout.ino +172 -0
  1627. package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example19_Dynamic_Tasks/Scheduler_example19_Dynamic_Tasks.ino +137 -0
  1628. package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example19_Dynamic_Tasks_SelfDestruct/Scheduler_example19_Dynamic_Tasks_SelfDestruct.ino +130 -0
  1629. package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example19_Dynamic_Tasks_stdQueue/Scheduler_example19_Dynamic_Tasks_stdQueue.ino +137 -0
  1630. package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example20_StatusRequest_LTS_WDT_Timeout_Object/Scheduler_example20_StatusRequest_LTS_WDT_Timeout_Object.ino +185 -0
  1631. package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example20_StatusRequest_LTS_WDT_Timeout_Object/SuperSensor.cpp +36 -0
  1632. package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example20_StatusRequest_LTS_WDT_Timeout_Object/SuperSensor.h +25 -0
  1633. package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example21_OO_Callbacks/Calculator.cpp +66 -0
  1634. package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example21_OO_Callbacks/Calculator.h +34 -0
  1635. package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example21_OO_Callbacks/Scheduler_example21_OO_Callbacks.ino +76 -0
  1636. package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example21_OO_Callbacks/SuperSensor.cpp +83 -0
  1637. package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example21_OO_Callbacks/SuperSensor.h +44 -0
  1638. package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example21_OO_Callbacks/Ticker.cpp +21 -0
  1639. package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example21_OO_Callbacks/Ticker.h +28 -0
  1640. package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example23_IDLE_Callback/Scheduler_example23_IDLE_Callback.ino +157 -0
  1641. package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example24_CPU_LOAD/Scheduler_example24_CPU_LOAD.ino +87 -0
  1642. package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example25_SCHEDULER_CHAIN/Scheduler_example25_SCHEDULER_CHAIN.ino +127 -0
  1643. package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example26_SCHEDULING_OPTIONS/Scheduler_example26_SCHEDULING_OPTIONS.ino +181 -0
  1644. package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example27_PlatformIO/include/README +39 -0
  1645. package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example27_PlatformIO/include/led.h +12 -0
  1646. package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example27_PlatformIO/include/main.h +25 -0
  1647. package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example27_PlatformIO/lib/README +46 -0
  1648. package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example27_PlatformIO/platformio.ini +37 -0
  1649. package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example27_PlatformIO/src/led.cpp +11 -0
  1650. package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example27_PlatformIO/src/main.cpp +254 -0
  1651. package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example27_PlatformIO/test/README +11 -0
  1652. package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example28_Tickless/Scheduler_example28_Tickless.ino +105 -0
  1653. package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example29_NonArduino/include/README +39 -0
  1654. package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example29_NonArduino/include/led.h +12 -0
  1655. package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example29_NonArduino/include/main.h +27 -0
  1656. package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example29_NonArduino/lib/README +46 -0
  1657. package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example29_NonArduino/platformio.ini +38 -0
  1658. package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example29_NonArduino/src/led.cpp +13 -0
  1659. package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example29_NonArduino/src/main.cpp +267 -0
  1660. package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example29_NonArduino/test/README +11 -0
  1661. package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example30_THREAD_SAFE/README.md +232 -0
  1662. package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example30_THREAD_SAFE/platformio.ini +44 -0
  1663. package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example30_THREAD_SAFE/src/main.cpp +310 -0
  1664. package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_template/Scheduler_template.ino +166 -0
  1665. package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/keywords.txt +161 -0
  1666. package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/library.json +22 -0
  1667. package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/library.properties +9 -0
  1668. package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/src/TScheduler.hpp +29 -0
  1669. package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/src/TSchedulerDeclarations.hpp +29 -0
  1670. package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/src/TaskScheduler.cpp +3 -0
  1671. package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/src/TaskScheduler.h +1811 -0
  1672. package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/src/TaskSchedulerDeclarations.h +3096 -0
  1673. package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/src/TaskSchedulerSleepMethods.h +399 -0
  1674. package/examples/meshCommandNode/.pio/libdeps/esp32/integrity.dat +3 -0
  1675. package/examples/meshCommandNode/alteriom_sensor_package.hpp +234 -234
  1676. package/examples/meshCommandNode/meshCommandNode.ino +263 -263
  1677. package/examples/meshCommandNode/platformio.ini +25 -25
  1678. package/examples/mqttBridge/mqttBridge.ino +118 -118
  1679. package/examples/mqttBridge/platformio.ini +26 -26
  1680. package/examples/mqttCommandBridge/alteriom_sensor_package.hpp +234 -234
  1681. package/examples/mqttCommandBridge/mesh_event_publisher.hpp +253 -253
  1682. package/examples/mqttCommandBridge/mesh_topology_reporter.hpp +303 -303
  1683. package/examples/mqttCommandBridge/mqttCommandBridge.ino +252 -252
  1684. package/examples/mqttCommandBridge/mqtt_command_bridge.hpp +462 -459
  1685. package/examples/mqttCommandBridge/platformio.ini +26 -26
  1686. package/examples/mqttStatusBridge/mqttStatusBridge.ino +216 -216
  1687. package/examples/mqttStatusBridge/mqtt_status_bridge.hpp +522 -522
  1688. package/examples/mqttStatusBridge/platformio.ini +26 -26
  1689. package/examples/mqttTopologyTest/README.md +467 -467
  1690. package/examples/mqttTopologyTest/mqttTopologyTest.ino +748 -748
  1691. package/examples/mqttTopologyTest/platformio.ini +26 -26
  1692. package/examples/namedMesh/namedMesh.ino +97 -97
  1693. package/examples/namedMesh/platformio.ini +25 -25
  1694. package/examples/otaReceiver/otaReceiver.ino +79 -79
  1695. package/examples/otaReceiver/platformio.ini +25 -25
  1696. package/examples/otaSender/otaSender.ino +160 -160
  1697. package/examples/otaSender/platformio.ini +25 -25
  1698. package/examples/startHere/platformio.ini +25 -25
  1699. package/examples/startHere/startHere.ino +159 -159
  1700. package/examples/webServer/platformio.ini +27 -27
  1701. package/examples/webServer/webServer.ino +89 -89
  1702. package/keywords.txt +48 -48
  1703. package/library.json +55 -55
  1704. package/library.properties +10 -10
  1705. package/package.json +86 -86
  1706. package/src/AlteriomPainlessMesh.h +97 -97
  1707. package/src/arduino/wifi.hpp +365 -365
  1708. package/src/boost/asynctcp.hpp +279 -279
  1709. package/src/painlessMesh.h +70 -70
  1710. package/src/painlessMeshSTA.cpp +236 -236
  1711. package/src/painlessMeshSTA.h +58 -58
  1712. package/src/painlessTaskOptions.h +11 -4
  1713. package/src/painlessmesh/base64.hpp +111 -111
  1714. package/src/painlessmesh/buffer.hpp +229 -229
  1715. package/src/painlessmesh/callback.hpp +91 -91
  1716. package/src/painlessmesh/configuration.hpp +77 -77
  1717. package/src/painlessmesh/connection.hpp +192 -192
  1718. package/src/painlessmesh/layout.hpp +188 -188
  1719. package/src/painlessmesh/logger.hpp +158 -158
  1720. package/src/painlessmesh/memory.hpp +119 -119
  1721. package/src/painlessmesh/mesh.hpp +772 -761
  1722. package/src/painlessmesh/metrics.hpp +322 -322
  1723. package/src/painlessmesh/ntp.hpp +263 -263
  1724. package/src/painlessmesh/ota.hpp +582 -582
  1725. package/src/painlessmesh/plugin.hpp +188 -188
  1726. package/src/painlessmesh/protocol.hpp +813 -813
  1727. package/src/painlessmesh/router.hpp +338 -338
  1728. package/src/painlessmesh/scheduler_queue.cpp +77 -0
  1729. package/src/painlessmesh/scheduler_queue.hpp +34 -0
  1730. package/src/painlessmesh/tcp.hpp +71 -71
  1731. package/src/painlessmesh/validation.hpp +238 -238
  1732. package/src/plugin/performance.hpp +214 -214
  1733. package/src/plugin/remote.hpp +64 -64
  1734. package/src/scheduler.cpp +10 -10
  1735. package/src/wifi.cpp +2 -2
@@ -0,0 +1,3096 @@
1
+ /**
2
+ * @file TaskSchedulerDeclarations.h
3
+ * @brief Cooperative multitasking library for Arduino microcontrollers
4
+ * @author Anatoli Arkhipenko
5
+ * @version 4.0.2
6
+ * @date 2015-2025
7
+ * @copyright Copyright (c) 2015-2025 Anatoli Arkhipenko
8
+ *
9
+ * @details A lightweight implementation of cooperative multitasking (task scheduling) supporting:
10
+ * - Periodic task execution, with dynamic execution period in milliseconds (default) or microseconds
11
+ * - Number of iterations (limited or infinite number of iterations)
12
+ * - Execution of tasks in the predefined sequence
13
+ * - Dynamic change of task execution parameters (frequency, number of iterations, callback methods)
14
+ * - Power saving via entering IDLE sleep mode when tasks are not scheduled to run
15
+ * - Support for event-driven task invocation via Status Request object
16
+ * - Support for task IDs and Control Points for error handling and watchdog timer
17
+ * - Support for Local Task Storage pointer (allowing the use of same callback code for multiple tasks)
18
+ * - Support for layered task prioritization
19
+ * - Support for std::functions
20
+ * - Overall task timeout
21
+ * - Static and dynamic callback method binding
22
+ *
23
+ * Scheduling overhead: between 15 and 18 microseconds per scheduling pass (Arduino UNO rev 3 @ 16MHz clock, single scheduler w/o prioritization)
24
+ */
25
+
26
+ #ifndef _TASKSCHEDULERDECLARATIONS_H_
27
+ #define _TASKSCHEDULERDECLARATIONS_H_
28
+
29
+ // ----------------------------------------
30
+ /**
31
+ * @defgroup CompileTimeOptions Compile Time Options
32
+ * @brief Available compile-time configuration options
33
+ *
34
+ * The following defines control library functionality at compile time,
35
+ * and should be used in the main sketch depending on the functionality required.
36
+ * To enable any option, uncomment the corresponding #define in your code.
37
+ *
38
+ * @par _TASK_TIMECRITICAL
39
+ * Enable monitoring scheduling overruns.
40
+ * Enables tracking when the current execution took place relative to when it was scheduled.
41
+ * Provides getStartDelay() and getOverrun() methods for performance monitoring.
42
+ *
43
+ * @par _TASK_SLEEP_ON_IDLE_RUN
44
+ * Enable 1 ms SLEEP_IDLE powerdowns between runs if no callback methods were invoked during the pass.
45
+ * When enabled, the scheduler will place the processor into IDLE sleep mode for approximately 1 ms
46
+ * after what is determined to be an "idle" pass. AVR boards only.
47
+ *
48
+ * @par _TASK_STATUS_REQUEST
49
+ * Compile with support for StatusRequest functionality.
50
+ * Enables triggering tasks on status change events in addition to time-based scheduling.
51
+ * Allows tasks to wait on an event and signal event completion to each other.
52
+ *
53
+ * @par _TASK_WDT_IDS
54
+ * Compile with support for watchdog timer control points and task IDs.
55
+ * Each task can be assigned an ID and Control Points can be defined within tasks
56
+ * for watchdog timer integration and error handling.
57
+ *
58
+ * @par _TASK_LTS_POINTER
59
+ * Compile with support for local task storage pointer.
60
+ * LTS is a generic (void*) pointer that can reference a variable or structure
61
+ * specific to a particular task, allowing the same callback code for multiple tasks.
62
+ *
63
+ * @par _TASK_PRIORITY
64
+ * Support for layered scheduling priority.
65
+ * Enables task prioritization by creating several schedulers and organizing them in priority layers.
66
+ * Higher priority tasks are evaluated more frequently.
67
+ *
68
+ * @par _TASK_MICRO_RES
69
+ * Support for microsecond resolution.
70
+ * Enables microsecond scheduling resolution instead of default millisecond resolution.
71
+ * All time-relevant parameters will be treated as microseconds.
72
+ *
73
+ * @par _TASK_STD_FUNCTION
74
+ * Support for std::function (ESP8266/ESP32 ONLY).
75
+ * Enables support for standard functions instead of function pointers for callbacks.
76
+ *
77
+ * @par _TASK_DEBUG
78
+ * Make all methods and variables public for debug purposes.
79
+ * Should not be used in production. Exposes all private and protected members as public.
80
+ *
81
+ * @par _TASK_INLINE
82
+ * Make all methods "inline".
83
+ * Needed to support some multi-tab, multi-file implementations. Lets compiler optimize.
84
+ *
85
+ * @par _TASK_TIMEOUT
86
+ * Support for overall task timeout.
87
+ * Any task can be set to time out after a certain period, and timeout can be reset.
88
+ * Can be used as an individual Task's watchdog timer.
89
+ *
90
+ * @par _TASK_OO_CALLBACKS
91
+ * Support for callbacks via inheritance.
92
+ * Useful for implementing Tasks as classes derived from the Task class.
93
+ * Enables dynamic binding for object-oriented callback approach.
94
+ *
95
+ * @par _TASK_EXPOSE_CHAIN
96
+ * Methods to access tasks in the task chain.
97
+ * Provides access to scheduling chain methods and tasks on the chain.
98
+ *
99
+ * @par _TASK_SCHEDULING_OPTIONS
100
+ * Support for multiple scheduling options.
101
+ * Enables different task scheduling options like TASK_SCHEDULE, TASK_SCHEDULE_NC, and TASK_INTERVAL.
102
+ *
103
+ * @par _TASK_SELF_DESTRUCT
104
+ * Enable tasks to "self-destruct" after disable.
105
+ * Tasks can be set to automatically delete themselves when disabled.
106
+ *
107
+ * @par _TASK_TICKLESS
108
+ * Enable support for tickless sleep on FreeRTOS.
109
+ * Enables support for tickless sleep mode on FreeRTOS systems.
110
+ *
111
+ * @par _TASK_DO_NOT_YIELD
112
+ * Disable yield() method in execute() for ESP chips.
113
+ * Disables automatic yielding in the execute loop for ESP-based systems.
114
+ *
115
+ * @par _TASK_ISR_SUPPORT
116
+ * For ESP chips - place control methods in IRAM.
117
+ * Places critical control methods in IRAM for ESP8266/ESP32 interrupt support.
118
+ *
119
+ * @par _TASK_NON_ARDUINO
120
+ * For non-Arduino use.
121
+ * Enables compilation for non-Arduino environments.
122
+ *
123
+ * @par _TASK_HEADER_AND_CPP
124
+ * Compile CPP file (non-Arduino IDE platforms).
125
+ * For non-Arduino IDE platforms that require explicit CPP compilation.
126
+ *
127
+ * @par _TASK_THREAD_SAFE
128
+ * Enable additional functionality to request processing in a thread-safe manner.
129
+ * Uses a request queue to safely invoke task control methods from other threads or interrupts.
130
+ * Also enables basic mutex locking to prevent concurrent access issues.
131
+ * Recommended for ESP32 and other MCUs running under preemptive schedulers like FreeRTOS.
132
+ *
133
+ */
134
+
135
+
136
+ #ifdef _TASK_NON_ARDUINO
137
+ #include <stdbool.h>
138
+ #include <stdint.h>
139
+ #include <stdarg.h>
140
+ #include <stddef.h>
141
+ #include <stdio.h>
142
+ #include <stdlib.h>
143
+ #include <string.h>
144
+ #include <inttypes.h>
145
+ #else
146
+ #include <Arduino.h>
147
+ #endif
148
+
149
+ /**
150
+ * @brief Forward declaration of Scheduler class
151
+ */
152
+ class Scheduler;
153
+
154
+ /**
155
+ * @defgroup SchedulingOptions Task Scheduling Options
156
+ * @brief Constants defining different task scheduling behaviors
157
+ * @{
158
+ */
159
+
160
+ /**
161
+ * @def TASK_SCHEDULE
162
+ * @brief Default scheduling option
163
+ * @details Maintains the original schedule. Tasks may need to "catch up" if delayed.
164
+ * If a task is scheduled to run every 10 seconds and starts at 9:00:00,
165
+ * the scheduler will try to invoke tasks as close to 9:00:10, 9:00:20 as possible.
166
+ */
167
+ #define TASK_SCHEDULE 0
168
+
169
+ /**
170
+ * @def TASK_SCHEDULE_NC
171
+ * @brief Schedule with no catch-ups (always in the future)
172
+ * @details Similar to TASK_SCHEDULE but without "catch up". Tasks are invoked at the next
173
+ * scheduled point, but the number of iterations may not be correct if delayed.
174
+ */
175
+ #define TASK_SCHEDULE_NC 1
176
+
177
+ /**
178
+ * @def TASK_INTERVAL
179
+ * @brief Interval-based scheduling (always in the future)
180
+ * @details Schedules the next invocation with priority to a "period". A task scheduled for
181
+ * 9:00:00 with a 10-second interval that was actually invoked at 9:00:06 will be
182
+ * scheduled for the next invocation at 9:00:16.
183
+ */
184
+ #define TASK_INTERVAL 2
185
+
186
+ /** @} */ // End of SchedulingOptions group
187
+
188
+ #ifdef _TASK_DEBUG
189
+ #define _TASK_SCOPE public
190
+ #else
191
+ #define _TASK_SCOPE private
192
+ #endif
193
+
194
+ /**
195
+ * @defgroup TaskIterationOptions Task Iteration Options
196
+ * @brief Common options for task scheduling iterations
197
+ * @{
198
+ */
199
+
200
+ /**
201
+ * @def TASK_IMMEDIATE
202
+ * @brief Task interval for immediate execution
203
+ * @details When used as interval, causes task to execute immediately during next scheduling pass.
204
+ */
205
+ #define TASK_IMMEDIATE 0
206
+
207
+ /**
208
+ * @def TASK_FOREVER
209
+ * @brief Task number of iterations for infinite execution
210
+ * @details When used as iteration count, causes task to run indefinitely until explicitly disabled.
211
+ */
212
+ #define TASK_FOREVER (-1)
213
+
214
+ /**
215
+ * @def TASK_ONCE
216
+ * @brief Task single iteration
217
+ * @details When used as iteration count, causes task to run only once and then become disabled.
218
+ */
219
+ #define TASK_ONCE 1
220
+
221
+ /** @} */ // End of TaskIterationOptions group
222
+
223
+ /**
224
+ * @defgroup IntervalNoDelayOptions Options for setIntervalNodelay() method
225
+ * @brief Options controlling how interval changes are handled
226
+ * @{
227
+ */
228
+
229
+ /**
230
+ * @def TASK_INTERVAL_KEEP
231
+ * @brief Keep current execution timing
232
+ * @details Maintains the current execution schedule when changing interval.
233
+ */
234
+ #define TASK_INTERVAL_KEEP 0
235
+
236
+ /**
237
+ * @def TASK_INTERVAL_RECALC
238
+ * @brief Recalculate execution timing
239
+ * @details Recalculates the next execution time based on the new interval.
240
+ */
241
+ #define TASK_INTERVAL_RECALC 1
242
+
243
+ /**
244
+ * @def TASK_INTERVAL_RESET
245
+ * @brief Reset execution timing
246
+ * @details Resets the execution schedule to start from the current time.
247
+ */
248
+ #define TASK_INTERVAL_RESET 2
249
+
250
+ /** @} */ // End of IntervalNoDelayOptions group
251
+
252
+ /**
253
+ * @defgroup TimeoutOptions Task Timeout Options
254
+ * @brief Options for task timeout functionality
255
+ * @{
256
+ */
257
+ #ifdef _TASK_TIMEOUT
258
+ /**
259
+ * @def TASK_NOTIMEOUT
260
+ * @brief No timeout value
261
+ * @details Used to indicate that a task should not have a timeout.
262
+ */
263
+ #define TASK_NOTIMEOUT 0
264
+ #endif
265
+ /** @} */ // End of TimeoutOptions group
266
+
267
+ #ifdef _TASK_PRIORITY
268
+ extern Scheduler* iCurrentScheduler;
269
+ #endif // _TASK_PRIORITY
270
+
271
+ #ifdef _TASK_INLINE
272
+ #define __TASK_INLINE inline
273
+ #else
274
+ #define __TASK_INLINE
275
+ #endif
276
+
277
+ #ifdef _TASK_ISR_SUPPORT
278
+ #if defined (ARDUINO_ARCH_ESP8266)
279
+ #define __TASK_IRAM ICACHE_RAM_ATTR
280
+ #endif
281
+ #if defined (ARDUINO_ARCH_ESP32)
282
+ #define __TASK_IRAM IRAM_ATTR
283
+ #endif
284
+ #endif
285
+ #ifndef __TASK_IRAM
286
+ #define __TASK_IRAM
287
+ #endif
288
+
289
+ /**
290
+ * @defgroup TimeConstants Time Constants
291
+ * @brief Predefined time constants for task intervals
292
+ * @details Values are in milliseconds by default, or microseconds when _TASK_MICRO_RES is enabled
293
+ * @{
294
+ */
295
+ #ifndef _TASK_MICRO_RES
296
+
297
+ /**
298
+ * @def TASK_MILLISECOND
299
+ * @brief One millisecond interval
300
+ */
301
+ #define TASK_MILLISECOND 1UL
302
+
303
+ /**
304
+ * @def TASK_SECOND
305
+ * @brief One second interval (1000 milliseconds)
306
+ */
307
+ #define TASK_SECOND 1000UL
308
+
309
+ /**
310
+ * @def TASK_MINUTE
311
+ * @brief One minute interval (60000 milliseconds)
312
+ */
313
+ #define TASK_MINUTE 60000UL
314
+
315
+ /**
316
+ * @def TASK_HOUR
317
+ * @brief One hour interval (3600000 milliseconds)
318
+ */
319
+ #define TASK_HOUR 3600000UL
320
+
321
+ #else
322
+
323
+ /**
324
+ * @def TASK_MILLISECOND
325
+ * @brief One millisecond interval (1000 microseconds)
326
+ */
327
+ #define TASK_MILLISECOND 1000UL
328
+
329
+ /**
330
+ * @def TASK_SECOND
331
+ * @brief One second interval (1000000 microseconds)
332
+ */
333
+ #define TASK_SECOND 1000000UL
334
+
335
+ /**
336
+ * @def TASK_MINUTE
337
+ * @brief One minute interval (60000000 microseconds)
338
+ */
339
+ #define TASK_MINUTE 60000000UL
340
+
341
+ /**
342
+ * @def TASK_HOUR
343
+ * @brief One hour interval (3600000000 microseconds)
344
+ */
345
+ #define TASK_HOUR 3600000000UL
346
+
347
+ #endif // _TASK_MICRO_RES
348
+ /** @} */ // End of TimeConstants group
349
+
350
+ #ifdef _TASK_TICKLESS
351
+ /**
352
+ * @defgroup NextRunStates Task Next Run State Definitions
353
+ * @brief State flags for tickless operation next run scheduling
354
+ *
355
+ * These constants define the next execution state of tasks in tickless mode,
356
+ * enabling power-efficient operation by categorizing when tasks need to run.
357
+ * Used internally by the scheduler to optimize sleep/wake cycles and minimize
358
+ * power consumption in battery-powered applications.
359
+ *
360
+ * @note Only available when _TASK_TICKLESS compile-time option is enabled
361
+ * @see _TASK_TICKLESS
362
+ * @{
363
+ */
364
+
365
+ /**
366
+ * @brief Undefined next run state
367
+ *
368
+ * Indicates that the task's next execution time is not defined or has not
369
+ * been calculated. This is typically an initial state or error condition
370
+ * where the scheduler cannot determine when the task should next execute.
371
+ *
372
+ * Binary value: 0b0 (0)
373
+ *
374
+ * @note Used internally by tickless scheduler for state management
375
+ * @see _TASK_TICKLESS
376
+ * @since Version 3.0.0
377
+ */
378
+ #define _TASK_NEXTRUN_UNDEFINED 0b0
379
+
380
+ /**
381
+ * @brief Immediate next run state
382
+ *
383
+ * Indicates that the task should execute immediately on the next scheduler
384
+ * pass, bypassing any timing delays. Used for tasks that have been triggered
385
+ * by events, forced execution, or have reached their scheduled execution time.
386
+ *
387
+ * Binary value: 0b1 (1)
388
+ *
389
+ * @note In tickless mode, prevents the system from entering deep sleep
390
+ * @see forceNextIteration(), _TASK_TICKLESS
391
+ * @since Version 3.0.0
392
+ */
393
+ #define _TASK_NEXTRUN_IMMEDIATE 0b1
394
+
395
+ /**
396
+ * @brief Timed next run state
397
+ *
398
+ * Indicates that the task has a specific future execution time and should
399
+ * wait until that time arrives. This enables the tickless scheduler to
400
+ * calculate optimal sleep durations and enter power-saving modes until
401
+ * the earliest task execution time.
402
+ *
403
+ * Hexadecimal value: 0x10 (16)
404
+ *
405
+ * @note Enables deep sleep optimization in tickless mode
406
+ * @note Value deliberately different from other states for bit manipulation
407
+ * @see _TASK_TICKLESS, getInterval(), delay()
408
+ * @since Version 3.0.0
409
+ */
410
+ #define _TASK_NEXTRUN_TIMED 0x10
411
+
412
+ /** @} */ // End of NextRunStates group
413
+ #endif // _TASK_TICKLESS
414
+
415
+ #ifdef _TASK_THREAD_SAFE
416
+
417
+ /**
418
+ * @enum _task_request_type_t
419
+ * @brief Task request types for thread-safe operations
420
+ *
421
+ * @details This enum mirrors the Task class API for invocation via requestAction methods
422
+ * when _TASK_THREAD_SAFE option is active. It provides a thread-safe way to execute
423
+ * task control methods by placing requests on a queue that is processed during the
424
+ * scheduler's execute() method.
425
+ *
426
+ * Each enum value corresponds to a specific Task method that can be called safely
427
+ * from other threads or interrupt contexts. The scheduler processes these requests
428
+ * atomically during its execution cycle.
429
+ *
430
+ * @note Only available when compiled with _TASK_THREAD_SAFE support.
431
+ *
432
+ * @see Scheduler::requestAction()
433
+ */
434
+ typedef enum {
435
+ #ifdef _TASK_STATUS_REQUEST
436
+ TASK_SR_REQUEST_SETWAITING, ///< Thread-safe StatusRequest::setWaiting()
437
+ TASK_SR_REQUEST_SIGNAL, ///< Thread-safe StatusRequest::signal()
438
+ TASK_SR_REQUEST_SIGNALCOMPLETE, ///< Thread-safe StatusRequest::signalComplete()
439
+
440
+ #ifdef _TASK_TIMEOUT
441
+ TASK_SR_REQUEST_SETTIMEOUT, ///< Thread-safe StatusRequest::setTimeout()
442
+ TASK_SR_REQUEST_RESETTIMEOUT, ///< Thread-safe StatusRequest::resetTimeout()
443
+ #endif // _TASK_TIMEOUT
444
+
445
+ #endif // _TASK_STATUS_REQUEST
446
+
447
+ #ifdef _TASK_LTS_POINTER
448
+ TASK_REQUEST_SETLTSPOINTER, ///< Thread-safe Task::setLtsPointer()
449
+ #endif
450
+
451
+ #ifdef _TASK_SELF_DESTRUCT
452
+ TASK_REQUEST_SETSELFDESTRUCT, ///< Thread-safe Task::setSelfDestruct()
453
+ #endif // _TASK_SELF_DESTRUCT
454
+
455
+ #ifdef _TASK_SCHEDULING_OPTIONS
456
+ TASK_REQUEST_SETSCHEDULINGOPTION, ///< Thread-safe Task::setSchedulingOption()
457
+ #endif // _TASK_SCHEDULING_OPTIONS
458
+
459
+ #ifdef _TASK_TIMEOUT
460
+ TASK_REQUEST_SETTIMEOUT, ///< Thread-safe Task::setTimeout()
461
+ TASK_REQUEST_RESETTIMEOUT, ///< Thread-safe Task::resetTimeout()
462
+ #endif // _TASK_TIMEOUT
463
+
464
+ #ifdef _TASK_STATUS_REQUEST
465
+ TASK_REQUEST_WAITFOR, ///< Thread-safe Task::waitFor()
466
+ TASK_REQUEST_WAITFORDELAYED, ///< Thread-safe Task::waitForDelayed()
467
+ #endif // _TASK_STATUS_REQUEST
468
+
469
+ #ifdef _TASK_WDT_IDS
470
+ TASK_REQUEST_SETID, ///< Thread-safe Task::setId()
471
+ TASK_REQUEST_SETCONTROLPOINT, ///< Thread-safe Task::setControlPoint()
472
+ #endif // _TASK_WDT_IDS
473
+
474
+ TASK_REQUEST_ENABLE, ///< Thread-safe Task::enable()
475
+ TASK_REQUEST_ENABLEIFNOT, ///< Thread-safe Task::enableIfNot()
476
+ TASK_REQUEST_ENABLEDELAYED, ///< Thread-safe Task::enableDelayed()
477
+ TASK_REQUEST_RESTART, ///< Thread-safe Task::restart()
478
+ TASK_REQUEST_RESTARTDELAYED, ///< Thread-safe Task::restartDelayed()
479
+ TASK_REQUEST_DELAY, ///< Thread-safe Task::delay()
480
+ TASK_REQUEST_ADJUST, ///< Thread-safe Task::adjust()
481
+ TASK_REQUEST_FORCENEXTITERATION, ///< Thread-safe Task::forceNextIteration()
482
+ TASK_REQUEST_DISABLE, ///< Thread-safe Task::disable()
483
+ TASK_REQUEST_ABORT, ///< Thread-safe Task::abort()
484
+ TASK_REQUEST_CANCEL, ///< Thread-safe Task::cancel()
485
+ TASK_REQUEST_SET, ///< Thread-safe Task::set()
486
+ TASK_REQUEST_SETINTERVAL, ///< Thread-safe Task::setInterval()
487
+ TASK_REQUEST_SETINTERVALNODELAY, ///< Thread-safe Task::setIntervalNodelay()
488
+ TASK_REQUEST_SETITERATIONS, ///< Thread-safe Task::setIterations()
489
+ TASK_REQUEST_SETCALLBACK, ///< Thread-safe Task::setCallback()
490
+ TASK_REQUEST_SETONENABLE, ///< Thread-safe Task::setOnEnable()
491
+ TASK_REQUEST_SETONDISABLE ///< Thread-safe Task::setOnDisable()
492
+ } _task_request_type_t;
493
+
494
+ #ifdef _TASK_STATUS_REQUEST
495
+ // void setWaiting(unsigned int aCount = 1);
496
+ #define TASK_SR_REQUEST_SETWAITING_1 TASK_SR_REQUEST_SETWAITING
497
+ #define TASK_SR_REQUEST_SETWAITING_1_DEFAULT 1
498
+ // __TASK_IRAM signal(int aStatus = 0);
499
+ #define TASK_SR_REQUEST_SIGNAL_1 TASK_SR_REQUEST_SIGNAL
500
+ #define TASK_SR_REQUEST_SIGNAL_1_DEFAULT 0
501
+ // __TASK_IRAM signalComplete(int aStatus = 0);
502
+ #define TASK_SR_REQUEST_SIGNALCOMPLETE_1 TASK_SR_REQUEST_SIGNALCOMPLETE
503
+ #define TASK_SR_REQUEST_SIGNALCOMPLETE_1_DEFAULT 0
504
+
505
+ #ifdef _TASK_TIMEOUT
506
+ // void setTimeout(unsigned long aTimeout)
507
+ #define TASK_SR_REQUEST_SETTIMEOUT_1 TASK_SR_REQUEST_SETTIMEOUT
508
+ // void resetTimeout();
509
+ #define TASK_SR_REQUEST_RESETTIMEOUT_0 TASK_SR_REQUEST_RESETTIMEOUT
510
+ #endif // _TASK_TIMEOUT
511
+
512
+ #endif
513
+
514
+ #ifdef _TASK_LTS_POINTER
515
+ // void setLtsPointer(void *aPtr);
516
+ #define TASK_REQUEST_SETLTSPOINTER_1 TASK_REQUEST_SETLTSPOINTER
517
+ #endif
518
+
519
+ #ifdef _TASK_SELF_DESTRUCT
520
+ // void setSelfDestruct(bool aSelfDestruct=true)
521
+ #define TASK_REQUEST_SETSELFDESTRUCT_1 TASK_REQUEST_SETSELFDESTRUCT
522
+ #define TASK_REQUEST_SETSELFDESTRUCT_1_DEFAULT true
523
+ #endif
524
+
525
+ #ifdef _TASK_SCHEDULING_OPTIONS
526
+ // void setSchedulingOption(unsigned int aOption)
527
+ #define TASK_REQUEST_SETSCHEDULINGOPTION_1 TASK_REQUEST_SETSCHEDULINGOPTION
528
+ #endif
529
+
530
+ #ifdef _TASK_TIMEOUT
531
+ // void setTimeout(unsigned long aTimeout, bool aReset=false);
532
+ #define TASK_REQUEST_SETTIMEOUT_2 TASK_REQUEST_SETTIMEOUT
533
+ #define TASK_REQUEST_SETTIMEOUT_2_DEFAULT false
534
+ // void resetTimeout();
535
+ #define TASK_REQUEST_RESETTIMEOUT_0 TASK_REQUEST_RESETTIMEOUT
536
+ #endif // _TASK_TIMEOUT
537
+
538
+ #ifdef _TASK_STATUS_REQUEST
539
+ // bool waitFor(StatusRequest* aStatusRequest, unsigned long aInterval = 0, long aIterations = 1)
540
+ #define TASK_REQUEST_WAITFOR_3 TASK_REQUEST_WAITFOR
541
+ #define TASK_REQUEST_WAITFOR_2_DEFAULT 0
542
+ #define TASK_REQUEST_WAITFOR_3_DEFAULT 1
543
+ // bool waitForDelayed(StatusRequest* aStatusRequest, unsigned long aInterval = 0, long aIterations = 1)
544
+ #define TASK_REQUEST_WAITFORDELAYED_3 TASK_REQUEST_WAITFORDELAYED
545
+ #define TASK_REQUEST_WAITFORDELAYED_2_DEFAULT 0
546
+ #define TASK_REQUEST_WAITFORDELAYED_3_DEFAULT 1
547
+ #endif // _TASK_STATUS_REQUEST
548
+
549
+ #ifdef _TASK_WDT_IDS
550
+ // __TASK_INLINE void setId(unsigned int aID) ;
551
+ #define TASK_REQUEST_SETID_1 TASK_REQUEST_SETID
552
+ // __TASK_INLINE void setControlPoint(unsigned int aPoint) ;
553
+ #define TASK_REQUEST_SETCONTROLPOINT_1 TASK_REQUEST_SETCONTROLPOINT
554
+ #endif // _TASK_WDT_IDS
555
+
556
+ // bool __TASK_IRAM enable();
557
+ #define TASK_REQUEST_ENABLE_0 TASK_REQUEST_ENABLE
558
+ // bool __TASK_IRAM enableIfNot();
559
+ #define TASK_REQUEST_ENABLEIFNOT_0 TASK_REQUEST_ENABLEIFNOT
560
+ // bool __TASK_IRAM enableDelayed(unsigned long aDelay=0);
561
+ #define TASK_REQUEST_ENABLEDELAYED_1 TASK_REQUEST_ENABLEDELAYED
562
+ #define TASK_REQUEST_ENABLEDELAYED_1_DEFAULT 0
563
+ // bool __TASK_IRAM restart();
564
+ #define TASK_REQUEST_RESTART_0 TASK_REQUEST_RESTART
565
+ // bool __TASK_IRAM restartDelayed(unsigned long aDelay=0);
566
+ #define TASK_REQUEST_RESTARTDELAYED_1 TASK_REQUEST_RESTARTDELAYED
567
+ #define TASK_REQUEST_RESTARTDELAYED_1_DEFAULT 0
568
+ // void __TASK_IRAM delay(unsigned long aDelay=0);
569
+ #define TASK_REQUEST_DELAY_1 TASK_REQUEST_DELAY
570
+ #define TASK_REQUEST_DELAY_1_DEFAULT 0
571
+ // void adjust(long aInterval);
572
+ #define TASK_REQUEST_ADJUST_1 TASK_REQUEST_ADJUST
573
+ // void __TASK_IRAM forceNextIteration();
574
+ #define TASK_REQUEST_FORCENEXTITERATION_0 TASK_REQUEST_FORCENEXTITERATION
575
+ // bool disable();
576
+ #define TASK_REQUEST_DISABLE_0 TASK_REQUEST_DISABLE
577
+ // void abort();
578
+ #define TASK_REQUEST_ABORT_0 TASK_REQUEST_ABORT
579
+ // void cancel();
580
+ #define TASK_REQUEST_CANCEL_0 TASK_REQUEST_CANCEL
581
+ // void set(unsigned long aInterval, long aIterations, TaskCallback aCallback,TaskOnEnable aOnEnable=NULL, TaskOnDisable aOnDisable=NULL);
582
+ #define TASK_REQUEST_SET_5 TASK_REQUEST_SET
583
+ #define TASK_REQUEST_SET_4_DEFAULT NULL
584
+ #define TASK_REQUEST_SET_5_DEFAULT NULL
585
+ // void setInterval(unsigned long aInterval);
586
+ #define TASK_REQUEST_SETINTERVAL_1 TASK_REQUEST_SETINTERVAL
587
+ // void setIntervalNodelay(unsigned long aInterval, unsigned int aOption = TASK_INTERVAL_KEEP);
588
+ #define TASK_REQUEST_SETINTERVALNODELAY_2 TASK_REQUEST_SETINTERVALNODELAY
589
+ #define TASK_REQUEST_SETINTERVALNODELAY_2_DEFAULT TASK_INTERVAL_KEEP
590
+ // void setIterations(long aIterations);
591
+ #define TASK_REQUEST_SETITERATIONS_1 TASK_REQUEST_SETITERATIONS
592
+ // void setCallback(TaskCallback aCallback)
593
+ #define TASK_REQUEST_SETCALLBACK_1 TASK_REQUEST_SETCALLBACK
594
+ // setOnEnable(TaskOnEnable aCallback) ;
595
+ #define TASK_REQUEST_SETONENABLE_1 TASK_REQUEST_SETONENABLE
596
+ // setOnDisable(TaskOnDisable aCallback) ;
597
+ #define TASK_REQUEST_SETONDISABLE_1 TASK_REQUEST_SETONDISABLE
598
+
599
+
600
+ /**
601
+ * @struct _task_request_t
602
+ * @brief Structure for thread-safe task operation requests
603
+ *
604
+ * @details This structure is used to call Scheduler::requestAction() and provide parameters
605
+ * to the respective API method in a thread-safe manner. When _TASK_THREAD_SAFE is enabled,
606
+ * this structure allows tasks to be controlled safely from interrupt contexts or other threads
607
+ * by queuing requests that are processed atomically during the scheduler's execute() cycle.
608
+ *
609
+ * The structure contains the request type and up to 5 parameters that correspond to the
610
+ * parameters of the target Task or StatusRequest method being called. The scheduler will
611
+ * unpack these parameters and call the appropriate method during its execution.
612
+ *
613
+ * Usage example:
614
+ * @code
615
+ * _task_request_t request;
616
+ * request.req_type = TASK_REQUEST_ENABLE;
617
+ * request.object_ptr = &myTask;
618
+ * // param1-param5 not needed for enable()
619
+ * scheduler.requestAction(&request);
620
+ * @endcode
621
+ *
622
+ * @note Only available when compiled with _TASK_THREAD_SAFE support.
623
+ *
624
+ * @see Scheduler::requestAction(), _task_request_type_t
625
+ */
626
+ typedef struct {
627
+ _task_request_type_t req_type; ///< Type of request (corresponds to Task/StatusRequest method)
628
+ void* object_ptr; ///< Pointer to Task or StatusRequest object to operate on
629
+ unsigned long param1; ///< First parameter for the target method (if needed)
630
+ unsigned long param2; ///< Second parameter for the target method (if needed)
631
+ unsigned long param3; ///< Third parameter for the target method (if needed)
632
+ unsigned long param4; ///< Fourth parameter for the target method (if needed)
633
+ unsigned long param5; ///< Fifth parameter for the target method (if needed)
634
+ } _task_request_t;
635
+
636
+ #endif //_TASK_THREAD_SAFE
637
+
638
+ #ifdef _TASK_STATUS_REQUEST
639
+
640
+ /**
641
+ * @defgroup StatusRequestCodes Status Request Return Codes
642
+ * @brief Status codes returned by StatusRequest operations
643
+ * @{
644
+ */
645
+
646
+ /**
647
+ * @def TASK_SR_OK
648
+ * @brief Successful completion status
649
+ * @details Default successful completion status for StatusRequest operations.
650
+ */
651
+ #define TASK_SR_OK 0
652
+
653
+ /**
654
+ * @def TASK_SR_ERROR
655
+ * @brief General error status
656
+ * @details Indicates an error condition occurred during StatusRequest operation.
657
+ */
658
+ #define TASK_SR_ERROR (-1)
659
+
660
+ /**
661
+ * @def TASK_SR_CANCEL
662
+ * @brief Cancelled status
663
+ * @details Indicates the StatusRequest operation was cancelled.
664
+ */
665
+ #define TASK_SR_CANCEL (-32766)
666
+
667
+ /**
668
+ * @def TASK_SR_ABORT
669
+ * @brief Aborted status
670
+ * @details Indicates the StatusRequest operation was aborted.
671
+ */
672
+ #define TASK_SR_ABORT (-32767)
673
+
674
+ /**
675
+ * @def TASK_SR_TIMEOUT
676
+ * @brief Timeout status
677
+ * @details Indicates the StatusRequest operation timed out.
678
+ */
679
+ #define TASK_SR_TIMEOUT (-32768)
680
+
681
+ /** @} */ // End of StatusRequestCodes group
682
+
683
+ /**
684
+ * @defgroup StatusRequestModes Status Request Internal Modes
685
+ * @brief Internal mode constants for StatusRequest operations
686
+ * @{
687
+ */
688
+
689
+ /**
690
+ * @def _TASK_SR_NODELAY
691
+ * @brief No delay mode for StatusRequest
692
+ */
693
+ #define _TASK_SR_NODELAY 1
694
+
695
+ /**
696
+ * @def _TASK_SR_DELAY
697
+ * @brief Delay mode for StatusRequest
698
+ */
699
+ #define _TASK_SR_DELAY 2
700
+
701
+ /** @} */ // End of StatusRequestModes group
702
+
703
+ /**
704
+ * @class StatusRequest
705
+ * @brief Status Request object for event-driven task invocation
706
+ *
707
+ * @details StatusRequest objects allow tasks to wait on an event and signal event completion to each other.
708
+ * This enables event-driven programming where one task can "signal" completion of its function via a
709
+ * StatusRequest object, and other tasks can "wait" on the same StatusRequest object.
710
+ *
711
+ * Key features:
712
+ * - Can wait for multiple events (set via setWaiting())
713
+ * - Supports timeout functionality
714
+ * - Provides completion status codes
715
+ * - Thread-safe signaling mechanisms
716
+ *
717
+ * @note Each task has an internal StatusRequest object that is:
718
+ * - Always waits on 1 event (completion of this task)
719
+ * - Activated (set to "waiting" status) after Task is enabled
720
+ * - Completed after Task is disabled
721
+ *
722
+ * @see Task::waitFor(), Task::waitForDelayed()
723
+ */
724
+ class StatusRequest {
725
+ friend class Scheduler;
726
+ public:
727
+ /**
728
+ * @brief Default constructor
729
+ * @details Creates Status Request object with "completed" status on creation.
730
+ */
731
+ __TASK_INLINE StatusRequest();
732
+
733
+ /**
734
+ * @brief Activates Status Request object
735
+ * @param aCount Number of events to wait for (default = 1)
736
+ * @details By default each object waits on one event only. If aCount is supplied,
737
+ * StatusRequest can wait on multiple events. For example, setWaiting(3) will wait
738
+ * on three signals - useful for waiting for completion of measurements from 3 sensors.
739
+ */
740
+ __TASK_INLINE void setWaiting(unsigned int aCount = 1);
741
+
742
+ /**
743
+ * @brief Signals completion of one event
744
+ * @param aStatus Completion code (default = 0)
745
+ * @return true if signal was processed successfully
746
+ * @details Signals completion of the event to the StatusRequest object and passes
747
+ * a completion code. Passing a negative status code is considered reporting an error
748
+ * condition and will complete the status request regardless of how many outstanding
749
+ * signals it is still waiting for. Only the latest status code is kept.
750
+ */
751
+ __TASK_INLINE bool signal(int aStatus = 0);
752
+
753
+ /**
754
+ * @brief Signals completion of ALL events
755
+ * @param aStatus Completion code (default = 0)
756
+ * @details Signals completion of ALL events to the StatusRequest object and passes
757
+ * a completion code. The status request completes regardless of how many events
758
+ * it is still waiting on.
759
+ */
760
+ __TASK_INLINE void signalComplete(int aStatus = 0);
761
+
762
+ /**
763
+ * @brief Check if status request is pending (deprecated)
764
+ * @return true if status request is still waiting for events
765
+ * @deprecated Use isPending() instead
766
+ */
767
+ __TASK_INLINE bool pending() { return isPending(); };
768
+
769
+ /**
770
+ * @brief Check if status request is pending
771
+ * @return true if status request is still waiting for events to happen
772
+ */
773
+ __TASK_INLINE bool isPending();
774
+
775
+ /**
776
+ * @brief Check if status request is completed (deprecated)
777
+ * @return true if status request event has completed
778
+ * @deprecated Use isCompleted() instead
779
+ */
780
+ __TASK_INLINE bool completed() { return isCompleted(); };
781
+
782
+ /**
783
+ * @brief Check if status request is completed
784
+ * @return true if status request event has completed
785
+ */
786
+ __TASK_INLINE bool isCompleted();
787
+
788
+ /**
789
+ * @brief Get the status code
790
+ * @return The status code passed to signal() and signalComplete() methods
791
+ * @details Any positive number is considered successful completion status.
792
+ * A 0 (zero) is considered default successful completion status.
793
+ * Any negative number is considered an error code and unsuccessful completion.
794
+ */
795
+ __TASK_INLINE int getStatus();
796
+
797
+ /**
798
+ * @brief Get count of remaining events
799
+ * @return The count of events not yet completed
800
+ * @details Typically by default a StatusRequest object only waits on 1 event.
801
+ * However, when waiting on multiple events, returns number of events not yet completed.
802
+ */
803
+ __TASK_INLINE int getCount();
804
+
805
+ #ifdef _TASK_TIMEOUT
806
+ /**
807
+ * @brief Set timeout for this StatusRequest object
808
+ * @param aTimeout Timeout interval in milliseconds (or microseconds)
809
+ * @details When enabled, the activated StatusRequest object will complete with
810
+ * the code TASK_SR_TIMEOUT if no other process calls its signal() or signalComplete() method.
811
+ */
812
+ __TASK_INLINE void setTimeout(unsigned long aTimeout) { iTimeout = aTimeout; };
813
+
814
+ /**
815
+ * @brief Get timeout interval
816
+ * @return The timeout interval for the current StatusRequest object
817
+ * @details This is the full original interval, not the remaining time.
818
+ */
819
+ __TASK_INLINE unsigned long getTimeout() { return iTimeout; };
820
+
821
+ /**
822
+ * @brief Reset timeout counter
823
+ * @details Resets the current timeout counter to the original value.
824
+ * The timeout countdown starts from the beginning again.
825
+ */
826
+ __TASK_INLINE void resetTimeout();
827
+
828
+ /**
829
+ * @brief Get time until timeout
830
+ * @return Number of milliseconds (or microseconds) until timeout
831
+ * @details The value could be negative if the timeout has already occurred.
832
+ */
833
+ __TASK_INLINE long untilTimeout();
834
+ #endif
835
+
836
+ _TASK_SCOPE:
837
+ unsigned int iCount; // number of statuses to wait for. waiting for more that 65000 events seems unreasonable: unsigned int should be sufficient
838
+ int iStatus; // status of the last completed request. negative = error; zero = OK; positive = OK with a specific status (see TASK_SR_ constants)
839
+
840
+ #ifdef _TASK_TIMEOUT
841
+ unsigned long iTimeout; // Task overall timeout
842
+ unsigned long iStarttime; // millis at task start time
843
+ #endif // _TASK_TIMEOUT
844
+ };
845
+ #endif // _TASK_STATUS_REQUEST
846
+
847
+ /**
848
+ * @defgroup CallbackTypes Task Callback Types
849
+ * @brief Type definitions for task callback functions
850
+ * @{
851
+ */
852
+ #ifdef _TASK_STD_FUNCTION
853
+ #include <functional>
854
+ /**
855
+ * @typedef TaskCallback
856
+ * @brief Main task callback function type (std::function version)
857
+ * @details Function called periodically when task is executed. Should be non-blocking
858
+ * and return quickly to maintain cooperative multitasking behavior.
859
+ */
860
+ typedef std::function<void()> TaskCallback;
861
+
862
+ /**
863
+ * @typedef TaskOnDisable
864
+ * @brief Task disable callback function type (std::function version)
865
+ * @details Function called when task is disabled. Used for cleanup operations.
866
+ */
867
+ typedef std::function<void()> TaskOnDisable;
868
+
869
+ /**
870
+ * @typedef TaskOnEnable
871
+ * @brief Task enable callback function type (std::function version)
872
+ * @details Function called when task is enabled. Should return true to enable task,
873
+ * false to keep task disabled. Used for initialization operations.
874
+ */
875
+ typedef std::function<bool()> TaskOnEnable;
876
+ #else
877
+ /**
878
+ * @typedef TaskCallback
879
+ * @brief Main task callback function pointer type
880
+ * @details Function called periodically when task is executed. Should be non-blocking
881
+ * and return quickly to maintain cooperative multitasking behavior.
882
+ */
883
+ typedef void (*TaskCallback)();
884
+
885
+ /**
886
+ * @typedef TaskOnDisable
887
+ * @brief Task disable callback function pointer type
888
+ * @details Function called when task is disabled. Used for cleanup operations.
889
+ */
890
+ typedef void (*TaskOnDisable)();
891
+
892
+ /**
893
+ * @typedef TaskOnEnable
894
+ * @brief Task enable callback function pointer type
895
+ * @details Function called when task is enabled. Should return true to enable task,
896
+ * false to keep task disabled. Used for initialization operations.
897
+ */
898
+ typedef bool (*TaskOnEnable)();
899
+ #endif // _TASK_STD_FUNCTION
900
+ /** @} */ // End of CallbackTypes group
901
+
902
+
903
+ #ifdef _TASK_SLEEP_ON_IDLE_RUN
904
+ /**
905
+ * @typedef SleepCallback
906
+ * @brief Sleep function callback type
907
+ * @param aDuration Duration to sleep in milliseconds
908
+ * @details Function pointer type for custom sleep implementations during idle periods.
909
+ */
910
+ typedef void (*SleepCallback)( unsigned long aDuration );
911
+
912
+ /**
913
+ * @brief Global pointer to scheduler that controls sleep functionality
914
+ */
915
+ extern Scheduler* iSleepScheduler;
916
+
917
+ /**
918
+ * @brief Global pointer to custom sleep method
919
+ */
920
+ extern SleepCallback iSleepMethod;
921
+ #endif // _TASK_SLEEP_ON_IDLE_RUN
922
+
923
+ /**
924
+ * @struct _task_status
925
+ * @brief Internal task status structure
926
+ * @details Bit-packed structure containing task state flags for efficient memory usage.
927
+ * This structure tracks various task states and conditions.
928
+ */
929
+ typedef struct {
930
+ bool enabled : 1; ///< Indicates that task is enabled or not
931
+ bool inonenable : 1; ///< Indicates that task execution is inside OnEnable method (preventing infinite loops)
932
+ bool canceled : 1; ///< Indication that task has been canceled prior to normal end of all iterations or regular call to disable()
933
+ #ifdef _TASK_SELF_DESTRUCT
934
+ bool selfdestruct : 1; ///< Indication that task has been requested to self-destruct on disable
935
+ bool sd_request : 1; ///< Request for scheduler to delete task object and take task out of the queue
936
+ #endif // _TASK_SELF_DESTRUCT
937
+ #ifdef _TASK_STATUS_REQUEST
938
+ uint8_t waiting : 2; ///< Indication if task is waiting on the status request
939
+ #endif // _TASK_STATUS_REQUEST
940
+
941
+ #ifdef _TASK_TIMEOUT
942
+ bool timeout : 1; ///< Indication if task timed out
943
+ #endif // _TASK_TIMEOUT
944
+ } _task_status;
945
+
946
+
947
+ /**
948
+ * @class Task
949
+ * @brief Core task class for cooperative multitasking
950
+ *
951
+ * @details A "Task" is an action, a part of the program logic, which requires scheduled execution.
952
+ * A concept of Task combines the following aspects:
953
+ * - Program code performing specific activities (callback methods)
954
+ * - Execution interval
955
+ * - Number of execution iterations
956
+ * - (Optionally) Execution start event (Status Request)
957
+ * - (Optionally) Pointer to a Local Task Storage area
958
+ *
959
+ * Tasks perform certain functions, which could require periodic or one-time execution,
960
+ * update of specific variables, or waiting for specific events. Tasks also could be
961
+ * controlling specific hardware, or triggered by hardware interrupts.
962
+ *
963
+ * For execution purposes Tasks are linked into execution chains, which are processed
964
+ * by the Scheduler in the order they were added (linked together).
965
+ *
966
+ * Key Features:
967
+ * - Cooperative multitasking (non-preemptive)
968
+ * - Event-driven execution via StatusRequest objects
969
+ * - Dynamic parameter adjustment during runtime
970
+ * - Support for callback chaining and state machines
971
+ * - Built-in timeout and watchdog functionality
972
+ * - Local task storage for task-specific data
973
+ *
974
+ * @note Tasks are responsible for supporting cooperative multitasking by being "good neighbors",
975
+ * i.e., running their callback methods quickly in a non-blocking way, and releasing control
976
+ * back to the scheduler as soon as possible.
977
+ *
978
+ * @see Scheduler, StatusRequest
979
+ */
980
+ class Task {
981
+ friend class Scheduler;
982
+ public:
983
+
984
+ /**
985
+ * @brief Task constructor with parameters
986
+ * @param aInterval Execution interval in milliseconds (or microseconds if _TASK_MICRO_RES enabled) (default = 0)
987
+ * @param aIterations Number of iterations, -1 for indefinite execution (default = 0)
988
+ * @param aScheduler Optional reference to existing scheduler. If supplied (not NULL) this task will be appended to the task chain (default = NULL)
989
+ * @param aEnable Optional. Value of true will create task enabled (default = false)
990
+ *
991
+ * @details Creates a task that is scheduled to run every aInterval milliseconds, aIterations times.
992
+ * All tasks are created disabled by default (unless aEnable = true). You have to explicitly enable
993
+ * the task for execution.
994
+ *
995
+ * @note Tasks do not remember the number of iterations set initially. After the iterations are done,
996
+ * internal iteration counter is 0. If you need to perform another set of iterations, you need to set
997
+ * the number of iterations again.
998
+ *
999
+ * @note Tasks which performed all their iterations remain active.
1000
+ */
1001
+ #ifdef _TASK_OO_CALLBACKS
1002
+ __TASK_INLINE Task(unsigned long aInterval=0, long aIterations=0, Scheduler* aScheduler=NULL, bool aEnable=false
1003
+ #ifdef _TASK_SELF_DESTRUCT
1004
+ , bool aSelfDestruct=false);
1005
+ #else
1006
+ );
1007
+ #endif // #ifdef _TASK_SELF_DESTRUCT
1008
+ #else
1009
+ /**
1010
+ * @brief Task constructor with callback parameters
1011
+ * @param aInterval Execution interval in milliseconds (or microseconds if _TASK_MICRO_RES enabled) (default = 0)
1012
+ * @param aIterations Number of iterations, -1 for indefinite execution (default = 0)
1013
+ * @param aCallback Pointer to the void callback method without parameters (default = NULL)
1014
+ * @param aScheduler Optional reference to existing scheduler. If supplied (not NULL) this task will be appended to the task chain (default = NULL)
1015
+ * @param aEnable Optional. Value of true will create task enabled (default = false)
1016
+ * @param aOnEnable Pointer to the bool OnEnable callback method without parameters, invoked when task is enabled (default = NULL)
1017
+ * @param aOnDisable Pointer to the void OnDisable method without parameters, invoked when task is disabled (default = NULL)
1018
+ *
1019
+ * @details Creates a task with callback methods. OnEnable method returns true if task should be enabled,
1020
+ * false if it should remain disabled. OnDisable method is called when task is disabled.
1021
+ *
1022
+ * @note OnEnable callback method is called immediately when task is enabled, which could be well ahead
1023
+ * of the scheduled execution time of the task. It is advisable to explicitly enable tasks with OnEnable
1024
+ * methods after all initialization methods completed (e.g., at the end of setup() method).
1025
+ */
1026
+ __TASK_INLINE Task(unsigned long aInterval=0, long aIterations=0, TaskCallback aCallback=NULL, Scheduler* aScheduler=NULL, bool aEnable=false, TaskOnEnable aOnEnable=NULL, TaskOnDisable aOnDisable=NULL
1027
+ #ifdef _TASK_SELF_DESTRUCT
1028
+ , bool aSelfDestruct=false);
1029
+ #else
1030
+ );
1031
+ #endif // #ifdef _TASK_SELF_DESTRUCT
1032
+ #endif // _TASK_OO_CALLBACKS
1033
+
1034
+
1035
+ #ifdef _TASK_STATUS_REQUEST
1036
+ #ifdef _TASK_OO_CALLBACKS
1037
+ /**
1038
+ * @brief Constructor for StatusRequest-based tasks (Object-Oriented callbacks)
1039
+ * @param aScheduler Pointer to scheduler
1040
+ * @details Creates a Task for activation on event. Such tasks must run waitFor() method,
1041
+ * their interval, iteration and enabled status will be set by that method.
1042
+ */
1043
+ __TASK_INLINE Task(Scheduler* aScheduler);
1044
+ #else
1045
+ /**
1046
+ * @brief Constructor for StatusRequest-based tasks (Function pointer callbacks)
1047
+ * @param aCallback Pointer to callback function
1048
+ * @param aScheduler Pointer to scheduler
1049
+ * @param aOnEnable Pointer to OnEnable callback (default = NULL)
1050
+ * @param aOnDisable Pointer to OnDisable callback (default = NULL)
1051
+ * @details Creates a Task for activation on event. Such tasks must run waitFor() method,
1052
+ * their interval, iteration and enabled status will be set by that method.
1053
+ */
1054
+ __TASK_INLINE Task(TaskCallback aCallback, Scheduler* aScheduler, TaskOnEnable aOnEnable=NULL, TaskOnDisable aOnDisable=NULL);
1055
+ #endif // _TASK_OO_CALLBACKS
1056
+ #endif // _TASK_STATUS_REQUEST
1057
+
1058
+ /**
1059
+ * @brief Virtual destructor
1060
+ * @details Properly destroys the task object and cleans up resources.
1061
+ */
1062
+ virtual __TASK_INLINE ~Task();
1063
+
1064
+ #ifdef _TASK_TIMEOUT
1065
+ /**
1066
+ * @brief Set overall task timeout
1067
+ * @param aTimeout Timeout period in milliseconds (or microseconds)
1068
+ * @param aReset Whether to reset timeout counter (default = false)
1069
+ * @details Any task can be set to time out after a certain period of time.
1070
+ * Timeout can be reset, so it can be used as an individual Task's watchdog timer.
1071
+ */
1072
+ __TASK_INLINE void setTimeout(unsigned long aTimeout, bool aReset=false);
1073
+
1074
+ /**
1075
+ * @brief Reset timeout counter
1076
+ * @details Resets the timeout counter to start counting from the beginning.
1077
+ */
1078
+ __TASK_INLINE void resetTimeout();
1079
+
1080
+ /**
1081
+ * @brief Get timeout value
1082
+ * @return Current timeout value in milliseconds (or microseconds)
1083
+ */
1084
+ __TASK_INLINE unsigned long getTimeout();
1085
+
1086
+ /**
1087
+ * @brief Get time until timeout
1088
+ * @return Number of milliseconds (or microseconds) until timeout occurs
1089
+ * @details Returns negative value if timeout has already occurred.
1090
+ */
1091
+ __TASK_INLINE long untilTimeout();
1092
+
1093
+ /**
1094
+ * @brief Check if task has timed out (deprecated)
1095
+ * @return true if task has timed out
1096
+ * @deprecated Use isTimedOut() instead
1097
+ */
1098
+ __TASK_INLINE bool timedOut() { return isTimedOut(); };
1099
+
1100
+ /**
1101
+ * @brief Check if task has timed out
1102
+ * @return true if task has timed out
1103
+ */
1104
+ __TASK_INLINE bool isTimedOut();
1105
+ #endif
1106
+
1107
+ /**
1108
+ * @brief Enable the task
1109
+ * @return true if task was successfully enabled
1110
+ * @details Enables the task and schedules it for immediate execution (without delay) at this or next
1111
+ * scheduling pass. Scheduler will execute the next pass without any delay because there is a task
1112
+ * which was enabled and requires execution.
1113
+ *
1114
+ * @note If task being enabled is not assigned to a scheduler and is not part of execution chain,
1115
+ * then task will not be enabled.
1116
+ *
1117
+ * @note enable() invokes task's OnEnable method (if not NULL) immediately, which can prepare task
1118
+ * for execution. OnEnable must return true for task to be enabled. If OnEnable returns false,
1119
+ * task remains disabled.
1120
+ *
1121
+ * @warning OnEnable is invoked every time enable() is called, regardless if task is already enabled.
1122
+ * Alignment to current millis() is performed after OnEnable exits.
1123
+ */
1124
+ __TASK_INLINE bool enable();
1125
+
1126
+ /**
1127
+ * @brief Enable the task only if it was previously disabled
1128
+ * @return Previous enable state: true if task was already enabled, false if task was disabled
1129
+ * @details Since enable() schedules Task for execution immediately, this method provides a way
1130
+ * to activate tasks and schedule them for immediate execution only if they are not active already.
1131
+ * All NOTES from the enable() method apply.
1132
+ */
1133
+ __TASK_INLINE bool enableIfNot();
1134
+
1135
+ /**
1136
+ * @brief Enable the task with delay
1137
+ * @param aDelay Delay before first execution in milliseconds (default = 0)
1138
+ * @return true if task was successfully enabled
1139
+ * @details Enables the task and schedules it for execution after a specific delay.
1140
+ */
1141
+ __TASK_INLINE bool enableDelayed(unsigned long aDelay=0);
1142
+
1143
+ /**
1144
+ * @brief Restart the task
1145
+ * @return true if task was successfully restarted
1146
+ * @details For tasks with limited number of iterations only, restart method will re-enable the task,
1147
+ * set the number of iterations back to last set value, and schedule task for execution as soon as possible.
1148
+ */
1149
+ __TASK_INLINE bool restart();
1150
+
1151
+ /**
1152
+ * @brief Restart the task with delay
1153
+ * @param aDelay Delay before first execution in milliseconds (default = 0)
1154
+ * @return true if task was successfully restarted
1155
+ * @details Same as restart() method, with the only difference being that Task is scheduled to run
1156
+ * first iteration after a delay.
1157
+ */
1158
+ __TASK_INLINE bool restartDelayed(unsigned long aDelay=0);
1159
+
1160
+ /**
1161
+ * @brief Delay the task execution
1162
+ * @param aDelay Delay in milliseconds (default = 0)
1163
+ * @details Schedules the task for execution after a delay, but does not change the enabled/disabled
1164
+ * status of the task. A delay of 0 (zero) will delay task for current execution interval.
1165
+ * Use forceNextIteration() method to force execution during immediate next scheduling pass.
1166
+ */
1167
+ __TASK_INLINE void delay(unsigned long aDelay=0);
1168
+
1169
+ /**
1170
+ * @brief Adjust task interval
1171
+ * @param aInterval New interval value (can be negative for adjustment)
1172
+ * @details Adjusts the task execution interval by the specified amount.
1173
+ */
1174
+ __TASK_INLINE void adjust(long aInterval);
1175
+
1176
+ /**
1177
+ * @brief Force next iteration to execute immediately
1178
+ * @details Schedules the task for execution during immediate next scheduling pass.
1179
+ * The Task must be already enabled prior to this method. Task's schedule is adjusted
1180
+ * to run from this moment in time.
1181
+ *
1182
+ * @note If a task was running every 10 seconds: 10, 20, 30, calling forceNextIteration
1183
+ * at 44th second will make subsequent schedule look like: 44, 54, 64, 74, ..
1184
+ */
1185
+ __TASK_INLINE void forceNextIteration();
1186
+
1187
+ /**
1188
+ * @brief Disable the task
1189
+ * @return Previous enabled state: true if task was enabled, false otherwise
1190
+ * @details Scheduler will not execute this task any longer, even if it remains in the chain.
1191
+ * Task can be later re-enabled for execution. If not NULL, task's OnDisable method is invoked
1192
+ * almost immediately (actually during the next scheduling pass).
1193
+ * OnDisable is invoked only if task was in enabled state.
1194
+ */
1195
+ __TASK_INLINE bool disable();
1196
+
1197
+ /**
1198
+ * @brief Abort the task
1199
+ * @details Immediately stops task execution and marks it as aborted.
1200
+ * Different from disable() in that it indicates abnormal termination.
1201
+ * OnDisable method is NOT invoked for Aborted tasks.
1202
+ */
1203
+ __TASK_INLINE void abort();
1204
+
1205
+ /**
1206
+ * @brief Cancel the task
1207
+ * @details Marks the task as cancelled, indicating it was stopped before normal completion.
1208
+ * OnDisable method is invoked if task was in enabled state.
1209
+ */
1210
+ __TASK_INLINE void cancel();
1211
+
1212
+ /**
1213
+ * @brief Check if task is enabled
1214
+ * @return true if task is enabled
1215
+ */
1216
+ __TASK_INLINE bool isEnabled();
1217
+
1218
+ /**
1219
+ * @brief Check if task is cancelled
1220
+ * @return true if task has been cancelled
1221
+ */
1222
+ __TASK_INLINE bool isCanceled();
1223
+
1224
+ /**
1225
+ * @brief Check if task is cancelled (deprecated)
1226
+ * @return true if task has been cancelled
1227
+ * @deprecated Use isCanceled() instead
1228
+ */
1229
+ __TASK_INLINE bool canceled() { return isCanceled(); };
1230
+
1231
+ #ifdef _TASK_SCHEDULING_OPTIONS
1232
+ /**
1233
+ * @brief Get the current scheduling option for this task
1234
+ *
1235
+ * Returns the current scheduling behavior option that determines how the task's
1236
+ * interval and iterations are managed during execution.
1237
+ *
1238
+ * Available scheduling options:
1239
+ * - TASK_SCHEDULE: Default behavior - interval countdown starts after OnEnable
1240
+ * - TASK_SCHEDULE_NC: No countdown - interval countdown starts immediately upon enable
1241
+ * - TASK_INTERVAL: Interval mode - maintains exact intervals regardless of execution time
1242
+ *
1243
+ * @return unsigned int Current scheduling option value (TASK_SCHEDULE, TASK_SCHEDULE_NC, or TASK_INTERVAL)
1244
+ *
1245
+ * @note This method is only available when _TASK_SCHEDULING_OPTIONS compile-time option is enabled
1246
+ * @see setSchedulingOption(), TASK_SCHEDULE, TASK_SCHEDULE_NC, TASK_INTERVAL
1247
+ * @since Version 3.0.0
1248
+ */
1249
+ __TASK_INLINE unsigned int getSchedulingOption() { return iOption; }
1250
+
1251
+ /**
1252
+ * @brief Set the scheduling option for this task
1253
+ *
1254
+ * Sets the scheduling behavior option that determines how the task's interval
1255
+ * and iterations are managed during execution. This affects when the interval
1256
+ * countdown begins and how timing is calculated.
1257
+ *
1258
+ * Scheduling options:
1259
+ * - TASK_SCHEDULE: (Default) Interval countdown starts after OnEnable callback completes
1260
+ * - TASK_SCHEDULE_NC: No countdown - interval countdown starts immediately when task is enabled
1261
+ * - TASK_INTERVAL: Interval mode - maintains exact intervals by accounting for execution time
1262
+ *
1263
+ * @param aOption The scheduling option to set (TASK_SCHEDULE, TASK_SCHEDULE_NC, or TASK_INTERVAL)
1264
+ *
1265
+ * @note This method is only available when _TASK_SCHEDULING_OPTIONS compile-time option is enabled
1266
+ * @note The scheduling option can be changed at any time, even when the task is running
1267
+ * @warning Using TASK_INTERVAL may cause timing drift if task execution time exceeds the interval
1268
+ * @see getSchedulingOption(), TASK_SCHEDULE, TASK_SCHEDULE_NC, TASK_INTERVAL
1269
+ * @since Version 3.0.0
1270
+ */
1271
+ __TASK_INLINE void setSchedulingOption(unsigned int aOption) { iOption = aOption; }
1272
+ #endif //_TASK_SCHEDULING_OPTIONS
1273
+
1274
+ #ifdef _TASK_OO_CALLBACKS
1275
+ /**
1276
+ * @brief Set task parameters (Object-Oriented callbacks)
1277
+ * @param aInterval Execution interval in milliseconds (or microseconds)
1278
+ * @param aIterations Number of iterations (-1 for infinite)
1279
+ * @details Allows dynamic control of task execution parameters in one method call.
1280
+ */
1281
+ __TASK_INLINE void set(unsigned long aInterval, long aIterations);
1282
+ #else
1283
+ /**
1284
+ * @brief Set task parameters (Function pointer callbacks)
1285
+ * @param aInterval Execution interval in milliseconds (or microseconds)
1286
+ * @param aIterations Number of iterations (-1 for infinite)
1287
+ * @param aCallback Pointer to callback function
1288
+ * @param aOnEnable Pointer to OnEnable callback (default = NULL)
1289
+ * @param aOnDisable Pointer to OnDisable callback (default = NULL)
1290
+ * @details Allows dynamic control of task execution parameters in one method call.
1291
+ * OnEnable and OnDisable parameters can be omitted (assigned to NULL).
1292
+ */
1293
+ __TASK_INLINE void set(unsigned long aInterval, long aIterations, TaskCallback aCallback,TaskOnEnable aOnEnable=NULL, TaskOnDisable aOnDisable=NULL);
1294
+ #endif // _TASK_OO_CALLBACKS
1295
+
1296
+ /**
1297
+ * @brief Set task execution interval
1298
+ * @param aInterval New interval in milliseconds (or microseconds)
1299
+ * @details Next execution time calculation takes place after the callback method is called,
1300
+ * so new interval will be used immediately by the scheduler. Execution is delayed by the
1301
+ * provided interval. If immediate invocation is required, call forceNextIteration() after
1302
+ * setting new interval or use setIntervalNoDelay() method.
1303
+ */
1304
+ __TASK_INLINE void setInterval(unsigned long aInterval);
1305
+
1306
+ /**
1307
+ * @brief Set task interval without delay
1308
+ * @param aInterval New interval in milliseconds (or microseconds)
1309
+ * @param aOption How to handle the interval change (default = TASK_INTERVAL_KEEP)
1310
+ * TASK_INTERVAL_KEEP - keep the current delay, new interval will be used after current delay expires
1311
+ * TASK_INTERVAL_RECALC - recalculate next execution time based on new interval
1312
+ * TASK_INTERVAL_RESET - reset schedule, next execution time and new interval are updated
1313
+ * @details Sets new interval and provides options for how to handle the timing change.
1314
+ */
1315
+ __TASK_INLINE void setIntervalNodelay(unsigned long aInterval, unsigned int aOption = TASK_INTERVAL_KEEP);
1316
+
1317
+ /**
1318
+ * @brief Get current task interval
1319
+ * @return Current execution interval in milliseconds (or microseconds)
1320
+ */
1321
+ __TASK_INLINE unsigned long getInterval();
1322
+
1323
+ /**
1324
+ * @brief Set number of iterations
1325
+ * @param aIterations Number of iterations (-1 for infinite)
1326
+ * @details Tasks that ran through all their allocated iterations are disabled.
1327
+ * SetIterations() method DOES NOT enable the task. Either enable explicitly,
1328
+ * or use restart methods.
1329
+ */
1330
+ __TASK_INLINE void setIterations(long aIterations);
1331
+
1332
+ /**
1333
+ * @brief Get remaining iterations
1334
+ * @return Number of remaining iterations
1335
+ */
1336
+ __TASK_INLINE long getIterations();
1337
+
1338
+ /**
1339
+ * @brief Get run counter
1340
+ * @return Number of times callback method has been invoked since last enable
1341
+ * @details The runCounter value is incremented before callback method is invoked.
1342
+ * If a task is checking the runCounter value within its callback method, then
1343
+ * the first run value is 1.
1344
+ */
1345
+ __TASK_INLINE unsigned long getRunCounter();
1346
+
1347
+ #ifdef _TASK_SELF_DESTRUCT
1348
+ /**
1349
+ * @brief Enable or disable self-destruction for this task
1350
+ *
1351
+ * When self-destruction is enabled, the task will automatically delete itself
1352
+ * from the scheduler after it completes its final iteration. This is useful
1353
+ * for one-time or temporary tasks that should clean themselves up automatically.
1354
+ *
1355
+ * Self-destruction behavior:
1356
+ * - Task removes itself from the scheduler when it finishes its last iteration
1357
+ * - Applies to tasks with finite iterations (setIterations() > 0)
1358
+ * - Does not apply to infinite tasks (TASK_FOREVER iterations)
1359
+ * - Task object memory is not freed - only removed from scheduler
1360
+ *
1361
+ * @param aSelfDestruct True to enable self-destruction, false to disable (default: true)
1362
+ *
1363
+ * @note This method is only available when _TASK_SELF_DESTRUCT compile-time option is enabled
1364
+ * @note Self-destruction only occurs after the task naturally completes its iterations
1365
+ * @note Manually disabled tasks will not self-destruct
1366
+ * @warning Ensure task object remains valid until self-destruction occurs
1367
+ * @see getSelfDestruct(), setIterations(), disable()
1368
+ * @since Version 3.0.0
1369
+ */
1370
+ __TASK_INLINE void setSelfDestruct(bool aSelfDestruct=true) { iStatus.selfdestruct = aSelfDestruct; }
1371
+
1372
+ /**
1373
+ * @brief Check if self-destruction is enabled for this task
1374
+ *
1375
+ * Returns whether the task is configured to automatically remove itself from
1376
+ * the scheduler after completing its final iteration.
1377
+ *
1378
+ * @return bool True if self-destruction is enabled, false otherwise
1379
+ *
1380
+ * @note This method is only available when _TASK_SELF_DESTRUCT compile-time option is enabled
1381
+ * @see setSelfDestruct(), setIterations()
1382
+ * @since Version 3.0.0
1383
+ */
1384
+ __TASK_INLINE bool getSelfDestruct() { return iStatus.selfdestruct; }
1385
+ #endif // #ifdef _TASK_SELF_DESTRUCT
1386
+
1387
+ #ifdef _TASK_OO_CALLBACKS
1388
+ /**
1389
+ * @brief Pure virtual main task execution callback (Object-Oriented mode)
1390
+ *
1391
+ * This pure virtual method must be implemented by derived classes to define
1392
+ * the task's main execution logic. Called by the scheduler when the task
1393
+ * is ready to execute based on its timing and iteration settings.
1394
+ *
1395
+ * @return bool True if the execution was "productive" (performed meaningful work),
1396
+ * false if the task was idle. A productive return value prevents
1397
+ * the scheduler from entering sleep mode on the next idle cycle,
1398
+ * optimizing power management for active tasks.
1399
+ *
1400
+ * @note Only available when _TASK_OO_CALLBACKS compile-time option is enabled
1401
+ * @note This is a pure virtual function - derived classes MUST implement it
1402
+ * @note Return value affects power management in _TASK_SLEEP_ON_IDLE_RUN mode
1403
+ * @see _TASK_OO_CALLBACKS, _TASK_SLEEP_ON_IDLE_RUN
1404
+ * @since Version 3.0.0
1405
+ *
1406
+ * @par Example:
1407
+ * @code
1408
+ * class MyTask : public Task {
1409
+ * public:
1410
+ * bool Callback() override {
1411
+ * // Perform task work
1412
+ * Serial.println("Task executing");
1413
+ * return true; // Productive execution
1414
+ * }
1415
+ * };
1416
+ * @endcode
1417
+ */
1418
+ virtual __TASK_INLINE bool Callback() =0;
1419
+
1420
+ /**
1421
+ * @brief Virtual task enable lifecycle callback (Object-Oriented mode)
1422
+ *
1423
+ * Called when the task transitions from disabled to enabled state. Allows
1424
+ * derived classes to implement custom initialization logic, resource allocation,
1425
+ * or conditional enabling based on system state.
1426
+ *
1427
+ * @return bool True to allow the task to be enabled, false to prevent enabling.
1428
+ * Returning false keeps the task disabled despite the enable request.
1429
+ *
1430
+ * @note Only available when _TASK_OO_CALLBACKS compile-time option is enabled
1431
+ * @note Default implementation returns true (allow enabling)
1432
+ * @note Called synchronously during enable() operation
1433
+ * @note Conditional enabling useful for resource-dependent tasks
1434
+ * @see _TASK_OO_CALLBACKS, enable(), OnDisable()
1435
+ * @since Version 3.0.0
1436
+ *
1437
+ * @par Example:
1438
+ * @code
1439
+ * class ConditionalTask : public Task {
1440
+ * public:
1441
+ * bool OnEnable() override {
1442
+ * if (systemReady()) {
1443
+ * initializeResources();
1444
+ * return true; // Allow enabling
1445
+ * }
1446
+ * return false; // Prevent enabling
1447
+ * }
1448
+ * };
1449
+ * @endcode
1450
+ */
1451
+ virtual __TASK_INLINE bool OnEnable();
1452
+
1453
+ /**
1454
+ * @brief Virtual task disable lifecycle callback (Object-Oriented mode)
1455
+ *
1456
+ * Called when the task transitions from enabled to disabled state. Allows
1457
+ * derived classes to implement custom cleanup logic, resource deallocation,
1458
+ * or state preservation when the task is deactivated.
1459
+ *
1460
+ * @note Only available when _TASK_OO_CALLBACKS compile-time option is enabled
1461
+ * @note Called synchronously during disable() operation
1462
+ * @note Called during automatic disable (iteration completion, errors)
1463
+ * @note Default implementation performs no action
1464
+ * @see _TASK_OO_CALLBACKS, disable(), OnEnable()
1465
+ * @since Version 3.0.0
1466
+ *
1467
+ * @par Example:
1468
+ * @code
1469
+ * class ResourceTask : public Task {
1470
+ * public:
1471
+ * void OnDisable() override {
1472
+ * cleanupResources();
1473
+ * saveState();
1474
+ * Serial.println("Task disabled");
1475
+ * }
1476
+ * };
1477
+ * @endcode
1478
+ */
1479
+ virtual __TASK_INLINE void OnDisable();
1480
+ #else
1481
+ /**
1482
+ * @brief Set the main task execution callback function
1483
+ *
1484
+ * Assigns a new callback function that will be executed when the task runs.
1485
+ * The callback function defines the task's main execution logic and is called
1486
+ * by the scheduler when the task is ready to execute.
1487
+ *
1488
+ * @param aCallback Function pointer to the new callback function.
1489
+ * Must have signature: void callbackFunction()
1490
+ *
1491
+ * @note Only available when _TASK_OO_CALLBACKS is NOT enabled (function pointer mode)
1492
+ * @note Callback can be changed dynamically during task execution
1493
+ * @note Setting nullptr callback is allowed but will result in no-op execution
1494
+ * @see TaskCallback, yield(), yieldOnce()
1495
+ * @since Version 1.0.0
1496
+ *
1497
+ * @par Example:
1498
+ * @code
1499
+ * void task1Function() {
1500
+ * Serial.println("Task 1 executing");
1501
+ * }
1502
+ *
1503
+ * void task2Function() {
1504
+ * Serial.println("Task 2 executing");
1505
+ * }
1506
+ *
1507
+ * Task myTask(1000, TASK_FOREVER, task1Function, &scheduler);
1508
+ * myTask.setCallback(task2Function); // Switch to different function
1509
+ * @endcode
1510
+ */
1511
+ __TASK_INLINE void setCallback(TaskCallback aCallback) ;
1512
+
1513
+ /**
1514
+ * @brief Set the task enable lifecycle callback function
1515
+ *
1516
+ * Assigns a callback function that will be called when the task transitions
1517
+ * from disabled to enabled state. Enables custom initialization logic and
1518
+ * conditional enabling based on system conditions.
1519
+ *
1520
+ * @param aCallback Function pointer to the enable callback function.
1521
+ * Must have signature: bool onEnableFunction()
1522
+ * Return true to allow enabling, false to prevent it.
1523
+ *
1524
+ * @note Only available when _TASK_OO_CALLBACKS is NOT enabled (function pointer mode)
1525
+ * @note Called synchronously during enable() operation
1526
+ * @note Returning false from callback prevents task enabling
1527
+ * @note Setting nullptr removes the enable callback
1528
+ * @see TaskOnEnable, setOnDisable(), enable()
1529
+ * @since Version 2.0.0
1530
+ *
1531
+ * @par Example:
1532
+ * @code
1533
+ * bool checkSystemReady() {
1534
+ * return digitalRead(READY_PIN) == HIGH;
1535
+ * }
1536
+ *
1537
+ * Task myTask(1000, 10, mainCallback, &scheduler);
1538
+ * myTask.setOnEnable(checkSystemReady); // Conditional enabling
1539
+ * @endcode
1540
+ */
1541
+ __TASK_INLINE void setOnEnable(TaskOnEnable aCallback) ;
1542
+
1543
+ /**
1544
+ * @brief Set the task disable lifecycle callback function
1545
+ *
1546
+ * Assigns a callback function that will be called when the task transitions
1547
+ * from enabled to disabled state. Enables custom cleanup logic and resource
1548
+ * management when the task is deactivated.
1549
+ *
1550
+ * @param aCallback Function pointer to the disable callback function.
1551
+ * Must have signature: void onDisableFunction()
1552
+ *
1553
+ * @note Only available when _TASK_OO_CALLBACKS is NOT enabled (function pointer mode)
1554
+ * @note Called synchronously during disable() operation
1555
+ * @note Called during automatic disable (iteration completion, errors)
1556
+ * @note Setting nullptr removes the disable callback
1557
+ * @see TaskOnDisable, setOnEnable(), disable()
1558
+ * @since Version 2.0.0
1559
+ *
1560
+ * @par Example:
1561
+ * @code
1562
+ * void cleanupTask() {
1563
+ * Serial.println("Task cleaning up");
1564
+ * // Release resources, save state, etc.
1565
+ * }
1566
+ *
1567
+ * Task myTask(1000, 5, mainCallback, &scheduler);
1568
+ * myTask.setOnDisable(cleanupTask); // Cleanup on disable
1569
+ * @endcode
1570
+ */
1571
+ __TASK_INLINE void setOnDisable(TaskOnDisable aCallback) ;
1572
+
1573
+ /**
1574
+ * @brief Permanently switch to a new callback function
1575
+ *
1576
+ * Changes the task's callback function to the specified new function for all
1577
+ * subsequent executions. This enables state machine behavior and multi-phase
1578
+ * task processing within a single task object.
1579
+ *
1580
+ * @param aCallback Function pointer to the new callback function.
1581
+ * Must have signature: void newCallbackFunction()
1582
+ *
1583
+ * @note Only available when _TASK_OO_CALLBACKS is NOT enabled (function pointer mode)
1584
+ * @note Change takes effect immediately and is permanent
1585
+ * @note All future executions will use the new callback
1586
+ * @note Different from yieldOnce() which executes new callback only once
1587
+ * @see yieldOnce(), setCallback(), TaskCallback
1588
+ * @since Version 2.0.0
1589
+ *
1590
+ * @par Example:
1591
+ * @code
1592
+ * void phase1Callback() {
1593
+ * Serial.println("Phase 1");
1594
+ * // Switch to phase 2 after some condition
1595
+ * if (conditionMet()) {
1596
+ * myTask.yield(phase2Callback);
1597
+ * }
1598
+ * }
1599
+ *
1600
+ * void phase2Callback() {
1601
+ * Serial.println("Phase 2");
1602
+ * }
1603
+ * @endcode
1604
+ */
1605
+ __TASK_INLINE void yield(TaskCallback aCallback);
1606
+
1607
+ /**
1608
+ * @brief Execute a callback function once, then disable the task
1609
+ *
1610
+ * Switches to the specified callback function for exactly one execution,
1611
+ * then automatically disables the task. Useful for one-time completion
1612
+ * logic, cleanup operations, or finalization steps.
1613
+ *
1614
+ * @param aCallback Function pointer to the callback function to execute once.
1615
+ * Must have signature: void onceCallbackFunction()
1616
+ *
1617
+ * @note Only available when _TASK_OO_CALLBACKS is NOT enabled (function pointer mode)
1618
+ * @note Task executes the new callback exactly once on next scheduler pass
1619
+ * @note Task automatically disables after the single execution
1620
+ * @note Original callback is not restored (task becomes inactive)
1621
+ * @note Useful for completion handlers and one-shot operations
1622
+ * @see yield(), setCallback(), TaskCallback
1623
+ * @since Version 2.0.0
1624
+ *
1625
+ * @par Example:
1626
+ * @code
1627
+ * void mainCallback() {
1628
+ * static int count = 0;
1629
+ * Serial.print("Main execution: ");
1630
+ * Serial.println(++count);
1631
+ *
1632
+ * if (count >= 5) {
1633
+ * myTask.yieldOnce(finalizationCallback);
1634
+ * }
1635
+ * }
1636
+ *
1637
+ * void finalizationCallback() {
1638
+ * Serial.println("Task completed - final cleanup");
1639
+ * // Task will automatically disable after this
1640
+ * }
1641
+ * @endcode
1642
+ */
1643
+ __TASK_INLINE void yieldOnce(TaskCallback aCallback);
1644
+ #endif // _TASK_OO_CALLBACKS
1645
+
1646
+ /**
1647
+ * @brief Check if this is the first iteration
1648
+ * @return true if current pass is (or will be) a first iteration of the task
1649
+ */
1650
+ __TASK_INLINE bool isFirstIteration() ;
1651
+
1652
+ /**
1653
+ * @brief Check if this is the last iteration
1654
+ * @return true if current pass is the last iteration (for tasks with limited iterations only)
1655
+ */
1656
+ __TASK_INLINE bool isLastIteration() ;
1657
+
1658
+ #ifdef _TASK_TIMECRITICAL
1659
+ /**
1660
+ * @brief Get the execution overrun time in microseconds
1661
+ *
1662
+ * Returns the amount of time (in microseconds) that the task's execution
1663
+ * exceeded its scheduled interval. This measures how much longer the task
1664
+ * took to complete compared to its allocated time budget, helping identify
1665
+ * timing violations and performance bottlenecks.
1666
+ *
1667
+ * @return long Overrun time in microseconds. Positive values indicate the task
1668
+ * ran longer than its interval, negative values indicate it finished
1669
+ * early. Zero indicates the task completed exactly on schedule.
1670
+ *
1671
+ * @note Only available when _TASK_TIMECRITICAL compile-time option is enabled
1672
+ * @note Measured from scheduled execution time to actual completion time
1673
+ * @note Useful for real-time system analysis and performance optimization
1674
+ * @see getStartDelay(), _TASK_TIMECRITICAL
1675
+ * @since Version 3.0.0
1676
+ *
1677
+ * @par Example:
1678
+ * @code
1679
+ * void criticalTaskCallback() {
1680
+ * // Perform time-critical work
1681
+ * performCriticalOperation();
1682
+ *
1683
+ * // Check if we exceeded our time budget
1684
+ * long overrun = myTask.getOverrun();
1685
+ * if (overrun > 1000) { // More than 1ms overrun
1686
+ * Serial.print("Warning: Task overrun by ");
1687
+ * Serial.print(overrun);
1688
+ * Serial.println(" microseconds");
1689
+ * }
1690
+ * }
1691
+ * @endcode
1692
+ */
1693
+ __TASK_INLINE long getOverrun() ;
1694
+
1695
+ /**
1696
+ * @brief Get the task start delay in microseconds
1697
+ *
1698
+ * Returns the amount of time (in microseconds) between when the task was
1699
+ * scheduled to start and when it actually began execution. This measures
1700
+ * scheduler latency and helps identify system timing accuracy and load issues.
1701
+ *
1702
+ * @return long Start delay in microseconds. Positive values indicate the task
1703
+ * started later than scheduled, negative values indicate it started
1704
+ * early. Zero indicates perfect timing accuracy.
1705
+ *
1706
+ * @note Only available when _TASK_TIMECRITICAL compile-time option is enabled
1707
+ * @note Measured from scheduled start time to actual execution start time
1708
+ * @note High values may indicate system overload or scheduler inefficiency
1709
+ * @see getOverrun(), _TASK_TIMECRITICAL
1710
+ * @since Version 3.0.0
1711
+ *
1712
+ * @par Example:
1713
+ * @code
1714
+ * void timingAnalysisCallback() {
1715
+ * long startDelay = myTask.getStartDelay();
1716
+ * long overrun = myTask.getOverrun();
1717
+ *
1718
+ * Serial.print("Start delay: ");
1719
+ * Serial.print(startDelay);
1720
+ * Serial.print("us, Overrun: ");
1721
+ * Serial.print(overrun);
1722
+ * Serial.println("us");
1723
+ *
1724
+ * if (startDelay > 500) {
1725
+ * Serial.println("Warning: High scheduler latency detected");
1726
+ * }
1727
+ * }
1728
+ * @endcode
1729
+ */
1730
+ __TASK_INLINE long getStartDelay() ;
1731
+ #endif // _TASK_TIMECRITICAL
1732
+
1733
+ #ifdef _TASK_STATUS_REQUEST
1734
+ /**
1735
+ * @brief Wait for a StatusRequest to be signaled, then execute with new parameters
1736
+ *
1737
+ * Suspends this task until the specified StatusRequest is signaled by another task,
1738
+ * then reconfigures this task with new interval and iterations before resuming.
1739
+ * Enables sophisticated inter-task communication and coordination patterns.
1740
+ *
1741
+ * @param aStatusRequest Pointer to StatusRequest object to wait for
1742
+ * @param aInterval New execution interval in milliseconds (default: 0 = keep current)
1743
+ * @param aIterations New iteration count (default: 1 = single execution)
1744
+ *
1745
+ * @return bool True if wait was successful and task was reconfigured,
1746
+ * false if StatusRequest is invalid or operation failed
1747
+ *
1748
+ * @note Only available when _TASK_STATUS_REQUEST compile-time option is enabled
1749
+ * @note Task becomes inactive until StatusRequest is signaled
1750
+ * @note StatusRequest must be signaled by another task's completion
1751
+ * @note Interval of 0 keeps current task interval unchanged
1752
+ * @see waitForDelayed(), getStatusRequest(), StatusRequest
1753
+ * @since Version 3.0.0
1754
+ *
1755
+ * @par Example:
1756
+ * @code
1757
+ * Task task1(1000, TASK_FOREVER, task1Callback, &scheduler);
1758
+ * Task task2(500, 1, task2Callback, &scheduler);
1759
+ *
1760
+ * void task1Callback() {
1761
+ * // Wait for task2 to complete, then run every 200ms for 5 iterations
1762
+ * if (task1.waitFor(task2.getStatusRequest(), 200, 5)) {
1763
+ * Serial.println("Task1 resumed after task2 completion");
1764
+ * }
1765
+ * }
1766
+ * @endcode
1767
+ */
1768
+ __TASK_INLINE bool waitFor(StatusRequest* aStatusRequest, unsigned long aInterval = 0, long aIterations = 1);
1769
+
1770
+ /**
1771
+ * @brief Wait for a StatusRequest with delay, then execute with new parameters
1772
+ *
1773
+ * Similar to waitFor() but introduces an additional delay before the task
1774
+ * becomes eligible for execution after the StatusRequest is signaled.
1775
+ * Useful for staggered execution and preventing simultaneous task activation.
1776
+ *
1777
+ * @param aStatusRequest Pointer to StatusRequest object to wait for
1778
+ * @param aInterval New execution interval in milliseconds (default: 0 = keep current)
1779
+ * @param aIterations New iteration count (default: 1 = single execution)
1780
+ *
1781
+ * @return bool True if wait was successful and task was reconfigured,
1782
+ * false if StatusRequest is invalid or operation failed
1783
+ *
1784
+ * @note Only available when _TASK_STATUS_REQUEST compile-time option is enabled
1785
+ * @note Adds scheduling delay after StatusRequest is signaled
1786
+ * @note Prevents immediate execution, allowing for staggered task activation
1787
+ * @note Interval of 0 keeps current task interval unchanged
1788
+ * @see waitFor(), getStatusRequest(), StatusRequest
1789
+ * @since Version 3.0.0
1790
+ *
1791
+ * @par Example:
1792
+ * @code
1793
+ * void coordinatorCallback() {
1794
+ * // Wait for sensor task, then start processing with 1 second delay
1795
+ * if (processingTask.waitForDelayed(sensorTask.getStatusRequest(), 1000, 10)) {
1796
+ * Serial.println("Processing will start 1 second after sensor completion");
1797
+ * }
1798
+ * }
1799
+ * @endcode
1800
+ */
1801
+ __TASK_INLINE bool waitForDelayed(StatusRequest* aStatusRequest, unsigned long aInterval = 0, long aIterations = 1);
1802
+
1803
+ /**
1804
+ * @brief Get the external StatusRequest object for this task
1805
+ *
1806
+ * Returns a pointer to the StatusRequest object that other tasks can use
1807
+ * to wait for this task's completion. This enables the creation of task
1808
+ * dependency chains and sophisticated coordination patterns.
1809
+ *
1810
+ * @return StatusRequest* Pointer to the task's external StatusRequest object,
1811
+ * or nullptr if StatusRequest functionality is not available
1812
+ *
1813
+ * @note Only available when _TASK_STATUS_REQUEST compile-time option is enabled
1814
+ * @note External StatusRequest is signaled when task completes its iterations
1815
+ * @note Used by other tasks in waitFor() and waitForDelayed() calls
1816
+ * @note Different from getInternalStatusRequest() which is used for internal coordination
1817
+ * @see getInternalStatusRequest(), waitFor(), StatusRequest
1818
+ * @since Version 3.0.0
1819
+ *
1820
+ * @par Example:
1821
+ * @code
1822
+ * Task producerTask(1000, 5, producerCallback, &scheduler);
1823
+ * Task consumerTask(100, 1, consumerCallback, &scheduler);
1824
+ *
1825
+ * void setupTasks() {
1826
+ * // Consumer waits for producer to complete
1827
+ * StatusRequest* producerStatus = producerTask.getStatusRequest();
1828
+ * consumerTask.waitFor(producerStatus, 500, TASK_FOREVER);
1829
+ * }
1830
+ * @endcode
1831
+ */
1832
+ __TASK_INLINE StatusRequest* getStatusRequest() ;
1833
+
1834
+ /**
1835
+ * @brief Get the internal StatusRequest object for this task
1836
+ *
1837
+ * Returns a pointer to the internal StatusRequest object used for advanced
1838
+ * task coordination patterns within the same task or tightly coupled task groups.
1839
+ * Provides finer control over task signaling and coordination mechanisms.
1840
+ *
1841
+ * @return StatusRequest* Pointer to the task's internal StatusRequest object,
1842
+ * or nullptr if StatusRequest functionality is not available
1843
+ *
1844
+ * @note Only available when _TASK_STATUS_REQUEST compile-time option is enabled
1845
+ * @note Internal StatusRequest provides advanced coordination capabilities
1846
+ * @note Used for complex task orchestration and state machine patterns
1847
+ * @note Separate from external StatusRequest for different coordination levels
1848
+ * @see getStatusRequest(), waitFor(), StatusRequest
1849
+ * @since Version 3.0.0
1850
+ *
1851
+ * @par Example:
1852
+ * @code
1853
+ * void complexCoordinationCallback() {
1854
+ * StatusRequest* internalStatus = myTask.getInternalStatusRequest();
1855
+ * // Use internal status for advanced coordination
1856
+ * otherTask.waitForDelayed(internalStatus, 100, 1);
1857
+ * }
1858
+ * @endcode
1859
+ */
1860
+ __TASK_INLINE StatusRequest* getInternalStatusRequest() ;
1861
+ #endif // _TASK_STATUS_REQUEST
1862
+
1863
+ #ifdef _TASK_WDT_IDS
1864
+ /**
1865
+ * @brief Set the watchdog timer ID for this task
1866
+ *
1867
+ * Assigns a unique identifier to the task for watchdog timer monitoring.
1868
+ * The ID is used by external watchdog systems to track task execution
1869
+ * and detect hung or malfunctioning tasks in mission-critical applications.
1870
+ *
1871
+ * @param aID Unique identifier for watchdog monitoring (typically 0-255 range)
1872
+ *
1873
+ * @note Only available when _TASK_WDT_IDS compile-time option is enabled
1874
+ * @note ID should be unique across all tasks in the system
1875
+ * @note Used in conjunction with external watchdog hardware/software
1876
+ * @note Essential for safety-critical and mission-critical applications
1877
+ * @see getId(), setControlPoint(), _TASK_WDT_IDS
1878
+ * @since Version 3.0.0
1879
+ *
1880
+ * @par Example:
1881
+ * @code
1882
+ * Task criticalTask(1000, TASK_FOREVER, criticalCallback, &scheduler);
1883
+ * Task monitorTask(5000, TASK_FOREVER, monitorCallback, &scheduler);
1884
+ *
1885
+ * void setup() {
1886
+ * criticalTask.setId(1); // Critical system task
1887
+ * monitorTask.setId(2); // System monitor task
1888
+ * }
1889
+ *
1890
+ * void criticalCallback() {
1891
+ * // Reset watchdog for this task ID
1892
+ * resetWatchdog(criticalTask.getId());
1893
+ * }
1894
+ * @endcode
1895
+ */
1896
+ __TASK_INLINE void setId(unsigned int aID) ;
1897
+
1898
+ /**
1899
+ * @brief Get the watchdog timer ID for this task
1900
+ *
1901
+ * Returns the unique identifier assigned to this task for watchdog monitoring.
1902
+ * Used by watchdog systems and monitoring code to identify which task is
1903
+ * currently executing or has failed to respond.
1904
+ *
1905
+ * @return unsigned int The task's watchdog ID, or 0 if no ID has been set
1906
+ *
1907
+ * @note Only available when _TASK_WDT_IDS compile-time option is enabled
1908
+ * @note Returns the ID set by setId(), or 0 for uninitialized tasks
1909
+ * @note Used for watchdog reset operations and task identification
1910
+ * @see setId(), getControlPoint(), _TASK_WDT_IDS
1911
+ * @since Version 3.0.0
1912
+ *
1913
+ * @par Example:
1914
+ * @code
1915
+ * void watchdogResetCallback() {
1916
+ * unsigned int taskId = myTask.getId();
1917
+ * if (taskId > 0) {
1918
+ * // Reset watchdog for this specific task
1919
+ * resetWatchdogTimer(taskId);
1920
+ * Serial.print("Watchdog reset for task ID: ");
1921
+ * Serial.println(taskId);
1922
+ * }
1923
+ * }
1924
+ * @endcode
1925
+ */
1926
+ __TASK_INLINE unsigned int getId() ;
1927
+
1928
+ /**
1929
+ * @brief Set the control point identifier for this task
1930
+ *
1931
+ * Assigns a control point identifier used for fine-grained execution monitoring
1932
+ * and debugging. Control points can mark specific execution phases or critical
1933
+ * sections within task callbacks for detailed system analysis.
1934
+ *
1935
+ * @param aPoint Control point identifier (application-defined meaning)
1936
+ *
1937
+ * @note Only available when _TASK_WDT_IDS compile-time option is enabled
1938
+ * @note Control points provide execution phase tracking within tasks
1939
+ * @note Used for debugging, profiling, and fine-grained monitoring
1940
+ * @note Meaning and usage are application-specific
1941
+ * @see getControlPoint(), setId(), _TASK_WDT_IDS
1942
+ * @since Version 3.0.0
1943
+ *
1944
+ * @par Example:
1945
+ * @code
1946
+ * void complexTaskCallback() {
1947
+ * myTask.setControlPoint(1); // Phase 1: Sensor reading
1948
+ * readSensors();
1949
+ *
1950
+ * myTask.setControlPoint(2); // Phase 2: Data processing
1951
+ * processData();
1952
+ *
1953
+ * myTask.setControlPoint(3); // Phase 3: Output generation
1954
+ * generateOutput();
1955
+ *
1956
+ * myTask.setControlPoint(0); // Phase complete
1957
+ * }
1958
+ * @endcode
1959
+ */
1960
+ __TASK_INLINE void setControlPoint(unsigned int aPoint) ;
1961
+
1962
+ /**
1963
+ * @brief Get the current control point identifier for this task
1964
+ *
1965
+ * Returns the current control point identifier, indicating which execution
1966
+ * phase or critical section the task is currently in or last executed.
1967
+ * Useful for debugging hung tasks and execution flow analysis.
1968
+ *
1969
+ * @return unsigned int Current control point identifier, or 0 if none set
1970
+ *
1971
+ * @note Only available when _TASK_WDT_IDS compile-time option is enabled
1972
+ * @note Returns the most recent control point set by setControlPoint()
1973
+ * @note Used for debugging and execution phase identification
1974
+ * @note Can help identify where tasks hang or fail
1975
+ * @see setControlPoint(), getId(), _TASK_WDT_IDS
1976
+ * @since Version 3.0.0
1977
+ *
1978
+ * @par Example:
1979
+ * @code
1980
+ * void monitorTaskCallback() {
1981
+ * unsigned int controlPoint = criticalTask.getControlPoint();
1982
+ * unsigned long lastRun = criticalTask.getRunCounter();
1983
+ *
1984
+ * if (lastRun == previousRunCount && controlPoint != 0) {
1985
+ * Serial.print("Critical task hung at control point: ");
1986
+ * Serial.println(controlPoint);
1987
+ * // Take corrective action
1988
+ * }
1989
+ * previousRunCount = lastRun;
1990
+ * }
1991
+ * @endcode
1992
+ */
1993
+ __TASK_INLINE unsigned int getControlPoint() ;
1994
+ #endif // _TASK_WDT_IDS
1995
+
1996
+ #ifdef _TASK_LTS_POINTER
1997
+ /**
1998
+ * @brief Set the Local Task Storage (LTS) pointer for this task
1999
+ *
2000
+ * Assigns a pointer to task-specific data storage that persists across
2001
+ * task executions. This enables tasks to maintain state, store working
2002
+ * data, or reference external resources without using global variables.
2003
+ *
2004
+ * @param aPtr Pointer to task-local storage area (any data type)
2005
+ *
2006
+ * @note Only available when _TASK_LTS_POINTER compile-time option is enabled
2007
+ * @note Pointer can reference any data structure or object
2008
+ * @note Memory management is application responsibility
2009
+ * @note Enables object-oriented patterns and data encapsulation
2010
+ * @see getLtsPointer(), _TASK_LTS_POINTER
2011
+ * @since Version 3.0.0
2012
+ *
2013
+ * @par Example:
2014
+ * @code
2015
+ * struct TaskData {
2016
+ * int counter;
2017
+ * float average;
2018
+ * bool initialized;
2019
+ * };
2020
+ *
2021
+ * TaskData myTaskData = {0, 0.0, false};
2022
+ * Task dataTask(1000, TASK_FOREVER, dataCallback, &scheduler);
2023
+ *
2024
+ * void setup() {
2025
+ * dataTask.setLtsPointer(&myTaskData);
2026
+ * }
2027
+ *
2028
+ * void dataCallback() {
2029
+ * TaskData* data = (TaskData*)dataTask.getLtsPointer();
2030
+ * if (data) {
2031
+ * data->counter++;
2032
+ * // Use task-specific data
2033
+ * }
2034
+ * }
2035
+ * @endcode
2036
+ */
2037
+ __TASK_INLINE void setLtsPointer(void *aPtr) ;
2038
+
2039
+ /**
2040
+ * @brief Get the Local Task Storage (LTS) pointer for this task
2041
+ *
2042
+ * Returns the pointer to task-specific data storage previously set with
2043
+ * setLtsPointer(). Enables tasks to access their persistent data without
2044
+ * relying on global variables or external storage mechanisms.
2045
+ *
2046
+ * @return void* Pointer to task-local storage, or nullptr if none set
2047
+ *
2048
+ * @note Only available when _TASK_LTS_POINTER compile-time option is enabled
2049
+ * @note Returned pointer must be cast to appropriate data type
2050
+ * @note Returns nullptr if no LTS pointer has been set
2051
+ * @note Enables clean data encapsulation and object-oriented patterns
2052
+ * @see setLtsPointer(), _TASK_LTS_POINTER
2053
+ * @since Version 3.0.0
2054
+ *
2055
+ * @par Example:
2056
+ * @code
2057
+ * struct SensorData {
2058
+ * float temperature;
2059
+ * float humidity;
2060
+ * unsigned long lastReading;
2061
+ * };
2062
+ *
2063
+ * void sensorCallback() {
2064
+ * SensorData* data = (SensorData*)sensorTask.getLtsPointer();
2065
+ * if (data) {
2066
+ * data->temperature = readTemperature();
2067
+ * data->humidity = readHumidity();
2068
+ * data->lastReading = millis();
2069
+ *
2070
+ * Serial.print("Temp: ");
2071
+ * Serial.print(data->temperature);
2072
+ * Serial.print("°C, Humidity: ");
2073
+ * Serial.print(data->humidity);
2074
+ * Serial.println("%");
2075
+ * }
2076
+ * }
2077
+ * @endcode
2078
+ */
2079
+ __TASK_INLINE void* getLtsPointer() ;
2080
+ #endif // _TASK_LTS_POINTER
2081
+
2082
+ #ifdef _TASK_EXPOSE_CHAIN
2083
+ /**
2084
+ * @brief Get pointer to the previous task in the scheduler's task chain
2085
+ *
2086
+ * Returns a pointer to the task that precedes this task in the scheduler's
2087
+ * internal linked list. This enables task chain traversal, debugging, and
2088
+ * advanced task management operations for custom scheduler behaviors.
2089
+ *
2090
+ * @return Task* Pointer to the previous task in the chain, or nullptr if:
2091
+ * - This is the first task in the chain
2092
+ * - Task is not currently registered with a scheduler
2093
+ * - Task chain is empty
2094
+ *
2095
+ * @note Only available when _TASK_EXPOSE_CHAIN compile-time option is enabled
2096
+ * @note Exposes internal scheduler data structure for advanced operations
2097
+ * @note Chain order may not correlate with execution order (depends on timing)
2098
+ * @note Useful for debugging, custom algorithms, and chain analysis
2099
+ * @warning Direct chain manipulation can corrupt scheduler state
2100
+ * @see getNextTask(), _TASK_EXPOSE_CHAIN
2101
+ * @since Version 3.0.0
2102
+ *
2103
+ * @par Example:
2104
+ * @code
2105
+ * void analyzeTaskChain(Task& startTask) {
2106
+ * Task* current = &startTask;
2107
+ * int position = 0;
2108
+ *
2109
+ * // Walk backwards through the chain
2110
+ * while (current->getPreviousTask() != nullptr) {
2111
+ * current = current->getPreviousTask();
2112
+ * position++;
2113
+ * }
2114
+ *
2115
+ * Serial.print("Task is at position ");
2116
+ * Serial.print(position);
2117
+ * Serial.println(" from chain start");
2118
+ * }
2119
+ *
2120
+ * void debugTaskChain(Scheduler& scheduler) {
2121
+ * // Find chain relationships for debugging
2122
+ * Serial.println("Task Chain Analysis:");
2123
+ * // Implementation would traverse and analyze the chain
2124
+ * }
2125
+ * @endcode
2126
+ */
2127
+ __TASK_INLINE Task* getPreviousTask() { return iPrev; };
2128
+
2129
+ /**
2130
+ * @brief Get pointer to the next task in the scheduler's task chain
2131
+ *
2132
+ * Returns a pointer to the task that follows this task in the scheduler's
2133
+ * internal linked list. This enables forward chain traversal, task enumeration,
2134
+ * and advanced scheduler analysis for custom task management operations.
2135
+ *
2136
+ * @return Task* Pointer to the next task in the chain, or nullptr if:
2137
+ * - This is the last task in the chain
2138
+ * - Task is not currently registered with a scheduler
2139
+ * - Task chain is empty
2140
+ *
2141
+ * @note Only available when _TASK_EXPOSE_CHAIN compile-time option is enabled
2142
+ * @note Exposes internal scheduler data structure for advanced operations
2143
+ * @note Chain order is registration order, not execution priority
2144
+ * @note Useful for iteration, monitoring, and custom scheduler algorithms
2145
+ * @warning Direct chain manipulation can corrupt scheduler state
2146
+ * @see getPreviousTask(), _TASK_EXPOSE_CHAIN
2147
+ * @since Version 3.0.0
2148
+ *
2149
+ * @par Example:
2150
+ * @code
2151
+ * void printAllTasks(Task& firstTask) {
2152
+ * Task* current = &firstTask;
2153
+ * int taskCount = 0;
2154
+ *
2155
+ * Serial.println("=== Task Chain Report ===");
2156
+ * while (current != nullptr) {
2157
+ * taskCount++;
2158
+ * Serial.print("Task ");
2159
+ * Serial.print(taskCount);
2160
+ * Serial.print(": Enabled=");
2161
+ * Serial.print(current->isEnabled() ? "YES" : "NO");
2162
+ * Serial.print(", Interval=");
2163
+ * Serial.print(current->getInterval());
2164
+ * Serial.print("ms, Iterations=");
2165
+ * Serial.println(current->getIterations());
2166
+ *
2167
+ * current = current->getNextTask();
2168
+ * }
2169
+ * Serial.print("Total tasks: ");
2170
+ * Serial.println(taskCount);
2171
+ * }
2172
+ *
2173
+ * int countEnabledTasks(Task& anyTask) {
2174
+ * // Find start of chain
2175
+ * Task* start = &anyTask;
2176
+ * while (start->getPreviousTask() != nullptr) {
2177
+ * start = start->getPreviousTask();
2178
+ * }
2179
+ *
2180
+ * // Count enabled tasks
2181
+ * int enabledCount = 0;
2182
+ * Task* current = start;
2183
+ * while (current != nullptr) {
2184
+ * if (current->isEnabled()) {
2185
+ * enabledCount++;
2186
+ * }
2187
+ * current = current->getNextTask();
2188
+ * }
2189
+ * return enabledCount;
2190
+ * }
2191
+ * @endcode
2192
+ */
2193
+ __TASK_INLINE Task* getNextTask() { return iNext; };
2194
+ #endif // _TASK_EXPOSE_CHAIN
2195
+
2196
+ _TASK_SCOPE:
2197
+ __TASK_INLINE void reset();
2198
+
2199
+ volatile _task_status iStatus;
2200
+ volatile unsigned long iInterval; // execution interval in milliseconds (or microseconds). 0 - immediate
2201
+ volatile unsigned long iDelay; // actual delay until next execution (usually equal iInterval)
2202
+ volatile unsigned long iPreviousMillis; // previous invocation time (millis). Next invocation = iPreviousMillis + iInterval. Delayed tasks will "catch up"
2203
+
2204
+ #ifdef _TASK_SCHEDULING_OPTIONS
2205
+ unsigned int iOption; // scheduling option
2206
+ #endif // _TASK_SCHEDULING_OPTIONS
2207
+
2208
+ #ifdef _TASK_TIMECRITICAL
2209
+ volatile long iOverrun; // negative if task is "catching up" to it's schedule (next invocation time is already in the past)
2210
+ volatile long iStartDelay; // actual execution of the task's callback method was delayed by this number of millis
2211
+ #endif // _TASK_TIMECRITICAL
2212
+
2213
+ volatile long iIterations; // number of iterations left. 0 - last iteration. -1 - infinite iterations
2214
+ long iSetIterations; // number of iterations originally requested (for restarts)
2215
+ unsigned long iRunCounter; // current number of iteration (starting with 1). Resets on enable.
2216
+
2217
+ #ifndef _TASK_OO_CALLBACKS
2218
+ TaskCallback iCallback; // pointer to the void callback method
2219
+ TaskOnEnable iOnEnable; // pointer to the bool OnEnable callback method
2220
+ TaskOnDisable iOnDisable; // pointer to the void OnDisable method
2221
+ #endif // _TASK_OO_CALLBACKS
2222
+
2223
+ Task *iPrev, *iNext; // pointers to the previous and next tasks in the chain
2224
+ Scheduler *iScheduler; // pointer to the current scheduler
2225
+
2226
+ #ifdef _TASK_STATUS_REQUEST
2227
+ StatusRequest *iStatusRequest; // pointer to the status request task is or was waiting on
2228
+ StatusRequest iMyStatusRequest; // internal Status request to let other tasks know of completion
2229
+ #endif // _TASK_STATUS_REQUEST
2230
+
2231
+ #ifdef _TASK_WDT_IDS
2232
+ unsigned int iTaskID; // task ID (for debugging and watchdog identification)
2233
+ unsigned int iControlPoint; // current control point within the callback method. Reset to 0 by scheduler at the beginning of each pass
2234
+ #endif // _TASK_WDT_IDS
2235
+
2236
+ #ifdef _TASK_LTS_POINTER
2237
+ void *iLTS; // pointer to task's local storage. Needs to be recast to appropriate type (usually a struct).
2238
+ #endif // _TASK_LTS_POINTER
2239
+
2240
+ #ifdef _TASK_TIMEOUT
2241
+ unsigned long iTimeout; // Task overall timeout
2242
+ unsigned long iStarttime; // millis at task start time
2243
+ #endif // _TASK_TIMEOUT
2244
+ };
2245
+
2246
+ /**
2247
+ * @class Scheduler
2248
+ * @brief Task scheduler for cooperative multitasking
2249
+ *
2250
+ * @details The Scheduler class manages the execution of tasks in a cooperative multitasking environment.
2251
+ * It maintains a chain of tasks and executes them according to their schedules and priorities.
2252
+ *
2253
+ * Key features:
2254
+ * - Cooperative multitasking (non-preemptive)
2255
+ * - Task chain management
2256
+ * - Priority layer support
2257
+ * - Sleep mode support for power saving
2258
+ * - Thread safety options
2259
+ * - Performance monitoring
2260
+ *
2261
+ * The scheduler executes Tasks' callback methods in the order the tasks were added to the chain,
2262
+ * from first to last. Scheduler stops and exits after processing the chain once in order to allow
2263
+ * other statements in the main code of loop() method to run. This is referred to as a "scheduling pass".
2264
+ *
2265
+ * @note Normally, there is no need to have any other statements in the loop() method other than
2266
+ * the Scheduler's execute() method.
2267
+ *
2268
+ * @see Task, StatusRequest
2269
+ */
2270
+ class Scheduler {
2271
+ friend class Task;
2272
+ public:
2273
+ /**
2274
+ * @brief Default constructor
2275
+ * @details Creates task scheduler with default parameters and an empty task queue.
2276
+ */
2277
+ __TASK_INLINE Scheduler();
2278
+
2279
+ /**
2280
+ * @brief Initialize the scheduler
2281
+ * @details Initializes the task queue and scheduler parameters. Executed as part of constructor,
2282
+ * so doesn't need to be explicitly called after creation.
2283
+ *
2284
+ * @note By default scheduler is allowed to put processor to IDLE sleep mode. If this behavior
2285
+ * was changed via allowSleep() method, init() will NOT reset the sleep parameter.
2286
+ */
2287
+ __TASK_INLINE void init();
2288
+
2289
+ /**
2290
+ * @brief Add task to execution chain
2291
+ * @param aTask Reference to task to be added
2292
+ * @details Adds task to the execution queue (or chain) of tasks by appending it to the end
2293
+ * of the chain. If two tasks are scheduled for execution, the sequence will match the order
2294
+ * in which tasks were appended to the chain.
2295
+ *
2296
+ * @note Currently, changing the execution sequence in a chain dynamically is not supported.
2297
+ * If you need to reorder the chain sequence – initialize the scheduler and re-add the tasks
2298
+ * in a different order.
2299
+ */
2300
+ __TASK_INLINE void addTask(Task& aTask);
2301
+
2302
+ /**
2303
+ * @brief Delete task from execution chain
2304
+ * @param aTask Reference to task to be deleted
2305
+ * @details Deletes task from the execution chain. The chain of remaining tasks is linked
2306
+ * together. It is not required to delete a task from the chain. A disabled task will not
2307
+ * be executed anyway, but you save a few microseconds per scheduling pass by deleting it.
2308
+ */
2309
+ __TASK_INLINE void deleteTask(Task& aTask);
2310
+
2311
+ /**
2312
+ * @brief Pause the scheduler
2313
+ * @details Temporarily suspends all task execution. Tasks remain in their current state
2314
+ * but will not be executed until resume() is called.
2315
+ */
2316
+ __TASK_INLINE void pause() { iPaused = true; };
2317
+
2318
+ /**
2319
+ * @brief Resume the scheduler
2320
+ * @details Resumes task execution after pause().
2321
+ */
2322
+ __TASK_INLINE void resume() { iPaused = false; };
2323
+
2324
+ /**
2325
+ * @brief Enable the scheduler
2326
+ * @details Enables the scheduler for task execution.
2327
+ */
2328
+ __TASK_INLINE void enable() { iEnabled = true; };
2329
+
2330
+ /**
2331
+ * @brief Disable the scheduler
2332
+ * @details Disables the scheduler, preventing any task execution.
2333
+ */
2334
+ __TASK_INLINE void disable() { iEnabled = false; };
2335
+ #ifdef _TASK_PRIORITY
2336
+ /**
2337
+ * @brief Disable all tasks (with priority support)
2338
+ * @param aRecursive If true (default), disable higher priority tasks as well
2339
+ * @details Convenient method to disable majority of tasks.
2340
+ */
2341
+ __TASK_INLINE void disableAll(bool aRecursive = true);
2342
+
2343
+ /**
2344
+ * @brief Enable all tasks (with priority support)
2345
+ * @param aRecursive If true (default), enable higher priority tasks as well
2346
+ * @details Convenient method to enable majority of tasks.
2347
+ */
2348
+ __TASK_INLINE void enableAll(bool aRecursive = true);
2349
+
2350
+ /**
2351
+ * @brief Set all tasks to start immediately (with priority support)
2352
+ * @param aRecursive If true (default), affect higher priority tasks as well
2353
+ * @details Sets ALL active tasks to start execution immediately. Should be placed
2354
+ * at the end of setup() method to prevent task execution race due to long running
2355
+ * setup tasks. Any tasks which should execute after a delay should be explicitly
2356
+ * delayed after call to startNow() method.
2357
+ */
2358
+ __TASK_INLINE void startNow(bool aRecursive = true);
2359
+ #else
2360
+ /**
2361
+ * @brief Disable all tasks
2362
+ * @details Convenient method to disable majority of tasks.
2363
+ */
2364
+ __TASK_INLINE void disableAll();
2365
+
2366
+ /**
2367
+ * @brief Enable all tasks
2368
+ * @details Convenient method to enable majority of tasks.
2369
+ */
2370
+ __TASK_INLINE void enableAll();
2371
+
2372
+ /**
2373
+ * @brief Set all tasks to start immediately
2374
+ * @details Sets ALL active tasks to start execution immediately. Should be placed
2375
+ * at the end of setup() method to prevent task execution race due to long running
2376
+ * setup tasks.
2377
+ */
2378
+ __TASK_INLINE void startNow();
2379
+ #endif
2380
+
2381
+ /**
2382
+ * @brief Execute one scheduling pass
2383
+ * @return true if none of the tasks' callback methods was invoked (true = idle run)
2384
+ * @details Executes one scheduling pass, including (in case of the base priority scheduler)
2385
+ * end-of-pass sleep. This method should be placed inside the loop() method of the sketch.
2386
+ * Since execute exits after every pass, you can put additional statements after execute
2387
+ * inside the loop().
2388
+ *
2389
+ * If layered task prioritization is enabled, all higher priority tasks will be evaluated
2390
+ * and invoked by the base execute() method. There is no need to call execute() of the
2391
+ * higher priority schedulers explicitly.
2392
+ *
2393
+ * The execute method performs the following steps:
2394
+ * 1. Call higher priority scheduler's execute method, if provided
2395
+ * 2. Ignore task completely if it is disabled
2396
+ * 3. Disable task if it ran out of iterations (calling OnDisable, if necessary)
2397
+ * 4. Check if task is waiting on a StatusRequest object, and make appropriate scheduling arrangements
2398
+ * 5. Perform necessary timing calculations
2399
+ * 6. Invoke task's callback method, if it is time to do so, and one is provided
2400
+ * 7. Put microcontroller to sleep (if requested and supported) if none of the tasks were invoked
2401
+ *
2402
+ * @note Schedule-related calculations are performed prior to task's callback method invocation.
2403
+ * This allows tasks to manipulate their runtime parameters (like execution interval) directly.
2404
+ */
2405
+ __TASK_INLINE bool execute();
2406
+
2407
+ /**
2408
+ * @brief Get reference to currently executing task (deprecated)
2409
+ * @return Reference to the currently active task
2410
+ * @deprecated Use getCurrentTask() instead
2411
+ */
2412
+ __TASK_INLINE Task& currentTask() ;
2413
+
2414
+ /**
2415
+ * @brief Get pointer to currently executing task
2416
+ * @return Pointer to the currently active task
2417
+ * @details Returns pointer to the task currently executing via execute() loop OR for
2418
+ * OnEnable and OnDisable methods, pointer to the task being enabled or disabled.
2419
+ * This distinction is important because one task can activate another.
2420
+ * Could be used by callback methods to identify which Task invoked this callback method.
2421
+ */
2422
+ __TASK_INLINE Task* getCurrentTask() ;
2423
+
2424
+ /**
2425
+ * @brief Get time until next iteration of a task
2426
+ * @param aTask Reference to the task to query
2427
+ * @return Number of milliseconds (or microseconds) until next scheduled iteration
2428
+ * @details Returns 0 if next iteration is already due (or overdue).
2429
+ * Returns -1 if a Task is not active or waiting on an event, and next iteration
2430
+ * runtime cannot be determined.
2431
+ */
2432
+ __TASK_INLINE long timeUntilNextIteration(Task& aTask);
2433
+
2434
+ /**
2435
+ * @brief Get number of active tasks
2436
+ * @return Number of currently active (enabled) tasks
2437
+ */
2438
+ __TASK_INLINE unsigned long getActiveTasks() { return iActiveTasks; }
2439
+
2440
+ /**
2441
+ * @brief Get total number of tasks
2442
+ * @return Total number of tasks in the scheduler
2443
+ */
2444
+ __TASK_INLINE unsigned long getTotalTasks() { return iTotalTasks; }
2445
+
2446
+ /**
2447
+ * @brief Get number of invoked tasks
2448
+ * @return Number of tasks that were invoked during the last execute() pass
2449
+ */
2450
+ __TASK_INLINE unsigned long getInvokedTasks() { return iInvokedTasks; }
2451
+
2452
+ #ifdef _TASK_TICKLESS
2453
+ /**
2454
+ * @brief Get next run time (tickless mode)
2455
+ * @return Next scheduled run time
2456
+ * @details Available only when compiled with _TASK_TICKLESS support.
2457
+ */
2458
+ __TASK_INLINE unsigned long getNextRun() { return iNextRun; }
2459
+ #endif
2460
+
2461
+ #ifdef _TASK_SLEEP_ON_IDLE_RUN
2462
+ /**
2463
+ * @brief Enable or disable sleep mode during idle scheduler cycles
2464
+ *
2465
+ * Controls whether the scheduler should enter sleep mode when no tasks
2466
+ * are ready for execution. Sleep mode reduces power consumption by
2467
+ * halting CPU execution until the next task is scheduled to run.
2468
+ *
2469
+ * @param aState True to enable sleep mode (default), false to disable
2470
+ *
2471
+ * @note Only available when _TASK_SLEEP_ON_IDLE_RUN compile-time option is enabled
2472
+ * @note Sleep is only activated when all tasks return false from their callbacks
2473
+ * @note Tasks returning true (productive execution) prevent sleep on next cycle
2474
+ * @note Custom sleep method can be set with setSleepMethod()
2475
+ * @see setSleepMethod(), _TASK_SLEEP_ON_IDLE_RUN
2476
+ * @since Version 3.0.0
2477
+ *
2478
+ * @par Example:
2479
+ * @code
2480
+ * Scheduler powerEfficientScheduler;
2481
+ *
2482
+ * void setup() {
2483
+ * // Enable power-saving sleep mode
2484
+ * powerEfficientScheduler.allowSleep(true);
2485
+ *
2486
+ * // Custom sleep implementation
2487
+ * powerEfficientScheduler.setSleepMethod(customSleepCallback);
2488
+ * }
2489
+ *
2490
+ * void customSleepCallback(unsigned long aTimeToSleep) {
2491
+ * if (aTimeToSleep > 1000) {
2492
+ * // Deep sleep for longer periods
2493
+ * ESP.deepSleep(aTimeToSleep * 1000); // Convert to microseconds
2494
+ * } else {
2495
+ * // Light sleep for short periods
2496
+ * delay(aTimeToSleep);
2497
+ * }
2498
+ * }
2499
+ * @endcode
2500
+ */
2501
+ __TASK_INLINE void allowSleep(bool aState = true);
2502
+
2503
+ /**
2504
+ * @brief Set custom sleep implementation callback
2505
+ *
2506
+ * Assigns a custom callback function that will be called when the scheduler
2507
+ * enters sleep mode. This allows for platform-specific power management
2508
+ * implementations, such as deep sleep modes on ESP32 or low-power modes
2509
+ * on Arduino boards.
2510
+ *
2511
+ * @param aCallback Function pointer to sleep callback with signature:
2512
+ * void sleepCallback(unsigned long sleepTime)
2513
+ * where sleepTime is in milliseconds
2514
+ *
2515
+ * @note Only available when _TASK_SLEEP_ON_IDLE_RUN compile-time option is enabled
2516
+ * @note Sleep callback receives the calculated sleep duration in milliseconds
2517
+ * @note Default implementation uses delay() if no custom callback is set
2518
+ * @note Callback should implement appropriate power management for the platform
2519
+ * @see allowSleep(), SleepCallback, _TASK_SLEEP_ON_IDLE_RUN
2520
+ * @since Version 3.0.0
2521
+ *
2522
+ * @par Example:
2523
+ * @code
2524
+ * void arduinoSleep(unsigned long sleepTime) {
2525
+ * // Arduino-specific power management
2526
+ * if (sleepTime > 100) {
2527
+ * // Use watchdog timer for longer sleeps
2528
+ * set_sleep_mode(SLEEP_MODE_PWR_DOWN);
2529
+ * sleep_enable();
2530
+ * sleep_mode();
2531
+ * sleep_disable();
2532
+ * } else {
2533
+ * delay(sleepTime);
2534
+ * }
2535
+ * }
2536
+ *
2537
+ * void esp32Sleep(unsigned long sleepTime) {
2538
+ * // ESP32-specific power management
2539
+ * if (sleepTime > 1000) {
2540
+ * esp_sleep_enable_timer_wakeup(sleepTime * 1000ULL);
2541
+ * esp_light_sleep_start();
2542
+ * } else {
2543
+ * delayMicroseconds(sleepTime * 1000);
2544
+ * }
2545
+ * }
2546
+ *
2547
+ * scheduler.setSleepMethod(esp32Sleep);
2548
+ * @endcode
2549
+ */
2550
+ __TASK_INLINE void setSleepMethod( SleepCallback aCallback );
2551
+ #endif // _TASK_SLEEP_ON_IDLE_RUN
2552
+
2553
+ #ifdef _TASK_LTS_POINTER
2554
+ /**
2555
+ * @brief Get Local Task Storage pointer of currently executing task
2556
+ *
2557
+ * Returns the LTS (Local Task Storage) pointer of the task that is
2558
+ * currently being executed by the scheduler. This provides access to
2559
+ * task-specific data from within the scheduler context or shared utilities.
2560
+ *
2561
+ * @return void* Pointer to the current task's local storage, or nullptr if:
2562
+ * - No task is currently executing
2563
+ * - Current task has no LTS pointer set
2564
+ * - Called outside of task execution context
2565
+ *
2566
+ * @note Only available when _TASK_LTS_POINTER compile-time option is enabled
2567
+ * @note Must be called from within task execution context for valid results
2568
+ * @note Returned pointer must be cast to appropriate data type
2569
+ * @note Useful for shared utilities that need access to current task data
2570
+ * @see Task::setLtsPointer(), Task::getLtsPointer(), _TASK_LTS_POINTER
2571
+ * @since Version 3.0.0
2572
+ *
2573
+ * @par Example:
2574
+ * @code
2575
+ * struct TaskData {
2576
+ * int sensorValue;
2577
+ * float average;
2578
+ * bool alertFlag;
2579
+ * };
2580
+ *
2581
+ * void sharedUtilityFunction() {
2582
+ * TaskData* currentData = (TaskData*)scheduler.currentLts();
2583
+ * if (currentData) {
2584
+ * // Access current task's data
2585
+ * Serial.print("Current task sensor value: ");
2586
+ * Serial.println(currentData->sensorValue);
2587
+ *
2588
+ * if (currentData->sensorValue > THRESHOLD) {
2589
+ * currentData->alertFlag = true;
2590
+ * }
2591
+ * }
2592
+ * }
2593
+ *
2594
+ * void taskCallback() {
2595
+ * // Task-specific work
2596
+ * readSensors();
2597
+ *
2598
+ * // Call shared utility that accesses current task's LTS
2599
+ * sharedUtilityFunction();
2600
+ * }
2601
+ * @endcode
2602
+ */
2603
+ __TASK_INLINE void* currentLts();
2604
+ #endif // _TASK_LTS_POINTER
2605
+
2606
+ #ifdef _TASK_TIMECRITICAL
2607
+ /**
2608
+ * @brief Check if any task execution overran its allocated time
2609
+ *
2610
+ * Returns whether any task in the current execution cycle exceeded its
2611
+ * scheduled interval time. This provides system-wide timing violation
2612
+ * detection for real-time system monitoring and performance analysis.
2613
+ *
2614
+ * @return bool True if any task overran its allocated time, false otherwise
2615
+ *
2616
+ * @note Only available when _TASK_TIMECRITICAL compile-time option is enabled
2617
+ * @note Checks for timing violations across all tasks in the scheduler
2618
+ * @note Useful for system-wide real-time performance monitoring
2619
+ * @note Should be checked after each scheduler execution cycle
2620
+ * @see Task::getOverrun(), getCpuLoadTotal(), _TASK_TIMECRITICAL
2621
+ * @since Version 3.0.0
2622
+ *
2623
+ * @par Example:
2624
+ * @code
2625
+ * void loop() {
2626
+ * scheduler.execute();
2627
+ *
2628
+ * // Check for system-wide timing violations
2629
+ * if (scheduler.isOverrun()) {
2630
+ * Serial.println("WARNING: System overrun detected!");
2631
+ *
2632
+ * // Log CPU load statistics
2633
+ * unsigned long cpuLoad = scheduler.getCpuLoadTotal();
2634
+ * Serial.print("CPU Load: ");
2635
+ * Serial.print(cpuLoad);
2636
+ * Serial.println("%");
2637
+ *
2638
+ * // Take corrective action
2639
+ * if (cpuLoad > 90) {
2640
+ * // Reduce system load
2641
+ * disableNonCriticalTasks();
2642
+ * }
2643
+ * }
2644
+ * }
2645
+ * @endcode
2646
+ */
2647
+ __TASK_INLINE bool isOverrun();
2648
+
2649
+ /**
2650
+ * @brief Reset CPU load measurement counters
2651
+ *
2652
+ * Resets the internal counters used for CPU load calculation, providing
2653
+ * a fresh measurement baseline. This allows for periodic CPU load monitoring
2654
+ * and performance analysis over specific time intervals.
2655
+ *
2656
+ * @note Only available when _TASK_TIMECRITICAL compile-time option is enabled
2657
+ * @note Resets both cycle time and idle time counters
2658
+ * @note Should be called before starting a new measurement period
2659
+ * @note Useful for periodic performance monitoring and load analysis
2660
+ * @see getCpuLoadTotal(), getCpuLoadCycle(), getCpuLoadIdle()
2661
+ * @since Version 3.0.0
2662
+ *
2663
+ * @par Example:
2664
+ * @code
2665
+ * void performanceMonitor() {
2666
+ * static unsigned long lastReset = 0;
2667
+ * unsigned long now = millis();
2668
+ *
2669
+ * // Measure CPU load every 10 seconds
2670
+ * if (now - lastReset > 10000) {
2671
+ * unsigned long cpuLoad = scheduler.getCpuLoadTotal();
2672
+ * unsigned long cycleTime = scheduler.getCpuLoadCycle();
2673
+ * unsigned long idleTime = scheduler.getCpuLoadIdle();
2674
+ *
2675
+ * Serial.print("10s Performance Report - CPU Load: ");
2676
+ * Serial.print(cpuLoad);
2677
+ * Serial.print("%, Cycle: ");
2678
+ * Serial.print(cycleTime);
2679
+ * Serial.print("us, Idle: ");
2680
+ * Serial.print(idleTime);
2681
+ * Serial.println("us");
2682
+ *
2683
+ * // Reset for next measurement period
2684
+ * scheduler.cpuLoadReset();
2685
+ * lastReset = now;
2686
+ * }
2687
+ * }
2688
+ * @endcode
2689
+ */
2690
+ __TASK_INLINE void cpuLoadReset();
2691
+
2692
+ /**
2693
+ * @brief Get total CPU cycle time in microseconds
2694
+ *
2695
+ * Returns the cumulative time spent in CPU cycles (active execution)
2696
+ * since the last reset. This measures the total processing time used
2697
+ * by all tasks and scheduler overhead.
2698
+ *
2699
+ * @return unsigned long Total CPU cycle time in microseconds
2700
+ *
2701
+ * @note Only available when _TASK_TIMECRITICAL compile-time option is enabled
2702
+ * @note Includes task execution time and scheduler overhead
2703
+ * @note Used in conjunction with getCpuLoadIdle() for load calculation
2704
+ * @note Accumulates until reset with cpuLoadReset()
2705
+ * @see getCpuLoadIdle(), getCpuLoadTotal(), cpuLoadReset()
2706
+ * @since Version 3.0.0
2707
+ *
2708
+ * @par Example:
2709
+ * @code
2710
+ * void detailedPerformanceAnalysis() {
2711
+ * unsigned long cycleTime = scheduler.getCpuLoadCycle();
2712
+ * unsigned long idleTime = scheduler.getCpuLoadIdle();
2713
+ * unsigned long totalTime = cycleTime + idleTime;
2714
+ *
2715
+ * if (totalTime > 0) {
2716
+ * float cpuUtilization = (float)cycleTime / totalTime * 100.0;
2717
+ * float idlePercentage = (float)idleTime / totalTime * 100.0;
2718
+ *
2719
+ * Serial.print("Detailed Analysis - Active: ");
2720
+ * Serial.print(cpuUtilization, 2);
2721
+ * Serial.print("%, Idle: ");
2722
+ * Serial.print(idlePercentage, 2);
2723
+ * Serial.print("%, Total time: ");
2724
+ * Serial.print(totalTime);
2725
+ * Serial.println("us");
2726
+ * }
2727
+ * }
2728
+ * @endcode
2729
+ */
2730
+ __TASK_INLINE unsigned long getCpuLoadCycle(){ return iCPUCycle; };
2731
+
2732
+ /**
2733
+ * @brief Get total CPU idle time in microseconds
2734
+ *
2735
+ * Returns the cumulative time spent in idle state (no tasks executing)
2736
+ * since the last reset. This measures the total time the CPU was
2737
+ * available but not processing tasks.
2738
+ *
2739
+ * @return unsigned long Total CPU idle time in microseconds
2740
+ *
2741
+ * @note Only available when _TASK_TIMECRITICAL compile-time option is enabled
2742
+ * @note Includes time spent waiting for next task execution
2743
+ * @note Used in conjunction with getCpuLoadCycle() for load calculation
2744
+ * @note Accumulates until reset with cpuLoadReset()
2745
+ * @see getCpuLoadCycle(), getCpuLoadTotal(), cpuLoadReset()
2746
+ * @since Version 3.0.0
2747
+ *
2748
+ * @par Example:
2749
+ * @code
2750
+ * void powerManagementAnalysis() {
2751
+ * unsigned long idleTime = scheduler.getCpuLoadIdle();
2752
+ * unsigned long cycleTime = scheduler.getCpuLoadCycle();
2753
+ *
2754
+ * // Calculate power saving potential
2755
+ * if (idleTime > cycleTime) {
2756
+ * float powerSavingPotential = (float)idleTime / (idleTime + cycleTime) * 100.0;
2757
+ *
2758
+ * Serial.print("Power saving potential: ");
2759
+ * Serial.print(powerSavingPotential, 1);
2760
+ * Serial.println("%");
2761
+ *
2762
+ * if (powerSavingPotential > 50.0) {
2763
+ * Serial.println("Consider enabling sleep mode for better power efficiency");
2764
+ * }
2765
+ * }
2766
+ * }
2767
+ * @endcode
2768
+ */
2769
+ __TASK_INLINE unsigned long getCpuLoadIdle() { return iCPUIdle; };
2770
+
2771
+ /**
2772
+ * @brief Get total CPU load percentage
2773
+ *
2774
+ * Calculates and returns the CPU load as a percentage based on the ratio
2775
+ * of active cycle time to total time (cycle + idle). This provides a
2776
+ * normalized measure of system utilization for performance monitoring.
2777
+ *
2778
+ * @return unsigned long CPU load percentage (0-100)
2779
+ *
2780
+ * @note Only available when _TASK_TIMECRITICAL compile-time option is enabled
2781
+ * @note Returns percentage of time spent in active execution vs idle
2782
+ * @note Calculation: (cycleTime / (cycleTime + idleTime)) * 100
2783
+ * @note Returns 0 if no measurements have been taken
2784
+ * @see getCpuLoadCycle(), getCpuLoadIdle(), cpuLoadReset()
2785
+ * @since Version 3.0.0
2786
+ *
2787
+ * @par Example:
2788
+ * @code
2789
+ * void systemHealthMonitor() {
2790
+ * unsigned long cpuLoad = scheduler.getCpuLoadTotal();
2791
+ *
2792
+ * // System health thresholds
2793
+ * if (cpuLoad > 95) {
2794
+ * Serial.println("CRITICAL: CPU load extremely high!");
2795
+ * // Emergency measures
2796
+ * disableNonEssentialTasks();
2797
+ * } else if (cpuLoad > 80) {
2798
+ * Serial.println("WARNING: High CPU load detected");
2799
+ * // Performance optimization
2800
+ * optimizeTaskIntervals();
2801
+ * } else if (cpuLoad < 10) {
2802
+ * Serial.println("INFO: Low CPU load - power optimization opportunity");
2803
+ * // Enable power saving features
2804
+ * scheduler.allowSleep(true);
2805
+ * }
2806
+ *
2807
+ * // Log current status
2808
+ * Serial.print("Current CPU Load: ");
2809
+ * Serial.print(cpuLoad);
2810
+ * Serial.println("%");
2811
+ * }
2812
+ * @endcode
2813
+ */
2814
+ __TASK_INLINE unsigned long getCpuLoadTotal();
2815
+ #endif // _TASK_TIMECRITICAL
2816
+
2817
+ #ifdef _TASK_PRIORITY
2818
+ /**
2819
+ * @brief Sets a higher priority scheduler for priority-based task scheduling
2820
+ *
2821
+ * This method establishes a hierarchical relationship between schedulers, allowing
2822
+ * the current scheduler to defer execution to a higher priority scheduler when needed.
2823
+ * This enables multi-level priority scheduling where critical tasks can preempt
2824
+ * normal task execution.
2825
+ *
2826
+ * @param aScheduler Pointer to the higher priority scheduler to associate with this scheduler.
2827
+ * Pass nullptr to remove the high priority scheduler association.
2828
+ *
2829
+ * @note This method is only available when _TASK_PRIORITY compilation option is enabled.
2830
+ * @note The high priority scheduler should be executed more frequently than this scheduler
2831
+ * to ensure priority-based preemption works correctly.
2832
+ * @note Circular priority relationships should be avoided to prevent infinite loops.
2833
+ *
2834
+ * @see currentScheduler()
2835
+ * @see _TASK_PRIORITY
2836
+ *
2837
+ * Example usage:
2838
+ * @code
2839
+ * Scheduler highPriorityScheduler;
2840
+ * Scheduler normalScheduler;
2841
+ *
2842
+ * // Set up priority relationship
2843
+ * normalScheduler.setHighPriorityScheduler(&highPriorityScheduler);
2844
+ *
2845
+ * // In main loop, execute high priority first
2846
+ * highPriorityScheduler.execute();
2847
+ * normalScheduler.execute();
2848
+ * @endcode
2849
+ */
2850
+ __TASK_INLINE void setHighPriorityScheduler(Scheduler* aScheduler);
2851
+
2852
+ /**
2853
+ * @brief Returns a reference to the currently executing scheduler
2854
+ *
2855
+ * This static method provides access to the scheduler that is currently executing tasks.
2856
+ * It's primarily used internally by the library to maintain context during task execution
2857
+ * and to support priority-based scheduling operations.
2858
+ *
2859
+ * @return Reference to the currently active scheduler instance
2860
+ *
2861
+ * @note This method is only available when _TASK_PRIORITY compilation option is enabled.
2862
+ * @note This is a static method that can be called without a scheduler instance.
2863
+ * @note The returned reference is valid only during task execution context.
2864
+ *
2865
+ * @warning Do not store the returned reference for long-term use as the current
2866
+ * scheduler context changes during execution.
2867
+ *
2868
+ * @see setHighPriorityScheduler()
2869
+ * @see _TASK_PRIORITY
2870
+ *
2871
+ * Example usage:
2872
+ * @code
2873
+ * void taskCallback() {
2874
+ * // Get reference to the scheduler executing this task
2875
+ * Scheduler& currentSched = Scheduler::currentScheduler();
2876
+ *
2877
+ * // Access scheduler information
2878
+ * Serial.print("Active tasks: ");
2879
+ * Serial.println(currentSched.size());
2880
+ * }
2881
+ * @endcode
2882
+ */
2883
+ __TASK_INLINE static Scheduler& currentScheduler() { return *(iCurrentScheduler); };
2884
+ #endif // _TASK_PRIORITY
2885
+
2886
+ #ifdef _TASK_EXPOSE_CHAIN
2887
+ /**
2888
+ * @brief Returns a pointer to the first task in the scheduler's task chain
2889
+ *
2890
+ * This method provides direct access to the first task in the internal linked list
2891
+ * of tasks managed by this scheduler. It's primarily used for advanced task chain
2892
+ * manipulation, debugging, and custom iteration over all tasks.
2893
+ *
2894
+ * @return Pointer to the first task in the chain, or nullptr if no tasks are registered
2895
+ *
2896
+ * @note This method is only available when _TASK_EXPOSE_CHAIN compilation option is enabled.
2897
+ * @note The returned pointer should be treated as read-only to avoid corrupting the task chain.
2898
+ * @note Tasks are stored in a doubly-linked list internally.
2899
+ *
2900
+ * @warning Direct manipulation of the task chain can lead to undefined behavior.
2901
+ * Use the standard addTask() and deleteTask() methods instead.
2902
+ *
2903
+ * @see getLastTask()
2904
+ * @see addTask()
2905
+ * @see deleteTask()
2906
+ * @see _TASK_EXPOSE_CHAIN
2907
+ *
2908
+ * Example usage:
2909
+ * @code
2910
+ * Scheduler ts;
2911
+ * Task t1, t2, t3;
2912
+ *
2913
+ * ts.addTask(t1);
2914
+ * ts.addTask(t2);
2915
+ * ts.addTask(t3);
2916
+ *
2917
+ * // Iterate through all tasks
2918
+ * Task* current = ts.getFirstTask();
2919
+ * while (current != nullptr) {
2920
+ * Serial.print("Task ID: ");
2921
+ * Serial.println(current->getId());
2922
+ * current = current->getNext();
2923
+ * }
2924
+ * @endcode
2925
+ */
2926
+ __TASK_INLINE Task* getFirstTask() { return iFirst; };
2927
+
2928
+ /**
2929
+ * @brief Returns a pointer to the last task in the scheduler's task chain
2930
+ *
2931
+ * This method provides direct access to the last task in the internal linked list
2932
+ * of tasks managed by this scheduler. It's useful for reverse iteration through
2933
+ * the task chain and for advanced task management operations.
2934
+ *
2935
+ * @return Pointer to the last task in the chain, or nullptr if no tasks are registered
2936
+ *
2937
+ * @note This method is only available when _TASK_EXPOSE_CHAIN compilation option is enabled.
2938
+ * @note The returned pointer should be treated as read-only to avoid corrupting the task chain.
2939
+ * @note Tasks are stored in a doubly-linked list internally.
2940
+ *
2941
+ * @warning Direct manipulation of the task chain can lead to undefined behavior.
2942
+ * Use the standard addTask() and deleteTask() methods instead.
2943
+ *
2944
+ * @see getFirstTask()
2945
+ * @see addTask()
2946
+ * @see deleteTask()
2947
+ * @see _TASK_EXPOSE_CHAIN
2948
+ *
2949
+ * Example usage:
2950
+ * @code
2951
+ * Scheduler ts;
2952
+ * Task t1, t2, t3;
2953
+ *
2954
+ * ts.addTask(t1);
2955
+ * ts.addTask(t2);
2956
+ * ts.addTask(t3);
2957
+ *
2958
+ * // Iterate through tasks in reverse order
2959
+ * Task* current = ts.getLastTask();
2960
+ * while (current != nullptr) {
2961
+ * Serial.print("Task ID (reverse): ");
2962
+ * Serial.println(current->getId());
2963
+ * current = current->getPrev();
2964
+ * }
2965
+ * @endcode
2966
+ */
2967
+ __TASK_INLINE Task* getLastTask() { return iLast; };
2968
+ #endif // _TASK_EXPOSE_CHAIN
2969
+
2970
+ #ifdef _TASK_THREAD_SAFE
2971
+ /**
2972
+ * @brief Queues a task operation request for thread-safe execution
2973
+ *
2974
+ * This method places a pre-constructed request structure onto the task request queue
2975
+ * for later processing during the next scheduler execution cycle. This provides
2976
+ * thread-safe access to task operations from interrupt service routines or other
2977
+ * execution contexts.
2978
+ *
2979
+ * @param aRequest Pointer to a _task_request_t structure containing the operation details.
2980
+ * The structure should be properly initialized with the target object,
2981
+ * operation type, and parameters.
2982
+ *
2983
+ * @return true if the request was successfully queued, false if the queue is full
2984
+ *
2985
+ * @note This method is only available when _TASK_THREAD_SAFE compilation option is enabled.
2986
+ * @note The request structure must remain valid until the request is processed.
2987
+ * @note Requests are processed in FIFO order during scheduler execution.
2988
+ * @note The maximum number of queued requests is limited by the request queue size.
2989
+ *
2990
+ * @warning The aRequest pointer must point to a valid _task_request_t structure.
2991
+ * Invalid pointers will cause undefined behavior.
2992
+ *
2993
+ * @see requestAction(void*, _task_request_type_t, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long)
2994
+ * @see processRequests()
2995
+ * @see _task_request_t
2996
+ * @see _TASK_THREAD_SAFE
2997
+ *
2998
+ * Example usage:
2999
+ * @code
3000
+ * _task_request_t request;
3001
+ * request.object = &myTask;
3002
+ * request.type = TASK_REQUEST_ENABLE;
3003
+ * request.param1 = 0;
3004
+ * request.param2 = 0;
3005
+ * request.param3 = 0;
3006
+ * request.param4 = 0;
3007
+ * request.param5 = 0;
3008
+ *
3009
+ * if (ts.requestAction(&request)) {
3010
+ * Serial.println("Request queued successfully");
3011
+ * } else {
3012
+ * Serial.println("Request queue full");
3013
+ * }
3014
+ * @endcode
3015
+ */
3016
+ __TASK_INLINE bool requestAction(_task_request_t* aRequest);
3017
+
3018
+ /**
3019
+ * @brief Queues a task operation request with individual parameters for thread-safe execution
3020
+ *
3021
+ * This method creates and queues a task operation request using individual parameters.
3022
+ * It provides a convenient interface for thread-safe task operations without requiring
3023
+ * manual construction of the request structure.
3024
+ *
3025
+ * @param aObject Pointer to the target object (Task or Scheduler) for the operation
3026
+ * @param aType Type of operation to perform (from _task_request_type_t enum)
3027
+ * @param aParam1 First parameter for the operation (interpretation depends on aType)
3028
+ * @param aParam2 Second parameter for the operation (interpretation depends on aType)
3029
+ * @param aParam3 Third parameter for the operation (interpretation depends on aType)
3030
+ * @param aParam4 Fourth parameter for the operation (interpretation depends on aType)
3031
+ * @param aParam5 Fifth parameter for the operation (interpretation depends on aType)
3032
+ *
3033
+ * @return true if the request was successfully queued, false if the queue is full
3034
+ *
3035
+ * @note This method is only available when _TASK_THREAD_SAFE compilation option is enabled.
3036
+ * @note Parameter interpretation varies by operation type - see _task_request_type_t documentation.
3037
+ * @note Unused parameters should be set to 0.
3038
+ * @note Requests are processed in FIFO order during scheduler execution.
3039
+ *
3040
+ * @warning The aObject pointer must point to a valid Task or Scheduler instance.
3041
+ * Invalid pointers will cause undefined behavior when the request is processed.
3042
+ *
3043
+ * @see requestAction(_task_request_t*)
3044
+ * @see processRequests()
3045
+ * @see _task_request_type_t
3046
+ * @see _TASK_THREAD_SAFE
3047
+ *
3048
+ * Example usage:
3049
+ * @code
3050
+ * // Request to enable a task from an ISR
3051
+ * void IRAM_ATTR sensorISR() {
3052
+ * ts.requestAction(&sensorTask, TASK_REQUEST_ENABLE, 0, 0, 0, 0, 0);
3053
+ * }
3054
+ *
3055
+ * // Request to restart a task with new interval
3056
+ * ts.requestAction(&myTask, TASK_REQUEST_RESTART, 5000, 0, 0, 0, 0); // 5 second interval
3057
+ *
3058
+ * // Request to set task iterations
3059
+ * ts.requestAction(&myTask, TASK_REQUEST_SET_ITERATIONS, 10, 0, 0, 0, 0); // 10 iterations
3060
+ * @endcode
3061
+ */
3062
+ __TASK_INLINE bool requestAction(void* aObject, _task_request_type_t aType, unsigned long aParam1, unsigned long aParam2, unsigned long aParam3, unsigned long aParam4, unsigned long aParam5);
3063
+ #endif
3064
+
3065
+ _TASK_SCOPE:
3066
+ #ifdef _TASK_THREAD_SAFE
3067
+ __TASK_INLINE void processRequests();
3068
+ #endif
3069
+ Task *iFirst, *iLast, *iCurrent; // pointers to first, last and current tasks in the chain
3070
+
3071
+ volatile bool iPaused, iEnabled;
3072
+ unsigned long iActiveTasks;
3073
+ unsigned long iTotalTasks;
3074
+ unsigned long iInvokedTasks;
3075
+
3076
+ #ifdef _TASK_SLEEP_ON_IDLE_RUN
3077
+ bool iAllowSleep; // indication if putting MC to IDLE_SLEEP mode is allowed by the program at this time.
3078
+ #endif // _TASK_SLEEP_ON_IDLE_RUN
3079
+
3080
+ #ifdef _TASK_PRIORITY
3081
+ Scheduler* iHighPriority; // Pointer to a higher priority scheduler
3082
+ #endif // _TASK_PRIORITY
3083
+
3084
+ #ifdef _TASK_TIMECRITICAL
3085
+ unsigned long iCPUStart;
3086
+ unsigned long iCPUCycle;
3087
+ unsigned long iCPUIdle;
3088
+ #endif // _TASK_TIMECRITICAL
3089
+
3090
+ #ifdef _TASK_TICKLESS
3091
+ unsigned long iNextRun;
3092
+ #endif
3093
+ };
3094
+
3095
+
3096
+ #endif /* _TASKSCHEDULERDECLARATIONS_H_ */