diff --git a/lib/treppe/FSMTreppe3/FSMTreppe3.h b/lib/treppe/FSMTreppe3/FSMTreppe3.h index 29fec3b..5c10cd9 100644 --- a/lib/treppe/FSMTreppe3/FSMTreppe3.h +++ b/lib/treppe/FSMTreppe3/FSMTreppe3.h @@ -19,7 +19,8 @@ #ifndef RTW_HEADER_FSMTreppe_h_ #define RTW_HEADER_FSMTreppe_h_ -#include +#include +#include // Class declaration for model FSMTreppe class FSMTreppeModelClass { @@ -34,17 +35,17 @@ class FSMTreppeModelClass { // External inputs (root inport signals with default storage) struct ExtU_FSMTreppe_T { - uint32_t sensor_unten; // '/sensor_unten' - uint32_t sensor_oben; // '/sensor_oben' - uint32_t anim_beendet; // '/anim_beendet' - uint32_t ldr_schwelle; // '/ldr_schwelle' + int sensor_unten; // '/sensor_unten' + int sensor_oben; // '/sensor_oben' + int anim_beendet; // '/anim_beendet' + int ldr_schwelle; // '/ldr_schwelle' }; // External outputs (root outports fed by signals with default storage) struct ExtY_FSMTreppe_T { - uint32_t laufrichtung; // '/laufrichtung' - uint32_t status; // '/status' - uint32_t dimmrichtung; // '/dimmrichtung' + int laufrichtung; // '/laufrichtung' + int status; // '/status' + int dimmrichtung; // '/dimmrichtung' }; // model initialize function diff --git a/lib/treppe/treppe.cpp b/lib/treppe/treppe.cpp index 9e45a66..af2cae8 100644 --- a/lib/treppe/treppe.cpp +++ b/lib/treppe/treppe.cpp @@ -115,7 +115,7 @@ void Treppe::print_state_on_change() last_out.laufrichtung = fsm_outputs.laufrichtung; last_out.status = fsm_outputs.status; - Serial.printf("FSM IN: s_u: %d, s_o: %d ldr_sw: %d, beendet: %d =>", + Serial.printf("FSM IN: s_u: %d, s_o: %d ldr_sw: %d, beendet: %d => ", fsm_inputs.sensor_oben, fsm_inputs.sensor_unten, fsm_inputs.ldr_schwelle, fsm_inputs.anim_beendet); Serial.printf("OUT: LR: %d DR: %d ST: %d\n", fsm_outputs.laufrichtung, fsm_outputs.dimmrichtung, fsm_outputs.status); @@ -221,29 +221,30 @@ bool Treppe::check_ldr() void Treppe::task() { uint32_t m=micros(); - fsm_inputs.ldr_schwelle = check_ldr(); - Serial.print("1:"); - Serial.println(micros()-m); + // fsm_inputs.ldr_schwelle = check_ldr(); + fsm_inputs.ldr_schwelle = 1; + // Serial.print("1:"); + // Serial.println(micros()-m); m=micros(); fsm_inputs.sensor_oben = read_sensor(SENSOR_OBEN); fsm_inputs.sensor_unten = read_sensor(SENSOR_UNTEN); - fsm_inputs.anim_beendet = anim_beendet; + fsm_inputs.anim_beendet = 1; // Serial.print("2:"); // Serial.println(micros()-m); m=micros(); - FSMTreppe_Obj.setExternalInputs(&fsm_inputs); + FSMTreppe_Obj->setExternalInputs(&fsm_inputs); // Serial.print("3:"); // Serial.println(micros()-m); m=micros(); - FSMTreppe_Obj.step(); + FSMTreppe_Obj->step(); // Serial.print("4:"); // Serial.println(micros()-m); m=micros(); - fsm_outputs = FSMTreppe_Obj.getExternalOutputs(); + fsm_outputs = FSMTreppe_Obj->getExternalOutputs(); // Serial.print("5:"); // Serial.println(micros()-m); diff --git a/lib/treppe/treppe.h b/lib/treppe/treppe.h index d10a7b3..2c63cc8 100644 --- a/lib/treppe/treppe.h +++ b/lib/treppe/treppe.h @@ -1,7 +1,7 @@ #ifndef __TREPPE_H #define __TREPPE_H -#include "FSMTreppe3/FSMTreppe3.h" +#include "FSMTreppe2/FSMTreppe2.h" #include "PCA9685.h" // #define LDRDEBUG // comment in to override LDR measurement @@ -53,7 +53,7 @@ private: // initialize with i2c-Address 0, use Wire Library PCA9685 pwmController; - FSMTreppeModelClass FSMTreppe_Obj; + FSMTreppeModelClass* FSMTreppe_Obj; FSMTreppeModelClass::ExtU_FSMTreppe_T fsm_inputs; FSMTreppeModelClass::ExtY_FSMTreppe_T fsm_outputs; enum fsm_status_t { @@ -91,11 +91,13 @@ private: bool check_ldr(); public: Treppe(uint8_t _stufen) : stufen(_stufen){ - FSMTreppe_Obj.initialize(); + FSMTreppe_Obj = new FSMTreppeModelClass; + FSMTreppe_Obj->initialize(); berechne_dimmer(); } ~Treppe() { - FSMTreppe_Obj.terminate(); + FSMTreppe_Obj->terminate(); + delete FSMTreppe_Obj; } void setup();