/* * PhaseSpaceLimit.hh * * Created on: 10 авг. 2020 г. * Author: LeonidTitov */ #ifndef UMLIBRARY_PROCESSING_ACS_PHASESPACELIMIT_HH_ #define UMLIBRARY_PROCESSING_ACS_PHASESPACELIMIT_HH_ #include "ControlSystemInterface.hh" #include "../../systemic/ISignal.hh" namespace processing { namespace acs { //! class PhaseSpaceLimit : public PhaseSpaceToPhaseSpaceUnitInterface { public: void set( TypeInput ); TypeOutput get() const; void set_output( SetInterface * ); void reset(); vector::ITechValue & getUpperLimit(); vector::ITechValue & getLowerLimit(); void apply(); const bool & valid_range() const; const bool & is_limited() const; struct Setting { float upper_limit; //!<Верхнее преднастроенное ограничение. float lower_limit; //!<Нижнее предснастроенное ограеничение. bool isValid(); }; void configure( Setting & config ); PhaseSpaceLimit(); private: bool range_valid; bool limited_flag; struct Limit : vector::ITechValue { void set( float limit ) { value = limit; } float get() const { return value; } float value; Limit() : value(0.0f) {} } upper, lower; float h_t; float l_t; bool isConnected() const; SetInterface * output; TypeOutput limited_value; }; }} #endif /* UMLIBRARY_PROCESSING_ACS_PHASESPACELIMIT_HH_ */