1 // controls.hxx -- defines a standard interface to all flight sim controls
3 // Written by Curtis Olson, started May 1997.
5 // Copyright (C) 1997 Curtis L. Olson - curt@infoplane.com
7 // This program is free software; you can redistribute it and/or
8 // modify it under the terms of the GNU General Public License as
9 // published by the Free Software Foundation; either version 2 of the
10 // License, or (at your option) any later version.
12 // This program is distributed in the hope that it will be useful, but
13 // WITHOUT ANY WARRANTY; without even the implied warranty of
14 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 // General Public License for more details.
17 // You should have received a copy of the GNU General Public License
18 // along with this program; if not, write to the Free Software
19 // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
27 #include <simgear/misc/props.hxx>
29 #include <Main/fgfs.hxx>
30 #include <Main/globals.hxx>
33 # error This library requires C++
37 // Define a structure containing the control parameters
39 class FGControls : public FGSubsystem
68 double throttle[MAX_ENGINES];
69 double mixture[MAX_ENGINES];
70 bool fuel_pump[MAX_ENGINES];
71 double prop_advance[MAX_ENGINES];
73 double brake[MAX_WHEELS];
74 int magnetos[MAX_ENGINES];
76 bool starter[MAX_ENGINES];
77 bool fuel_selector[MAX_TANKS];
80 SGPropertyNode * auto_coordination;
87 // Implementation of FGSubsystem.
91 void update (double dt);
97 inline double get_aileron() const { return aileron; }
98 inline double get_aileron_trim() const { return aileron_trim; }
99 inline double get_elevator() const { return elevator; }
100 inline double get_elevator_trim() const { return elevator_trim; }
101 inline double get_rudder() const { return rudder; }
102 inline double get_rudder_trim() const { return rudder_trim; }
103 inline double get_flaps() const { return flaps; }
104 inline double get_throttle(int engine) const { return throttle[engine]; }
105 inline double get_mixture(int engine) const { return mixture[engine]; }
106 inline bool get_fuel_pump(int engine) const { return fuel_pump[engine]; }
107 inline double get_prop_advance(int engine) const {
108 return prop_advance[engine];
110 inline double get_parking_brake() const { return parking_brake; }
111 inline double get_brake(int wheel) const { return brake[wheel]; }
112 inline int get_magnetos(int engine) const { return magnetos[engine]; }
113 inline bool get_starter(int engine) const { return starter[engine]; }
114 inline bool get_fuel_selector(int tank) const {
115 return fuel_selector[tank];
117 inline bool get_gear_down() const { return gear_down; }
120 void set_aileron( double pos );
121 void move_aileron( double amt );
122 void set_aileron_trim( double pos );
123 void move_aileron_trim( double amt );
124 void set_elevator( double pos );
125 void move_elevator( double amt );
126 void set_elevator_trim( double pos );
127 void move_elevator_trim( double amt );
128 void set_rudder( double pos );
129 void move_rudder( double amt );
130 void set_rudder_trim( double pos );
131 void move_rudder_trim( double amt );
132 void set_flaps( double pos );
133 void move_flaps( double amt );
134 void set_throttle( int engine, double pos );
135 void move_throttle( int engine, double amt );
136 void set_mixture( int engine, double pos );
137 void move_mixture( int engine, double amt );
138 void set_fuel_pump( int engine, bool val );
139 void set_prop_advance( int engine, double pos );
140 void move_prop_advance( int engine, double amt );
141 void set_magnetos( int engine, int pos );
142 void move_magnetos( int engine, int amt );
143 void set_starter( int engine, bool flag );
144 void set_fuel_selector( int tank, bool pos );
145 void set_parking_brake( double pos );
146 void set_brake( int wheel, double pos );
147 void move_brake( int wheel, double amt );
148 void set_gear_down( bool gear );
152 #endif // _CONTROLS_HXX