1
0
Fork 0

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.
This commit is contained in:
James Turner 2013-05-11 18:35:54 +01:00
parent 06dd219a83
commit 915626afa7
3 changed files with 11 additions and 9 deletions

View file

@ -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 );
}

View file

@ -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;

View file

@ -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 ) );