92 lines
1.8 KiB
C++
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_ */
|