setOpen() wird zwischengespeichert.

This commit is contained in:
Toberfra 2022-02-10 11:50:35 +01:00
parent ba1d3a122d
commit 34cb487948
2 changed files with 24 additions and 17 deletions

View File

@ -7,41 +7,31 @@ KlappenAblauf::~KlappenAblauf()
} }
statusKlappen KlappenAblauf::setOpen(bool open) void KlappenAblauf::setOpen(bool open)
{ {
openSpeicher = open;
if(open){
if(aktuellerState == WARTE_GESCHLOSSEN){
aktuellerState = START_AUF;
return OK;
}
}else{
if(aktuellerState == WARTE_OFFEN){
aktuellerState = START_ZU;
return OK;
}
}
return ERROR_BUSY;
} }
statusKlappen KlappenAblauf::setOpen(bool open , int id) void KlappenAblauf::setOpen(bool open , int id)
{ {
KlappenAblauf *zeiger; KlappenAblauf *zeiger;
zeiger = (KlappenAblauf *) searchIdElement(id); zeiger = (KlappenAblauf *) searchIdElement(id);
if(zeiger) if(zeiger)
return zeiger->setOpen(open); return zeiger->setOpen(open);
return ERROR_ID;
} }
void KlappenAblauf::memberSetup(){ void KlappenAblauf::memberSetup(){
AnalogDigital::memberSetup(); AnalogDigital::memberSetup();
openSpeicher = false;
fsmInit(); fsmInit();
} }
void KlappenAblauf::memberLoop(){ void KlappenAblauf::memberLoop(){
AnalogDigital::memberLoop(); AnalogDigital::memberLoop();
openSpeicherAbfrage();
fsmStep(); fsmStep();
} }
@ -52,6 +42,20 @@ void KlappenAblauf::fsmInit(){
} }
void KlappenAblauf::openSpeicherAbfrage(){
if(openSpeicher){
if(aktuellerState == WARTE_GESCHLOSSEN){
aktuellerState = START_AUF;
}
}else{
if(aktuellerState == WARTE_OFFEN){
aktuellerState = START_ZU;
}
}
}
void KlappenAblauf::fsmStep(){ void KlappenAblauf::fsmStep(){

View File

@ -36,8 +36,8 @@ public:
/** /**
* @param open * @param open
*/ */
statusKlappen setOpen(bool open); void setOpen(bool open);
static statusKlappen setOpen(bool open , int id); static void setOpen(bool open , int id);
protected: protected:
@ -53,6 +53,9 @@ protected:
private: private:
int16_t timer; int16_t timer;
bool openSpeicher;
void openSpeicherAbfrage();
typedef enum fsmStatesEnum{ typedef enum fsmStatesEnum{
INIT, INIT,