]> git.mxchange.org Git - flightgear.git/blobdiff - src/FDM/YASim/PistonEngine.hpp
Use bool where the source and destination variable is bool.
[flightgear.git] / src / FDM / YASim / PistonEngine.hpp
index b8d4cb5651c4b2da96814973d972dce81fcdff70..40d6bac52e5dcbbca5cf98e7d012b74548eb5b8a 100644 (file)
@@ -1,31 +1,35 @@
 #ifndef _PISTONENGINE_HPP
 #define _PISTONENGINE_HPP
 
+#include "Engine.hpp"
+
 namespace yasim {
 
-class PistonEngine {
+class PistonEngine : public Engine {
 public:
+    virtual PistonEngine* isPistonEngine() { return this; }
+
     // Initializes an engine from known "takeoff" parameters.
     PistonEngine(float power, float spd);
     void setTurboParams(float mul, float maxMP);
     void setDisplacement(float d);
     void setCompression(float c);
+    void setWastegate(float norm) { _wastegate = norm; }
+    void setSupercharger(bool hasSuper) { _hasSuper = hasSuper; }
+    void setTurboLag(float lag) { _turboLag = lag; }
 
-    void setThrottle(float throttle);
-    void setStarter(bool starter);
-    void setMagnetos(int magnetos);
-    void setMixture(float mixture);
-    void setBoost(float boost); // fraction of turbo-mul used
-
-    float getMaxPower(); // max sea-level power
-
-    void calc(float pressure, float temp, float speed);
-    bool isRunning();
     bool isCranking();
-    float getTorque();
-    float getFuelFlow();
     float getMP();
     float getEGT();
+    float getMaxPower(); // max sea-level power
+    float getBoost() { return _boostPressure; }
+    float getOilTemp() { return _oilTemp; }
+
+    virtual void calc(float pressure, float temp, float speed);
+    virtual void stabilize();
+    virtual void integrate(float dt);
+    virtual float getTorque();
+    virtual float getFuelFlow();
 
 private:
     // Static configuration:
@@ -35,24 +39,24 @@ private:
     float _f0;       // "ideal" fuel flow at P0/omega0
     float _mixCoeff; // fuel flow per omega at full mixture
     float _turbo;    // (or super-)charger pressure multiplier
-    float _maxMP;    // wastegate setting
+    bool _hasSuper;  // true indicates gear-driven (not turbo)
+    float _turboLag; // turbo lag time in seconds
+    float _charge;   // current {turbo|super}charge multiplier
+    float _chargeTarget;  // eventual charge value
+    float _maxMP;    // static maximum pressure
+    float _wastegate;    // wastegate setting, [0:1]
     float _displacement; // piston stroke volume
     float _compression;  // compression ratio (>1)
 
-    // Runtime settables:
-    float _throttle;
-    bool _starter; // true=engaged, false=disengaged
-    int _magnetos; // 0=off, 1=right, 2=left, 3=both
-    float _mixture;
-    float _boost;
-
     // Runtime state/output:
-    bool _running;
-    bool _cranking;
     float _mp;
     float _torque;
     float _fuelFlow;
     float _egt;
+    float _boostPressure;
+    float _oilTemp;
+    float _oilTempTarget;
+    float _dOilTempdt;
 };
 
 }; // namespace yasim