From: James Turner Date: Sat, 11 May 2013 17:35:54 +0000 (+0100) Subject: Altimeter node tweaks. X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=915626afa710d385c51e16304cb3e7fac499f070;p=flightgear.git Altimeter node tweaks. Fix the default name based on whether a regular altimeter or encoder was requested, and delay creating the node until bind(), ctor is too early. --- diff --git a/src/Instrumentation/altimeter.cxx b/src/Instrumentation/altimeter.cxx index 700a48c50..a691f1e90 100644 --- a/src/Instrumentation/altimeter.cxx +++ b/src/Instrumentation/altimeter.cxx @@ -30,12 +30,9 @@ #include "altimeter.hxx" -Altimeter::Altimeter ( SGPropertyNode *node, double quantum ) - : _rootNode( - fgGetNode("/instrumentation",true)-> - getChild( node->getStringValue("name", "altimeter"), - node->getIntValue("number", 0), - true)), +Altimeter::Altimeter ( SGPropertyNode *node, const std::string& aDefaultName, double quantum ) : + _name(node->getStringValue("name", aDefaultName.c_str())), + _num(node->getIntValue("number", 0)), _static_pressure(node->getStringValue("static-pressure", "/systems/static/pressure-inhg")), _tau(node->getDoubleValue("tau", 0.1)), _quantum(node->getDoubleValue("quantum", quantum)), @@ -106,6 +103,9 @@ Altimeter::reinit () 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 ); } diff --git a/src/Instrumentation/altimeter.hxx b/src/Instrumentation/altimeter.hxx index d45a1249e..38c6ba63f 100644 --- a/src/Instrumentation/altimeter.hxx +++ b/src/Instrumentation/altimeter.hxx @@ -32,7 +32,7 @@ class Altimeter : public SGSubsystem public: - Altimeter (SGPropertyNode *node, double quantum = 0); + Altimeter (SGPropertyNode *node, const std::string& aDefaultName, double quantum = 0); virtual ~Altimeter (); virtual void init (); @@ -47,6 +47,8 @@ public: void setSettingHPa( double value ); private: + std::string _name; + int _num; SGPropertyNode_ptr _rootNode; string _static_pressure; double _tau; diff --git a/src/Instrumentation/instrument_mgr.cxx b/src/Instrumentation/instrument_mgr.cxx index 2a707448c..ec8aa69ec 100644 --- a/src/Instrumentation/instrument_mgr.cxx +++ b/src/Instrumentation/instrument_mgr.cxx @@ -127,7 +127,7 @@ bool FGInstrumentMgr::build (SGPropertyNode* config_props) set_subsystem( id, new AirspeedIndicator( node ) ); } else if ( name == "altimeter" ) { - set_subsystem( id, new Altimeter( node ) ); + set_subsystem( id, new Altimeter( node, "altimeter" ) ); } else if ( name == "attitude-indicator" ) { set_subsystem( id, new AttitudeIndicator( node ) ); @@ -139,7 +139,7 @@ bool FGInstrumentMgr::build (SGPropertyNode* config_props) set_subsystem( id, new DME( node ), 1.0 ); } else if ( name == "encoder" ) { - set_subsystem( id, new Altimeter( node ), 0.15 ); + set_subsystem( id, new Altimeter( node, "encoder" ), 0.15 ); } else if ( name == "gps" ) { set_subsystem( id, new GPS( node ) );