@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.
- package/CHANGELOG.md +473 -435
- package/LICENSE +674 -674
- package/README.md +491 -491
- package/RELEASE_GUIDE.md +504 -504
- package/docs/DOCUMENTATION_MIGRATION_PLAN.md +175 -175
- package/docs/IMPLEMENTATION_PLAN_MESH_TOPOLOGY.md +1062 -1062
- package/docs/MESH_TOPOLOGY_GUIDE.md +992 -992
- package/docs/MESH_TOPOLOGY_PROGRESS.md +422 -422
- package/docs/MQTT_BRIDGE_COMMANDS.md +894 -894
- package/docs/MQTT_BRIDGE_IMPLEMENTATION_SUMMARY.md +324 -324
- package/docs/MQTT_COMMAND_SCHEMA_PROPOSAL.md +576 -576
- package/docs/MQTT_SCHEMA_COMPLIANCE.md +285 -285
- package/docs/MQTT_SCHEMA_PROPOSALS.md +446 -446
- package/docs/MQTT_SCHEMA_REVIEW.md +690 -690
- package/docs/OTA_COMMANDS_REFERENCE.md +554 -554
- package/docs/PHASE1_GUIDE.md +349 -349
- package/docs/PHASE2_GUIDE.md +543 -543
- package/docs/README.md +130 -130
- package/docs/SCHEMA_VALIDATION_CHECKLIST.md +222 -222
- package/docs/alteriom/overview.md +507 -507
- package/docs/api/core-api.md +606 -606
- package/docs/architecture/mesh-architecture.md +378 -378
- package/docs/architecture/plugin-system.md +516 -516
- package/docs/archive/DOCUSAURUS_DEPLOYMENT.md +165 -165
- package/docs/archive/FEATURE_PROPOSALS.md +337 -337
- package/docs/archive/LIBRARY_JSON_FIX.md +98 -98
- package/docs/archive/LIBRARY_STRUCTURE_FIX.md +215 -215
- package/docs/archive/PHASE1_IMPLEMENTATION.md +325 -325
- package/docs/archive/PHASE2_IMPLEMENTATION.md +567 -567
- package/docs/archive/RELEASE_SUMMARY.md +172 -172
- package/docs/archive/SCONS_BUILD_FIX.md +313 -313
- package/docs/archive/TRIGGER_RELEASE.md +279 -279
- package/docs/archive/VECTOR_INCLUDE_FIX.md +129 -129
- package/docs/archive/ota-and-status-enhancements.md +911 -911
- package/docs/archive/ota-status-architecture-diagrams.md +658 -658
- package/docs/archive/ota-status-quick-reference.md +284 -284
- package/docs/development/ARDUINO_COMPLIANCE_SUMMARY.md +70 -70
- package/docs/development/CODE_REFACTORING_RECOMMENDATIONS.md +1011 -1011
- package/docs/development/DOCKER_TESTING.md +196 -196
- package/docs/development/PLATFORMIO_USAGE.md +180 -180
- package/docs/development/TESTING_SUMMARY.md +126 -126
- package/docs/development/contributing.md +301 -301
- package/docs/development/documentation.md +583 -583
- package/docs/getting-started/first-mesh.md +409 -409
- package/docs/getting-started/installation.md +274 -274
- package/docs/getting-started/quickstart.md +157 -157
- package/docs/improvements/FUTURE_PROPOSALS.md +1016 -1016
- package/docs/improvements/IMPLEMENTATION_HISTORY.md +1091 -1091
- package/docs/improvements/OTA_STATUS_ENHANCEMENTS.md +709 -709
- package/docs/improvements/README.md +211 -211
- package/docs/platformio-publishing.md +254 -254
- package/docs/platformio-setup-summary.md +120 -120
- package/docs/releases/FEATURE_HISTORY.md +543 -543
- package/docs/releases/PATCH_v1.7.2.md +262 -0
- package/docs/releases/PATCH_v1.7.3.md +262 -262
- package/docs/releases/PATCH_v1.7.4.md +219 -0
- package/docs/releases/PHASE1_SUMMARY.md +246 -246
- package/docs/releases/PHASE2_SUMMARY.md +499 -499
- package/docs/releases/RELEASE_CHECKLIST_v1.7.4.md +253 -0
- package/docs/releases/RELEASE_NOTES_1.7.0.md +539 -539
- package/docs/releases/RELEASE_SUMMARY_v1.7.4.md +276 -0
- package/docs/troubleshooting/CRASH_QUICK_REF.md +93 -0
- package/docs/troubleshooting/FREERTOS_ASSERTION_FAILURE.md +288 -0
- package/docs/troubleshooting/FREERTOS_FIX_IMPLEMENTATION.md +267 -0
- package/docs/troubleshooting/QUICK_FIX_FREERTOS.md +164 -0
- package/docs/troubleshooting/SENSOR_NODE_CONNECTION_CRASH.md +257 -0
- package/docs/troubleshooting/common-issues.md +520 -520
- package/docs/troubleshooting/debugging.md +455 -455
- package/docs/troubleshooting/faq.md +472 -472
- package/docs/tutorials/basic-examples.md +717 -717
- package/docs/wiki/API-Reference.md +245 -245
- package/docs/wiki/Complete-Documentation.md +122 -122
- package/examples/alteriom/.pio/build/esp32/.sconsign311.dblite +0 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/Esp.cpp.d +146 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/Esp.cpp.o +0 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/FirmwareMSC.cpp.d +5 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/FirmwareMSC.cpp.o +0 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/FunctionalInterrupt.cpp.d +137 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/FunctionalInterrupt.cpp.o +0 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/HWCDC.cpp.d +4 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/HWCDC.cpp.o +0 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/HardwareSerial.cpp.d +138 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/HardwareSerial.cpp.o +0 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/IPAddress.cpp.d +137 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/IPAddress.cpp.o +0 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/IPv6Address.cpp.d +138 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/IPv6Address.cpp.o +0 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/MD5Builder.cpp.d +138 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/MD5Builder.cpp.o +0 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/Print.cpp.d +136 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/Print.cpp.o +0 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/Stream.cpp.d +136 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/Stream.cpp.o +0 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/StreamString.cpp.d +137 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/StreamString.cpp.o +0 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/Tone.cpp.d +136 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/Tone.cpp.o +0 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/USB.cpp.d +4 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/USB.cpp.o +0 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/USBCDC.cpp.d +4 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/USBCDC.cpp.o +0 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/USBMSC.cpp.d +4 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/USBMSC.cpp.o +0 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/WMath.cpp.d +18 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/WMath.cpp.o +0 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/WString.cpp.d +136 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/WString.cpp.o +0 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/base64.cpp.d +139 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/base64.cpp.o +0 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/cbuf.cpp.d +3 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/cbuf.cpp.o +0 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/esp32-hal-adc.c.d +110 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/esp32-hal-adc.c.o +0 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/esp32-hal-bt.c.d +107 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/esp32-hal-bt.c.o +0 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/esp32-hal-cpu.c.d +123 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/esp32-hal-cpu.c.o +0 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/esp32-hal-dac.c.d +108 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/esp32-hal-dac.c.o +0 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/esp32-hal-gpio.c.d +122 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/esp32-hal-gpio.c.o +0 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/esp32-hal-i2c-slave.c.d +92 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/esp32-hal-i2c-slave.c.o +0 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/esp32-hal-i2c.c.d +114 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/esp32-hal-i2c.c.o +0 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/esp32-hal-ledc.c.d +108 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/esp32-hal-ledc.c.o +0 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/esp32-hal-matrix.c.d +105 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/esp32-hal-matrix.c.o +0 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/esp32-hal-misc.c.d +136 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/esp32-hal-misc.c.o +0 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/esp32-hal-psram.c.d +104 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/esp32-hal-psram.c.o +0 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/esp32-hal-rgb-led.c.d +104 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/esp32-hal-rgb-led.c.o +0 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/esp32-hal-rmt.c.d +108 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/esp32-hal-rmt.c.o +0 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/esp32-hal-sigmadelta.c.d +109 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/esp32-hal-sigmadelta.c.o +0 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/esp32-hal-spi.c.d +122 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/esp32-hal-spi.c.o +0 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/esp32-hal-time.c.d +145 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/esp32-hal-time.c.o +0 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/esp32-hal-timer.c.d +110 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/esp32-hal-timer.c.o +0 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/esp32-hal-tinyusb.c.d +3 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/esp32-hal-tinyusb.c.o +0 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/esp32-hal-touch.c.d +107 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/esp32-hal-touch.c.o +0 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/esp32-hal-uart.c.d +121 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/esp32-hal-uart.c.o +0 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/firmware_msc_fat.c.d +3 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/firmware_msc_fat.c.o +0 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/libb64/cdecode.c.d +3 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/libb64/cdecode.c.o +0 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/libb64/cencode.c.d +3 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/libb64/cencode.c.o +0 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/main.cpp.d +139 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/main.cpp.o +0 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/stdlib_noniso.c.d +12 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/stdlib_noniso.c.o +0 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/wiring_pulse.c.d +111 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/wiring_pulse.c.o +0 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/wiring_shift.c.d +111 -0
- package/examples/alteriom/.pio/build/esp32/FrameworkArduino/wiring_shift.c.o +0 -0
- package/examples/alteriom/.pio/build/esp32/bootloader.bin +0 -0
- package/examples/alteriom/.pio/build/esp32/firmware.bin +0 -0
- package/examples/alteriom/.pio/build/esp32/firmware.elf +0 -0
- package/examples/alteriom/.pio/build/esp32/firmware.map +102570 -0
- package/examples/alteriom/.pio/build/esp32/lib373/LittleFS/LittleFS.cpp.d +142 -0
- package/examples/alteriom/.pio/build/esp32/lib373/LittleFS/LittleFS.cpp.o +0 -0
- package/examples/alteriom/.pio/build/esp32/lib373/libLittleFS.a +0 -0
- package/examples/alteriom/.pio/build/esp32/lib399/TaskScheduler/TaskScheduler.cpp.d +2 -0
- package/examples/alteriom/.pio/build/esp32/lib399/TaskScheduler/TaskScheduler.cpp.o +0 -0
- package/examples/alteriom/.pio/build/esp32/lib399/libTaskScheduler.a +0 -0
- package/examples/alteriom/.pio/build/esp32/lib4f2/FS/FS.cpp.d +138 -0
- package/examples/alteriom/.pio/build/esp32/lib4f2/FS/FS.cpp.o +0 -0
- package/examples/alteriom/.pio/build/esp32/lib4f2/FS/vfs_api.cpp.d +139 -0
- package/examples/alteriom/.pio/build/esp32/lib4f2/FS/vfs_api.cpp.o +0 -0
- package/examples/alteriom/.pio/build/esp32/lib4f2/libFS.a +0 -0
- package/examples/alteriom/.pio/build/esp32/lib71a/WiFi/WiFi.cpp.d +203 -0
- package/examples/alteriom/.pio/build/esp32/lib71a/WiFi/WiFi.cpp.o +0 -0
- package/examples/alteriom/.pio/build/esp32/lib71a/WiFi/WiFiAP.cpp.d +204 -0
- package/examples/alteriom/.pio/build/esp32/lib71a/WiFi/WiFiAP.cpp.o +0 -0
- package/examples/alteriom/.pio/build/esp32/lib71a/WiFi/WiFiClient.cpp.d +209 -0
- package/examples/alteriom/.pio/build/esp32/lib71a/WiFi/WiFiClient.cpp.o +0 -0
- package/examples/alteriom/.pio/build/esp32/lib71a/WiFi/WiFiGeneric.cpp.d +206 -0
- package/examples/alteriom/.pio/build/esp32/lib71a/WiFi/WiFiGeneric.cpp.o +0 -0
- package/examples/alteriom/.pio/build/esp32/lib71a/WiFi/WiFiMulti.cpp.d +199 -0
- package/examples/alteriom/.pio/build/esp32/lib71a/WiFi/WiFiMulti.cpp.o +0 -0
- package/examples/alteriom/.pio/build/esp32/lib71a/WiFi/WiFiSTA.cpp.d +206 -0
- package/examples/alteriom/.pio/build/esp32/lib71a/WiFi/WiFiSTA.cpp.o +0 -0
- package/examples/alteriom/.pio/build/esp32/lib71a/WiFi/WiFiScan.cpp.d +204 -0
- package/examples/alteriom/.pio/build/esp32/lib71a/WiFi/WiFiScan.cpp.o +0 -0
- package/examples/alteriom/.pio/build/esp32/lib71a/WiFi/WiFiServer.cpp.d +172 -0
- package/examples/alteriom/.pio/build/esp32/lib71a/WiFi/WiFiServer.cpp.o +0 -0
- package/examples/alteriom/.pio/build/esp32/lib71a/WiFi/WiFiUdp.cpp.d +171 -0
- package/examples/alteriom/.pio/build/esp32/lib71a/WiFi/WiFiUdp.cpp.o +0 -0
- package/examples/alteriom/.pio/build/esp32/lib71a/libWiFi.a +0 -0
- package/examples/alteriom/.pio/build/esp32/lib7d0/AsyncTCP/AsyncTCP.cpp.d +189 -0
- package/examples/alteriom/.pio/build/esp32/lib7d0/AsyncTCP/AsyncTCP.cpp.o +0 -0
- package/examples/alteriom/.pio/build/esp32/lib7d0/libAsyncTCP.a +0 -0
- package/examples/alteriom/.pio/build/esp32/lib837/libsrc.a +0 -0
- package/examples/alteriom/.pio/build/esp32/lib837/src/painlessMeshSTA.cpp.d +229 -0
- package/examples/alteriom/.pio/build/esp32/lib837/src/painlessMeshSTA.cpp.o +0 -0
- package/examples/alteriom/.pio/build/esp32/lib837/src/scheduler.cpp.d +139 -0
- package/examples/alteriom/.pio/build/esp32/lib837/src/scheduler.cpp.o +0 -0
- package/examples/alteriom/.pio/build/esp32/lib837/src/wifi.cpp.d +227 -0
- package/examples/alteriom/.pio/build/esp32/lib837/src/wifi.cpp.o +0 -0
- package/examples/alteriom/.pio/build/esp32/lib97a/SPIFFS/SPIFFS.cpp.d +142 -0
- package/examples/alteriom/.pio/build/esp32/lib97a/SPIFFS/SPIFFS.cpp.o +0 -0
- package/examples/alteriom/.pio/build/esp32/lib97a/libSPIFFS.a +0 -0
- package/examples/alteriom/.pio/build/esp32/libFrameworkArduino.a +0 -0
- package/examples/alteriom/.pio/build/esp32/libf48/Update/HttpsOTAUpdate.cpp.d +120 -0
- package/examples/alteriom/.pio/build/esp32/libf48/Update/HttpsOTAUpdate.cpp.o +0 -0
- package/examples/alteriom/.pio/build/esp32/libf48/Update/Updater.cpp.d +144 -0
- package/examples/alteriom/.pio/build/esp32/libf48/Update/Updater.cpp.o +0 -0
- package/examples/alteriom/.pio/build/esp32/libf48/libUpdate.a +0 -0
- package/examples/alteriom/.pio/build/esp32/partitions.bin +0 -0
- package/examples/alteriom/.pio/build/esp32/src/alteriom.ino.cpp.d +240 -0
- package/examples/alteriom/.pio/build/esp32/src/alteriom.ino.cpp.o +0 -0
- package/examples/alteriom/.pio/build/esp32/tmprz74bdta.tmp +1 -0
- package/examples/alteriom/.pio/build/esp32/tmps5iu5vvf.tmp +1 -0
- package/examples/alteriom/.pio/build/esp32/tmptxf7cu25.tmp +1 -0
- package/examples/alteriom/.pio/build/esp32/tmpuwwn0jz2.tmp +1 -0
- package/examples/alteriom/.pio/build/esp32/tmpz4zb75rq.tmp +1 -0
- package/examples/alteriom/.pio/build/esp8266/.sconsign311.dblite +0 -0
- package/examples/alteriom/.pio/build/esp8266/FrameworkArduino/Crypto.cpp.o +0 -0
- package/examples/alteriom/.pio/build/esp8266/FrameworkArduino/Esp-frag.cpp.o +0 -0
- package/examples/alteriom/.pio/build/esp8266/FrameworkArduino/Esp-version.cpp.o +0 -0
- package/examples/alteriom/.pio/build/esp8266/ld/local.eagle.app.v6.common.ld +285 -0
- package/examples/alteriom/.pio/build/esp8266/lib720/ESP8266WiFi/CertStoreBearSSL.cpp.o +0 -0
- package/examples/alteriom/.pio/build/esp8266/lib720/ESP8266WiFi/ESP8266WiFi.cpp.o +0 -0
- package/examples/alteriom/.pio/build/esp8266/lib720/ESP8266WiFi/ESP8266WiFiAP.cpp.o +0 -0
- package/examples/alteriom/.pio/build/esp8266/lib720/ESP8266WiFi/ESP8266WiFiGeneric.cpp.o +0 -0
- package/examples/alteriom/.pio/build/esp8266/lib720/ESP8266WiFi/ESP8266WiFiGratuitous.cpp.o +0 -0
- package/examples/alteriom/.pio/build/esp8266/lib720/ESP8266WiFi/ESP8266WiFiSTA-WPS.cpp.o +0 -0
- package/examples/alteriom/.pio/build/esp8266/lib720/ESP8266WiFi/ESP8266WiFiScan.cpp.o +0 -0
- package/examples/alteriom/.pio/build/esp8266/lib720/ESP8266WiFi/WiFiClient.cpp.o +0 -0
- package/examples/alteriom/.pio/build/esp8266/lib720/ESP8266WiFi/WiFiClientSecureBearSSL.cpp.o +0 -0
- package/examples/alteriom/.pio/build/esp8266/lib720/ESP8266WiFi/WiFiServerSecureBearSSL.cpp.o +0 -0
- package/examples/alteriom/.pio/build/esp8266/lib720/ESP8266WiFi/WiFiUdp.cpp.o +0 -0
- package/examples/alteriom/.pio/build/esp8266/lib720/ESP8266WiFi/enable_wifi_at_boot_time.cpp.o +0 -0
- package/examples/alteriom/.pio/build/esp8266/lib837/src/painlessMeshSTA.cpp.o +0 -0
- package/examples/alteriom/.pio/build/esp8266/lib837/src/scheduler.cpp.o +0 -0
- package/examples/alteriom/.pio/build/esp8266/lib837/src/wifi.cpp.o +0 -0
- package/examples/alteriom/.pio/build/esp8266/lib875/TaskScheduler/TaskScheduler.cpp.o +0 -0
- package/examples/alteriom/.pio/build/esp8266/lib875/libTaskScheduler.a +0 -0
- package/examples/alteriom/.pio/build/esp8266/libFrameworkArduinoVariant.a +1 -0
- package/examples/alteriom/.pio/build/esp8266/libdb3/LittleFS/LittleFS.cpp.o +0 -0
- package/examples/alteriom/.pio/build/esp8266/libdb3/LittleFS/lfs_util.c.o +0 -0
- package/examples/alteriom/.pio/build/esp8266/libf33/ESPAsyncTCP/AsyncPrinter.cpp.o +0 -0
- package/examples/alteriom/.pio/build/esp8266/libf33/ESPAsyncTCP/ESPAsyncTCP.cpp.o +0 -0
- package/examples/alteriom/.pio/build/esp8266/libf33/ESPAsyncTCP/ESPAsyncTCPbuffer.cpp.o +0 -0
- package/examples/alteriom/.pio/build/esp8266/libf33/ESPAsyncTCP/SyncClient.cpp.o +0 -0
- package/examples/alteriom/.pio/build/esp8266/libf33/ESPAsyncTCP/tcp_axtls.c.o +0 -0
- package/examples/alteriom/.pio/build/esp8266/src/alteriom.ino.cpp.o +0 -0
- package/examples/alteriom/.pio/build/project.checksum +1 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/.piopm +1 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/ArduinoJson.h +5 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/LICENSE.txt +10 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/README.md +153 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/examples/JsonConfigFile/JsonConfigFile.ino +152 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/examples/JsonFilterExample/JsonFilterExample.ino +64 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/examples/JsonGeneratorExample/JsonGeneratorExample.ino +65 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/examples/JsonHttpClient/JsonHttpClient.ino +125 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/examples/JsonParserExample/JsonParserExample.ino +65 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/examples/JsonServer/JsonServer.ino +118 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/examples/JsonUdpBeacon/JsonUdpBeacon.ino +106 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/examples/MsgPackParser/MsgPackParser.ino +61 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/examples/ProgmemExample/ProgmemExample.ino +63 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/examples/StringExample/StringExample.ino +76 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/library.json +23 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/library.properties +11 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Array/ArrayData.hpp +66 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Array/ArrayImpl.hpp +79 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Array/ElementProxy.hpp +75 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Array/JsonArray.hpp +219 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Array/JsonArrayConst.hpp +133 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Array/JsonArrayIterator.hpp +96 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Array/Utilities.hpp +112 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Collection/CollectionData.hpp +122 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Collection/CollectionImpl.hpp +137 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Configuration.hpp +285 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Deserialization/DeserializationError.hpp +106 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Deserialization/DeserializationOptions.hpp +35 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Deserialization/Filter.hpp +77 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Deserialization/NestingLimit.hpp +32 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Deserialization/Reader.hpp +74 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStreamReader.hpp +30 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStringReader.hpp +18 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Deserialization/Readers/FlashReader.hpp +56 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Deserialization/Readers/IteratorReader.hpp +42 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Deserialization/Readers/RamReader.hpp +49 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Deserialization/Readers/StdStreamReader.hpp +29 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Deserialization/Readers/VariantReader.hpp +19 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Deserialization/deserialize.hpp +79 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Document/JsonDocument.hpp +426 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Json/EscapeSequence.hpp +40 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Json/JsonDeserializer.hpp +720 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Json/JsonSerializer.hpp +165 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Json/Latch.hpp +56 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Json/PrettyJsonSerializer.hpp +110 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Json/TextFormatter.hpp +177 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Json/Utf16.hpp +67 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Json/Utf8.hpp +46 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Memory/Alignment.hpp +60 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Memory/Allocator.hpp +49 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Memory/MemoryPool.hpp +110 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Memory/MemoryPoolList.hpp +214 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Memory/ResourceManager.hpp +131 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Memory/ResourceManagerImpl.hpp +52 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Memory/StringBuffer.hpp +79 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Memory/StringBuilder.hpp +88 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Memory/StringNode.hpp +75 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Memory/StringPool.hpp +102 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Misc/SerializedValue.hpp +71 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackBinary.hpp +97 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackDeserializer.hpp +487 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackExtension.hpp +120 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackSerializer.hpp +244 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/MsgPack/endianness.hpp +46 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/MsgPack/ieee754.hpp +18 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Namespace.hpp +42 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Numbers/FloatParts.hpp +95 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Numbers/FloatTraits.hpp +212 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Numbers/JsonFloat.hpp +18 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Numbers/JsonInteger.hpp +28 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Numbers/arithmeticCompare.hpp +116 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Numbers/convertNumber.hpp +145 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Numbers/parseNumber.hpp +238 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Object/JsonObject.hpp +245 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Object/JsonObjectConst.hpp +166 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Object/JsonObjectIterator.hpp +83 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Object/JsonPair.hpp +70 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Object/MemberProxy.hpp +77 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Object/ObjectData.hpp +70 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Object/ObjectImpl.hpp +92 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/alias_cast.hpp +30 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/assert.hpp +14 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/attributes.hpp +45 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/ctype.hpp +21 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/integer.hpp +34 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/limits.hpp +45 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/math.hpp +27 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/mpl/max.hpp +27 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/pgmspace.hpp +144 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/pgmspace_generic.hpp +67 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/preprocessor.hpp +33 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/conditional.hpp +25 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/decay.hpp +33 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/declval.hpp +14 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/enable_if.hpp +23 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/function_traits.hpp +27 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/integral_constant.hpp +22 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_array.hpp +22 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_base_of.hpp +27 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_class.hpp +23 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_const.hpp +18 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_convertible.hpp +46 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_enum.hpp +22 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_floating_point.hpp +19 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_integral.hpp +32 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_pointer.hpp +17 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_same.hpp +18 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_signed.hpp +26 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_unsigned.hpp +24 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/make_unsigned.hpp +44 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/remove_const.hpp +24 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/remove_cv.hpp +31 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/remove_reference.hpp +24 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/type_identity.hpp +16 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/void_t.hpp +20 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits.hpp +27 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/utility.hpp +33 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Serialization/CountingDecorator.hpp +33 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Serialization/Writer.hpp +47 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Serialization/Writers/ArduinoStringWriter.hpp +55 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Serialization/Writers/DummyWriter.hpp +22 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Serialization/Writers/PrintWriter.hpp +29 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Serialization/Writers/StaticStringWriter.hpp +36 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Serialization/Writers/StdStreamWriter.hpp +32 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Serialization/Writers/StdStringWriter.hpp +42 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Serialization/measure.hpp +20 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Serialization/serialize.hpp +50 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Strings/Adapters/FlashString.hpp +93 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Strings/Adapters/RamString.hpp +118 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Strings/Adapters/StringObject.hpp +48 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Strings/IsString.hpp +19 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Strings/JsonString.hpp +100 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Strings/StringAdapter.hpp +47 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Strings/StringAdapters.hpp +72 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Strings/StringTraits.hpp +73 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/Converter.hpp +23 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/ConverterImpl.hpp +406 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/JsonVariant.hpp +78 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/JsonVariantConst.hpp +197 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/JsonVariantCopier.hpp +34 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/JsonVariantVisitor.hpp +61 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/VariantAttorney.hpp +35 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/VariantCompare.hpp +211 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/VariantContent.hpp +82 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/VariantData.hpp +609 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/VariantDataVisitor.hpp +24 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/VariantImpl.hpp +146 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/VariantOperators.hpp +188 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/VariantRefBase.hpp +313 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/VariantRefBaseImpl.hpp +175 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/VariantTag.hpp +16 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/VariantTo.hpp +34 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/compatibility.hpp +144 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/version.hpp +11 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson.h +17 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson.hpp +65 -0
- package/examples/alteriom/.pio/libdeps/esp32/ArduinoJson/src/CMakeLists.txt +91 -0
- package/examples/alteriom/.pio/libdeps/esp32/AsyncTCP/.piopm +1 -0
- package/examples/alteriom/.pio/libdeps/esp32/AsyncTCP/LICENSE +165 -0
- package/examples/alteriom/.pio/libdeps/esp32/AsyncTCP/README.md +55 -0
- package/examples/alteriom/.pio/libdeps/esp32/AsyncTCP/examples/AsyncSend/AsyncSend.ino +169 -0
- package/examples/alteriom/.pio/libdeps/esp32/AsyncTCP/examples/Client/Client.ino +87 -0
- package/examples/alteriom/.pio/libdeps/esp32/AsyncTCP/examples/FetchWebsite/FetchWebsite.ino +107 -0
- package/examples/alteriom/.pio/libdeps/esp32/AsyncTCP/library.json +31 -0
- package/examples/alteriom/.pio/libdeps/esp32/AsyncTCP/library.properties +11 -0
- package/examples/alteriom/.pio/libdeps/esp32/AsyncTCP/src/AsyncTCP.cpp +1612 -0
- package/examples/alteriom/.pio/libdeps/esp32/AsyncTCP/src/AsyncTCP.h +335 -0
- package/examples/alteriom/.pio/libdeps/esp32/AsyncTCP/src/AsyncTCPLogging.h +66 -0
- package/examples/alteriom/.pio/libdeps/esp32/AsyncTCP/src/AsyncTCPSimpleIntrusiveList.h +134 -0
- package/examples/alteriom/.pio/libdeps/esp32/AsyncTCP/src/AsyncTCPVersion.h +40 -0
- package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/.github/FUNDING.yml +1 -0
- package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/.github/workflows/doxygen.yml +310 -0
- package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/.github/workflows/main.yml +309 -0
- package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/.github/workflows/test.yml +523 -0
- package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/.piopm +1 -0
- package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/LICENSE.txt +27 -0
- package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/README.md +157 -0
- package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example00_Blink/Scheduler_example00_Blink.ino +303 -0
- package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example00_Blink_Namespace/Scheduler_example00_Blink_Namespace.ino +302 -0
- package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example01/Scheduler_example01.ino +84 -0
- package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example02/Scheduler_example02.ino +78 -0
- package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example03/Scheduler_example03.ino +80 -0
- package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example04_StatusRequest/Scheduler_example04_StatusRequest.ino +90 -0
- package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example05_StatusRequest/Scheduler_example05_StatusRequest.ino +181 -0
- package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example06_IDLE/Scheduler_example06_IDLE.ino +117 -0
- package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example07_WDT/Scheduler_example07_WDT.ino +133 -0
- package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example08_LTS/Scheduler_example08_LTS.ino +147 -0
- package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example09_TimeCritical/Scheduler_example09_TimeCritical.ino +57 -0
- package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example10_Benchmark/Scheduler_example10_Benchmark.ino +106 -0
- package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example11_Priority/Scheduler_example11_Priority.ino +105 -0
- package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example12_Priority/Scheduler_example12_Priority.ino +136 -0
- package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example13_Micros/Scheduler_example13_Micros.ino +71 -0
- package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example14_Yield/Scheduler_example14_Yield.ino +339 -0
- package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example15_STDFunction/Scheduler_example15_STDFunction.ino +53 -0
- package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example16_Multitab/Scheduler_example16_Multitab.ino +18 -0
- package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example16_Multitab/file1.cpp +31 -0
- package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example16_Multitab/file2.cpp +55 -0
- package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example16_Multitab/header.hpp +15 -0
- package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example16_Multitab/ts.cpp +20 -0
- package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example17_Timeout/Scheduler_example17_Timeout.ino +90 -0
- package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example18_StatusRequest_LTS_WDT_Timeout/Scheduler_example18_StatusRequest_LTS_WDT_Timeout.ino +172 -0
- package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example19_Dynamic_Tasks/Scheduler_example19_Dynamic_Tasks.ino +137 -0
- package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example19_Dynamic_Tasks_SelfDestruct/Scheduler_example19_Dynamic_Tasks_SelfDestruct.ino +130 -0
- package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example19_Dynamic_Tasks_stdQueue/Scheduler_example19_Dynamic_Tasks_stdQueue.ino +137 -0
- 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
- package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example20_StatusRequest_LTS_WDT_Timeout_Object/SuperSensor.cpp +36 -0
- package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example20_StatusRequest_LTS_WDT_Timeout_Object/SuperSensor.h +25 -0
- package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example21_OO_Callbacks/Calculator.cpp +66 -0
- package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example21_OO_Callbacks/Calculator.h +34 -0
- package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example21_OO_Callbacks/Scheduler_example21_OO_Callbacks.ino +76 -0
- package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example21_OO_Callbacks/SuperSensor.cpp +83 -0
- package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example21_OO_Callbacks/SuperSensor.h +44 -0
- package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example21_OO_Callbacks/Ticker.cpp +21 -0
- package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example21_OO_Callbacks/Ticker.h +28 -0
- package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example23_IDLE_Callback/Scheduler_example23_IDLE_Callback.ino +157 -0
- package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example24_CPU_LOAD/Scheduler_example24_CPU_LOAD.ino +87 -0
- package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example25_SCHEDULER_CHAIN/Scheduler_example25_SCHEDULER_CHAIN.ino +127 -0
- package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example26_SCHEDULING_OPTIONS/Scheduler_example26_SCHEDULING_OPTIONS.ino +181 -0
- package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example27_PlatformIO/include/README +39 -0
- package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example27_PlatformIO/include/led.h +12 -0
- package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example27_PlatformIO/include/main.h +25 -0
- package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example27_PlatformIO/lib/README +46 -0
- package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example27_PlatformIO/platformio.ini +37 -0
- package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example27_PlatformIO/src/led.cpp +11 -0
- package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example27_PlatformIO/src/main.cpp +254 -0
- package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example27_PlatformIO/test/README +11 -0
- package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example28_Tickless/Scheduler_example28_Tickless.ino +105 -0
- package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example29_NonArduino/include/README +39 -0
- package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example29_NonArduino/include/led.h +12 -0
- package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example29_NonArduino/include/main.h +27 -0
- package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example29_NonArduino/lib/README +46 -0
- package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example29_NonArduino/platformio.ini +38 -0
- package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example29_NonArduino/src/led.cpp +13 -0
- package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example29_NonArduino/src/main.cpp +267 -0
- package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example29_NonArduino/test/README +11 -0
- package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example30_THREAD_SAFE/README.md +232 -0
- package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example30_THREAD_SAFE/platformio.ini +44 -0
- package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example30_THREAD_SAFE/src/main.cpp +310 -0
- package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_template/Scheduler_template.ino +166 -0
- package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/keywords.txt +161 -0
- package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/library.json +22 -0
- package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/library.properties +9 -0
- package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/src/TScheduler.hpp +29 -0
- package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/src/TSchedulerDeclarations.hpp +29 -0
- package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/src/TaskScheduler.cpp +3 -0
- package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/src/TaskScheduler.h +1811 -0
- package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/src/TaskSchedulerDeclarations.h +3096 -0
- package/examples/alteriom/.pio/libdeps/esp32/TaskScheduler/src/TaskSchedulerSleepMethods.h +399 -0
- package/examples/alteriom/.pio/libdeps/esp32/integrity.dat +3 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/.piopm +1 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/ArduinoJson.h +5 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/LICENSE.txt +10 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/README.md +153 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/examples/JsonConfigFile/JsonConfigFile.ino +152 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/examples/JsonFilterExample/JsonFilterExample.ino +64 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/examples/JsonGeneratorExample/JsonGeneratorExample.ino +65 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/examples/JsonHttpClient/JsonHttpClient.ino +125 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/examples/JsonParserExample/JsonParserExample.ino +65 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/examples/JsonServer/JsonServer.ino +118 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/examples/JsonUdpBeacon/JsonUdpBeacon.ino +106 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/examples/MsgPackParser/MsgPackParser.ino +61 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/examples/ProgmemExample/ProgmemExample.ino +63 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/examples/StringExample/StringExample.ino +76 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/library.json +23 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/library.properties +11 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Array/ArrayData.hpp +66 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Array/ArrayImpl.hpp +79 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Array/ElementProxy.hpp +75 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Array/JsonArray.hpp +219 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Array/JsonArrayConst.hpp +133 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Array/JsonArrayIterator.hpp +96 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Array/Utilities.hpp +112 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Collection/CollectionData.hpp +122 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Collection/CollectionImpl.hpp +137 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Configuration.hpp +285 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/DeserializationError.hpp +106 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/DeserializationOptions.hpp +35 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/Filter.hpp +77 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/NestingLimit.hpp +32 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/Reader.hpp +74 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStreamReader.hpp +30 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStringReader.hpp +18 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/Readers/FlashReader.hpp +56 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/Readers/IteratorReader.hpp +42 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/Readers/RamReader.hpp +49 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/Readers/StdStreamReader.hpp +29 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/Readers/VariantReader.hpp +19 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/deserialize.hpp +79 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Document/JsonDocument.hpp +426 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Json/EscapeSequence.hpp +40 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Json/JsonDeserializer.hpp +720 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Json/JsonSerializer.hpp +165 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Json/Latch.hpp +56 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Json/PrettyJsonSerializer.hpp +110 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Json/TextFormatter.hpp +177 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Json/Utf16.hpp +67 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Json/Utf8.hpp +46 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Memory/Alignment.hpp +60 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Memory/Allocator.hpp +49 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Memory/MemoryPool.hpp +110 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Memory/MemoryPoolList.hpp +214 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Memory/ResourceManager.hpp +131 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Memory/ResourceManagerImpl.hpp +52 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Memory/StringBuffer.hpp +79 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Memory/StringBuilder.hpp +88 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Memory/StringNode.hpp +75 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Memory/StringPool.hpp +102 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Misc/SerializedValue.hpp +71 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackBinary.hpp +97 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackDeserializer.hpp +487 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackExtension.hpp +120 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackSerializer.hpp +244 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/MsgPack/endianness.hpp +46 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/MsgPack/ieee754.hpp +18 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Namespace.hpp +42 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Numbers/FloatParts.hpp +95 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Numbers/FloatTraits.hpp +212 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Numbers/JsonFloat.hpp +18 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Numbers/JsonInteger.hpp +28 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Numbers/arithmeticCompare.hpp +116 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Numbers/convertNumber.hpp +145 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Numbers/parseNumber.hpp +238 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Object/JsonObject.hpp +245 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Object/JsonObjectConst.hpp +166 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Object/JsonObjectIterator.hpp +83 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Object/JsonPair.hpp +70 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Object/MemberProxy.hpp +77 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Object/ObjectData.hpp +70 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Object/ObjectImpl.hpp +92 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/alias_cast.hpp +30 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/assert.hpp +14 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/attributes.hpp +45 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/ctype.hpp +21 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/integer.hpp +34 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/limits.hpp +45 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/math.hpp +27 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/mpl/max.hpp +27 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/pgmspace.hpp +144 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/pgmspace_generic.hpp +67 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/preprocessor.hpp +33 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/conditional.hpp +25 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/decay.hpp +33 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/declval.hpp +14 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/enable_if.hpp +23 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/function_traits.hpp +27 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/integral_constant.hpp +22 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_array.hpp +22 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_base_of.hpp +27 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_class.hpp +23 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_const.hpp +18 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_convertible.hpp +46 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_enum.hpp +22 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_floating_point.hpp +19 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_integral.hpp +32 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_pointer.hpp +17 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_same.hpp +18 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_signed.hpp +26 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_unsigned.hpp +24 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/make_unsigned.hpp +44 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/remove_const.hpp +24 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/remove_cv.hpp +31 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/remove_reference.hpp +24 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/type_identity.hpp +16 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/void_t.hpp +20 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits.hpp +27 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/utility.hpp +33 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Serialization/CountingDecorator.hpp +33 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Serialization/Writer.hpp +47 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Serialization/Writers/ArduinoStringWriter.hpp +55 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Serialization/Writers/DummyWriter.hpp +22 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Serialization/Writers/PrintWriter.hpp +29 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Serialization/Writers/StaticStringWriter.hpp +36 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Serialization/Writers/StdStreamWriter.hpp +32 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Serialization/Writers/StdStringWriter.hpp +42 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Serialization/measure.hpp +20 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Serialization/serialize.hpp +50 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/Adapters/FlashString.hpp +93 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/Adapters/RamString.hpp +118 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/Adapters/StringObject.hpp +48 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/IsString.hpp +19 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/JsonString.hpp +100 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/StringAdapter.hpp +47 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/StringAdapters.hpp +72 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/StringTraits.hpp +73 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/Converter.hpp +23 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/ConverterImpl.hpp +406 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/JsonVariant.hpp +78 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/JsonVariantConst.hpp +197 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/JsonVariantCopier.hpp +34 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/JsonVariantVisitor.hpp +61 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantAttorney.hpp +35 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantCompare.hpp +211 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantContent.hpp +82 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantData.hpp +609 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantDataVisitor.hpp +24 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantImpl.hpp +146 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantOperators.hpp +188 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantRefBase.hpp +313 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantRefBaseImpl.hpp +175 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantTag.hpp +16 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantTo.hpp +34 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/compatibility.hpp +144 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/version.hpp +11 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson.h +17 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson.hpp +65 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ArduinoJson/src/CMakeLists.txt +91 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ESPAsyncTCP/.github/scripts/install-arduino-core-esp8266.sh +29 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ESPAsyncTCP/.github/scripts/install-arduino-ide.sh +220 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ESPAsyncTCP/.github/scripts/install-platformio.sh +133 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ESPAsyncTCP/.github/scripts/on-push.sh +64 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ESPAsyncTCP/.github/stale.yml +31 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ESPAsyncTCP/.github/workflows/push.yml +30 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ESPAsyncTCP/.piopm +1 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ESPAsyncTCP/LICENSE.txt +165 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ESPAsyncTCP/README.md +43 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ESPAsyncTCP/examples/ClientServer/Client/Client.ino +62 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ESPAsyncTCP/examples/ClientServer/Client/config.h +23 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ESPAsyncTCP/examples/ClientServer/Server/Server.ino +73 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ESPAsyncTCP/examples/ClientServer/Server/config.h +23 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ESPAsyncTCP/examples/SyncClient/.esp31b.skip +0 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ESPAsyncTCP/examples/SyncClient/SyncClient.ino +54 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ESPAsyncTCP/library.json +19 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ESPAsyncTCP/library.properties +10 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ESPAsyncTCP/src/AsyncPrinter.cpp +214 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ESPAsyncTCP/src/AsyncPrinter.h +73 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ESPAsyncTCP/src/DebugPrintMacros.h +112 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ESPAsyncTCP/src/ESPAsyncTCP.cpp +1406 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ESPAsyncTCP/src/ESPAsyncTCP.h +324 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ESPAsyncTCP/src/ESPAsyncTCPbuffer.cpp +555 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ESPAsyncTCP/src/ESPAsyncTCPbuffer.h +118 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ESPAsyncTCP/src/SyncClient.cpp +414 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ESPAsyncTCP/src/SyncClient.h +109 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ESPAsyncTCP/src/async_config.h +42 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ESPAsyncTCP/src/tcp_axtls.c +613 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ESPAsyncTCP/src/tcp_axtls.h +98 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ESPAsyncTCP/ssl/gen_server_cert.sh +36 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ESPAsyncTCP/ssl/server.cer +0 -0
- package/examples/alteriom/.pio/libdeps/esp8266/ESPAsyncTCP/ssl/server.key +0 -0
- package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/.github/FUNDING.yml +1 -0
- package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/.github/workflows/doxygen.yml +310 -0
- package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/.github/workflows/main.yml +309 -0
- package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/.github/workflows/test.yml +523 -0
- package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/.piopm +1 -0
- package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/LICENSE.txt +27 -0
- package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/README.md +157 -0
- package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example00_Blink/Scheduler_example00_Blink.ino +303 -0
- package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example00_Blink_Namespace/Scheduler_example00_Blink_Namespace.ino +302 -0
- package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example01/Scheduler_example01.ino +84 -0
- package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example02/Scheduler_example02.ino +78 -0
- package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example03/Scheduler_example03.ino +80 -0
- package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example04_StatusRequest/Scheduler_example04_StatusRequest.ino +90 -0
- package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example05_StatusRequest/Scheduler_example05_StatusRequest.ino +181 -0
- package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example06_IDLE/Scheduler_example06_IDLE.ino +117 -0
- package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example07_WDT/Scheduler_example07_WDT.ino +133 -0
- package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example08_LTS/Scheduler_example08_LTS.ino +147 -0
- package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example09_TimeCritical/Scheduler_example09_TimeCritical.ino +57 -0
- package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example10_Benchmark/Scheduler_example10_Benchmark.ino +106 -0
- package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example11_Priority/Scheduler_example11_Priority.ino +105 -0
- package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example12_Priority/Scheduler_example12_Priority.ino +136 -0
- package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example13_Micros/Scheduler_example13_Micros.ino +71 -0
- package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example14_Yield/Scheduler_example14_Yield.ino +339 -0
- package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example15_STDFunction/Scheduler_example15_STDFunction.ino +53 -0
- package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example16_Multitab/Scheduler_example16_Multitab.ino +18 -0
- package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example16_Multitab/file1.cpp +31 -0
- package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example16_Multitab/file2.cpp +55 -0
- package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example16_Multitab/header.hpp +15 -0
- package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example16_Multitab/ts.cpp +20 -0
- package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example17_Timeout/Scheduler_example17_Timeout.ino +90 -0
- package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example18_StatusRequest_LTS_WDT_Timeout/Scheduler_example18_StatusRequest_LTS_WDT_Timeout.ino +172 -0
- package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example19_Dynamic_Tasks/Scheduler_example19_Dynamic_Tasks.ino +137 -0
- package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example19_Dynamic_Tasks_SelfDestruct/Scheduler_example19_Dynamic_Tasks_SelfDestruct.ino +130 -0
- package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example19_Dynamic_Tasks_stdQueue/Scheduler_example19_Dynamic_Tasks_stdQueue.ino +137 -0
- 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
- package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example20_StatusRequest_LTS_WDT_Timeout_Object/SuperSensor.cpp +36 -0
- package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example20_StatusRequest_LTS_WDT_Timeout_Object/SuperSensor.h +25 -0
- package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example21_OO_Callbacks/Calculator.cpp +66 -0
- package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example21_OO_Callbacks/Calculator.h +34 -0
- package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example21_OO_Callbacks/Scheduler_example21_OO_Callbacks.ino +76 -0
- package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example21_OO_Callbacks/SuperSensor.cpp +83 -0
- package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example21_OO_Callbacks/SuperSensor.h +44 -0
- package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example21_OO_Callbacks/Ticker.cpp +21 -0
- package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example21_OO_Callbacks/Ticker.h +28 -0
- package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example23_IDLE_Callback/Scheduler_example23_IDLE_Callback.ino +157 -0
- package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example24_CPU_LOAD/Scheduler_example24_CPU_LOAD.ino +87 -0
- package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example25_SCHEDULER_CHAIN/Scheduler_example25_SCHEDULER_CHAIN.ino +127 -0
- package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example26_SCHEDULING_OPTIONS/Scheduler_example26_SCHEDULING_OPTIONS.ino +181 -0
- package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example27_PlatformIO/include/README +39 -0
- package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example27_PlatformIO/include/led.h +12 -0
- package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example27_PlatformIO/include/main.h +25 -0
- package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example27_PlatformIO/lib/README +46 -0
- package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example27_PlatformIO/platformio.ini +37 -0
- package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example27_PlatformIO/src/led.cpp +11 -0
- package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example27_PlatformIO/src/main.cpp +254 -0
- package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example27_PlatformIO/test/README +11 -0
- package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example28_Tickless/Scheduler_example28_Tickless.ino +105 -0
- package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example29_NonArduino/include/README +39 -0
- package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example29_NonArduino/include/led.h +12 -0
- package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example29_NonArduino/include/main.h +27 -0
- package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example29_NonArduino/lib/README +46 -0
- package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example29_NonArduino/platformio.ini +38 -0
- package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example29_NonArduino/src/led.cpp +13 -0
- package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example29_NonArduino/src/main.cpp +267 -0
- package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example29_NonArduino/test/README +11 -0
- package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example30_THREAD_SAFE/README.md +232 -0
- package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example30_THREAD_SAFE/platformio.ini +44 -0
- package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example30_THREAD_SAFE/src/main.cpp +310 -0
- package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_template/Scheduler_template.ino +166 -0
- package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/keywords.txt +161 -0
- package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/library.json +22 -0
- package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/library.properties +9 -0
- package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/src/TScheduler.hpp +29 -0
- package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/src/TSchedulerDeclarations.hpp +29 -0
- package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/src/TaskScheduler.cpp +3 -0
- package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/src/TaskScheduler.h +1811 -0
- package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/src/TaskSchedulerDeclarations.h +3096 -0
- package/examples/alteriom/.pio/libdeps/esp8266/TaskScheduler/src/TaskSchedulerSleepMethods.h +399 -0
- package/examples/alteriom/.pio/libdeps/esp8266/integrity.dat +3 -0
- package/examples/alteriom/README.md +139 -139
- package/examples/alteriom/alteriom.ino +186 -186
- package/examples/alteriom/alteriom_sensor_package.hpp +240 -240
- package/examples/alteriom/platformio.ini +24 -24
- package/examples/alteriomImproved/alteriom_sensor_package.hpp +223 -223
- package/examples/alteriomImproved/improved_sensor_node.ino +245 -245
- package/examples/alteriomImproved/platformio.ini +24 -24
- package/examples/alteriomPhase1/alteriom_sensor_package.hpp +223 -223
- package/examples/alteriomPhase1/phase1_features.ino +242 -242
- package/examples/alteriomPhase1/platformio.ini +24 -24
- package/examples/alteriomPhase2/alteriom_sensor_package.hpp +223 -223
- package/examples/alteriomPhase2/phase2_features.ino +186 -186
- package/examples/alteriomPhase2/platformio.ini +24 -24
- package/examples/alteriomSensorNode/alteriom_sensor_node.ino +183 -183
- package/examples/alteriomSensorNode/alteriom_sensor_package.hpp +223 -223
- package/examples/alteriomSensorNode/platformio.ini +24 -24
- package/examples/basic/.pio/build/esp32/.sconsign311.dblite +0 -0
- package/examples/basic/.pio/build/esp32/bootloader.bin +0 -0
- package/examples/basic/.pio/build/esp32/lib241/TaskScheduler/TaskScheduler.cpp.d +2 -0
- package/examples/basic/.pio/build/esp32/lib241/TaskScheduler/TaskScheduler.cpp.o +0 -0
- package/examples/basic/.pio/build/esp32/lib241/libTaskScheduler.a +0 -0
- package/examples/basic/.pio/build/esp32/lib4f2/FS/FS.cpp.d +138 -0
- package/examples/basic/.pio/build/esp32/lib4f2/FS/FS.cpp.o +0 -0
- package/examples/basic/.pio/build/esp32/lib4f2/FS/vfs_api.cpp.d +139 -0
- package/examples/basic/.pio/build/esp32/lib4f2/FS/vfs_api.cpp.o +0 -0
- package/examples/basic/.pio/build/esp32/lib71a/WiFi/WiFi.cpp.d +203 -0
- package/examples/basic/.pio/build/esp32/lib71a/WiFi/WiFi.cpp.o +0 -0
- package/examples/basic/.pio/build/esp32/lib71a/WiFi/WiFiAP.cpp.d +204 -0
- package/examples/basic/.pio/build/esp32/lib71a/WiFi/WiFiAP.cpp.o +0 -0
- package/examples/basic/.pio/build/esp32/lib71a/WiFi/WiFiClient.cpp.d +209 -0
- package/examples/basic/.pio/build/esp32/lib71a/WiFi/WiFiClient.cpp.o +0 -0
- package/examples/basic/.pio/build/esp32/lib71a/WiFi/WiFiGeneric.cpp.d +206 -0
- package/examples/basic/.pio/build/esp32/lib71a/WiFi/WiFiGeneric.cpp.o +0 -0
- package/examples/basic/.pio/build/esp32/lib71a/WiFi/WiFiMulti.cpp.d +199 -0
- package/examples/basic/.pio/build/esp32/lib71a/WiFi/WiFiMulti.cpp.o +0 -0
- package/examples/basic/.pio/build/esp32/lib71a/WiFi/WiFiSTA.cpp.d +206 -0
- package/examples/basic/.pio/build/esp32/lib71a/WiFi/WiFiSTA.cpp.o +0 -0
- package/examples/basic/.pio/build/esp32/lib71a/WiFi/WiFiScan.cpp.d +204 -0
- package/examples/basic/.pio/build/esp32/lib71a/WiFi/WiFiScan.cpp.o +0 -0
- package/examples/basic/.pio/build/esp32/lib71a/WiFi/WiFiServer.cpp.d +172 -0
- package/examples/basic/.pio/build/esp32/lib71a/WiFi/WiFiServer.cpp.o +0 -0
- package/examples/basic/.pio/build/esp32/lib71a/WiFi/WiFiUdp.cpp.d +171 -0
- package/examples/basic/.pio/build/esp32/lib71a/WiFi/WiFiUdp.cpp.o +0 -0
- package/examples/basic/.pio/build/esp32/lib8c7/AsyncTCP/AsyncTCP.cpp.d +189 -0
- package/examples/basic/.pio/build/esp32/lib8c7/AsyncTCP/AsyncTCP.cpp.o +0 -0
- package/examples/basic/.pio/build/esp32/partitions.bin +0 -0
- package/examples/basic/.pio/build/esp32/src/basic.ino.cpp.d +238 -0
- package/examples/basic/.pio/build/esp32/src/basic.ino.cpp.o +0 -0
- package/examples/basic/.pio/build/esp8266/.sconsign311.dblite +0 -0
- package/examples/basic/.pio/build/esp8266/FrameworkArduino/Esp-frag.cpp.o +0 -0
- package/examples/basic/.pio/build/esp8266/FrameworkArduino/Esp-version.cpp.o +0 -0
- package/examples/basic/.pio/build/esp8266/FrameworkArduino/Esp.cpp.o +0 -0
- package/examples/basic/.pio/build/esp8266/FrameworkArduino/FS.cpp.o +0 -0
- package/examples/basic/.pio/build/esp8266/FrameworkArduino/FSnoop.cpp.o +0 -0
- package/examples/basic/.pio/build/esp8266/FrameworkArduino/FunctionalInterrupt.cpp.o +0 -0
- package/examples/basic/.pio/build/esp8266/ld/local.eagle.app.v6.common.ld +285 -0
- package/examples/basic/.pio/build/esp8266/lib5e7/TaskScheduler/TaskScheduler.cpp.o +0 -0
- package/examples/basic/.pio/build/esp8266/lib5e7/libTaskScheduler.a +0 -0
- package/examples/basic/.pio/build/esp8266/lib720/ESP8266WiFi/BearSSLHelpers.cpp.o +0 -0
- package/examples/basic/.pio/build/esp8266/lib720/ESP8266WiFi/CertStoreBearSSL.cpp.o +0 -0
- package/examples/basic/.pio/build/esp8266/lib720/ESP8266WiFi/ESP8266WiFi.cpp.o +0 -0
- package/examples/basic/.pio/build/esp8266/lib720/ESP8266WiFi/ESP8266WiFiAP.cpp.o +0 -0
- package/examples/basic/.pio/build/esp8266/lib720/ESP8266WiFi/ESP8266WiFiGeneric.cpp.o +0 -0
- package/examples/basic/.pio/build/esp8266/lib720/ESP8266WiFi/ESP8266WiFiGratuitous.cpp.o +0 -0
- package/examples/basic/.pio/build/esp8266/lib720/ESP8266WiFi/ESP8266WiFiMulti.cpp.o +0 -0
- package/examples/basic/.pio/build/esp8266/lib720/ESP8266WiFi/ESP8266WiFiSTA-WPS.cpp.o +0 -0
- package/examples/basic/.pio/build/esp8266/lib720/ESP8266WiFi/ESP8266WiFiSTA.cpp.o +0 -0
- package/examples/basic/.pio/build/esp8266/lib720/ESP8266WiFi/ESP8266WiFiScan.cpp.o +0 -0
- package/examples/basic/.pio/build/esp8266/lib720/ESP8266WiFi/WiFiClient.cpp.o +0 -0
- package/examples/basic/.pio/build/esp8266/lib720/ESP8266WiFi/WiFiClientSecureBearSSL.cpp.o +0 -0
- package/examples/basic/.pio/build/esp8266/lib720/ESP8266WiFi/WiFiServerSecureBearSSL.cpp.o +0 -0
- package/examples/basic/.pio/build/esp8266/lib720/ESP8266WiFi/WiFiUdp.cpp.o +0 -0
- package/examples/basic/.pio/build/esp8266/lib837/src/scheduler.cpp.o +0 -0
- package/examples/basic/.pio/build/esp8266/libFrameworkArduinoVariant.a +1 -0
- package/examples/basic/.pio/build/esp8266/libdb3/LittleFS/LittleFS.cpp.o +0 -0
- package/examples/basic/.pio/build/esp8266/libdb3/LittleFS/lfs_util.c.o +0 -0
- package/examples/basic/.pio/build/esp8266/libf28/ESPAsyncTCP/AsyncPrinter.cpp.o +0 -0
- package/examples/basic/.pio/build/esp8266/libf28/ESPAsyncTCP/ESPAsyncTCP.cpp.o +0 -0
- package/examples/basic/.pio/build/esp8266/libf28/ESPAsyncTCP/ESPAsyncTCPbuffer.cpp.o +0 -0
- package/examples/basic/.pio/build/esp8266/libf28/ESPAsyncTCP/SyncClient.cpp.o +0 -0
- package/examples/basic/.pio/build/esp8266/libf28/ESPAsyncTCP/tcp_axtls.c.o +0 -0
- package/examples/basic/.pio/build/esp8266/src/basic.ino.cpp.o +0 -0
- package/examples/basic/.pio/build/project.checksum +1 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/.piopm +1 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/ArduinoJson.h +5 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/LICENSE.txt +10 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/README.md +153 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/examples/JsonConfigFile/JsonConfigFile.ino +152 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/examples/JsonFilterExample/JsonFilterExample.ino +64 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/examples/JsonGeneratorExample/JsonGeneratorExample.ino +65 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/examples/JsonHttpClient/JsonHttpClient.ino +125 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/examples/JsonParserExample/JsonParserExample.ino +65 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/examples/JsonServer/JsonServer.ino +118 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/examples/JsonUdpBeacon/JsonUdpBeacon.ino +106 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/examples/MsgPackParser/MsgPackParser.ino +61 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/examples/ProgmemExample/ProgmemExample.ino +63 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/examples/StringExample/StringExample.ino +76 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/library.json +23 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/library.properties +11 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Array/ArrayData.hpp +66 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Array/ArrayImpl.hpp +79 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Array/ElementProxy.hpp +75 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Array/JsonArray.hpp +219 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Array/JsonArrayConst.hpp +133 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Array/JsonArrayIterator.hpp +96 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Array/Utilities.hpp +112 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Collection/CollectionData.hpp +122 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Collection/CollectionImpl.hpp +137 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Configuration.hpp +285 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Deserialization/DeserializationError.hpp +106 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Deserialization/DeserializationOptions.hpp +35 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Deserialization/Filter.hpp +77 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Deserialization/NestingLimit.hpp +32 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Deserialization/Reader.hpp +74 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStreamReader.hpp +30 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStringReader.hpp +18 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Deserialization/Readers/FlashReader.hpp +56 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Deserialization/Readers/IteratorReader.hpp +42 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Deserialization/Readers/RamReader.hpp +49 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Deserialization/Readers/StdStreamReader.hpp +29 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Deserialization/Readers/VariantReader.hpp +19 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Deserialization/deserialize.hpp +79 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Document/JsonDocument.hpp +426 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Json/EscapeSequence.hpp +40 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Json/JsonDeserializer.hpp +720 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Json/JsonSerializer.hpp +165 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Json/Latch.hpp +56 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Json/PrettyJsonSerializer.hpp +110 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Json/TextFormatter.hpp +177 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Json/Utf16.hpp +67 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Json/Utf8.hpp +46 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Memory/Alignment.hpp +60 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Memory/Allocator.hpp +49 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Memory/MemoryPool.hpp +110 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Memory/MemoryPoolList.hpp +214 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Memory/ResourceManager.hpp +131 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Memory/ResourceManagerImpl.hpp +52 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Memory/StringBuffer.hpp +79 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Memory/StringBuilder.hpp +88 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Memory/StringNode.hpp +75 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Memory/StringPool.hpp +102 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Misc/SerializedValue.hpp +71 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackBinary.hpp +97 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackDeserializer.hpp +487 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackExtension.hpp +120 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackSerializer.hpp +244 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/MsgPack/endianness.hpp +46 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/MsgPack/ieee754.hpp +18 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Namespace.hpp +42 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Numbers/FloatParts.hpp +95 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Numbers/FloatTraits.hpp +212 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Numbers/JsonFloat.hpp +18 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Numbers/JsonInteger.hpp +28 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Numbers/arithmeticCompare.hpp +116 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Numbers/convertNumber.hpp +145 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Numbers/parseNumber.hpp +238 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Object/JsonObject.hpp +245 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Object/JsonObjectConst.hpp +166 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Object/JsonObjectIterator.hpp +83 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Object/JsonPair.hpp +70 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Object/MemberProxy.hpp +77 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Object/ObjectData.hpp +70 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Object/ObjectImpl.hpp +92 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/alias_cast.hpp +30 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/assert.hpp +14 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/attributes.hpp +45 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/ctype.hpp +21 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/integer.hpp +34 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/limits.hpp +45 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/math.hpp +27 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/mpl/max.hpp +27 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/pgmspace.hpp +144 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/pgmspace_generic.hpp +67 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/preprocessor.hpp +33 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/conditional.hpp +25 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/decay.hpp +33 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/declval.hpp +14 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/enable_if.hpp +23 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/function_traits.hpp +27 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/integral_constant.hpp +22 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_array.hpp +22 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_base_of.hpp +27 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_class.hpp +23 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_const.hpp +18 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_convertible.hpp +46 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_enum.hpp +22 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_floating_point.hpp +19 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_integral.hpp +32 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_pointer.hpp +17 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_same.hpp +18 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_signed.hpp +26 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_unsigned.hpp +24 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/make_unsigned.hpp +44 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/remove_const.hpp +24 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/remove_cv.hpp +31 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/remove_reference.hpp +24 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/type_identity.hpp +16 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/void_t.hpp +20 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits.hpp +27 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/utility.hpp +33 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Serialization/CountingDecorator.hpp +33 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Serialization/Writer.hpp +47 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Serialization/Writers/ArduinoStringWriter.hpp +55 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Serialization/Writers/DummyWriter.hpp +22 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Serialization/Writers/PrintWriter.hpp +29 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Serialization/Writers/StaticStringWriter.hpp +36 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Serialization/Writers/StdStreamWriter.hpp +32 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Serialization/Writers/StdStringWriter.hpp +42 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Serialization/measure.hpp +20 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Serialization/serialize.hpp +50 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Strings/Adapters/FlashString.hpp +93 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Strings/Adapters/RamString.hpp +118 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Strings/Adapters/StringObject.hpp +48 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Strings/IsString.hpp +19 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Strings/JsonString.hpp +100 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Strings/StringAdapter.hpp +47 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Strings/StringAdapters.hpp +72 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Strings/StringTraits.hpp +73 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/Converter.hpp +23 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/ConverterImpl.hpp +406 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/JsonVariant.hpp +78 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/JsonVariantConst.hpp +197 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/JsonVariantCopier.hpp +34 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/JsonVariantVisitor.hpp +61 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/VariantAttorney.hpp +35 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/VariantCompare.hpp +211 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/VariantContent.hpp +82 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/VariantData.hpp +609 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/VariantDataVisitor.hpp +24 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/VariantImpl.hpp +146 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/VariantOperators.hpp +188 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/VariantRefBase.hpp +313 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/VariantRefBaseImpl.hpp +175 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/VariantTag.hpp +16 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/VariantTo.hpp +34 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/compatibility.hpp +144 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/version.hpp +11 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson.h +17 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson.hpp +65 -0
- package/examples/basic/.pio/libdeps/esp32/ArduinoJson/src/CMakeLists.txt +91 -0
- package/examples/basic/.pio/libdeps/esp32/AsyncTCP/.piopm +1 -0
- package/examples/basic/.pio/libdeps/esp32/AsyncTCP/LICENSE +165 -0
- package/examples/basic/.pio/libdeps/esp32/AsyncTCP/README.md +55 -0
- package/examples/basic/.pio/libdeps/esp32/AsyncTCP/examples/AsyncSend/AsyncSend.ino +169 -0
- package/examples/basic/.pio/libdeps/esp32/AsyncTCP/examples/Client/Client.ino +87 -0
- package/examples/basic/.pio/libdeps/esp32/AsyncTCP/examples/FetchWebsite/FetchWebsite.ino +107 -0
- package/examples/basic/.pio/libdeps/esp32/AsyncTCP/library.json +31 -0
- package/examples/basic/.pio/libdeps/esp32/AsyncTCP/library.properties +11 -0
- package/examples/basic/.pio/libdeps/esp32/AsyncTCP/src/AsyncTCP.cpp +1612 -0
- package/examples/basic/.pio/libdeps/esp32/AsyncTCP/src/AsyncTCP.h +335 -0
- package/examples/basic/.pio/libdeps/esp32/AsyncTCP/src/AsyncTCPLogging.h +66 -0
- package/examples/basic/.pio/libdeps/esp32/AsyncTCP/src/AsyncTCPSimpleIntrusiveList.h +134 -0
- package/examples/basic/.pio/libdeps/esp32/AsyncTCP/src/AsyncTCPVersion.h +40 -0
- package/examples/basic/.pio/libdeps/esp32/TaskScheduler/.github/FUNDING.yml +1 -0
- package/examples/basic/.pio/libdeps/esp32/TaskScheduler/.github/workflows/doxygen.yml +310 -0
- package/examples/basic/.pio/libdeps/esp32/TaskScheduler/.github/workflows/main.yml +309 -0
- package/examples/basic/.pio/libdeps/esp32/TaskScheduler/.github/workflows/test.yml +523 -0
- package/examples/basic/.pio/libdeps/esp32/TaskScheduler/.piopm +1 -0
- package/examples/basic/.pio/libdeps/esp32/TaskScheduler/LICENSE.txt +27 -0
- package/examples/basic/.pio/libdeps/esp32/TaskScheduler/README.md +157 -0
- package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example00_Blink/Scheduler_example00_Blink.ino +303 -0
- package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example00_Blink_Namespace/Scheduler_example00_Blink_Namespace.ino +302 -0
- package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example01/Scheduler_example01.ino +84 -0
- package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example02/Scheduler_example02.ino +78 -0
- package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example03/Scheduler_example03.ino +80 -0
- package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example04_StatusRequest/Scheduler_example04_StatusRequest.ino +90 -0
- package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example05_StatusRequest/Scheduler_example05_StatusRequest.ino +181 -0
- package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example06_IDLE/Scheduler_example06_IDLE.ino +117 -0
- package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example07_WDT/Scheduler_example07_WDT.ino +133 -0
- package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example08_LTS/Scheduler_example08_LTS.ino +147 -0
- package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example09_TimeCritical/Scheduler_example09_TimeCritical.ino +57 -0
- package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example10_Benchmark/Scheduler_example10_Benchmark.ino +106 -0
- package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example11_Priority/Scheduler_example11_Priority.ino +105 -0
- package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example12_Priority/Scheduler_example12_Priority.ino +136 -0
- package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example13_Micros/Scheduler_example13_Micros.ino +71 -0
- package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example14_Yield/Scheduler_example14_Yield.ino +339 -0
- package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example15_STDFunction/Scheduler_example15_STDFunction.ino +53 -0
- package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example16_Multitab/Scheduler_example16_Multitab.ino +18 -0
- package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example16_Multitab/file1.cpp +31 -0
- package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example16_Multitab/file2.cpp +55 -0
- package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example16_Multitab/header.hpp +15 -0
- package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example16_Multitab/ts.cpp +20 -0
- package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example17_Timeout/Scheduler_example17_Timeout.ino +90 -0
- package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example18_StatusRequest_LTS_WDT_Timeout/Scheduler_example18_StatusRequest_LTS_WDT_Timeout.ino +172 -0
- package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example19_Dynamic_Tasks/Scheduler_example19_Dynamic_Tasks.ino +137 -0
- package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example19_Dynamic_Tasks_SelfDestruct/Scheduler_example19_Dynamic_Tasks_SelfDestruct.ino +130 -0
- package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example19_Dynamic_Tasks_stdQueue/Scheduler_example19_Dynamic_Tasks_stdQueue.ino +137 -0
- 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
- package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example20_StatusRequest_LTS_WDT_Timeout_Object/SuperSensor.cpp +36 -0
- package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example20_StatusRequest_LTS_WDT_Timeout_Object/SuperSensor.h +25 -0
- package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example21_OO_Callbacks/Calculator.cpp +66 -0
- package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example21_OO_Callbacks/Calculator.h +34 -0
- package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example21_OO_Callbacks/Scheduler_example21_OO_Callbacks.ino +76 -0
- package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example21_OO_Callbacks/SuperSensor.cpp +83 -0
- package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example21_OO_Callbacks/SuperSensor.h +44 -0
- package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example21_OO_Callbacks/Ticker.cpp +21 -0
- package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example21_OO_Callbacks/Ticker.h +28 -0
- package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example23_IDLE_Callback/Scheduler_example23_IDLE_Callback.ino +157 -0
- package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example24_CPU_LOAD/Scheduler_example24_CPU_LOAD.ino +87 -0
- package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example25_SCHEDULER_CHAIN/Scheduler_example25_SCHEDULER_CHAIN.ino +127 -0
- package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example26_SCHEDULING_OPTIONS/Scheduler_example26_SCHEDULING_OPTIONS.ino +181 -0
- package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example27_PlatformIO/include/README +39 -0
- package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example27_PlatformIO/include/led.h +12 -0
- package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example27_PlatformIO/include/main.h +25 -0
- package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example27_PlatformIO/lib/README +46 -0
- package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example27_PlatformIO/platformio.ini +37 -0
- package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example27_PlatformIO/src/led.cpp +11 -0
- package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example27_PlatformIO/src/main.cpp +254 -0
- package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example27_PlatformIO/test/README +11 -0
- package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example28_Tickless/Scheduler_example28_Tickless.ino +105 -0
- package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example29_NonArduino/include/README +39 -0
- package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example29_NonArduino/include/led.h +12 -0
- package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example29_NonArduino/include/main.h +27 -0
- package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example29_NonArduino/lib/README +46 -0
- package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example29_NonArduino/platformio.ini +38 -0
- package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example29_NonArduino/src/led.cpp +13 -0
- package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example29_NonArduino/src/main.cpp +267 -0
- package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example29_NonArduino/test/README +11 -0
- package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example30_THREAD_SAFE/README.md +232 -0
- package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example30_THREAD_SAFE/platformio.ini +44 -0
- package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example30_THREAD_SAFE/src/main.cpp +310 -0
- package/examples/basic/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_template/Scheduler_template.ino +166 -0
- package/examples/basic/.pio/libdeps/esp32/TaskScheduler/keywords.txt +161 -0
- package/examples/basic/.pio/libdeps/esp32/TaskScheduler/library.json +22 -0
- package/examples/basic/.pio/libdeps/esp32/TaskScheduler/library.properties +9 -0
- package/examples/basic/.pio/libdeps/esp32/TaskScheduler/src/TScheduler.hpp +29 -0
- package/examples/basic/.pio/libdeps/esp32/TaskScheduler/src/TSchedulerDeclarations.hpp +29 -0
- package/examples/basic/.pio/libdeps/esp32/TaskScheduler/src/TaskScheduler.cpp +3 -0
- package/examples/basic/.pio/libdeps/esp32/TaskScheduler/src/TaskScheduler.h +1811 -0
- package/examples/basic/.pio/libdeps/esp32/TaskScheduler/src/TaskSchedulerDeclarations.h +3096 -0
- package/examples/basic/.pio/libdeps/esp32/TaskScheduler/src/TaskSchedulerSleepMethods.h +399 -0
- package/examples/basic/.pio/libdeps/esp32/integrity.dat +3 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/.piopm +1 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/ArduinoJson.h +5 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/LICENSE.txt +10 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/README.md +153 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/examples/JsonConfigFile/JsonConfigFile.ino +152 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/examples/JsonFilterExample/JsonFilterExample.ino +64 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/examples/JsonGeneratorExample/JsonGeneratorExample.ino +65 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/examples/JsonHttpClient/JsonHttpClient.ino +125 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/examples/JsonParserExample/JsonParserExample.ino +65 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/examples/JsonServer/JsonServer.ino +118 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/examples/JsonUdpBeacon/JsonUdpBeacon.ino +106 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/examples/MsgPackParser/MsgPackParser.ino +61 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/examples/ProgmemExample/ProgmemExample.ino +63 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/examples/StringExample/StringExample.ino +76 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/library.json +23 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/library.properties +11 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Array/ArrayData.hpp +66 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Array/ArrayImpl.hpp +79 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Array/ElementProxy.hpp +75 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Array/JsonArray.hpp +219 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Array/JsonArrayConst.hpp +133 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Array/JsonArrayIterator.hpp +96 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Array/Utilities.hpp +112 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Collection/CollectionData.hpp +122 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Collection/CollectionImpl.hpp +137 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Configuration.hpp +285 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/DeserializationError.hpp +106 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/DeserializationOptions.hpp +35 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/Filter.hpp +77 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/NestingLimit.hpp +32 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/Reader.hpp +74 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStreamReader.hpp +30 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStringReader.hpp +18 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/Readers/FlashReader.hpp +56 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/Readers/IteratorReader.hpp +42 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/Readers/RamReader.hpp +49 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/Readers/StdStreamReader.hpp +29 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/Readers/VariantReader.hpp +19 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/deserialize.hpp +79 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Document/JsonDocument.hpp +426 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Json/EscapeSequence.hpp +40 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Json/JsonDeserializer.hpp +720 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Json/JsonSerializer.hpp +165 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Json/Latch.hpp +56 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Json/PrettyJsonSerializer.hpp +110 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Json/TextFormatter.hpp +177 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Json/Utf16.hpp +67 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Json/Utf8.hpp +46 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Memory/Alignment.hpp +60 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Memory/Allocator.hpp +49 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Memory/MemoryPool.hpp +110 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Memory/MemoryPoolList.hpp +214 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Memory/ResourceManager.hpp +131 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Memory/ResourceManagerImpl.hpp +52 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Memory/StringBuffer.hpp +79 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Memory/StringBuilder.hpp +88 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Memory/StringNode.hpp +75 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Memory/StringPool.hpp +102 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Misc/SerializedValue.hpp +71 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackBinary.hpp +97 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackDeserializer.hpp +487 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackExtension.hpp +120 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackSerializer.hpp +244 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/MsgPack/endianness.hpp +46 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/MsgPack/ieee754.hpp +18 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Namespace.hpp +42 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Numbers/FloatParts.hpp +95 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Numbers/FloatTraits.hpp +212 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Numbers/JsonFloat.hpp +18 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Numbers/JsonInteger.hpp +28 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Numbers/arithmeticCompare.hpp +116 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Numbers/convertNumber.hpp +145 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Numbers/parseNumber.hpp +238 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Object/JsonObject.hpp +245 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Object/JsonObjectConst.hpp +166 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Object/JsonObjectIterator.hpp +83 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Object/JsonPair.hpp +70 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Object/MemberProxy.hpp +77 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Object/ObjectData.hpp +70 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Object/ObjectImpl.hpp +92 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/alias_cast.hpp +30 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/assert.hpp +14 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/attributes.hpp +45 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/ctype.hpp +21 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/integer.hpp +34 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/limits.hpp +45 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/math.hpp +27 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/mpl/max.hpp +27 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/pgmspace.hpp +144 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/pgmspace_generic.hpp +67 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/preprocessor.hpp +33 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/conditional.hpp +25 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/decay.hpp +33 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/declval.hpp +14 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/enable_if.hpp +23 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/function_traits.hpp +27 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/integral_constant.hpp +22 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_array.hpp +22 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_base_of.hpp +27 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_class.hpp +23 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_const.hpp +18 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_convertible.hpp +46 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_enum.hpp +22 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_floating_point.hpp +19 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_integral.hpp +32 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_pointer.hpp +17 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_same.hpp +18 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_signed.hpp +26 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_unsigned.hpp +24 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/make_unsigned.hpp +44 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/remove_const.hpp +24 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/remove_cv.hpp +31 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/remove_reference.hpp +24 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/type_identity.hpp +16 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/void_t.hpp +20 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits.hpp +27 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/utility.hpp +33 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Serialization/CountingDecorator.hpp +33 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Serialization/Writer.hpp +47 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Serialization/Writers/ArduinoStringWriter.hpp +55 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Serialization/Writers/DummyWriter.hpp +22 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Serialization/Writers/PrintWriter.hpp +29 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Serialization/Writers/StaticStringWriter.hpp +36 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Serialization/Writers/StdStreamWriter.hpp +32 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Serialization/Writers/StdStringWriter.hpp +42 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Serialization/measure.hpp +20 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Serialization/serialize.hpp +50 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/Adapters/FlashString.hpp +93 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/Adapters/RamString.hpp +118 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/Adapters/StringObject.hpp +48 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/IsString.hpp +19 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/JsonString.hpp +100 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/StringAdapter.hpp +47 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/StringAdapters.hpp +72 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/StringTraits.hpp +73 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/Converter.hpp +23 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/ConverterImpl.hpp +406 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/JsonVariant.hpp +78 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/JsonVariantConst.hpp +197 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/JsonVariantCopier.hpp +34 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/JsonVariantVisitor.hpp +61 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantAttorney.hpp +35 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantCompare.hpp +211 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantContent.hpp +82 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantData.hpp +609 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantDataVisitor.hpp +24 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantImpl.hpp +146 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantOperators.hpp +188 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantRefBase.hpp +313 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantRefBaseImpl.hpp +175 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantTag.hpp +16 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantTo.hpp +34 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/compatibility.hpp +144 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/version.hpp +11 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson.h +17 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson.hpp +65 -0
- package/examples/basic/.pio/libdeps/esp8266/ArduinoJson/src/CMakeLists.txt +91 -0
- package/examples/basic/.pio/libdeps/esp8266/ESPAsyncTCP/.github/scripts/install-arduino-core-esp8266.sh +29 -0
- package/examples/basic/.pio/libdeps/esp8266/ESPAsyncTCP/.github/scripts/install-arduino-ide.sh +220 -0
- package/examples/basic/.pio/libdeps/esp8266/ESPAsyncTCP/.github/scripts/install-platformio.sh +133 -0
- package/examples/basic/.pio/libdeps/esp8266/ESPAsyncTCP/.github/scripts/on-push.sh +64 -0
- package/examples/basic/.pio/libdeps/esp8266/ESPAsyncTCP/.github/stale.yml +31 -0
- package/examples/basic/.pio/libdeps/esp8266/ESPAsyncTCP/.github/workflows/push.yml +30 -0
- package/examples/basic/.pio/libdeps/esp8266/ESPAsyncTCP/.piopm +1 -0
- package/examples/basic/.pio/libdeps/esp8266/ESPAsyncTCP/LICENSE.txt +165 -0
- package/examples/basic/.pio/libdeps/esp8266/ESPAsyncTCP/README.md +43 -0
- package/examples/basic/.pio/libdeps/esp8266/ESPAsyncTCP/examples/ClientServer/Client/Client.ino +62 -0
- package/examples/basic/.pio/libdeps/esp8266/ESPAsyncTCP/examples/ClientServer/Client/config.h +23 -0
- package/examples/basic/.pio/libdeps/esp8266/ESPAsyncTCP/examples/ClientServer/Server/Server.ino +73 -0
- package/examples/basic/.pio/libdeps/esp8266/ESPAsyncTCP/examples/ClientServer/Server/config.h +23 -0
- package/examples/basic/.pio/libdeps/esp8266/ESPAsyncTCP/examples/SyncClient/.esp31b.skip +0 -0
- package/examples/basic/.pio/libdeps/esp8266/ESPAsyncTCP/examples/SyncClient/SyncClient.ino +54 -0
- package/examples/basic/.pio/libdeps/esp8266/ESPAsyncTCP/library.json +19 -0
- package/examples/basic/.pio/libdeps/esp8266/ESPAsyncTCP/library.properties +10 -0
- package/examples/basic/.pio/libdeps/esp8266/ESPAsyncTCP/src/AsyncPrinter.cpp +214 -0
- package/examples/basic/.pio/libdeps/esp8266/ESPAsyncTCP/src/AsyncPrinter.h +73 -0
- package/examples/basic/.pio/libdeps/esp8266/ESPAsyncTCP/src/DebugPrintMacros.h +112 -0
- package/examples/basic/.pio/libdeps/esp8266/ESPAsyncTCP/src/ESPAsyncTCP.cpp +1406 -0
- package/examples/basic/.pio/libdeps/esp8266/ESPAsyncTCP/src/ESPAsyncTCP.h +324 -0
- package/examples/basic/.pio/libdeps/esp8266/ESPAsyncTCP/src/ESPAsyncTCPbuffer.cpp +555 -0
- package/examples/basic/.pio/libdeps/esp8266/ESPAsyncTCP/src/ESPAsyncTCPbuffer.h +118 -0
- package/examples/basic/.pio/libdeps/esp8266/ESPAsyncTCP/src/SyncClient.cpp +414 -0
- package/examples/basic/.pio/libdeps/esp8266/ESPAsyncTCP/src/SyncClient.h +109 -0
- package/examples/basic/.pio/libdeps/esp8266/ESPAsyncTCP/src/async_config.h +42 -0
- package/examples/basic/.pio/libdeps/esp8266/ESPAsyncTCP/src/tcp_axtls.c +613 -0
- package/examples/basic/.pio/libdeps/esp8266/ESPAsyncTCP/src/tcp_axtls.h +98 -0
- package/examples/basic/.pio/libdeps/esp8266/ESPAsyncTCP/ssl/gen_server_cert.sh +36 -0
- package/examples/basic/.pio/libdeps/esp8266/ESPAsyncTCP/ssl/server.cer +0 -0
- package/examples/basic/.pio/libdeps/esp8266/ESPAsyncTCP/ssl/server.key +0 -0
- package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/.github/FUNDING.yml +1 -0
- package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/.github/workflows/doxygen.yml +310 -0
- package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/.github/workflows/main.yml +309 -0
- package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/.github/workflows/test.yml +523 -0
- package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/.piopm +1 -0
- package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/LICENSE.txt +27 -0
- package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/README.md +157 -0
- package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example00_Blink/Scheduler_example00_Blink.ino +303 -0
- package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example00_Blink_Namespace/Scheduler_example00_Blink_Namespace.ino +302 -0
- package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example01/Scheduler_example01.ino +84 -0
- package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example02/Scheduler_example02.ino +78 -0
- package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example03/Scheduler_example03.ino +80 -0
- package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example04_StatusRequest/Scheduler_example04_StatusRequest.ino +90 -0
- package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example05_StatusRequest/Scheduler_example05_StatusRequest.ino +181 -0
- package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example06_IDLE/Scheduler_example06_IDLE.ino +117 -0
- package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example07_WDT/Scheduler_example07_WDT.ino +133 -0
- package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example08_LTS/Scheduler_example08_LTS.ino +147 -0
- package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example09_TimeCritical/Scheduler_example09_TimeCritical.ino +57 -0
- package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example10_Benchmark/Scheduler_example10_Benchmark.ino +106 -0
- package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example11_Priority/Scheduler_example11_Priority.ino +105 -0
- package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example12_Priority/Scheduler_example12_Priority.ino +136 -0
- package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example13_Micros/Scheduler_example13_Micros.ino +71 -0
- package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example14_Yield/Scheduler_example14_Yield.ino +339 -0
- package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example15_STDFunction/Scheduler_example15_STDFunction.ino +53 -0
- package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example16_Multitab/Scheduler_example16_Multitab.ino +18 -0
- package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example16_Multitab/file1.cpp +31 -0
- package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example16_Multitab/file2.cpp +55 -0
- package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example16_Multitab/header.hpp +15 -0
- package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example16_Multitab/ts.cpp +20 -0
- package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example17_Timeout/Scheduler_example17_Timeout.ino +90 -0
- package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example18_StatusRequest_LTS_WDT_Timeout/Scheduler_example18_StatusRequest_LTS_WDT_Timeout.ino +172 -0
- package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example19_Dynamic_Tasks/Scheduler_example19_Dynamic_Tasks.ino +137 -0
- package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example19_Dynamic_Tasks_SelfDestruct/Scheduler_example19_Dynamic_Tasks_SelfDestruct.ino +130 -0
- package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example19_Dynamic_Tasks_stdQueue/Scheduler_example19_Dynamic_Tasks_stdQueue.ino +137 -0
- 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
- package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example20_StatusRequest_LTS_WDT_Timeout_Object/SuperSensor.cpp +36 -0
- package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example20_StatusRequest_LTS_WDT_Timeout_Object/SuperSensor.h +25 -0
- package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example21_OO_Callbacks/Calculator.cpp +66 -0
- package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example21_OO_Callbacks/Calculator.h +34 -0
- package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example21_OO_Callbacks/Scheduler_example21_OO_Callbacks.ino +76 -0
- package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example21_OO_Callbacks/SuperSensor.cpp +83 -0
- package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example21_OO_Callbacks/SuperSensor.h +44 -0
- package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example21_OO_Callbacks/Ticker.cpp +21 -0
- package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example21_OO_Callbacks/Ticker.h +28 -0
- package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example23_IDLE_Callback/Scheduler_example23_IDLE_Callback.ino +157 -0
- package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example24_CPU_LOAD/Scheduler_example24_CPU_LOAD.ino +87 -0
- package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example25_SCHEDULER_CHAIN/Scheduler_example25_SCHEDULER_CHAIN.ino +127 -0
- package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example26_SCHEDULING_OPTIONS/Scheduler_example26_SCHEDULING_OPTIONS.ino +181 -0
- package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example27_PlatformIO/include/README +39 -0
- package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example27_PlatformIO/include/led.h +12 -0
- package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example27_PlatformIO/include/main.h +25 -0
- package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example27_PlatformIO/lib/README +46 -0
- package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example27_PlatformIO/platformio.ini +37 -0
- package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example27_PlatformIO/src/led.cpp +11 -0
- package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example27_PlatformIO/src/main.cpp +254 -0
- package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example27_PlatformIO/test/README +11 -0
- package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example28_Tickless/Scheduler_example28_Tickless.ino +105 -0
- package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example29_NonArduino/include/README +39 -0
- package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example29_NonArduino/include/led.h +12 -0
- package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example29_NonArduino/include/main.h +27 -0
- package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example29_NonArduino/lib/README +46 -0
- package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example29_NonArduino/platformio.ini +38 -0
- package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example29_NonArduino/src/led.cpp +13 -0
- package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example29_NonArduino/src/main.cpp +267 -0
- package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example29_NonArduino/test/README +11 -0
- package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example30_THREAD_SAFE/README.md +232 -0
- package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example30_THREAD_SAFE/platformio.ini +44 -0
- package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_example30_THREAD_SAFE/src/main.cpp +310 -0
- package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/examples/Scheduler_template/Scheduler_template.ino +166 -0
- package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/keywords.txt +161 -0
- package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/library.json +22 -0
- package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/library.properties +9 -0
- package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/src/TScheduler.hpp +29 -0
- package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/src/TSchedulerDeclarations.hpp +29 -0
- package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/src/TaskScheduler.cpp +3 -0
- package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/src/TaskScheduler.h +1811 -0
- package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/src/TaskSchedulerDeclarations.h +3096 -0
- package/examples/basic/.pio/libdeps/esp8266/TaskScheduler/src/TaskSchedulerSleepMethods.h +399 -0
- package/examples/basic/.pio/libdeps/esp8266/integrity.dat +3 -0
- package/examples/basic/basic.ino +66 -66
- package/examples/basic/platformio.ini +25 -25
- package/examples/bridge/bridge.ino +51 -51
- package/examples/bridge/mesh_event_publisher.hpp +253 -253
- package/examples/bridge/mesh_topology_reporter.hpp +303 -303
- package/examples/bridge/mqtt_command_bridge.hpp +459 -459
- package/examples/bridge/mqtt_status_bridge.hpp +519 -519
- package/examples/bridge/platformio.ini +25 -25
- package/examples/echoNode/echoNode.ino +33 -33
- package/examples/echoNode/platformio.ini +25 -25
- package/examples/logClient/logClient.ino +109 -109
- package/examples/logClient/platformio.ini +25 -25
- package/examples/logServer/logServer.ino +81 -81
- package/examples/logServer/platformio.ini +25 -25
- package/examples/meshCommandNode/.pio/build/esp32/.sconsign311.dblite +0 -0
- package/examples/meshCommandNode/.pio/build/esp32/bootloader.bin +0 -0
- package/examples/meshCommandNode/.pio/build/esp32/lib327/TaskScheduler/TaskScheduler.cpp.d +2 -0
- package/examples/meshCommandNode/.pio/build/esp32/lib327/TaskScheduler/TaskScheduler.cpp.o +0 -0
- package/examples/meshCommandNode/.pio/build/esp32/lib373/LittleFS/LittleFS.cpp.d +142 -0
- package/examples/meshCommandNode/.pio/build/esp32/lib373/LittleFS/LittleFS.cpp.o +0 -0
- package/examples/meshCommandNode/.pio/build/esp32/lib4f2/FS/FS.cpp.d +138 -0
- package/examples/meshCommandNode/.pio/build/esp32/lib4f2/FS/FS.cpp.o +0 -0
- package/examples/meshCommandNode/.pio/build/esp32/lib4f2/FS/vfs_api.cpp.d +139 -0
- package/examples/meshCommandNode/.pio/build/esp32/lib4f2/FS/vfs_api.cpp.o +0 -0
- package/examples/meshCommandNode/.pio/build/esp32/lib71a/WiFi/WiFi.cpp.d +203 -0
- package/examples/meshCommandNode/.pio/build/esp32/lib71a/WiFi/WiFi.cpp.o +0 -0
- package/examples/meshCommandNode/.pio/build/esp32/lib71a/WiFi/WiFiAP.cpp.d +204 -0
- package/examples/meshCommandNode/.pio/build/esp32/lib71a/WiFi/WiFiAP.cpp.o +0 -0
- package/examples/meshCommandNode/.pio/build/esp32/lib71a/WiFi/WiFiClient.cpp.d +209 -0
- package/examples/meshCommandNode/.pio/build/esp32/lib71a/WiFi/WiFiClient.cpp.o +0 -0
- package/examples/meshCommandNode/.pio/build/esp32/lib71a/WiFi/WiFiGeneric.cpp.d +206 -0
- package/examples/meshCommandNode/.pio/build/esp32/lib71a/WiFi/WiFiGeneric.cpp.o +0 -0
- package/examples/meshCommandNode/.pio/build/esp32/lib71a/WiFi/WiFiMulti.cpp.d +199 -0
- package/examples/meshCommandNode/.pio/build/esp32/lib71a/WiFi/WiFiMulti.cpp.o +0 -0
- package/examples/meshCommandNode/.pio/build/esp32/lib71a/WiFi/WiFiSTA.cpp.d +206 -0
- package/examples/meshCommandNode/.pio/build/esp32/lib71a/WiFi/WiFiSTA.cpp.o +0 -0
- package/examples/meshCommandNode/.pio/build/esp32/lib71a/WiFi/WiFiScan.cpp.d +204 -0
- package/examples/meshCommandNode/.pio/build/esp32/lib71a/WiFi/WiFiScan.cpp.o +0 -0
- package/examples/meshCommandNode/.pio/build/esp32/lib71a/WiFi/WiFiServer.cpp.d +172 -0
- package/examples/meshCommandNode/.pio/build/esp32/lib71a/WiFi/WiFiServer.cpp.o +0 -0
- package/examples/meshCommandNode/.pio/build/esp32/lib71a/WiFi/WiFiUdp.cpp.d +171 -0
- package/examples/meshCommandNode/.pio/build/esp32/lib71a/WiFi/WiFiUdp.cpp.o +0 -0
- package/examples/meshCommandNode/.pio/build/esp32/lib97a/SPIFFS/SPIFFS.cpp.d +142 -0
- package/examples/meshCommandNode/.pio/build/esp32/lib97a/SPIFFS/SPIFFS.cpp.o +0 -0
- package/examples/meshCommandNode/.pio/build/esp32/libf48/Update/HttpsOTAUpdate.cpp.d +120 -0
- package/examples/meshCommandNode/.pio/build/esp32/libf48/Update/HttpsOTAUpdate.cpp.o +0 -0
- package/examples/meshCommandNode/.pio/build/esp32/libf48/Update/Updater.cpp.d +144 -0
- package/examples/meshCommandNode/.pio/build/esp32/libf48/Update/Updater.cpp.o +0 -0
- package/examples/meshCommandNode/.pio/build/esp32/partitions.bin +0 -0
- package/examples/meshCommandNode/.pio/build/esp32/src/meshCommandNode.ino.cpp.d +238 -0
- package/examples/meshCommandNode/.pio/build/esp32/tmpkxz_1u4u.tmp +1 -0
- package/examples/meshCommandNode/.pio/build/esp32/tmpo9qt_9vc.tmp +1 -0
- package/examples/meshCommandNode/.pio/build/esp32/tmprrmligyc.tmp +1 -0
- package/examples/meshCommandNode/.pio/build/esp32/tmpt8s9ha45.tmp +1 -0
- package/examples/meshCommandNode/.pio/build/project.checksum +1 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/.piopm +1 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/ArduinoJson.h +5 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/LICENSE.txt +10 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/README.md +153 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/examples/JsonConfigFile/JsonConfigFile.ino +152 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/examples/JsonFilterExample/JsonFilterExample.ino +64 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/examples/JsonGeneratorExample/JsonGeneratorExample.ino +65 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/examples/JsonHttpClient/JsonHttpClient.ino +125 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/examples/JsonParserExample/JsonParserExample.ino +65 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/examples/JsonServer/JsonServer.ino +118 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/examples/JsonUdpBeacon/JsonUdpBeacon.ino +106 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/examples/MsgPackParser/MsgPackParser.ino +61 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/examples/ProgmemExample/ProgmemExample.ino +63 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/examples/StringExample/StringExample.ino +76 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/library.json +23 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/library.properties +11 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Array/ArrayData.hpp +66 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Array/ArrayImpl.hpp +79 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Array/ElementProxy.hpp +75 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Array/JsonArray.hpp +219 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Array/JsonArrayConst.hpp +133 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Array/JsonArrayIterator.hpp +96 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Array/Utilities.hpp +112 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Collection/CollectionData.hpp +122 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Collection/CollectionImpl.hpp +137 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Configuration.hpp +285 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Deserialization/DeserializationError.hpp +106 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Deserialization/DeserializationOptions.hpp +35 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Deserialization/Filter.hpp +77 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Deserialization/NestingLimit.hpp +32 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Deserialization/Reader.hpp +74 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStreamReader.hpp +30 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStringReader.hpp +18 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Deserialization/Readers/FlashReader.hpp +56 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Deserialization/Readers/IteratorReader.hpp +42 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Deserialization/Readers/RamReader.hpp +49 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Deserialization/Readers/StdStreamReader.hpp +29 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Deserialization/Readers/VariantReader.hpp +19 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Deserialization/deserialize.hpp +79 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Document/JsonDocument.hpp +426 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Json/EscapeSequence.hpp +40 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Json/JsonDeserializer.hpp +720 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Json/JsonSerializer.hpp +165 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Json/Latch.hpp +56 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Json/PrettyJsonSerializer.hpp +110 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Json/TextFormatter.hpp +177 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Json/Utf16.hpp +67 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Json/Utf8.hpp +46 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Memory/Alignment.hpp +60 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Memory/Allocator.hpp +49 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Memory/MemoryPool.hpp +110 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Memory/MemoryPoolList.hpp +214 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Memory/ResourceManager.hpp +131 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Memory/ResourceManagerImpl.hpp +52 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Memory/StringBuffer.hpp +79 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Memory/StringBuilder.hpp +88 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Memory/StringNode.hpp +75 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Memory/StringPool.hpp +102 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Misc/SerializedValue.hpp +71 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackBinary.hpp +97 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackDeserializer.hpp +487 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackExtension.hpp +120 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackSerializer.hpp +244 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/MsgPack/endianness.hpp +46 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/MsgPack/ieee754.hpp +18 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Namespace.hpp +42 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Numbers/FloatParts.hpp +95 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Numbers/FloatTraits.hpp +212 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Numbers/JsonFloat.hpp +18 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Numbers/JsonInteger.hpp +28 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Numbers/arithmeticCompare.hpp +116 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Numbers/convertNumber.hpp +145 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Numbers/parseNumber.hpp +238 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Object/JsonObject.hpp +245 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Object/JsonObjectConst.hpp +166 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Object/JsonObjectIterator.hpp +83 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Object/JsonPair.hpp +70 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Object/MemberProxy.hpp +77 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Object/ObjectData.hpp +70 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Object/ObjectImpl.hpp +92 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/alias_cast.hpp +30 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/assert.hpp +14 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/attributes.hpp +45 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/ctype.hpp +21 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/integer.hpp +34 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/limits.hpp +45 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/math.hpp +27 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/mpl/max.hpp +27 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/pgmspace.hpp +144 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/pgmspace_generic.hpp +67 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/preprocessor.hpp +33 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/conditional.hpp +25 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/decay.hpp +33 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/declval.hpp +14 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/enable_if.hpp +23 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/function_traits.hpp +27 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/integral_constant.hpp +22 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_array.hpp +22 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_base_of.hpp +27 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_class.hpp +23 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_const.hpp +18 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_convertible.hpp +46 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_enum.hpp +22 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_floating_point.hpp +19 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_integral.hpp +32 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_pointer.hpp +17 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_same.hpp +18 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_signed.hpp +26 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_unsigned.hpp +24 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/make_unsigned.hpp +44 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/remove_const.hpp +24 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/remove_cv.hpp +31 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/remove_reference.hpp +24 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/type_identity.hpp +16 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/void_t.hpp +20 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/type_traits.hpp +27 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Polyfills/utility.hpp +33 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Serialization/CountingDecorator.hpp +33 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Serialization/Writer.hpp +47 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Serialization/Writers/ArduinoStringWriter.hpp +55 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Serialization/Writers/DummyWriter.hpp +22 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Serialization/Writers/PrintWriter.hpp +29 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Serialization/Writers/StaticStringWriter.hpp +36 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Serialization/Writers/StdStreamWriter.hpp +32 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Serialization/Writers/StdStringWriter.hpp +42 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Serialization/measure.hpp +20 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Serialization/serialize.hpp +50 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Strings/Adapters/FlashString.hpp +93 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Strings/Adapters/RamString.hpp +118 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Strings/Adapters/StringObject.hpp +48 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Strings/IsString.hpp +19 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Strings/JsonString.hpp +100 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Strings/StringAdapter.hpp +47 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Strings/StringAdapters.hpp +72 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Strings/StringTraits.hpp +73 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/Converter.hpp +23 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/ConverterImpl.hpp +406 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/JsonVariant.hpp +78 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/JsonVariantConst.hpp +197 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/JsonVariantCopier.hpp +34 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/JsonVariantVisitor.hpp +61 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/VariantAttorney.hpp +35 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/VariantCompare.hpp +211 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/VariantContent.hpp +82 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/VariantData.hpp +609 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/VariantDataVisitor.hpp +24 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/VariantImpl.hpp +146 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/VariantOperators.hpp +188 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/VariantRefBase.hpp +313 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/VariantRefBaseImpl.hpp +175 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/VariantTag.hpp +16 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/Variant/VariantTo.hpp +34 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/compatibility.hpp +144 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson/version.hpp +11 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson.h +17 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/ArduinoJson.hpp +65 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/ArduinoJson/src/CMakeLists.txt +91 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/AsyncTCP/.piopm +1 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/AsyncTCP/LICENSE +165 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/AsyncTCP/README.md +62 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/AsyncTCP/examples/Client/Client.ino +81 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/AsyncTCP/library.json +35 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/AsyncTCP/library.properties +10 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/AsyncTCP/src/AsyncTCP.cpp +1661 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/AsyncTCP/src/AsyncTCP.h +344 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/.github/FUNDING.yml +1 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/.github/workflows/doxygen.yml +310 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/.github/workflows/main.yml +309 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/.github/workflows/test.yml +523 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/.piopm +1 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/LICENSE.txt +27 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/README.md +157 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example00_Blink/Scheduler_example00_Blink.ino +303 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example00_Blink_Namespace/Scheduler_example00_Blink_Namespace.ino +302 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example01/Scheduler_example01.ino +84 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example02/Scheduler_example02.ino +78 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example03/Scheduler_example03.ino +80 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example04_StatusRequest/Scheduler_example04_StatusRequest.ino +90 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example05_StatusRequest/Scheduler_example05_StatusRequest.ino +181 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example06_IDLE/Scheduler_example06_IDLE.ino +117 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example07_WDT/Scheduler_example07_WDT.ino +133 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example08_LTS/Scheduler_example08_LTS.ino +147 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example09_TimeCritical/Scheduler_example09_TimeCritical.ino +57 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example10_Benchmark/Scheduler_example10_Benchmark.ino +106 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example11_Priority/Scheduler_example11_Priority.ino +105 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example12_Priority/Scheduler_example12_Priority.ino +136 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example13_Micros/Scheduler_example13_Micros.ino +71 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example14_Yield/Scheduler_example14_Yield.ino +339 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example15_STDFunction/Scheduler_example15_STDFunction.ino +53 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example16_Multitab/Scheduler_example16_Multitab.ino +18 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example16_Multitab/file1.cpp +31 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example16_Multitab/file2.cpp +55 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example16_Multitab/header.hpp +15 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example16_Multitab/ts.cpp +20 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example17_Timeout/Scheduler_example17_Timeout.ino +90 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example18_StatusRequest_LTS_WDT_Timeout/Scheduler_example18_StatusRequest_LTS_WDT_Timeout.ino +172 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example19_Dynamic_Tasks/Scheduler_example19_Dynamic_Tasks.ino +137 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example19_Dynamic_Tasks_SelfDestruct/Scheduler_example19_Dynamic_Tasks_SelfDestruct.ino +130 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example19_Dynamic_Tasks_stdQueue/Scheduler_example19_Dynamic_Tasks_stdQueue.ino +137 -0
- 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
- package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example20_StatusRequest_LTS_WDT_Timeout_Object/SuperSensor.cpp +36 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example20_StatusRequest_LTS_WDT_Timeout_Object/SuperSensor.h +25 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example21_OO_Callbacks/Calculator.cpp +66 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example21_OO_Callbacks/Calculator.h +34 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example21_OO_Callbacks/Scheduler_example21_OO_Callbacks.ino +76 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example21_OO_Callbacks/SuperSensor.cpp +83 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example21_OO_Callbacks/SuperSensor.h +44 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example21_OO_Callbacks/Ticker.cpp +21 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example21_OO_Callbacks/Ticker.h +28 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example23_IDLE_Callback/Scheduler_example23_IDLE_Callback.ino +157 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example24_CPU_LOAD/Scheduler_example24_CPU_LOAD.ino +87 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example25_SCHEDULER_CHAIN/Scheduler_example25_SCHEDULER_CHAIN.ino +127 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example26_SCHEDULING_OPTIONS/Scheduler_example26_SCHEDULING_OPTIONS.ino +181 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example27_PlatformIO/include/README +39 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example27_PlatformIO/include/led.h +12 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example27_PlatformIO/include/main.h +25 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example27_PlatformIO/lib/README +46 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example27_PlatformIO/platformio.ini +37 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example27_PlatformIO/src/led.cpp +11 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example27_PlatformIO/src/main.cpp +254 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example27_PlatformIO/test/README +11 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example28_Tickless/Scheduler_example28_Tickless.ino +105 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example29_NonArduino/include/README +39 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example29_NonArduino/include/led.h +12 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example29_NonArduino/include/main.h +27 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example29_NonArduino/lib/README +46 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example29_NonArduino/platformio.ini +38 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example29_NonArduino/src/led.cpp +13 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example29_NonArduino/src/main.cpp +267 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example29_NonArduino/test/README +11 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example30_THREAD_SAFE/README.md +232 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example30_THREAD_SAFE/platformio.ini +44 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_example30_THREAD_SAFE/src/main.cpp +310 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/examples/Scheduler_template/Scheduler_template.ino +166 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/keywords.txt +161 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/library.json +22 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/library.properties +9 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/src/TScheduler.hpp +29 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/src/TSchedulerDeclarations.hpp +29 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/src/TaskScheduler.cpp +3 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/src/TaskScheduler.h +1811 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/src/TaskSchedulerDeclarations.h +3096 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/src/TaskSchedulerSleepMethods.h +399 -0
- package/examples/meshCommandNode/.pio/libdeps/esp32/integrity.dat +3 -0
- package/examples/meshCommandNode/alteriom_sensor_package.hpp +234 -234
- package/examples/meshCommandNode/meshCommandNode.ino +263 -263
- package/examples/meshCommandNode/platformio.ini +25 -25
- package/examples/mqttBridge/mqttBridge.ino +118 -118
- package/examples/mqttBridge/platformio.ini +26 -26
- package/examples/mqttCommandBridge/alteriom_sensor_package.hpp +234 -234
- package/examples/mqttCommandBridge/mesh_event_publisher.hpp +253 -253
- package/examples/mqttCommandBridge/mesh_topology_reporter.hpp +303 -303
- package/examples/mqttCommandBridge/mqttCommandBridge.ino +252 -252
- package/examples/mqttCommandBridge/mqtt_command_bridge.hpp +462 -459
- package/examples/mqttCommandBridge/platformio.ini +26 -26
- package/examples/mqttStatusBridge/mqttStatusBridge.ino +216 -216
- package/examples/mqttStatusBridge/mqtt_status_bridge.hpp +522 -522
- package/examples/mqttStatusBridge/platformio.ini +26 -26
- package/examples/mqttTopologyTest/README.md +467 -467
- package/examples/mqttTopologyTest/mqttTopologyTest.ino +748 -748
- package/examples/mqttTopologyTest/platformio.ini +26 -26
- package/examples/namedMesh/namedMesh.ino +97 -97
- package/examples/namedMesh/platformio.ini +25 -25
- package/examples/otaReceiver/otaReceiver.ino +79 -79
- package/examples/otaReceiver/platformio.ini +25 -25
- package/examples/otaSender/otaSender.ino +160 -160
- package/examples/otaSender/platformio.ini +25 -25
- package/examples/startHere/platformio.ini +25 -25
- package/examples/startHere/startHere.ino +159 -159
- package/examples/webServer/platformio.ini +27 -27
- package/examples/webServer/webServer.ino +89 -89
- package/keywords.txt +48 -48
- package/library.json +55 -55
- package/library.properties +10 -10
- package/package.json +86 -86
- package/src/AlteriomPainlessMesh.h +97 -97
- package/src/arduino/wifi.hpp +365 -365
- package/src/boost/asynctcp.hpp +279 -279
- package/src/painlessMesh.h +70 -70
- package/src/painlessMeshSTA.cpp +236 -236
- package/src/painlessMeshSTA.h +58 -58
- package/src/painlessTaskOptions.h +11 -4
- package/src/painlessmesh/base64.hpp +111 -111
- package/src/painlessmesh/buffer.hpp +229 -229
- package/src/painlessmesh/callback.hpp +91 -91
- package/src/painlessmesh/configuration.hpp +77 -77
- package/src/painlessmesh/connection.hpp +192 -192
- package/src/painlessmesh/layout.hpp +188 -188
- package/src/painlessmesh/logger.hpp +158 -158
- package/src/painlessmesh/memory.hpp +119 -119
- package/src/painlessmesh/mesh.hpp +772 -761
- package/src/painlessmesh/metrics.hpp +322 -322
- package/src/painlessmesh/ntp.hpp +263 -263
- package/src/painlessmesh/ota.hpp +582 -582
- package/src/painlessmesh/plugin.hpp +188 -188
- package/src/painlessmesh/protocol.hpp +813 -813
- package/src/painlessmesh/router.hpp +338 -338
- package/src/painlessmesh/scheduler_queue.cpp +77 -0
- package/src/painlessmesh/scheduler_queue.hpp +34 -0
- package/src/painlessmesh/tcp.hpp +71 -71
- package/src/painlessmesh/validation.hpp +238 -238
- package/src/plugin/performance.hpp +214 -214
- package/src/plugin/remote.hpp +64 -64
- package/src/scheduler.cpp +10 -10
- package/src/wifi.cpp +2 -2
package/examples/meshCommandNode/.pio/libdeps/esp32/TaskScheduler/src/TaskSchedulerDeclarations.h
ADDED
|
@@ -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_ */
|