inrange_node(NULL),
signal_quality_norm_node(NULL),
cdi_deflection_node(NULL),
+ cdi_deflection_norm_node(NULL),
cdi_xtrack_error_node(NULL),
cdi_xtrack_hdg_err_node(NULL),
has_gs_node(NULL),
loc_node(NULL),
loc_dist_node(NULL),
gs_deflection_node(NULL),
+ gs_deflection_norm_node(NULL),
gs_rate_of_climb_node(NULL),
gs_dist_node(NULL),
nav_id_node(NULL),
inrange_node = node->getChild("in-range", 0, true);
signal_quality_norm_node = node->getChild("signal-quality-norm", 0, true);
cdi_deflection_node = node->getChild("heading-needle-deflection", 0, true);
+ cdi_deflection_norm_node = node->getChild("heading-needle-deflection-norm", 0, true);
cdi_xtrack_error_node = node->getChild("crosstrack-error-m", 0, true);
cdi_xtrack_hdg_err_node
= node->getChild("crosstrack-heading-error-deg", 0, true);
loc_node = node->getChild("nav-loc", 0, true);
loc_dist_node = node->getChild("nav-distance", 0, true);
gs_deflection_node = node->getChild("gs-needle-deflection", 0, true);
+ gs_deflection_norm_node = node->getChild("gs-needle-deflection-norm", 0, true);
gs_rate_of_climb_node = node->getChild("gs-rate-of-climb", 0, true);
gs_dist_node = node->getChild("gs-distance", 0, true);
nav_id_node = node->getChild("nav-id", 0, true);
{
inrange_node->setBoolValue( false );
cdi_deflection_node->setDoubleValue( 0.0 );
+ cdi_deflection_norm_node->setDoubleValue( 0.0 );
cdi_xtrack_error_node->setDoubleValue( 0.0 );
cdi_xtrack_hdg_err_node->setDoubleValue( 0.0 );
time_to_intercept->setDoubleValue( 0.0 );
gs_deflection_node->setDoubleValue( 0.0 );
+ gs_deflection_norm_node->setDoubleValue(0.0);
+
to_flag_node->setBoolValue( false );
from_flag_node->setBoolValue( false );
}
_cdiCrossTrackErrorM = 0.0;
_toFlag = _fromFlag = false;
_gsNeedleDeflection = 0.0;
+ _gsNeedleDeflectionNorm = 0.0;
inrange_node->setBoolValue(false);
return;
}
//SG_CLAMP_RANGE(deflectionAngle, -0.7, 0.7);
_gsNeedleDeflection = deflectionAngle * 5.0;
_gsNeedleDeflection *= signal_quality_norm;
+ _gsNeedleDeflectionNorm = (deflectionAngle / 0.7) * signal_quality_norm;
+ SG_CLAMP_RANGE(_gsNeedleDeflectionNorm, -1.0, 1.0);
//////////////////////////////////////////////////////////
// Calculate desired rate of climb for intercepting the GS
}
cdi_deflection_node->setDoubleValue(_cdiDeflection);
+ cdi_deflection_norm_node->setDoubleValue(_cdiDeflection * 0.1);
cdi_xtrack_error_node->setDoubleValue(_cdiCrossTrackErrorM);
//////////////////////////////////////////////////////////
if (!gs_serviceable_node->getBoolValue() ) {
_gsNeedleDeflection = 0.0;
+ _gsNeedleDeflectionNorm = 0.0;
}
gs_deflection_node->setDoubleValue(_gsNeedleDeflection);
-
+ gs_deflection_norm_node->setDoubleValue(_gsNeedleDeflectionNorm);
+
last_xtrack_error = _cdiCrossTrackErrorM;
}