34 _name(node->getStringValue(
"name", aDefaultName.c_str())),
35 _num(node->getIntValue(
"number", 0)),
36 _static_pressure(node->getStringValue(
"static-pressure",
"/systems/static/pressure-inhg")),
37 _tau(node->getDoubleValue(
"tau", 0.1)),
38 _quantum(node->getDoubleValue(
"quantum", quantum)),
39 _settingInHg(29.921260)
43 _encodeModeC = node->getBoolValue(
"encode-mode-c",
true);
44 _encodeModeS = node->getBoolValue(
"encode-mode-s",
false);
46 _tiedProperties.setRoot( _rootNode );
80 _pressure_node =
fgGetNode(_static_pressure,
true);
81 _serviceable_node = _rootNode->getChild(
"serviceable", 0,
true);
82 _press_alt_node = _rootNode->getChild(
"pressure-alt-ft", 0,
true);
84 _mode_c_node = _rootNode->getChild(
"mode-c-alt-ft", 0,
true);
88 _mode_s_node = _rootNode->getChild(
"mode-s-alt-ft", 0,
true);
91 _altitude_node = _rootNode->getChild(
"indicated-altitude-ft", 0,
true);
122 if (_serviceable_node->getBoolValue()) {
123 double trat = _tau > 0 ? dt/_tau : 100;
124 double pressure = _pressure_node->getDoubleValue();
125 double press_alt = _press_alt_node->getDoubleValue();
127 _raw_PA =
fgGetLowPass(_raw_PA, _altimeter.press_alt_ft(pressure), trat);
130 _mode_c_node->setDoubleValue(100 * SGMiscd::round(_raw_PA/100));
134 _mode_s_node->setDoubleValue(10 * SGMiscd::round(_raw_PA/10));
137 _kollsman =
fgGetLowPass(_kollsman, _altimeter.kollsman_ft(_settingInHg), trat);
139 press_alt = _quantum * SGMiscd::round(_raw_PA/_quantum);
142 _press_alt_node->setDoubleValue(press_alt);
143 _altitude_node->setDoubleValue(press_alt - _kollsman);