#include <Main/globals.hxx>
#include <Main/fg_props.hxx>
-#include "External.hxx"
#include "flight.hxx"
-#include "JSBSim.hxx"
-#include "LaRCsim.hxx"
-#include "Balloon.h"
// base_fdm_state is the internal state that is updated in integer
FGInterface::FGInterface( double dt ) {
_setup();
- delta_t = dt;
- remainder = elapsed = multi_loop = 0;
+// delta_t = dt;
+// remainder = elapsed = multi_loop = 0;
+ remainder = 0;
}
// Destructor
}
+int
+FGInterface::_calc_multiloop (double dt)
+{
+ int hz = fgGetInt("/sim/model-hz");
+ int speedup = fgGetInt("/sim/speed-up");
+
+ dt += remainder;
+ remainder = 0;
+ double ml = dt * hz;
+ int multiloop = int(floor(ml));
+ remainder = (ml - multiloop) / hz;
+ return (multiloop * speedup);
+}
+
+
/**
* Set default values for the state of the FDM.
*
set_inited( true );
- stamp();
- set_remainder( 0 );
+// stamp();
+// set_remainder( 0 );
// Set initial position
SG_LOG( SG_FLIGHT, SG_INFO, "...initializing position..." );
bound = true;
// Time management (read-only)
- fgTie("/fdm/time/delta_t", this,
- &FGInterface::get_delta_t); // read-only
- fgTie("/fdm/time/elapsed", this,
- &FGInterface::get_elapsed); // read-only
- fgTie("/fdm/time/remainder", this,
- &FGInterface::get_remainder); // read-only
- fgTie("/fdm/time/multi_loop", this,
- &FGInterface::get_multi_loop); // read-only
+// fgTie("/fdm/time/delta_t", this,
+// &FGInterface::get_delta_t); // read-only
+// fgTie("/fdm/time/elapsed", this,
+// &FGInterface::get_elapsed); // read-only
+// fgTie("/fdm/time/remainder", this,
+// &FGInterface::get_remainder); // read-only
+// fgTie("/fdm/time/multi_loop", this,
+// &FGInterface::get_multi_loop); // read-only
// Aircraft position
fgTie("/position/latitude-deg", this,
// Climb and slip (read-only)
fgTie("/velocities/vertical-speed-fps", this,
- &FGInterface::get_Climb_Rate); // read-only
+ &FGInterface::get_Climb_Rate,
+ &FGInterface::set_Climb_Rate );
+ fgTie("/velocities/glideslope", this,
+ &FGInterface::get_Gamma_vert_rad,
+ &FGInterface::set_Gamma_vert_rad );
fgTie("/velocities/side-slip-rad", this,
&FGInterface::get_Beta); // read-only
fgTie("/velocities/side-slip-deg", this,
&FGInterface::get_Alpha_deg); // read-only
fgTie("/accelerations/nlf", this,
&FGInterface::get_Nlf); // read-only
-
-
}
fgUntie("/velocities/vBody-fps");
fgUntie("/velocities/wBody-fps");
fgUntie("/velocities/vertical-speed-fps");
+ fgUntie("/velocities/glideslope");
fgUntie("/velocities/side-slip-rad");
fgUntie("/velocities/side-slip-deg");
fgUntie("/velocities/alpha-deg");
* Update the state of the FDM (i.e. run the equations of motion).
*/
void
-FGInterface::update (int dt)
+FGInterface::update (double dt)
{
- cout << "dummy update() ... SHOULDN'T BE CALLED!" << endl;
+ SG_LOG(SG_FLIGHT, SG_ALERT, "dummy update() ... SHOULDN'T BE CALLED!");
}
// -dw- metrowerks complains about ambiguous access, not critical
// to keep this ;)
#ifndef __MWERKS__
- cout << "extrapolating FDM by dt = " << dt << endl;
+ SG_LOG(SG_FLIGHT, SG_INFO, "extrapolating FDM by dt = " << dt);
#endif
double lat = geodetic_position_v[0] + geocentric_rates_v[0] * dt;