|
|
@@ -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<HTMLInfo*> ClassFlowControll::GetAllDigital()
|
|
|
-{
|
|
|
- for (int i = 0; i < FlowControll.size(); ++i)
|
|
|
- if (FlowControll[i]->name().compare("ClassFlowDigit") == 0)
|
|
|
- return ((ClassFlowDigit*) (FlowControll[i]))->GetHTMLInfo();
|
|
|
-
|
|
|
- std::vector<HTMLInfo*> empty;
|
|
|
- return empty;
|
|
|
-}
|
|
|
-
|
|
|
-std::vector<HTMLInfo*> ClassFlowControll::GetAllAnalog()
|
|
|
-{
|
|
|
- for (int i = 0; i < FlowControll.size(); ++i)
|
|
|
- if (FlowControll[i]->name().compare("ClassFlowAnalog") == 0)
|
|
|
- return ((ClassFlowAnalog*) (FlowControll[i]))->GetHTMLInfo();
|
|
|
-
|
|
|
- std::vector<HTMLInfo*> 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<string> 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;
|
|
|
-}
|
|
|
-
|