X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FFDM%2FJSBSim%2Fmodels%2FFGFCS.cpp;h=3f659831f5c03944085cc9eb75ae589ed4e657db;hb=642735ab18421db87a07d6841dd720fd4615bfff;hp=368fa90ae4e63fb7067cd876c62a237ebdbdff31;hpb=4b8fde057be1124c516eb89442eae4bfe4a4db5c;p=flightgear.git diff --git a/src/FDM/JSBSim/models/FGFCS.cpp b/src/FDM/JSBSim/models/FGFCS.cpp index 368fa90ae..3f659831f 100644 --- a/src/FDM/JSBSim/models/FGFCS.cpp +++ b/src/FDM/JSBSim/models/FGFCS.cpp @@ -37,13 +37,14 @@ HISTORY INCLUDES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ +#include +#include +#include + #include "FGFCS.h" #include "FGFDMExec.h" #include "FGGroundReactions.h" #include "input_output/FGPropertyManager.h" -#include -#include -#include #include "models/flight_control/FGFilter.h" #include "models/flight_control/FGDeadBand.h" @@ -63,7 +64,7 @@ using namespace std; namespace JSBSim { -static const char *IdSrc = "$Id: FGFCS.cpp,v 1.70 2010/08/21 22:56:11 jberndt Exp $"; +static const char *IdSrc = "$Id: FGFCS.cpp,v 1.77 2011/09/25 14:05:40 bcoconni Exp $"; static const char *IdHdr = ID_FCS; /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -78,7 +79,7 @@ FGFCS::FGFCS(FGFDMExec* fdmex) : FGModel(fdmex) DaCmd = DeCmd = DrCmd = DsCmd = DfCmd = DsbCmd = DspCmd = 0; PTrimCmd = YTrimCmd = RTrimCmd = 0.0; GearCmd = GearPos = 1; // default to gear down - LeftBrake = RightBrake = CenterBrake = 0.0; + BrakePos.resize(FGLGear::bgNumBrakeGroups); TailhookPos = WingFoldPos = 0.0; bind(); @@ -123,8 +124,6 @@ bool FGFCS::InitModel(void) { unsigned int i; - if (!FGModel::InitModel()) return false; - for (i=0; iLateBind(); - for (i=0; iLateBind(); - for (i=0; iLateBind(); -} //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% // Notes: In this logic the default engine commands are set. This is simply a @@ -202,12 +190,12 @@ void FGFCS::LateBind(void) // actually present in the flight_control or autopilot section will override // these simple assignments. -bool FGFCS::Run(void) +bool FGFCS::Run(bool Holding) { unsigned int i; - if (FGModel::Run()) return true; // fast exit if nothing to do - if (FDMExec->Holding()) return false; + if (FGModel::Run(Holding)) return true; // fast exit if nothing to do + if (Holding) return false; RunPreFunctions(); @@ -218,7 +206,7 @@ bool FGFCS::Run(void) // Set the default steering angle for (i=0; iGetGearUnit(i); + FGLGear* gear = FDMExec->GetGroundReactions()->GetGearUnit(i); SteerPosDeg[i] = gear->GetDefaultSteerAngle( GetDsCmd() ); } @@ -677,6 +665,8 @@ bool FGFCS::Load(Element* el, SystemType systype) channel_element = document->FindNextElement("channel"); } + PostLoad(document, PropertyManager); + ResetParser(); return true; @@ -686,17 +676,7 @@ bool FGFCS::Load(Element* el, SystemType systype) double FGFCS::GetBrake(FGLGear::BrakeGroup bg) { - switch (bg) { - case FGLGear::bgLeft: - return LeftBrake; - case FGLGear::bgRight: - return RightBrake; - case FGLGear::bgCenter: - return CenterBrake; - default: - cerr << "GetBrake asked to return a bogus brake value" << endl; - } - return 0.0; + return BrakePos[bg]; } //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -760,7 +740,7 @@ ifstream* FGFCS::FindSystemFile(const string& sysfilename) //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -string FGFCS::GetComponentStrings(const string& delimiter) +string FGFCS::GetComponentStrings(const string& delimiter) const { unsigned int comp; string CompStrings = ""; @@ -797,7 +777,7 @@ string FGFCS::GetComponentStrings(const string& delimiter) //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -string FGFCS::GetComponentValues(const string& delimiter) +string FGFCS::GetComponentValues(const string& delimiter) const { std::ostringstream buf; @@ -851,9 +831,10 @@ void FGFCS::AddThrottle(void) //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -void FGFCS::AddGear(void) +void FGFCS::AddGear(unsigned int NumGear) { - SteerPosDeg.push_back(0.0); + SteerPosDeg.clear(); + for (unsigned int i=0; iGetGearUnit(i)->GetSteerable()) { + if (FDMExec->GetGroundReactions()->GetGearUnit(i)->GetSteerable()) { tmp = CreateIndexedPropertyName("fcs/steer-pos-deg", i); PropertyManager->Tie( tmp.c_str(), this, i, &FGFCS::GetSteerPosDeg, &FGFCS::SetSteerPosDeg); }