]> git.mxchange.org Git - flightgear.git/commitdiff
Latest updates from the JSBSim project.
authorcurt <curt>
Tue, 30 Oct 2001 02:51:13 +0000 (02:51 +0000)
committercurt <curt>
Tue, 30 Oct 2001 02:51:13 +0000 (02:51 +0000)
src/FDM/JSBSim/FGDefs.h
src/FDM/JSBSim/FGEngine.cpp
src/FDM/JSBSim/FGEngine.h
src/FDM/JSBSim/FGFDMExec.cpp
src/FDM/JSBSim/FGOutput.cpp
src/FDM/JSBSim/FGState.cpp
src/FDM/JSBSim/FGState.h

index 5344ef5251871c153ce2270955732f65b31ae2d6..f125126875b1860f0628ee033ae65ff862f94e83 100644 (file)
@@ -95,6 +95,8 @@ enum eParam {
   FG_THROTTLE_POS,\r
   FG_MIXTURE_CMD,\r
   FG_MIXTURE_POS,\r
+  FG_MAGNETO_CMD,\r
+  FG_STARTER_CMD,\r
   FG_ACTIVE_ENGINE,\r
   FG_HOVERB,\r
   FG_PITCH_TRIM_CMD,\r
index 8488c4fbf4a653104832e5dec9fcb533570810b4..6b0fc8b7ad8854226375b8535f81e7ddc1882e06 100644 (file)
@@ -77,12 +77,12 @@ FGEngine::FGEngine(FGFDMExec* exec) {
   Auxiliary   = FDMExec->GetAuxiliary();\r
   Output      = FDMExec->GetOutput();\r
 \r
-  Mixture = 1.0;               // FIXME: get actual value
+  Mixture = 1.0;               // FIXME: get actual value\r
 \r
   Thrust = PctPower = 0.0;\r
   Starved = Flameout = false;\r
   Running = false;\r
-  Cranking = false;\r
+  Cranking = Starter = false;\r
 \r
   if (debug_lvl & 2) cout << "Instantiated: FGEngine" << endl;\r
   TrimMode = false;\r
index d042d192baa252f2ae56bc7f8ab1085127f36d8b..62a1c9c0c78d3087d11c6a99c9e2fa912841f12f 100644 (file)
@@ -117,6 +117,8 @@ public:
   virtual float  GetThrottleMax(void) { return MaxThrottle; }\r
   float  GetThrottle(void) { return Throttle; }\r
   float  GetMixture(void) { return Mixture; }\r
+  int    GetMagnetos(void) { return Magnetos; }\r
+  bool    GetStarter(void) { return Starter; }\r
   float  GetThrust(void) { return Thrust; }\r
   bool   GetStarved(void) { return Starved; }\r
   bool   GetFlameout(void) { return Flameout; }\r
index 30a274675b1d728a7f456aec3238df00dd2ef82d..33adae95c67ccdbb6f1916ab4c7ea84e0f5330ae 100644 (file)
@@ -520,10 +520,10 @@ bool FGFDMExec::LoadScript(string script)
                     << iterConditions->Comparison[i] << " "
                     << iterConditions->TestValue[i] << ")";
       }
-      cout << ") then {" << endl;
+      cout << ") then {";
 
       for (i=0; i<iterConditions->SetValue.size(); i++) {
-        cout << "      set" << State->paramdef[iterConditions->SetParam[i]]
+        cout << endl << "      set" << State->paramdef[iterConditions->SetParam[i]]
              << "to " << iterConditions->SetValue[i];
 
         switch (iterConditions->Type[i]) {
index b5fd9e57a1aaea5c02a075d02fa051d1e87cfb96..b5e1df66537a40fd4a796b98d5d6c2a949db05b9 100644 (file)
@@ -151,6 +151,7 @@ void FGOutput::DelimitedOutput(string fname)
     if (SubSystems & FGAircraft::ssAerosurfaces) {
       outstream << ", ";
       outstream << "Throttle, ";
+      outstream << "Mixture, ";
       outstream << "Aileron Cmd, ";
       outstream << "Elevator Cmd, ";
       outstream << "Rudder Cmd, ";
@@ -226,6 +227,7 @@ void FGOutput::DelimitedOutput(string fname)
   if (SubSystems & FGAircraft::ssAerosurfaces) {
     outstream << ", ";
     outstream << FCS->GetThrottlePos(0) << ", ";
+    outstream << FCS->GetMixturePos(0) << ", ";
     outstream << FCS->GetDaCmd() << ", ";
     outstream << FCS->GetDeCmd() << ", ";
     outstream << FCS->GetDrCmd() << ", ";
index dc05a21bf3c7ba6f016e6eb7c2828f02d6ff2133..19bb8edc7055e3ae5b8429165750a6eb758c6343 100644 (file)
@@ -97,6 +97,7 @@ FGState::FGState(FGFDMExec* fdex) : mTb2l(3,3),
   Atmosphere   = FDMExec->GetAtmosphere();
   Aerodynamics = FDMExec->GetAerodynamics();
   GroundReactions = FDMExec->GetGroundReactions();
+  Propulsion      = FDMExec->GetPropulsion();
 
   RegisterVariable(FG_TIME,           " time "           );
   RegisterVariable(FG_QBAR,           " qbar "           );
@@ -132,6 +133,10 @@ FGState::FGState(FGFDMExec* fdex) : mTb2l(3,3),
   RegisterVariable(FG_FLAPS_CMD,      " flaps_cmd "      );
   RegisterVariable(FG_THROTTLE_CMD,   " throttle_cmd "   );
   RegisterVariable(FG_THROTTLE_POS,   " throttle_pos "   );
+  RegisterVariable(FG_MIXTURE_CMD,    " mixture_cmd "   );
+  RegisterVariable(FG_MIXTURE_POS,    " mixture_pos "   );
+  RegisterVariable(FG_MAGNETO_CMD,    " magneto_cmd "   );
+  RegisterVariable(FG_STARTER_CMD,    " starter_cmd "   );
   RegisterVariable(FG_ACTIVE_ENGINE,  " active_engine "  );
   RegisterVariable(FG_HOVERB,         " height/span "    );
   RegisterVariable(FG_PITCH_TRIM_CMD, " pitch_trim_cmd " );
@@ -258,12 +263,29 @@ float FGState::GetParameter(eParam val_idx) {
   case FG_THROTTLE_POS:
     if (ActiveEngine < 0) return FCS->GetThrottlePos(0);
     else return FCS->GetThrottlePos(ActiveEngine);
+  case FG_MAGNETO_CMD:
+    if (ActiveEngine < 0) return Propulsion->GetEngine(0)->GetMagnetos();
+    else return Propulsion->GetEngine(ActiveEngine)->GetMagnetos();
+  case FG_STARTER_CMD:
+    if (ActiveEngine < 0) {
+      if (Propulsion->GetEngine(0)->GetStarter()) return 1.0;
+      else return 0.0;
+    } else {
+      if (Propulsion->GetEngine(ActiveEngine)->GetStarter()) return 1.0;
+      else return 0.0;
+    }
+  case FG_MIXTURE_CMD:
+    if (ActiveEngine < 0) return FCS->GetMixtureCmd(0);
+    else return FCS->GetMixtureCmd(ActiveEngine);
+  case FG_MIXTURE_POS:
+    if (ActiveEngine < 0) return FCS->GetMixturePos(0);
+    else return FCS->GetMixturePos(ActiveEngine);
   case FG_HOVERB:
     return Position->GetHOverB();
   case FG_PITCH_TRIM_CMD:
     return FCS->GetPitchTrimCmd();
   default:
-    cerr << "FGState::GetParameter() - No handler for parameter " << val_idx << endl;
+    cerr << "FGState::GetParameter() - No handler for parameter " << paramdef[val_idx] << endl;
     return 0.0;
   }
   return 0;
@@ -306,6 +328,9 @@ void FGState::SetParameter(eParam val_idx, float val) {
   case FG_THROTTLE_POS:
     FCS->SetThrottlePos(ActiveEngine,val);
     break;
+  case FG_MIXTURE_POS:
+    FCS->SetMixturePos(ActiveEngine,val);
+    break;
 
   case FG_ELEVATOR_CMD:
     FCS->SetDeCmd(val);
@@ -328,7 +353,18 @@ void FGState::SetParameter(eParam val_idx, float val) {
   case FG_THROTTLE_CMD:
     FCS->SetThrottleCmd(ActiveEngine,val);
     break;
-
+  case FG_MIXTURE_CMD:
+    FCS->SetMixtureCmd(ActiveEngine,val);
+    break;
+  case FG_MAGNETO_CMD:
+    Propulsion->GetEngine(ActiveEngine)->SetMagnetos(val); // need to account for -1
+    break;
+  case FG_STARTER_CMD:
+    if      (val < 0.001) 
+      Propulsion->GetEngine(ActiveEngine)->SetStarter(false); // need to account for -1
+    else if (val >=  0.001)
+      Propulsion->GetEngine(ActiveEngine)->SetStarter(true); // need to account for -1
+    break;
   case FG_ACTIVE_ENGINE:
     ActiveEngine = (int)val;
     break;
index 6e24822b1318916cdd25491ce91ebd745e268b82..c9ab9d48ca2789ad5657b4f671dd5f696a0cd529 100644 (file)
@@ -83,6 +83,7 @@ class FGOutput;
 class FGPosition;
 class FGFDMExec;
 class FGGroundReactions;
+class FGPropulsion;
 
 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 COMMENTS, REFERENCES, and NOTES [use "class documentation" below for API docs]
@@ -331,6 +332,7 @@ private:
   FGFCS* FCS;
   FGAerodynamics* Aerodynamics;
   FGGroundReactions* GroundReactions;
+  FGPropulsion* Propulsion;
 
   typedef map<string, eParam> CoeffMap;
   CoeffMap coeffdef;
@@ -350,6 +352,7 @@ private:
 #include "FGOutput.h"
 #include "FGAircraft.h"
 #include "FGGroundReactions.h"
+#include "FGPropulsion.h"
 
 #endif