diff --git a/code/components/jomjol_flowcontroll/ClassFlowControll.cpp b/code/components/jomjol_flowcontroll/ClassFlowControll.cpp index 4068e9c4..f54df869 100644 --- a/code/components/jomjol_flowcontroll/ClassFlowControll.cpp +++ b/code/components/jomjol_flowcontroll/ClassFlowControll.cpp @@ -190,10 +190,15 @@ void ClassFlowControll::SetInitialParameter(void) } -bool ClassFlowControll::isAutoStart(long &_interval) +bool ClassFlowControll::getIsAutoStart(void) +{ + return AutoStart; +} + + +void ClassFlowControll::setAutoStartInterval(long &_interval) { _interval = AutoInterval * 60 * 1000; // AutoInterval: minutes -> ms - return AutoStart; } diff --git a/code/components/jomjol_flowcontroll/ClassFlowControll.h b/code/components/jomjol_flowcontroll/ClassFlowControll.h index 48a72fcc..dc09555a 100644 --- a/code/components/jomjol_flowcontroll/ClassFlowControll.h +++ b/code/components/jomjol_flowcontroll/ClassFlowControll.h @@ -65,7 +65,8 @@ public: std::string doSingleStep(std::string _stepname, std::string _host); - bool isAutoStart(long &_interval); + bool getIsAutoStart(); + void setAutoStartInterval(long &_interval); std::string* getActStatusWithTime(); std::string* getActStatus(); diff --git a/code/components/jomjol_flowcontroll/MainFlowControl.cpp b/code/components/jomjol_flowcontroll/MainFlowControl.cpp index 794a8cbc..26084fb2 100644 --- a/code/components/jomjol_flowcontroll/MainFlowControl.cpp +++ b/code/components/jomjol_flowcontroll/MainFlowControl.cpp @@ -41,7 +41,7 @@ bool bTaskAutoFlowCreated = false; bool flowisrunning = false; long auto_interval = 0; -bool auto_isrunning = false; +bool autostartIsEnabled = false; int countRounds = 0; bool isPlannedReboot = false; @@ -257,7 +257,7 @@ esp_err_t handler_flow_start(httpd_req_t *req) { httpd_resp_set_hdr(req, "Access-Control-Allow-Origin", "*"); - if (auto_isrunning) { + if (autostartIsEnabled) { xTaskAbortDelay(xHandletask_autodoFlow); // Delay will be aborted if task is in blocked (waiting) state. If task is already running, no action LogFile.WriteToFile(ESP_LOG_DEBUG, TAG, "Flow start triggered by REST API /flow_start"); const char* resp_str = "The flow is going to be started immediately or is already running"; @@ -286,7 +286,7 @@ esp_err_t MQTTCtrlFlowStart(std::string _topic) { ESP_LOGD(TAG, "MQTTCtrlFlowStart: topic %s", _topic.c_str()); - if (auto_isrunning) + if (autostartIsEnabled) { xTaskAbortDelay(xHandletask_autodoFlow); // Delay will be aborted if task is in blocked (waiting) state. If task is already running, no action LogFile.WriteToFile(ESP_LOG_DEBUG, TAG, "Flow start triggered by MQTT topic " + _topic); @@ -963,16 +963,25 @@ void task_autodoFlow(void *pvParameter) ESP_LOGD(TAG, "task_autodoFlow: start"); doInit(); - auto_isrunning = flowctrl.isAutoStart(auto_interval); + flowctrl.setAutoStartInterval(auto_interval); + autostartIsEnabled = flowctrl.getIsAutoStart(); if (isSetupModusActive()) { - auto_isrunning = false; + LogFile.WriteToFile(ESP_LOG_INFO, TAG, "We are in Setup Mode -> Not starting Auto Flow!"); + autostartIsEnabled = false; std::string zw_time = getCurrentTimeString(LOGFILE_TIME_FORMAT); flowctrl.doFlowTakeImageOnly(zw_time); } + + if (autostartIsEnabled) { + LogFile.WriteToFile(ESP_LOG_INFO, TAG, "Starting Flow..."); + } + else { + LogFile.WriteToFile(ESP_LOG_INFO, TAG, "Autostart is not enabled -> Not starting Flow"); + } - while (auto_isrunning) + while (autostartIsEnabled) { LogFile.WriteToFile(ESP_LOG_DEBUG, TAG, "----------------------------------------------------------------"); // Clear separation between runs std::string _zw = "Round #" + std::to_string(++countRounds) + " started"; @@ -1046,7 +1055,7 @@ void task_autodoFlow(void *pvParameter) } -void StartMainFlowTask() +void InitializeFlowTask() { BaseType_t xReturned; diff --git a/code/components/jomjol_flowcontroll/MainFlowControl.h b/code/components/jomjol_flowcontroll/MainFlowControl.h index a667132a..8ede3be0 100644 --- a/code/components/jomjol_flowcontroll/MainFlowControl.h +++ b/code/components/jomjol_flowcontroll/MainFlowControl.h @@ -18,7 +18,7 @@ void register_server_main_flow_task_uri(httpd_handle_t server); void CheckIsPlannedReboot(); bool getIsPlannedReboot(); -void StartMainFlowTask(); +void InitializeFlowTask(); void DeleteMainFlowTask(); bool isSetupModusActive(); diff --git a/code/main/main.cpp b/code/main/main.cpp index 50b20c5e..1e12c0ac 100644 --- a/code/main/main.cpp +++ b/code/main/main.cpp @@ -512,13 +512,13 @@ extern "C" void app_main(void) // Check main init + start TFlite task // ******************************************** if (getSystemStatus() == 0) { // No error flag is set - LogFile.WriteToFile(ESP_LOG_INFO, TAG, "Initialization completed successfully! Starting flow task ..."); - StartMainFlowTask(); + LogFile.WriteToFile(ESP_LOG_INFO, TAG, "Initialization completed successfully"); + InitializeFlowTask(); } else if (isSetSystemStatusFlag(SYSTEM_STATUS_CAM_FB_BAD) || // Non critical errors occured, we try to continue... isSetSystemStatusFlag(SYSTEM_STATUS_NTP_BAD)) { - LogFile.WriteToFile(ESP_LOG_WARN, TAG, "Initialization completed with errors! Starting flow task ..."); - StartMainFlowTask(); + LogFile.WriteToFile(ESP_LOG_WARN, TAG, "Initialization completed with non-critical errors!"); + InitializeFlowTask(); } else { // Any other error is critical and makes running the flow impossible. Init is going to abort. LogFile.WriteToFile(ESP_LOG_ERROR, TAG, "Initialization failed. Flow task start aborted. Loading reduced web interface...");