X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FInstrumentation%2Fheading_indicator.cxx;h=b92d99086aec97227167c14920255273dce1d5ec;hb=43b300fe46d8013a90009ec8e1a923ec53a396b5;hp=8878e3ba13c79f25f311a3fb33d4a1478fbe10aa;hpb=0ab2a40c2a2c75d117744f63a1bd74ccc7ea3a4e;p=flightgear.git diff --git a/src/Instrumentation/heading_indicator.cxx b/src/Instrumentation/heading_indicator.cxx index 8878e3ba1..b92d99086 100644 --- a/src/Instrumentation/heading_indicator.cxx +++ b/src/Instrumentation/heading_indicator.cxx @@ -3,6 +3,11 @@ // // This file is in the Public Domain and comes with no warranty. +#include +#include +#include +#include + #include "heading_indicator.hxx" #include
#include
@@ -10,31 +15,9 @@ HeadingIndicator::HeadingIndicator ( SGPropertyNode *node ) : - name("heading-indicator"), - num(0), - vacuum_system("/systems/vacuum") -{ - int i; - for ( i = 0; i < node->nChildren(); ++i ) { - SGPropertyNode *child = node->getChild(i); - string cname = child->getName(); - string cval = child->getStringValue(); - if ( cname == "name" ) { - name = cval; - } else if ( cname == "number" ) { - num = child->getIntValue(); - } else if ( cname == "vacuum-system" ) { - vacuum_system = cval; - } else { - SG_LOG( SG_INSTR, SG_WARN, "Error in heading-indicator config logic" ); - if ( name.length() ) { - SG_LOG( SG_INSTR, SG_WARN, "Section = " << name ); - } - } - } -} - -HeadingIndicator::HeadingIndicator () + _name(node->getStringValue("name", "heading-indicator")), + _num(node->getIntValue("number", 0)), + _suction(node->getStringValue("suction", "/systems/vacuum/suction-inhg")) { } @@ -46,40 +29,41 @@ void HeadingIndicator::init () { string branch; - branch = "/instrumentation/" + name; - vacuum_system += "/suction-inhg"; + branch = "/instrumentation/" + _name; - SGPropertyNode *node = fgGetNode(branch.c_str(), num, true ); + SGPropertyNode *node = fgGetNode(branch.c_str(), _num, true ); _offset_node = node->getChild("offset-deg", 0, true); _heading_in_node = fgGetNode("/orientation/heading-deg", true); - _suction_node = fgGetNode(vacuum_system.c_str(), true); + _suction_node = fgGetNode(_suction.c_str(), true); _heading_out_node = node->getChild("indicated-heading-deg", 0, true); _last_heading_deg = (_heading_in_node->getDoubleValue() + _offset_node->getDoubleValue()); - - //_serviceable_node->setBoolValue(true); } void HeadingIndicator::bind () { + std::ostringstream temp; string branch; - branch = "/instrumentation/" + name + "/serviceable"; - fgTie(branch.c_str(), + temp << _num; + branch = "/instrumentation/" + _name + "[" + temp.str() + "]"; + + fgTie((branch + "/serviceable").c_str(), &_gyro, &Gyro::is_serviceable, &Gyro::set_serviceable); - branch = "/instrumentation/" + name + "/spin"; - fgTie(branch.c_str(), + fgTie((branch + "/spin").c_str(), &_gyro, &Gyro::get_spin_norm, &Gyro::set_spin_norm); } void HeadingIndicator::unbind () { + std::ostringstream temp; string branch; - branch = "/instrumentation/" + name + "/serviceable"; - fgUntie(branch.c_str()); - branch = "/instrumentation/" + name + "/spin"; - fgUntie(branch.c_str()); + temp << _num; + branch = "/instrumentation/" + _name + "[" + temp.str() + "]"; + + fgUntie((branch + "/serviceable").c_str()); + fgUntie((branch + "/spin").c_str()); } void