diff --git a/README.md b/README.md index b0f7ef95..7569f394 100644 --- a/README.md +++ b/README.md @@ -27,14 +27,22 @@ A 3d-printable housing can be found here: https://www.thingiverse.com/thing:4571 -##### Rolling - (2020-09-27) +##### Rolling - (2020-09-28) -* based on v2.2.0 (2020-09-27) +* Error Correction +* based on v2.2.1 (2020-09-28) + + + +##### 2.2.1 Version Control (2020-09-27) + +* Bug-Fixing (hostname in wlan.ini and error handling inside flow) + -##### 2.2.0 Version Controll (2020-09-27) +##### 2.2.0 Version Control (2020-09-27) * Integrated automated versioning system (menu: SYSTEM --> INFO) * Update Build-System to PlatformIO - Espressif 32 v2.0.0 (ESP-IDF 4.1) diff --git a/code/lib/connect_wlan/connect_wlan.cpp b/code/lib/connect_wlan/connect_wlan.cpp index e42bf64c..9fd449f4 100644 --- a/code/lib/connect_wlan/connect_wlan.cpp +++ b/code/lib/connect_wlan/connect_wlan.cpp @@ -143,7 +143,6 @@ void LoadWlanFromFile(std::string fn, std::string &_ssid, std::string &_passphra char zw[1024]; fgets(zw, 1024, pFile); -// printf("%s", zw); line = std::string(zw); while ((line.size() > 0) || !(feof(pFile))) @@ -151,21 +150,16 @@ void LoadWlanFromFile(std::string fn, std::string &_ssid, std::string &_passphra // printf("%s", line.c_str()); zerlegt = ZerlegeZeile(line, "="); zerlegt[0] = trim(zerlegt[0], " "); - zerlegt[1] = trim(zerlegt[1], " "); if ((zerlegt.size() > 1) && (toUpper(zerlegt[0]) == "HOSTNAME")){ - _hostname = zerlegt[1]; + _hostname = trim(zerlegt[1]); if ((_hostname[0] == '"') && (_hostname[_hostname.length()-1] == '"')){ _hostname = _hostname.substr(1, _hostname.length()-2); } - // Check if Hostname was empty in .ini if yes set to std_hostname - if(_hostname.length() <= 0){ - _hostname = std_hostname; - } } if ((zerlegt.size() > 1) && (toUpper(zerlegt[0]) == "SSID")){ - _ssid = zerlegt[1]; + _ssid = trim(zerlegt[1]); if ((_ssid[0] == '"') && (_ssid[_ssid.length()-1] == '"')){ _ssid = _ssid.substr(1, _ssid.length()-2); } @@ -189,6 +183,11 @@ void LoadWlanFromFile(std::string fn, std::string &_ssid, std::string &_passphra } fclose(pFile); + + // Check if Hostname was empty in .ini if yes set to std_hostname + if(_hostname.length() <= 0){ + _hostname = std_hostname; + } } diff --git a/code/lib/jomjol_flowcontroll/ClassFlowAnalog.cpp b/code/lib/jomjol_flowcontroll/ClassFlowAnalog.cpp index 0d764487..c1656f5e 100644 --- a/code/lib/jomjol_flowcontroll/ClassFlowAnalog.cpp +++ b/code/lib/jomjol_flowcontroll/ClassFlowAnalog.cpp @@ -108,6 +108,7 @@ bool ClassFlowAnalog::ReadParameter(FILE* pfile, string& aktparamgraph) neuroi->posy = std::stoi(zerlegt[2]); neuroi->deltax = std::stoi(zerlegt[3]); neuroi->deltay = std::stoi(zerlegt[4]); + neuroi->result = -1; ROI.push_back(neuroi); } } @@ -175,6 +176,7 @@ bool ClassFlowAnalog::doAlignAndCut(string time) img_roi = new CImageBasis(input_roi); if (!img_roi->ImageOkay()){ LogFile.WriteToFile("ClassFlowAnalog::doAlignAndCut ImageRoi not okay!"); + delete caic; delete img_roi; return false; } diff --git a/code/lib/jomjol_flowcontroll/ClassFlowControll._c_pp b/code/lib/jomjol_flowcontroll/ClassFlowControll._c_pp deleted file mode 100644 index 183db1a5..00000000 --- a/code/lib/jomjol_flowcontroll/ClassFlowControll._c_pp +++ /dev/null @@ -1,294 +0,0 @@ -#include "ClassFlowControll.h" - -#include "ClassLogFile.h" -#include "time_sntp.h" -#include "Helper.h" -#include "server_ota.h" - -std::string ClassFlowControll::doSingleStep(std::string _stepname, std::string _host){ - bool found = false; - std::string _classname = ""; - std::string result = ""; - if (_stepname.compare("[MakeImage]") == 0){ - _classname = "ClassFlowMakeImage"; - } - if (_stepname.compare("[Alignment]") == 0){ - _classname = "ClassFlowAlignment"; - } - if (_stepname.compare("[Digits]") == 0){ - _classname = "ClassFlowDigit"; - } - if (_stepname.compare("[Analog]") == 0){ - _classname = "ClassFlowAnalog"; - } -// std::string zw = "Classname: " + _classname + "\n"; -// printf(zw.c_str()); - - for (int i = 0; i < FlowControll.size(); ++i) - if (FlowControll[i]->name().compare(_classname) == 0){ - // printf(FlowControll[i]->name().c_str()); printf("\n"); - FlowControll[i]->doFlow(""); - result = FlowControll[i]->getHTMLSingleStep(_host); - found = true; - } - - return result; -} - -std::vector ClassFlowControll::GetAllDigital() -{ - for (int i = 0; i < FlowControll.size(); ++i) - if (FlowControll[i]->name().compare("ClassFlowDigit") == 0) - return ((ClassFlowDigit*) (FlowControll[i]))->GetHTMLInfo(); - - std::vector empty; - return empty; -} - -std::vector ClassFlowControll::GetAllAnalog() -{ - for (int i = 0; i < FlowControll.size(); ++i) - if (FlowControll[i]->name().compare("ClassFlowAnalog") == 0) - return ((ClassFlowAnalog*) (FlowControll[i]))->GetHTMLInfo(); - - std::vector empty; - return empty; -} - - -void ClassFlowControll::SetInitialParameter(void) -{ - AutoStart = false; - AutoIntervall = 10; -} - -bool ClassFlowControll::isAutoStart(long &_intervall) -{ - _intervall = AutoIntervall * 60 * 1000; // AutoIntervall: Minuten -> ms - return AutoStart; -} - -ClassFlow* ClassFlowControll::CreateClassFlow(std::string _type) -{ - ClassFlow* cfc = NULL; - - _type = trim(_type); - - if (_type.compare("[MakeImage]") == 0) - cfc = new ClassFlowMakeImage(&FlowControll); - if (_type.compare("[Alignment]") == 0) - cfc = new ClassFlowAlignment(&FlowControll); - if (_type.compare("[Analog]") == 0) - cfc = new ClassFlowAnalog(&FlowControll); - if (_type.compare("[Digits]") == 0) - cfc = new ClassFlowDigit(&FlowControll); - if (_type.compare("[PostProcessing]") == 0) - { - cfc = new ClassFlowPostProcessing(&FlowControll); - flowpostprocessing = (ClassFlowPostProcessing*) cfc; - } - - if (cfc) // Wird nur angehangen, falls es nicht [AutoTimer] ist, denn dieses ist für FlowControll - FlowControll.push_back(cfc); - - if (_type.compare("[AutoTimer]") == 0) - cfc = this; - - if (_type.compare("[Debug]") == 0) - cfc = this; - - return cfc; -} - -void ClassFlowControll::InitFlow(std::string config) -{ - string line; - - flowpostprocessing = NULL; - - ClassFlow* cfc; - FILE* pFile; - config = FormatFileName(config); - pFile = fopen(config.c_str(), "r"); - - line = ""; - - char zw[1024]; - if (pFile != NULL) - { - fgets(zw, 1024, pFile); - printf("%s", zw); - line = std::string(zw); - } - - while ((line.size() > 0) && !(feof(pFile))) - { - cfc = CreateClassFlow(line); - if (cfc) - { - cfc->ReadParameter(pFile, line); - } - else - { - fgets(zw, 1024, pFile); - printf("%s", zw); - line = std::string(zw); - } - } - - fclose(pFile); - -} - -std::string ClassFlowControll::getActStatus(){ - return aktstatus; -} - -bool ClassFlowControll::doFlow(string time) -{ - bool result = true; - std::string zw_time; - int repeat = 0; - - for (int i = 0; i < FlowControll.size(); ++i) - { - zw_time = gettimestring("%Y%m%d-%H%M%S"); - aktstatus = zw_time + ": " + FlowControll[i]->name(); - string zw = "FlowControll.doFlow - " + FlowControll[i]->name(); - LogFile.WriteToFile(zw); - if (!FlowControll[i]->doFlow(time)){ - repeat++; - LogFile.WriteToFile("Fehler im vorheriger Schritt - wird zum " + to_string(repeat) + ". Mal wiederholt"); - i = -1; // Soll wieder bei i = 0 anfangen ==> komplett von vorne !!! - result = false; - if (repeat > 5) { - LogFile.WriteToFile("Wiederholung 5x nicht erfolgreich --> reboot"); - doReboot(); - // Schritt wurde 5x wiederholt --> reboot - } - } - else - { - result = true; - } - } - zw_time = gettimestring("%Y%m%d-%H%M%S"); - aktstatus = zw_time + ": Flow is done"; - return result; -} - -string ClassFlowControll::getReadout(bool _rawvalue = false, bool _noerror = false) -{ - if (flowpostprocessing) - return flowpostprocessing->getReadoutParam(_rawvalue, _noerror); - - string zw = ""; - string result = ""; - - for (int i = 0; i < FlowControll.size(); ++i) - { - zw = FlowControll[i]->getReadout(); - if (zw.length() > 0) - { - if (result.length() == 0) - result = zw; - else - result = result + "\t" + zw; - } - } - - return result; -} - -string ClassFlowControll::GetPrevalue() -{ - if (flowpostprocessing) - { - return flowpostprocessing->GetPreValue(); - } - - return std::string(); -} - -std::string ClassFlowControll::UpdatePrevalue(std::string _newvalue) -{ - float zw; - char* p; - - _newvalue = trim(_newvalue); -// printf("Input UpdatePreValue: %s\n", _newvalue.c_str()); - - if (_newvalue.compare("0.0") == 0) - { - zw = 0; - } - else - { - zw = strtof(_newvalue.c_str(), &p); - if (zw == 0) - return "- Error in String to Value Conversion!!! Must be of format value=123.456"; - } - - - if (flowpostprocessing) - { - flowpostprocessing->SavePreValue(zw); - return to_string(zw); - } - - return std::string(); -} - -bool ClassFlowControll::ReadParameter(FILE* pfile, string& aktparamgraph) -{ - std::vector zerlegt; - - aktparamgraph = trim(aktparamgraph); - - if (aktparamgraph.size() == 0) - if (!this->GetNextParagraph(pfile, aktparamgraph)){ - return false; - } - -// if ((aktparamgraph.compare("[Autotimer]") != 0) && (aktparamgraph.compare("[Debug]") != 0)) // Paragraph passt nich zu MakeImage - if (aktparamgraph.compare("[Autotimer]") != 0) // Paragraph passt nich zu MakeImage - return false; - -// if ((toUpper(aktparamgraph) != "[AUTOTIMER]") && (toUpper(aktparamgraph) != ("[DEBUG]"))) // Paragraph passt nich zu MakeImage -// return false; - - while (this->getNextLine(pfile, &aktparamgraph) && !this->isNewParagraph(aktparamgraph)) - { - zerlegt = this->ZerlegeZeile(aktparamgraph); - if ((toUpper(zerlegt[0]) == "AUTOSTART") && (zerlegt.size() > 1)) - { - if (toUpper(zerlegt[1]) == "TRUE") - { - AutoStart = true; - } - } - - if ((toUpper(zerlegt[0]) == "INTERVALL") && (zerlegt.size() > 1)) - { - AutoIntervall = std::stof(zerlegt[1]); - } - -/* - if ((toUpper(zerlegt[0]) == "LOGFILE") && (zerlegt.size() > 1)) - { - if (toUpper(zerlegt[1]) == "TRUE") - { - LogFile.SwitchOnOff(true); - printf("TurnLogFile On\n"); - } - if (toUpper(zerlegt[1]) == "FALSE") - { - LogFile.SwitchOnOff(false); - printf("TurnLogFile Off\n"); - } - } -*/ - } - return true; -} - diff --git a/code/lib/jomjol_flowcontroll/ClassFlowControll.cpp b/code/lib/jomjol_flowcontroll/ClassFlowControll.cpp index 47e62d47..cda40f2c 100644 --- a/code/lib/jomjol_flowcontroll/ClassFlowControll.cpp +++ b/code/lib/jomjol_flowcontroll/ClassFlowControll.cpp @@ -157,7 +157,7 @@ bool ClassFlowControll::doFlow(string time) if (!FlowControll[i]->doFlow(time)){ repeat++; LogFile.WriteToFile("Fehler im vorheriger Schritt - wird zum " + to_string(repeat) + ". Mal wiederholt"); - i = i-2; // vorheriger Schritt muss wiederholt werden (vermutlich Bilder aufnehmen) + i = -1; // vorheriger Schritt muss wiederholt werden (vermutlich Bilder aufnehmen) result = false; if (repeat > 5) { LogFile.WriteToFile("Wiederholung 5x nicht erfolgreich --> reboot"); diff --git a/code/lib/jomjol_flowcontroll/ClassFlowDigit.cpp b/code/lib/jomjol_flowcontroll/ClassFlowDigit.cpp index 864fdb4a..70f1132b 100644 --- a/code/lib/jomjol_flowcontroll/ClassFlowDigit.cpp +++ b/code/lib/jomjol_flowcontroll/ClassFlowDigit.cpp @@ -86,6 +86,7 @@ bool ClassFlowDigit::ReadParameter(FILE* pfile, string& aktparamgraph) neuroi->posy = std::stoi(zerlegt[2]); neuroi->deltax = std::stoi(zerlegt[3]); neuroi->deltay = std::stoi(zerlegt[4]); + neuroi->resultklasse = -1; ROI.push_back(neuroi); } } @@ -152,7 +153,8 @@ bool ClassFlowDigit::doAlignAndCut(string time) if (input_roi.length() > 0){ img_roi = new CImageBasis(input_roi); if (!img_roi->ImageOkay()){ - LogFile.WriteToFile("ClassFlowAnalog::doAlignAndCut ImageRoi not okay!"); + LogFile.WriteToFile("ClassFlowDigit::doAlignAndCut ImageRoi not okay!"); + delete caic; delete img_roi; return false; } diff --git a/code/src/server_tflite.cpp b/code/src/server_tflite.cpp index 5e498d96..e2f0985e 100644 --- a/code/src/server_tflite.cpp +++ b/code/src/server_tflite.cpp @@ -468,7 +468,7 @@ void task_autodoFlow(void *pvParameter) LogFile.WriteToFile("task_autodoFlow - round done"); //CPU Temp float cputmp = temperatureRead(); - LogFile.WriteToFile("CPU Temperature: %.2f", cputmp); +// LogFile.WriteToFile("CPU Temperature: %.2f", cputmp); printf("CPU Temperature: %.2f\n", cputmp); fr_delta_ms = (esp_timer_get_time() - fr_start) / 1000; const TickType_t xDelay = (auto_intervall - fr_delta_ms) / portTICK_PERIOD_MS; diff --git a/code/src/version.cpp b/code/src/version.cpp index b5fd4b1d..13f89117 100644 --- a/code/src/version.cpp +++ b/code/src/version.cpp @@ -1,4 +1,4 @@ -const char* GIT_REV="5a98b3d"; +const char* GIT_REV="cefe125"; const char* GIT_TAG=""; const char* GIT_BRANCH="rolling"; -const char* BUILD_TIME="2020-09-27 08:09"; \ No newline at end of file +const char* BUILD_TIME="2020-09-28 19:32"; \ No newline at end of file diff --git a/code/src/version.h b/code/src/version.h index fbf5cc88..2f571e91 100644 --- a/code/src/version.h +++ b/code/src/version.h @@ -8,7 +8,7 @@ extern "C" extern const char* BUILD_TIME; } -const char* GIT_BASE_BRANCH = "master - v2.1.0 - 2020-09-25"; +const char* GIT_BASE_BRANCH = "master - v2.1.1 - 2020-09-28"; const char* git_base_branch(void) diff --git a/code/version.cpp b/code/version.cpp index b5fd4b1d..13f89117 100644 --- a/code/version.cpp +++ b/code/version.cpp @@ -1,4 +1,4 @@ -const char* GIT_REV="5a98b3d"; +const char* GIT_REV="cefe125"; const char* GIT_TAG=""; const char* GIT_BRANCH="rolling"; -const char* BUILD_TIME="2020-09-27 08:09"; \ No newline at end of file +const char* BUILD_TIME="2020-09-28 19:32"; \ No newline at end of file diff --git a/firmware/bootloader.bin b/firmware/bootloader.bin index 7e4383e1..c59bda7a 100644 Binary files a/firmware/bootloader.bin and b/firmware/bootloader.bin differ diff --git a/firmware/firmware.bin b/firmware/firmware.bin index 568caef6..88f707b1 100644 Binary files a/firmware/firmware.bin and b/firmware/firmware.bin differ