- _serviceable_node = node->getChild("serviceable", 0, true);
- _setting_node = node->getChild("setting-inhg", 0, true);
- _press_alt_node = node->getChild("pressure-alt-ft", 0, true);
- _mode_c_node = node->getChild("mode-c-alt-ft", 0, true);
- _altitude_node = node->getChild("indicated-altitude-ft", 0, true);
-
- if (_setting_node->getDoubleValue() == 0)
- _setting_node->setDoubleValue(29.921260);
+ _serviceable_node = _rootNode->getChild("serviceable", 0, true);
+ _press_alt_node = _rootNode->getChild("pressure-alt-ft", 0, true);
+ if (_encodeModeC) {
+ _mode_c_node = _rootNode->getChild("mode-c-alt-ft", 0, true);
+ }
+
+ if (_encodeModeS) {
+ _mode_s_node = _rootNode->getChild("mode-s-alt-ft", 0, true);
+ }
+
+ _altitude_node = _rootNode->getChild("indicated-altitude-ft", 0, true);
+
+ reinit();
+}
+
+void
+Altimeter::reinit ()
+{
+ _raw_PA = 0.0;
+ _kollsman = 0.0;
+}
+
+void
+Altimeter::bind()
+{
+ _rootNode = fgGetNode("/instrumentation/" + _name, _num, true );
+ _tiedProperties.setRoot(_rootNode);
+
+ _tiedProperties.Tie("setting-inhg", this, &Altimeter::getSettingInHg, &Altimeter::setSettingInHg );
+ _tiedProperties.Tie("setting-hpa", this, &Altimeter::getSettingHPa, &Altimeter::setSettingHPa );
+}
+
+void
+Altimeter::unbind()
+{
+ _tiedProperties.Untie();