MotorControlModuleSDFM_TMS3.../Projects/EFC_Application/UMLibrary/schematic/SignalValidation.hh

92 lines
1.8 KiB
C++

/*
* SignalValidation.hh
*
* Created on: 28 àïð. 2022 ã.
* Author: titov
*/
#ifndef UMLIBRARY_SCHEMATIC_SIGNALVALIDATION_HH_
#define UMLIBRARY_SCHEMATIC_SIGNALVALIDATION_HH_
#include "../systemic/IStatus.hh"
#include "../systemic/ISignal.hh"
namespace systemic { namespace detail {
class SignalValidationPrevious : public ISignal {
private:
ISignal & raw;
IStatus & valid;
mutable float prev;
public:
SignalValidationPrevious( ISignal & raw, IStatus & valid ) : raw(raw), valid(valid) {}
virtual ~SignalValidationPrevious() = default;
operator float() const final;
};
class SignalValidationFixed : public ISignal {
private:
ISignal & raw;
IStatus & valid;
const float fixed;
public:
SignalValidationFixed( ISignal & raw, IStatus & valid, float fixed ) : raw(raw), valid(valid), fixed(fixed) {}
virtual ~SignalValidationFixed() = default;
operator float() const final;
};
class SignalValidationPreset : public ISignal {
private:
ISignal & raw;
IStatus & valid;
float preset;
public:
SignalValidationPreset( ISignal & raw, IStatus & valid ) : raw(raw), valid(valid) {}
virtual ~SignalValidationPreset() = default;
operator float() const final;
struct Setting {
float preset_value; //!<Ïðåäóñòàíîâëåííîå çíà÷åíèå.
bool isValid();
};
void configure( Setting & config );
};
class SignalValidationAnother: public ISignal {
private:
ISignal & raw;
IStatus & valid;
ISignal & another;
public:
SignalValidationAnother( ISignal & raw, IStatus & valid, ISignal & another ) : raw(raw), valid(valid), another(another) {}
virtual ~SignalValidationAnother() = default;
operator float() const final;
};
} /* namespace detail */
} /* namespace systemic */
#endif /* UMLIBRARY_SCHEMATIC_SIGNALVALIDATION_HH_ */