From ecd97e6e71875109e625e89d74c1a92bb540fc79 Mon Sep 17 00:00:00 2001 From: Gregg Date: Sat, 25 Mar 2023 10:58:03 -0500 Subject: [PATCH] Added option to set Priority and CPU in autoPoll() Also added vTaskDelay(5) in pollTask to make sure competing tasks can operate (for example, if priority was set to greater than 2, touch sensor did not operate). Adding vTaskDelay(5) solved this problem. --- src/HomeSpan.cpp | 2 ++ src/HomeSpan.h | 5 ++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/HomeSpan.cpp b/src/HomeSpan.cpp index 2a709e8..213c671 100644 --- a/src/HomeSpan.cpp +++ b/src/HomeSpan.cpp @@ -309,6 +309,8 @@ void Span::pollTask() { } statusLED->check(); + + vTaskDelay(5); } // poll diff --git a/src/HomeSpan.h b/src/HomeSpan.h index 3e40729..3b4a20d 100644 --- a/src/HomeSpan.h +++ b/src/HomeSpan.h @@ -341,7 +341,10 @@ class Span{ va_end(ap); } - void autoPoll(uint32_t stackSize=CONFIG_ARDUINO_LOOP_STACK_SIZE){xTaskCreateUniversal([](void *parms){for(;;)homeSpan.pollTask();}, "pollTask", stackSize, NULL, 1, &pollTaskHandle, 0);} // start pollTask() + void autoPoll(uint32_t stackSize=8192, uint32_t priority=1, uint32_t cpu=0){ // start pollTask() + xTaskCreateUniversal([](void *parms){for(;;)homeSpan.pollTask();}, "pollTask", stackSize, NULL, priority, &pollTaskHandle, cpu); + Serial.printf("\n*** AutoPolling Task started with priority=%d\n\n",uxTaskPriorityGet(pollTaskHandle)); + } void setTimeServerTimeout(uint32_t tSec){webLog.waitTime=tSec*1000;} // sets wait time (in seconds) for optional web log time server to connect