MotorControlModuleSDFM_TMS3.../Projects/EFC_Application/UMLibrary/processing/logic/SoftSwitch.hh

70 lines
1.5 KiB
C++
Raw Normal View History

/*
* SoftSwitch.hh
*
* Created on: 30 <EFBFBD><EFBFBD><EFBFBD>. 2020 <EFBFBD>.
* Author: LeonidTitov
*/
#ifndef UMLIBRARY_PROCESSING_LOGIC_SOFTSWITCH_HH_
#define UMLIBRARY_PROCESSING_LOGIC_SOFTSWITCH_HH_
#include "../../systemic/ISignal.hh"
#include "../../systemic/IStatus.hh"
#include "../../systemic/IProcess.hh"
namespace processing { namespace logic {
class SoftSwitch : public systemic::IProcess {
public:
struct Setting {
float toggle_time = -1.0f; //!<<3C><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, c.
bool isValid();
};
public:
SoftSwitch( systemic::ISignal & a_signal, systemic::IStatus & a_valid, systemic::ISignal & b_signal, systemic::IStatus & b_valid );
void configure( Setting & setting );
void setSampleTime( float ts_in_second );
void process();
const float & summary() const { return output; }
const bool & activeSignalA() const;
const bool & activeSignalB() const;
private:
float output;
struct ValidSignal {
systemic::ISignal & signal;
systemic::IStatus & valid;
float value;
bool correctness;
bool active;
void update_correctness();
bool invalcheck();
void select();
ValidSignal(systemic::ISignal & s, systemic::IStatus & v, bool active) : signal(s), valid(v), value(s), active(active), correctness(v) {}
} a, b;
float delta;
float d_delta;
float dpart_dt;
float _Tp;
float _Ts;
};
}}
#endif /* UMLIBRARY_PROCESSING_LOGIC_SOFTSWITCH_HH_ */