diff --git a/code/components/jomjol_fileserver_ota/server_ota.cpp b/code/components/jomjol_fileserver_ota/server_ota.cpp index 13474de1..cd620cd1 100644 --- a/code/components/jomjol_fileserver_ota/server_ota.cpp +++ b/code/components/jomjol_fileserver_ota/server_ota.cpp @@ -93,7 +93,7 @@ void task_do_Update_ZIP(void *pvParameter) } LogFile.WriteToFile(ESP_LOG_INFO, TAG, "Trigger reboot due to firmware update."); - doReboot(); + doRebootOTA(); } else { @@ -596,7 +596,7 @@ void hard_restart() } -void task_reboot(void *TaskCreated) +void task_reboot(void *KillAutoFlow) { // write a reboot, to identify a reboot by purpouse FILE* pfile = fopen("/sdcard/reboot.txt", "w"); @@ -604,7 +604,9 @@ void task_reboot(void *TaskCreated) fwrite(_s_zw.c_str(), strlen(_s_zw.c_str()), 1, pfile); fclose(pfile); - if ((bool)TaskCreated) { + vTaskDelay(3000 / portTICK_PERIOD_MS); + + if ((bool)KillAutoFlow) { KillTFliteTasks(); // Kill autoflow task if executed in extra task, if not don't kill parent task } @@ -616,13 +618,14 @@ void task_reboot(void *TaskCreated) esp_camera_deinit(); WIFIDestroy(); - vTaskDelay(4000 / portTICK_PERIOD_MS); - esp_restart(); // Reset type: CPU Reset (Reset both CPUs) + vTaskDelay(3000 / portTICK_PERIOD_MS); + esp_restart(); // Reset type: CPU reset (Reset both CPUs) vTaskDelay(5000 / portTICK_PERIOD_MS); hard_restart(); // Reset type: System reset (Triggered by watchdog), if esp_restart stalls (WDT needs to be activated) - vTaskDelete(NULL); //Delete this task if it exits from the loop above + ESP_LOGE(TAG, "Reboot failed!"); + vTaskDelete(NULL); //Delete this task if it comes to this point } @@ -630,31 +633,47 @@ void doReboot() { LogFile.WriteToFile(ESP_LOG_INFO, TAG, "Reboot triggered by Software (5s)."); LogFile.WriteToFile(ESP_LOG_WARN, TAG, "Reboot in 5sec"); + BaseType_t xReturned = xTaskCreate(&task_reboot, "task_reboot", configMINIMAL_STACK_SIZE * 3, (void*) true, 10, NULL); if( xReturned != pdPASS ) { ESP_LOGE(TAG, "task_reboot not created -> force reboot without killing flow"); task_reboot((void*) false); } + vTaskDelay(10000 / portTICK_PERIOD_MS); // Prevent serving web client fetch response until system is shuting down +} + + +void doRebootOTA() +{ + LogFile.WriteToFile(ESP_LOG_WARN, TAG, "Reboot in 5sec"); + + esp_camera_deinit(); + + vTaskDelay(5000 / portTICK_PERIOD_MS); + esp_restart(); // Reset type: CPU reset (Reset both CPUs) + + vTaskDelay(5000 / portTICK_PERIOD_MS); + hard_restart(); // Reset type: System reset (Triggered by watchdog), if esp_restart stalls (WDT needs to be activated) } esp_err_t handler_reboot(httpd_req_t *req) { -#ifdef DEBUG_DETAIL_ON - LogFile.WriteHeapInfo("handler_reboot - Start"); -#endif + #ifdef DEBUG_DETAIL_ON + LogFile.WriteHeapInfo("handler_reboot - Start"); + #endif LogFile.WriteToFile(ESP_LOG_DEBUG, TAG, "handler_reboot"); ESP_LOGI(TAG, "!!! System will restart within 5 sec!!!"); - const char* resp_str = "

"; + const char* resp_str = "

"; httpd_resp_send(req, resp_str, strlen(resp_str)); doReboot(); -#ifdef DEBUG_DETAIL_ON - LogFile.WriteHeapInfo("handler_reboot - Done"); -#endif + #ifdef DEBUG_DETAIL_ON + LogFile.WriteHeapInfo("handler_reboot - Done"); + #endif return ESP_OK; } diff --git a/code/components/jomjol_fileserver_ota/server_ota.h b/code/components/jomjol_fileserver_ota/server_ota.h index 552588aa..5a503321 100644 --- a/code/components/jomjol_fileserver_ota/server_ota.h +++ b/code/components/jomjol_fileserver_ota/server_ota.h @@ -13,6 +13,7 @@ void register_server_ota_sdcard_uri(httpd_handle_t server); void CheckOTAUpdate(); void doReboot(); +void doRebootOTA(); void hard_restart(); void CheckUpdate(); diff --git a/code/main/softAP.cpp b/code/main/softAP.cpp index bca2290f..5038cf1a 100644 --- a/code/main/softAP.cpp +++ b/code/main/softAP.cpp @@ -180,7 +180,7 @@ esp_err_t reboot_handlerAP(httpd_req_t *req) LogFile.WriteHeapInfo("handler_ota_update - Start"); #endif LogFile.WriteToFile(ESP_LOG_INFO, TAG, "Trigger reboot due to firmware update."); - doReboot(); + doRebootOTA(); return ESP_OK; }; diff --git a/sd-card/html/overview.html b/sd-card/html/overview.html index e8eced61..d7f57524 100644 --- a/sd-card/html/overview.html +++ b/sd-card/html/overview.html @@ -81,45 +81,43 @@ function addZero(i) { } + $(document).ready(function() { + LoadData(); + LoadROIImage(); + }); + + function LoadData(){ - loadStatus(); - loadCPUTemp(); - loadRSSI(); - loadUptime(); - loadRoundCounter(); loadValue("value", "value"); loadValue("raw", "raw"); loadValue("prevalue", "prevalue"); loadValue("error", "error", "font-size:8px"); + loadStatus(); + loadCPUTemp(); + loadRSSI(); + loadUptime(); + loadRoundCounter(); } function LoadROIImage(){ var d = new Date(); + var timestamp = d.getTime(); var h = addZero(d.getHours()); var m = addZero(d.getMinutes()); var s = addZero(d.getSeconds()); - $('#img').html(''); + $('#img').html(''); $('#timestamp').html("Last Page Refresh:" + (h + ":" + m + ":" + s)); } function Refresh() { - setTimeout (function() { + setTimeout (function() { LoadData(); - - var d = new Date(); - var timestamp = d.getTime(); - var h = addZero(d.getHours()); - var m = addZero(d.getMinutes()); - var s = addZero(d.getSeconds()); - // reassign the url to be like alg_roi.jpg?timestamp=456784512 based on timestamp to ensure image is getting reloaded - $('#img').html(''); - $('#timestamp').html("Last Page Refresh:" + (h + ":" + m + ":" + s)); - + LoadROIImage(); Refresh(); - }, 300000); - } + }, 300000); + } function loadStatus() { @@ -235,8 +233,6 @@ function addZero(i) { function init(){ basepath = getbasepath(); - LoadData(); - LoadROIImage(); Refresh(); }