X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FSystems%2Felectrical.cxx;h=947df0aae21df1be1bcdc2bc84d060b7ce642e92;hb=6bf47cd248ed388e6a4dd3ffa2d00977b00b62fb;hp=a5e5de7f6f53da1af0c3cc463bf9d3f5ed67ece5;hpb=00d5d7c1b3e04a1358cf848afb0f7a4945e31394;p=flightgear.git diff --git a/src/Systems/electrical.cxx b/src/Systems/electrical.cxx index a5e5de7f6..947df0aae 100644 --- a/src/Systems/electrical.cxx +++ b/src/Systems/electrical.cxx @@ -16,13 +16,21 @@ // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. // // $Id$ +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include #include #include +#include +#include #include
#include
@@ -112,7 +120,7 @@ float FGElectricalSupplier::apply_load( float amps, float dt ) { float available_amps = ideal_amps; return available_amps - amps; } else { - SG_LOG( SG_ALL, SG_ALERT, "unknown supplier type" ); + SG_LOG( SG_SYSTEMS, SG_ALERT, "unknown supplier type" ); } return 0.0; @@ -144,7 +152,7 @@ float FGElectricalSupplier::get_output_volts() { // cout << "external amps = " << 0.0 << endl; return ideal_volts; } else { - SG_LOG( SG_ALL, SG_ALERT, "unknown supplier type" ); + SG_LOG( SG_SYSTEMS, SG_ALERT, "unknown supplier type" ); } return 0.0; @@ -173,7 +181,7 @@ float FGElectricalSupplier::get_output_amps() { // cout << "external amps = " << 0.0 << endl; return ideal_amps; } else { - SG_LOG( SG_ALL, SG_ALERT, "unknown supplier type" ); + SG_LOG( SG_SYSTEMS, SG_ALERT, "unknown supplier type" ); } return 0.0; @@ -267,12 +275,12 @@ FGElectricalConnector::FGElectricalConnector ( SGPropertyNode *node, } else if ( s->get_kind() == FG_BUS ) { s->add_output( this ); } else { - SG_LOG( SG_ALL, SG_ALERT, + SG_LOG( SG_SYSTEMS, SG_ALERT, "Attempt to connect to something that can't provide an output: " << child->getStringValue() ); } } else { - SG_LOG( SG_ALL, SG_ALERT, "Can't find named source: " + SG_LOG( SG_SYSTEMS, SG_ALERT, "Can't find named source: " << child->getStringValue() ); } } else if ( cname == "output" ) { @@ -288,12 +296,12 @@ FGElectricalConnector::FGElectricalConnector ( SGPropertyNode *node, == FGElectricalSupplier::FG_BATTERY ) { s->add_output( this ); } else { - SG_LOG( SG_ALL, SG_ALERT, + SG_LOG( SG_SYSTEMS, SG_ALERT, "Attempt to connect to something that can't provide an input: " << child->getStringValue() ); } } else { - SG_LOG( SG_ALL, SG_ALERT, "Can't find named source: " + SG_LOG( SG_SYSTEMS, SG_ALERT, "Can't find named source: " << child->getStringValue() ); } } else if ( cname == "switch" ) { @@ -330,30 +338,11 @@ bool FGElectricalConnector::get_state() { FGElectricalSystem::FGElectricalSystem ( SGPropertyNode *node ) : - name("electrical"), - num(0), - path(""), + name(node->getStringValue("name", "electrical")), + num(node->getIntValue("number", 0)), + path(node->getStringValue("path")), enabled(false) { - 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 == "path" ) { - path = cval; - } else { - SG_LOG( SG_SYSTEMS, SG_WARN, - "Error in electrical system config logic" ); - if ( name.length() ) { - SG_LOG( SG_SYSTEMS, SG_WARN, "Section = " << name ); - } - } - } } @@ -362,7 +351,7 @@ FGElectricalSystem::~FGElectricalSystem () { void FGElectricalSystem::init () { - config_props = new SGPropertyNode; + SGPropertyNode_ptr config_props = new SGPropertyNode; _volts_out = fgGetNode( "/systems/electrical/volts", true ); _amps_out = fgGetNode( "/systems/electrical/amps", true ); @@ -374,7 +363,7 @@ void FGElectricalSystem::init () { SGPropertyNode *path_n = fgGetNode("/sim/systems/electrical/path"); if ( path_n ) { if ( path.length() ) { - SG_LOG( SG_ALL, SG_INFO, + SG_LOG( SG_SYSTEMS, SG_INFO, "NOTICE: System manager configuration specifies an " << "electrical system: " << path << " but it is " << "being overridden by the one specified in the -set.xml " << @@ -385,34 +374,33 @@ void FGElectricalSystem::init () { } if ( path.length() ) { - SGPath config( globals->get_fg_root() ); - config.append( path ); - + SGPath config = globals->resolve_aircraft_path(path); + // load an obsolete xml configuration - SG_LOG( SG_ALL, SG_ALERT, - "Reading xml electrical system model from " + SG_LOG( SG_SYSTEMS, SG_WARN, + "Reading deprecated xml electrical system model from\n " << config.str() ); try { readProperties( config.str(), config_props ); - if ( build() ) { + if ( build(config_props) ) { enabled = true; } else { - SG_LOG( SG_ALL, SG_ALERT, + SG_LOG( SG_SYSTEMS, SG_ALERT, "Detected a logic error in the electrical system "); - SG_LOG( SG_ALL, SG_ALERT, + SG_LOG( SG_SYSTEMS, SG_ALERT, "specification file. See earlier errors for " ); - SG_LOG( SG_ALL, SG_ALERT, + SG_LOG( SG_SYSTEMS, SG_ALERT, "details."); exit(-1); } - } catch (const sg_exception& exc) { - SG_LOG( SG_ALL, SG_ALERT, + } catch (const sg_exception&) { + SG_LOG( SG_SYSTEMS, SG_ALERT, "Failed to load electrical system model: " << config.str() ); } } else { - SG_LOG( SG_ALL, SG_INFO, + SG_LOG( SG_SYSTEMS, SG_INFO, "No xml-based electrical model specified for this model!"); } @@ -420,7 +408,6 @@ void FGElectricalSystem::init () { _amps_out->setDoubleValue(0); } - delete config_props; } @@ -469,7 +456,8 @@ void FGElectricalSystem::update (double dt) { " " ); if ( node->apply_load( load, dt ) < 0.0 ) { - cout << "Error drawing more current than available!" << endl; + SG_LOG(SG_SYSTEMS, SG_ALERT, + "Error drawing more current than available!"); } } } @@ -488,7 +476,8 @@ void FGElectricalSystem::update (double dt) { " " ); if ( node->apply_load( load, dt ) < 0.0 ) { - cout << "Error drawing more current than available!" << endl; + SG_LOG(SG_SYSTEMS, SG_ALERT, + "Error drawing more current than available!"); } } } @@ -508,7 +497,8 @@ void FGElectricalSystem::update (double dt) { // cout << "battery load = " << load << endl; if ( node->apply_load( load, dt ) < 0.0 ) { - cout << "Error drawing more current than available!" << endl; + SG_LOG(SG_SYSTEMS, SG_ALERT, + "Error drawing more current than available!"); } } } @@ -564,7 +554,7 @@ void FGElectricalSystem::update (double dt) { } -bool FGElectricalSystem::build () { +bool FGElectricalSystem::build (SGPropertyNode* config_props) { SGPropertyNode *node; int i; @@ -590,7 +580,7 @@ bool FGElectricalSystem::build () { new FGElectricalConnector( node, this ); connectors.push_back( c ); } else { - SG_LOG( SG_ALL, SG_ALERT, "Unknown component type specified: " + SG_LOG( SG_SYSTEMS, SG_ALERT, "Unknown component type specified: " << name ); return false; } @@ -648,7 +638,7 @@ float FGElectricalSystem::propagate( FGElectricalComponent *node, double dt, } // cout << s << " input_volts = " << volts << endl; } else { - SG_LOG( SG_ALL, SG_ALERT, "unkown node type" ); + SG_LOG( SG_SYSTEMS, SG_ALERT, "unknown node type" ); } int i;