From 48180eb9abedffaf22a2c53978e9dad5013875df Mon Sep 17 00:00:00 2001 From: Torsten Dreyer Date: Wed, 10 Sep 2014 21:07:57 +0200 Subject: [PATCH] Optionally disable the lowpass for the static system the static system has an optional "tau" parameter to define the rate at which the output value changes. Setting this value to zero now disables the filter. This prevents wrong airspeed indications on rapid altitude changes. No functional changes if tau has other-than-zero values (e.g. the default systems). --- src/Systems/static.cxx | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/Systems/static.cxx b/src/Systems/static.cxx index a6e14bb68..f8dc2add6 100644 --- a/src/Systems/static.cxx +++ b/src/Systems/static.cxx @@ -15,6 +15,9 @@ #include
#include
#include +#include +#include +#include #include @@ -22,7 +25,7 @@ StaticSystem::StaticSystem ( SGPropertyNode *node ) : _name(node->getStringValue("name", "static")), _num(node->getIntValue("number", 0)), - _tau(node->getDoubleValue("tau", 1)), + _tau(SGMiscd::max(.0,node->getDoubleValue("tau", 1))), _error_factor(node->getDoubleValue("error-factor", 0)), _type(node->getIntValue("type", 0)) { @@ -76,7 +79,7 @@ StaticSystem::update (double dt) double beta; double alpha; double mach; - double trat = _tau ? dt/_tau : 100; + double trat = _tau ? dt/_tau : SGLimitsd::max(); double proj_factor = 0; double pt; @@ -100,7 +103,9 @@ StaticSystem::update (double dt) p_new = p_new + qc_part; } - _pressure_out_node->setDoubleValue(fgGetLowPass(p, p_new, trat)); //setting new pressure in static system + _pressure_out_node->setDoubleValue( + _tau > .0 ? fgGetLowPass(p, p_new, trat) : p_new + ); //setting new pressure in static system } }