#include "controls.hxx"
+#include <simgear/debug/logstream.hxx>
+#include <Main/fg_props.hxx>
+
FGControls controls;
aileron( 0.0 ),
elevator( 0.0 ),
elevator_trim( 1.969572E-03 ),
- rudder( 0.0 )
+ rudder( 0.0 ),
+ throttle_idle( true )
+{
+}
+
+
+void FGControls::reset_all()
+{
+ set_aileron(0.0);
+ set_elevator(0.0);
+ set_elevator_trim(0.0);
+ set_rudder(0.0);
+ set_throttle(FGControls::ALL_ENGINES, 0.0);
+ throttle_idle = true;
+}
+
+
+// Destructor
+FGControls::~FGControls() {
+}
+
+
+void
+FGControls::init ()
{
for ( int engine = 0; engine < MAX_ENGINES; engine++ ) {
throttle[engine] = 0.0;
+ mixture[engine] = 1.0;
+ prop_advance[engine] = 1.0;
}
for ( int wheel = 0; wheel < MAX_WHEELS; wheel++ ) {
brake[wheel] = 0.0;
}
+
+ auto_coordination = fgGetNode("/sim/auto-coordination", true);
}
-void FGControls::reset_all()
+void
+FGControls::bind ()
{
- controls.set_aileron(0.0);
- controls.set_elevator(0.0);
- controls.set_elevator_trim(0.0);
- controls.set_rudder(0.0);
- controls.set_throttle(FGControls::ALL_ENGINES, 0.0);
+ fgTie("/controls/aileron", this,
+ &FGControls::get_aileron, &FGControls::set_aileron);
+ fgTie("/controls/elevator", this,
+ &FGControls::get_elevator, &FGControls::set_elevator);
+ fgTie("/controls/elevator-trim", this,
+ &FGControls::get_elevator_trim, &FGControls::set_elevator_trim);
+ fgTie("/controls/rudder", this,
+ &FGControls::get_rudder, &FGControls::set_rudder);
+ fgTie("/controls/flaps", this,
+ &FGControls::get_flaps, &FGControls::set_flaps);
+ int index;
+ for (index = 0; index < MAX_ENGINES; index++) {
+ char name[32];
+ sprintf(name, "/controls/throttle[%d]", index);
+ fgTie(name, this, index,
+ &FGControls::get_throttle, &FGControls::set_throttle);
+ sprintf(name, "/controls/mixture[%d]", index);
+ fgTie(name, this, index,
+ &FGControls::get_mixture, &FGControls::set_mixture);
+ sprintf(name, "/controls/propellor-pitch[%d]", index);
+ fgTie(name, this, index,
+ &FGControls::get_prop_advance, &FGControls::set_prop_advance);
+ }
+// fgTie("/controls/throttle/all", this, ALL_ENGINES,
+// &FGControls::get_throttle, &FGControls::set_throttle);
+// fgTie("/controls/mixture/all", this, ALL_ENGINES,
+// &FGControls::get_mixture, &FGControls::set_mixture);
+// fgTie("/controls/propellor-pitch/all", this, ALL_ENGINES,
+// &FGControls::get_prop_advance, &FGControls::set_prop_advance);
+ for (index = 0; index < MAX_WHEELS; index++) {
+ char name[32];
+ sprintf(name, "/controls/brakes[%d]", index);
+ fgTie(name, this, index,
+ &FGControls::get_brake, &FGControls::set_brake);
+ }
+ fgTie("/controls/brakes/all", this, ALL_WHEELS,
+ &FGControls::get_brake, &FGControls::set_brake);
}
-// Destructor
-FGControls::~FGControls() {
+void
+FGControls::unbind ()
+{
+ // Tie control properties.
+ fgUntie("/controls/aileron");
+ fgUntie("/controls/elevator");
+ fgUntie("/controls/elevator-trim");
+ fgUntie("/controls/rudder");
+ fgUntie("/controls/flaps");
+ int index;
+ for (index = 0; index < MAX_ENGINES; index++) {
+ char name[32];
+ sprintf(name, "/controls/throttle[%d]", index);
+ fgUntie(name);
+ sprintf(name, "/controls/mixture[%d]", index);
+ fgUntie(name);
+ sprintf(name, "/controls/propellor-pitch[%d]", index);
+ fgUntie(name);
+ }
+ for (index = 0; index < MAX_WHEELS; index++) {
+ char name[32];
+ sprintf(name, "/controls/brakes[%d]", index);
+ fgUntie(name);
+ }
}
+void
+FGControls::update ()
+{
+}
+