LCOV - code coverage report
Current view: top level - models - FGFCS.h (source / functions) Hit Total Coverage
Test: JSBSim-Coverage-Statistics Lines: 31 50 62.0 %
Date: 2010-08-24 Functions: 30 49 61.2 %
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 0 0 -

           Branch data     Line data    Source code
       1                 :            : /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
       2                 :            : 
       3                 :            :  Header:       FGGFCS.h
       4                 :            :  Author:       Jon S. Berndt
       5                 :            :  Date started: 12/12/98
       6                 :            : 
       7                 :            :  ------------- Copyright (C) 1999  Jon S. Berndt (jon@jsbsim.org) -------------
       8                 :            : 
       9                 :            :  This program is free software; you can redistribute it and/or modify it under
      10                 :            :  the terms of the GNU Lesser General Public License as published by the Free Software
      11                 :            :  Foundation; either version 2 of the License, or (at your option) any later
      12                 :            :  version.
      13                 :            : 
      14                 :            :  This program is distributed in the hope that it will be useful, but WITHOUT
      15                 :            :  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
      16                 :            :  FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more
      17                 :            :  details.
      18                 :            : 
      19                 :            :  You should have received a copy of the GNU Lesser General Public License along with
      20                 :            :  this program; if not, write to the Free Software Foundation, Inc., 59 Temple
      21                 :            :  Place - Suite 330, Boston, MA  02111-1307, USA.
      22                 :            : 
      23                 :            :  Further information about the GNU Lesser General Public License can also be found on
      24                 :            :  the world wide web at http://www.gnu.org.
      25                 :            : 
      26                 :            : HISTORY
      27                 :            : --------------------------------------------------------------------------------
      28                 :            : 12/12/98   JSB   Created
      29                 :            : 
      30                 :            : %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      31                 :            : SENTRY
      32                 :            : %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
      33                 :            : 
      34                 :            : #ifndef FGFCS_H
      35                 :            : #define FGFCS_H
      36                 :            : 
      37                 :            : /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      38                 :            : INCLUDES
      39                 :            : %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
      40                 :            : 
      41                 :            : #include <iosfwd>
      42                 :            : #include <vector>
      43                 :            : 
      44                 :            : #include <string>
      45                 :            : #include "models/flight_control/FGFCSComponent.h"
      46                 :            : #include "models/FGModel.h"
      47                 :            : #include "models/FGLGear.h"
      48                 :            : #include "input_output/FGXMLFileRead.h"
      49                 :            : 
      50                 :            : /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      51                 :            : DEFINITIONS
      52                 :            : %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
      53                 :            : 
      54                 :            : #define ID_FCS "$Id: FGFCS.h,v 1.29 2010/08/21 22:56:11 jberndt Exp $"
      55                 :            : 
      56                 :            : /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      57                 :            : FORWARD DECLARATIONS
      58                 :            : %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
      59                 :            : 
      60                 :            : namespace JSBSim {
      61                 :            : 
      62                 :            : typedef enum { ofRad=0, ofDeg, ofNorm, ofMag , NForms} OutputForm;
      63                 :            : 
      64                 :            : /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      65                 :            : CLASS DOCUMENTATION
      66                 :            : %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
      67                 :            : 
      68                 :            : /** Encapsulates the Flight Control System (FCS) functionality.
      69                 :            :     This class also encapsulates the identical "system" and "autopilot" capability.
      70                 :            :     FGFCS owns and contains the list of FGFCSComponents
      71                 :            :     that define a system or systems for the modeled aircraft. The config file
      72                 :            :     for the aircraft contains a description of the control path that starts at
      73                 :            :     an input or command and ends at an effector, e.g. an aerosurface. The FCS
      74                 :            :     components which comprise the control laws for an axis are defined
      75                 :            :     sequentially in the configuration file. For instance, for the X-15:
      76                 :            : 
      77                 :            :     @code
      78                 :            :     <flight_control name="X-15 SAS">
      79                 :            :       <channel>
      80                 :            :         <summer name="Pitch Trim Sum">
      81                 :            :            <input> fcs/elevator-cmd-norm </input>
      82                 :            :            <input> fcs/pitch-trim-cmd-norm </input>
      83                 :            :            <clipto>
      84                 :            :              <min>-1</min>
      85                 :            :              <max>1</max>
      86                 :            :            </clipto>
      87                 :            :         </summer>
      88                 :            : 
      89                 :            :         <aerosurface_scale name="Pitch Command Scale">
      90                 :            :           <input> fcs/pitch-trim-sum </input>
      91                 :            :           <range>
      92                 :            :             <min> -50 </min>
      93                 :            :             <max>  50 </max>
      94                 :            :           </range>
      95                 :            :         </aerosurface_scale>
      96                 :            : 
      97                 :            :         ... etc.
      98                 :            :     @endcode
      99                 :            : 
     100                 :            :     In the above case we can see the first few components of the pitch channel
     101                 :            :     defined. The input to the first component (a summer), as can be seen in the "Pitch trim
     102                 :            :     sum" component, is really the sum of two parameters: elevator command (from
     103                 :            :     the stick - a pilot input), and pitch trim.
     104                 :            :     The next component created is an aerosurface scale component - a type of
     105                 :            :     gain (see the LoadFCS() method for insight on how the various types of
     106                 :            :     components map into the actual component classes).  This continues until the
     107                 :            :     final component for an axis when the
     108                 :            :     \<output> element is usually used to specify where the output is supposed to go. See the
     109                 :            :     individual components for more information on how they are mechanized.
     110                 :            : 
     111                 :            :     Another option for the flight controls portion of the config file is that in
     112                 :            :     addition to using the "NAME" attribute in,
     113                 :            : 
     114                 :            :     @code
     115                 :            :     <flight_control name="X-15 SAS">
     116                 :            :     @endcode
     117                 :            : 
     118                 :            :     one can also supply a filename:
     119                 :            : 
     120                 :            :     @code
     121                 :            :     <flight_control name="X-15 SAS" file="X15.xml">
     122                 :            :     </flight_control>
     123                 :            :     @endcode
     124                 :            : 
     125                 :            :     In this case, the FCS would be read in from another file.
     126                 :            : 
     127                 :            :     <h2>Properties</h2>
     128                 :            :     @property fcs/aileron-cmd-norm normalized aileron command
     129                 :            :     @property fcs/elevator-cmd-norm normalized elevator command
     130                 :            :     @property fcs/rudder-cmd-norm
     131                 :            :     @property fcs/steer-cmd-norm
     132                 :            :     @property fcs/flap-cmd-norm
     133                 :            :     @property fcs/speedbrake-cmd-norm
     134                 :            :     @property fcs/spoiler-cmd-norm
     135                 :            :     @property fcs/pitch-trim-cmd-norm
     136                 :            :     @property fcs/roll-trim-cmd-norm
     137                 :            :     @property fcs/yaw-trim-cmd-norm
     138                 :            :     @property gear/gear-cmd-norm
     139                 :            :     @property fcs/left-aileron-pos-rad
     140                 :            :     @property fcs/left-aileron-pos-deg
     141                 :            :     @property fcs/left-aileron-pos-norm
     142                 :            :     @property fcs/mag-left-aileron-pos-rad
     143                 :            :     @property fcs/right-aileron-pos-rad
     144                 :            :     @property fcs/right-aileron-pos-deg
     145                 :            :     @property fcs/right-aileron-pos-norm
     146                 :            :     @property fcs/mag-right-aileron-pos-rad
     147                 :            :     @property fcs/elevator-pos-rad
     148                 :            :     @property fcs/elevator-pos-deg
     149                 :            :     @property fcs/elevator-pos-norm
     150                 :            :     @property fcs/mag-elevator-pos-rad
     151                 :            :     @property fcs/rudder-pos-rad
     152                 :            :     @property fcs/rudder-pos-deg
     153                 :            :     @property fcs/rudder-pos-norm
     154                 :            :     @property fcs/mag-rudder-pos-rad
     155                 :            :     @property fcs/flap-pos-rad
     156                 :            :     @property fcs/flap-pos-deg
     157                 :            :     @property fcs/flap-pos-norm
     158                 :            :     @property fcs/speedbrake-pos-rad
     159                 :            :     @property fcs/speedbrake-pos-deg
     160                 :            :     @property fcs/speedbrake-pos-norm
     161                 :            :     @property fcs/mag-speedbrake-pos-rad
     162                 :            :     @property fcs/spoiler-pos-rad
     163                 :            :     @property fcs/spoiler-pos-deg
     164                 :            :     @property fcs/spoiler-pos-norm
     165                 :            :     @property fcs/mag-spoiler-pos-rad
     166                 :            :     @property fcs/wing-fold-pos-norm
     167                 :            :     @property gear/gear-pos-norm
     168                 :            :     @property gear/tailhook-pos-norm
     169                 :            : 
     170                 :            :     @author Jon S. Berndt
     171                 :            :     @version $Revision: 1.29 $
     172                 :            :     @see FGActuator
     173                 :            :     @see FGDeadBand
     174                 :            :     @see FGFCSFunction
     175                 :            :     @see FGFilter
     176                 :            :     @see FGGain
     177                 :            :     @see FGKinemat
     178                 :            :     @see FGPID
     179                 :            :     @see FGSensor
     180                 :            :     @see FGSummer
     181                 :            :     @see FGSwitch
     182                 :            :     @see FGFCSComponent
     183                 :            :     @see Element
     184                 :            : */
     185                 :            : 
     186                 :            : /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     187                 :            : CLASS DECLARATION
     188                 :            : %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
     189                 :            : 
     190                 :            : class FGFCS : public FGModel, public FGXMLFileRead
     191                 :            : {
     192                 :            : 
     193                 :            : public:
     194                 :            :   /** Constructor
     195                 :            :       @param Executive a pointer to the parent executive object */
     196                 :            :   FGFCS(FGFDMExec*);
     197                 :            :   /// Destructor
     198                 :            :   ~FGFCS();
     199                 :            : 
     200                 :            :   bool InitModel(void);
     201                 :            : 
     202                 :            :   /** Runs the Flight Controls model; called by the Executive
     203                 :            :       @return false if no error */
     204                 :            :   bool Run(void);
     205                 :            : 
     206                 :            :   /// @name Pilot input command retrieval
     207                 :            :   //@{
     208                 :            :   /** Gets the aileron command.
     209                 :            :       @return aileron command in range from -1.0 - 1.0 */
     210                 :          1 :   double GetDaCmd(void) const { return DaCmd; }
     211                 :            : 
     212                 :            :   /** Gets the elevator command.
     213                 :            :       @return elevator command in range from -1.0 - 1.0 */
     214                 :          1 :   double GetDeCmd(void) const { return DeCmd; }
     215                 :            : 
     216                 :            :   /** Gets the rudder command.
     217                 :            :       @return rudder command in range from -1.0 - 1.0 */
     218                 :          1 :   double GetDrCmd(void) const { return DrCmd; }
     219                 :            : 
     220                 :            :   /** Gets the steering command.
     221                 :            :       @return steering command in range from -1.0 - 1.0 */
     222                 :          1 :   double GetDsCmd(void) const { return DsCmd; }
     223                 :            : 
     224                 :            :   /** Gets the flaps command.
     225                 :            :       @return flaps command in range from 0 to 1.0 */
     226                 :          1 :   double GetDfCmd(void) const { return DfCmd; }
     227                 :            : 
     228                 :            :   /** Gets the speedbrake command.
     229                 :            :       @return speedbrake command in range from 0 to 1.0 */
     230                 :          1 :   double GetDsbCmd(void) const { return DsbCmd; }
     231                 :            : 
     232                 :            :   /** Gets the spoiler command.
     233                 :            :       @return spoiler command in range from 0 to 1.0 */
     234                 :          1 :   double GetDspCmd(void) const { return DspCmd; }
     235                 :            : 
     236                 :            :   /** Gets the throttle command.
     237                 :            :       @param engine engine ID number
     238                 :            :       @return throttle command in range from 0 - 1.0 for the given engine */
     239                 :            :   double GetThrottleCmd(int engine) const;
     240                 :            : 
     241                 :            :   /** Gets the mixture command.
     242                 :            :       @param engine engine ID number
     243                 :            :       @return mixture command in range from 0 - 1.0 for the given engine */
     244                 :         12 :   double GetMixtureCmd(int engine) const { return MixtureCmd[engine]; }
     245                 :            : 
     246                 :            :   /** Gets the prop pitch command.
     247                 :            :       @param engine engine ID number
     248                 :            :       @return pitch command in range from 0.0 - 1.0 for the given engine */
     249                 :         12 :   double GetPropAdvanceCmd(int engine) const { return PropAdvanceCmd[engine]; }
     250                 :            : 
     251                 :            :   /** Gets the prop feather command.
     252                 :            :       @param engine engine ID number
     253                 :            :       @return feather command for the given engine (on / off)*/
     254                 :         12 :   bool GetFeatherCmd(int engine) const { return PropFeatherCmd[engine]; }
     255                 :            : 
     256                 :            :   /** Gets the pitch trim command.
     257                 :            :       @return pitch trim command in range from -1.0 to 1.0 */
     258                 :          1 :   double GetPitchTrimCmd(void) const { return PTrimCmd; }
     259                 :            : 
     260                 :            :   /** Gets the rudder trim command.
     261                 :            :       @return rudder trim command in range from -1.0 - 1.0 */
     262                 :          1 :   double GetYawTrimCmd(void) const { return YTrimCmd; }
     263                 :            : 
     264                 :            :   /** Gets the aileron trim command.
     265                 :            :       @return aileron trim command in range from -1.0 - 1.0 */
     266                 :          1 :   double GetRollTrimCmd(void) const { return RTrimCmd; }
     267                 :            : 
     268                 :            :   /** Get the gear extend/retract command. 0 commands gear up, 1 down.
     269                 :            :       defaults to down.
     270                 :            :       @return the current value of the gear extend/retract command*/
     271                 :          1 :   double GetGearCmd(void) const { return GearCmd; }
     272                 :            :   //@}
     273                 :            : 
     274                 :            :   /// @name Aerosurface position retrieval
     275                 :            :   //@{
     276                 :            :   /** Gets the left aileron position.
     277                 :            :       @return aileron position in radians */
     278                 :            :   double GetDaLPos( int form = ofRad )
     279                 :          4 :                          const { return DaLPos[form]; }
     280                 :            : 
     281                 :            :   /// @name Aerosurface position retrieval
     282                 :            :   //@{
     283                 :            :   /** Gets the right aileron position.
     284                 :            :       @return aileron position in radians */
     285                 :            :   double GetDaRPos( int form = ofRad )
     286                 :          4 :                          const { return DaRPos[form]; }
     287                 :            : 
     288                 :            :   /** Gets the elevator position.
     289                 :            :       @return elevator position in radians */
     290                 :            :   double GetDePos( int form = ofRad )
     291                 :          4 :                          const { return DePos[form]; }
     292                 :            : 
     293                 :            :   /** Gets the rudder position.
     294                 :            :       @return rudder position in radians */
     295                 :            :   double GetDrPos( int form = ofRad )
     296                 :          4 :                          const { return DrPos[form]; }
     297                 :            : 
     298                 :            :   /** Gets the speedbrake position.
     299                 :            :       @return speedbrake position in radians */
     300                 :            :   double GetDsbPos( int form = ofRad )
     301                 :          4 :                          const { return DsbPos[form]; }
     302                 :            : 
     303                 :            :   /** Gets the spoiler position.
     304                 :            :       @return spoiler position in radians */
     305                 :            :   double GetDspPos( int form = ofRad )
     306                 :          4 :                          const { return DspPos[form]; }
     307                 :            : 
     308                 :            :   /** Gets the flaps position.
     309                 :            :       @return flaps position in radians */
     310                 :            :   double GetDfPos( int form = ofRad )
     311                 :          3 :                          const { return DfPos[form]; }
     312                 :            : 
     313                 :            :   /** Gets the throttle position.
     314                 :            :       @param engine engine ID number
     315                 :            :       @return throttle position for the given engine in range from 0 - 1.0 */
     316                 :            :   double GetThrottlePos(int engine) const;
     317                 :            : 
     318                 :            :   /** Gets the mixture position.
     319                 :            :       @param engine engine ID number
     320                 :            :       @return mixture position for the given engine in range from 0 - 1.0 */
     321                 :         12 :   double GetMixturePos(int engine) const { return MixturePos[engine]; }
     322                 :            : 
     323                 :            :   /** Gets the steering position.
     324                 :            :       @return steering position in degrees */
     325                 :          0 :   double GetSteerPosDeg(int gear) const { return SteerPosDeg[gear]; }
     326                 :            : 
     327                 :            :   /** Gets the gear position (0 up, 1 down), defaults to down
     328                 :            :       @return gear position (0 up, 1 down) */
     329                 :          1 :   double GetGearPos(void) const { return GearPos; }
     330                 :            : 
     331                 :            :   /** Gets the tailhook position (0 up, 1 down)
     332                 :            :       @return tailhook position (0 up, 1 down) */
     333                 :          1 :   double GetTailhookPos(void) const { return TailhookPos; }
     334                 :            : 
     335                 :            :   /** Gets the wing fold position (0 unfolded, 1 folded)
     336                 :            :       @return wing fold position (0 unfolded, 1 folded) */
     337                 :          1 :   double GetWingFoldPos(void) const { return WingFoldPos; }
     338                 :            : 
     339                 :            :   /** Gets the prop pitch position.
     340                 :            :       @param engine engine ID number
     341                 :            :       @return prop pitch position for the given engine in range from 0 - 1.0 */
     342                 :         12 :   double GetPropAdvance(int engine) const { return PropAdvance[engine]; }
     343                 :            : 
     344                 :            :   /** Gets the prop feather position.
     345                 :            :       @param engine engine ID number
     346                 :            :       @return prop fether for the given engine (on / off)*/
     347                 :         12 :   bool GetPropFeather(int engine) const { return PropFeather[engine]; }
     348                 :            :   //@}
     349                 :            : 
     350                 :            :   /** Retrieves the State object pointer.
     351                 :            :       This is used by the FGFCS-owned components.
     352                 :            :       @return pointer to the State object */
     353                 :            :   FGState* GetState(void) { return State; }
     354                 :            : 
     355                 :            :   /** Retrieves all component names for inclusion in output stream
     356                 :            :       @param delimiter either a tab or comma string depending on output type
     357                 :            :       @return a string containing the descriptive names for all components */
     358                 :            :   std::string GetComponentStrings(const std::string& delimiter);
     359                 :            : 
     360                 :            :   /** Retrieves all component outputs for inclusion in output stream
     361                 :            :       @param delimiter either a tab or comma string depending on output type
     362                 :            :       @return a string containing the numeric values for the current set of
     363                 :            :       component outputs */
     364                 :            :   std::string GetComponentValues(const std::string& delimiter);
     365                 :            : 
     366                 :            :   /// @name Pilot input command setting
     367                 :            :   //@{
     368                 :            :   /** Sets the aileron command
     369                 :            :       @param cmd aileron command */
     370                 :          0 :   void SetDaCmd( double cmd ) { DaCmd = cmd; }
     371                 :            : 
     372                 :            :   /** Sets the elevator command
     373                 :            :       @param cmd elevator command in percent*/
     374                 :          0 :   void SetDeCmd(double cmd ) { DeCmd = cmd; }
     375                 :            : 
     376                 :            :   /** Sets the rudder command
     377                 :            :       @param cmd rudder command in percent*/
     378                 :          0 :   void SetDrCmd(double cmd) { DrCmd = cmd; }
     379                 :            : 
     380                 :            :   /** Sets the steering command
     381                 :            :       @param cmd steering command in percent*/
     382                 :          0 :   void SetDsCmd(double cmd) { DsCmd = cmd; }
     383                 :            : 
     384                 :            :   /** Sets the flaps command
     385                 :            :       @param cmd flaps command in percent*/
     386                 :          0 :   void SetDfCmd(double cmd) { DfCmd = cmd; }
     387                 :            : 
     388                 :            :   /** Sets the speedbrake command
     389                 :            :       @param cmd speedbrake command in percent*/
     390                 :          0 :   void SetDsbCmd(double cmd) { DsbCmd = cmd; }
     391                 :            : 
     392                 :            :   /** Sets the spoilers command
     393                 :            :       @param cmd spoilers command in percent*/
     394                 :          0 :   void SetDspCmd(double cmd) { DspCmd = cmd; }
     395                 :            : 
     396                 :            :   /** Sets the pitch trim command
     397                 :            :       @param cmd pitch trim command in percent*/
     398                 :          0 :   void SetPitchTrimCmd(double cmd) { PTrimCmd = cmd; }
     399                 :            : 
     400                 :            :   /** Sets the rudder trim command
     401                 :            :       @param cmd rudder trim command in percent*/
     402                 :          0 :   void SetYawTrimCmd(double cmd) { YTrimCmd = cmd; }
     403                 :            : 
     404                 :            :   /** Sets the aileron trim command
     405                 :            :       @param cmd aileron trim command in percent*/
     406                 :          0 :   void SetRollTrimCmd(double cmd) { RTrimCmd = cmd; }
     407                 :            : 
     408                 :            :   /** Sets the throttle command for the specified engine
     409                 :            :       @param engine engine ID number
     410                 :            :       @param cmd normalized throttle command (0.0 - 1.0)*/
     411                 :            :   void SetThrottleCmd(int engine, double cmd);
     412                 :            : 
     413                 :            :   /** Sets the mixture command for the specified engine
     414                 :            :       @param engine engine ID number
     415                 :            :       @param cmd normalized mixture command (0.0 - 1.0)*/
     416                 :            :   void SetMixtureCmd(int engine, double cmd);
     417                 :            : 
     418                 :            :   /** Set the gear extend/retract command, defaults to down
     419                 :            :       @param gear command 0 for up, 1 for down */
     420                 :          0 :    void SetGearCmd(double gearcmd) { GearCmd = gearcmd; }
     421                 :            : 
     422                 :            :   /** Sets the propeller pitch command for the specified engine
     423                 :            :       @param engine engine ID number
     424                 :            :       @param cmd mixture command in percent (0.0 - 1.0)*/
     425                 :            :   void SetPropAdvanceCmd(int engine, double cmd);
     426                 :            : 
     427                 :            :    /** Sets the propeller feather command for the specified engine
     428                 :            :       @param engine engine ID number
     429                 :            :       @param cmd feather (bool)*/
     430                 :            :   void SetFeatherCmd(int engine, bool cmd);
     431                 :            :   //@}
     432                 :            : 
     433                 :            :   /// @name Aerosurface position setting
     434                 :            :   //@{
     435                 :            :   /** Sets the left aileron position
     436                 :            :       @param cmd left aileron position in radians*/
     437                 :            :   void SetDaLPos( int form , double pos );
     438                 :            : 
     439                 :            :   /** Sets the right aileron position
     440                 :            :       @param cmd right aileron position in radians*/
     441                 :            :   void SetDaRPos( int form , double pos );
     442                 :            : 
     443                 :            :   /** Sets the elevator position
     444                 :            :       @param cmd elevator position in radians*/
     445                 :            :   void SetDePos( int form , double pos );
     446                 :            : 
     447                 :            :   /** Sets the rudder position
     448                 :            :       @param cmd rudder position in radians*/
     449                 :            :   void SetDrPos( int form , double pos );
     450                 :            : 
     451                 :            :    /** Sets the flaps position
     452                 :            :       @param cmd flaps position in radians*/
     453                 :            :   void SetDfPos( int form , double pos );
     454                 :            : 
     455                 :            :   /** Sets the speedbrake position
     456                 :            :       @param cmd speedbrake position in radians*/
     457                 :            :   void SetDsbPos( int form , double pos );
     458                 :            : 
     459                 :            :   /** Sets the spoiler position
     460                 :            :       @param cmd spoiler position in radians*/
     461                 :            :   void SetDspPos( int form , double pos );
     462                 :            : 
     463                 :            :   /** Sets the actual throttle setting for the specified engine
     464                 :            :       @param engine engine ID number
     465                 :            :       @param cmd normalized throttle setting (0.0 - 1.0)*/
     466                 :            :   void SetThrottlePos(int engine, double cmd);
     467                 :            : 
     468                 :            :   /** Sets the actual mixture setting for the specified engine
     469                 :            :       @param engine engine ID number
     470                 :            :       @param cmd normalized mixture setting (0.0 - 1.0)*/
     471                 :            :   void SetMixturePos(int engine, double cmd);
     472                 :            : 
     473                 :            :   /** Sets the steering position
     474                 :            :       @param cmd steering position in degrees*/
     475                 :          0 :   void SetSteerPosDeg(int gear, double pos) { SteerPosDeg[gear] = pos; }
     476                 :            : 
     477                 :            :   /** Set the gear extend/retract position, defaults to down
     478                 :            :       @param gear position 0 up, 1 down       */
     479                 :          0 :    void SetGearPos(double gearpos) { GearPos = gearpos; }
     480                 :            : 
     481                 :            :   /** Set the tailhook position
     482                 :            :       @param tailhook position 0 up, 1 down       */
     483                 :          0 :    void SetTailhookPos(double hookpos) { TailhookPos = hookpos; }
     484                 :            : 
     485                 :            :   /** Set the wing fold position
     486                 :            :       @param wing fold position 0 unfolded, 1 folded  */
     487                 :          0 :    void SetWingFoldPos(double foldpos) { WingFoldPos = foldpos; }
     488                 :            : 
     489                 :            :   /** Sets the actual prop pitch setting for the specified engine
     490                 :            :       @param engine engine ID number
     491                 :            :       @param cmd prop pitch setting in percent (0.0 - 1.0)*/
     492                 :            :   void SetPropAdvance(int engine, double cmd);
     493                 :            : 
     494                 :            :   /** Sets the actual prop feather setting for the specified engine
     495                 :            :       @param engine engine ID number
     496                 :            :       @param cmd prop fether setting (bool)*/
     497                 :            :   void SetPropFeather(int engine, bool cmd);
     498                 :            :   //@}
     499                 :            : 
     500                 :            :     /// @name Landing Gear brakes
     501                 :            :   //@{
     502                 :            :   /** Sets the left brake group
     503                 :            :       @param cmd brake setting in percent (0.0 - 1.0) */
     504                 :          0 :   void SetLBrake(double cmd) {LeftBrake = cmd;}
     505                 :            : 
     506                 :            :   /** Sets the right brake group
     507                 :            :       @param cmd brake setting in percent (0.0 - 1.0) */
     508                 :          0 :   void SetRBrake(double cmd) {RightBrake = cmd;}
     509                 :            : 
     510                 :            :   /** Sets the center brake group
     511                 :            :       @param cmd brake setting in percent (0.0 - 1.0) */
     512                 :          0 :   void SetCBrake(double cmd) {CenterBrake = cmd;}
     513                 :            : 
     514                 :            :   /** Gets the brake for a specified group.
     515                 :            :       @param bg which brakegroup to retrieve the command for
     516                 :            :       @return the brake setting for the supplied brake group argument */
     517                 :            :   double GetBrake(FGLGear::BrakeGroup bg);
     518                 :            : 
     519                 :            :   /** Gets the left brake.
     520                 :            :       @return the left brake setting. */
     521                 :          1 :   double GetLBrake(void) const {return LeftBrake;}
     522                 :            : 
     523                 :            :   /** Gets the right brake.
     524                 :            :       @return the right brake setting. */
     525                 :          1 :   double GetRBrake(void) const {return RightBrake;}
     526                 :            : 
     527                 :            :   /** Gets the center brake.
     528                 :            :       @return the center brake setting. */
     529                 :          1 :   double GetCBrake(void) const {return CenterBrake;}
     530                 :            :   //@}
     531                 :            : 
     532                 :            :   enum SystemType { stFCS, stSystem, stAutoPilot }; 
     533                 :            : 
     534                 :            :   /** Loads the Flight Control System.
     535                 :            :       Load() is called from FGFDMExec.
     536                 :            :       @param el pointer to the Element instance
     537                 :            :       @param systype type of system (FCS, Autopilot, System) 
     538                 :            :       @return true if succesful */
     539                 :            :   bool Load(Element* el, SystemType systype);
     540                 :            : 
     541                 :            :   std::ifstream* FindSystemFile(const std::string& system_filename);
     542                 :            :   std::string FindSystemFullPathname(const std::string& system_filename);
     543                 :            : 
     544                 :            :   void AddThrottle(void);
     545                 :            :   void AddGear(void);
     546                 :            :   double GetDt(void);
     547                 :            : 
     548                 :         43 :   FGPropertyManager* GetPropertyManager(void) { return PropertyManager; }
     549                 :            : 
     550                 :            :   void LateBind(void);
     551                 :            : 
     552                 :            : private:
     553                 :            :   double DaCmd, DeCmd, DrCmd, DsCmd, DfCmd, DsbCmd, DspCmd;
     554                 :            :   double DePos[NForms], DaLPos[NForms], DaRPos[NForms], DrPos[NForms];
     555                 :            :   double DfPos[NForms], DsbPos[NForms], DspPos[NForms];
     556                 :            :   double PTrimCmd, YTrimCmd, RTrimCmd;
     557                 :            :   std::vector <double> ThrottleCmd;
     558                 :            :   std::vector <double> ThrottlePos;
     559                 :            :   std::vector <double> MixtureCmd;
     560                 :            :   std::vector <double> MixturePos;
     561                 :            :   std::vector <double> PropAdvanceCmd;
     562                 :            :   std::vector <double> PropAdvance;
     563                 :            :   std::vector <bool> PropFeatherCmd;
     564                 :            :   std::vector <bool> PropFeather;
     565                 :            :   std::vector <double> SteerPosDeg;
     566                 :            :   double LeftBrake, RightBrake, CenterBrake; // Brake settings
     567                 :            :   double GearCmd,GearPos;
     568                 :            :   double TailhookPos, WingFoldPos;
     569                 :            : 
     570                 :            :   typedef std::vector <FGFCSComponent*> FCSCompVec;
     571                 :            :   FCSCompVec Systems;
     572                 :            :   FCSCompVec FCSComponents;
     573                 :            :   FCSCompVec APComponents;
     574                 :            :   void bind(void);
     575                 :            :   void bindModel(void);
     576                 :            :   void bindThrottle(unsigned int);
     577                 :            :   void Debug(int from);
     578                 :            : };
     579                 :            : }
     580                 :            : 
     581                 :            : #endif
     582                 :            : 

Generated by: LCOV version 1.9