1 #ifndef ORG_EEROS_CONTROL_GAIN_HPP_ 2 #define ORG_EEROS_CONTROL_GAIN_HPP_ 31 template <
typename Tout =
double,
typename Tgain =
double,
bool elementWise = false>
53 resetMinMaxGain<Tgain>();
186 if(c <= maxGain && c >=
minGain) {
230 template <
typename Xout,
typename Xgain>
231 friend std::ostream& operator<<(std::ostream& os, Gain<Xout,Xgain>&
gain);
245 template <
typename S>
246 typename std::enable_if<!elementWise,S>::type calculateResults(S value) {
251 template <
typename S>
252 typename std::enable_if<elementWise,S>::type calculateResults(S value) {
253 return value.multiplyElementWise(gain);
257 template <
typename S>
258 typename std::enable_if<std::is_integral<S>::value>::type resetMinMaxGain() {
259 minGain = std::numeric_limits<int32_t>::min();
260 maxGain = std::numeric_limits<int32_t>::max();
264 template <
typename S>
265 typename std::enable_if<std::is_floating_point<S>::value>::type resetMinMaxGain() {
266 minGain = std::numeric_limits<double>::lowest();
267 maxGain = std::numeric_limits<double>::max();
271 template <
typename S>
272 typename std::enable_if<!std::is_arithmetic<S>::value && std::is_integral<typename S::value_type>::value>::type resetMinMaxGain() {
273 minGain.fill(std::numeric_limits<int32_t>::min());
274 maxGain.fill(std::numeric_limits<int32_t>::max());
278 template <
typename S>
279 typename std::enable_if<!std::is_arithmetic<S>::value && std::is_floating_point<typename S::value_type>::value>::type resetMinMaxGain() {
280 minGain.fill(std::numeric_limits<double>::lowest());
281 maxGain.fill(std::numeric_limits<double>::max());
291 template <
typename Tout,
typename Tgain>
292 std::ostream& operator<<(std::ostream& os, Gain<Tout,Tgain>&
gain) {
293 os <<
"Block Gain: '" <<
gain.getName() <<
"' is enabled=" <<
gain.enabled <<
", gain=" <<
gain.gain <<
", ";
294 os <<
"smoothChange=" <<
gain.smoothChange <<
", minGain=" <<
gain.minGain <<
", maxGain=" <<
gain.maxGain <<
", ";
295 os <<
"targetGain=" <<
gain.targetGain <<
", gainDiff=" <<
gain.gainDiff;
Tgain targetGain
Definition: Gain.hpp:238
bool enabled
Definition: Gain.hpp:240
virtual void setGainDiff(Tgain gainDiff)
Definition: Gain.hpp:221
virtual Signal< T > & getSignal()
Definition: Output.hpp:16
virtual T getValue() const
Definition: Signal.hpp:49
virtual void disable()
Definition: Gain.hpp:153
Tgain maxGain
Definition: Gain.hpp:236
Gain(Tgain c, Tgain maxGain, Tgain minGain)
Definition: Gain.hpp:67
Gain(Tgain c)
Definition: Gain.hpp:52
Input< Tout > in
Definition: Block1i1o.hpp:27
virtual void run()
Definition: Gain.hpp:94
virtual void setGain(Tgain c)
Definition: Gain.hpp:185
Definition: Config.hpp:14
Tgain gain
Definition: Gain.hpp:235
Output< Tout > out
Definition: Block1i1o.hpp:28
virtual void setValue(T newValue)
Definition: Signal.hpp:53
virtual void enable()
Definition: Gain.hpp:138
virtual void setTimestamp(timestamp_t newTimestamp)
Definition: Signal.hpp:66
Tgain minGain
Definition: Gain.hpp:237
Definition: Block1i1o.hpp:12
virtual void setMinGain(Tgain minGain)
Definition: Gain.hpp:211
virtual timestamp_t getTimestamp() const
Definition: Signal.hpp:62
Tgain gainDiff
Definition: Gain.hpp:239
virtual void setMaxGain(Tgain maxGain)
Definition: Gain.hpp:201
Gain()
Definition: Gain.hpp:41
bool smoothChange
Definition: Gain.hpp:241
virtual void enableSmoothChange(bool enable)
Definition: Gain.hpp:171