-//
// options.cxx -- class to handle command line options
//
// Written by Curtis Olson, started April 1998.
#include <string>
#include <Debug/logstream.hxx>
-#include <Flight/flight.hxx>
+#include <FDM/flight.hxx>
#include <Include/fg_constants.h>
#include <Main/options.hxx>
#include <Misc/fgstream.hxx>
sound(1),
// Flight Model options
- flight_model(FG_LARCSIM),
+ flight_model(FGInterface::FG_LARCSIM),
// Rendering options
fog(FG_FOG_NICEST), // nicest
tris_or_culled(0),
// Time options
- time_offset(0),
-
- // Serial port options
- // port_a(FG_SERIAL_DISABLED),
- // port_b(FG_SERIAL_DISABLED),
- // port_c(FG_SERIAL_DISABLED),
- // port_d(FG_SERIAL_DISABLED),
-
- port_a_config(""),
- port_b_config(""),
- port_c_config(""),
- port_d_config("")
+ time_offset(0)
{
// set initial values/defaults
}
airport_id = ""; // default airport id
+
+ // initialize port config string list
+ port_options_list.erase ( port_options_list.begin(),
+ port_options_list.end() );
}
}
-// Parse --flightmode=abcdefg type option
+// Parse --fdm=abcdefg type option
int
-fgOPTIONS::parse_flight_model( const string& fm ) {
- // printf("flight model = %s\n", fm);
+fgOPTIONS::parse_fdm( const string& fm ) {
+ // printf("fdm = %s\n", fm);
if ( fm == "slew" ) {
- return FG_SLEW;
+ return FGInterface::FG_SLEW;
+ } else if ( fm == "jsb" ) {
+ return FGInterface::FG_JSBSIM;
} else if ( (fm == "larcsim") || (fm == "LaRCsim") ) {
- return FG_LARCSIM;
+ return FGInterface::FG_LARCSIM;
+ } else if ( fm == "external" ) {
+ return FGInterface::FG_EXTERNAL;
} else {
- FG_LOG( FG_GENERAL, FG_ALERT, "Unknown flight model = " << fm );
+ FG_LOG( FG_GENERAL, FG_ALERT, "Unknown fdm = " << fm );
exit(-1);
}
}
-// Parse serial port option --serial=a,/dev/ttyS1,nmea,4800,out
+// Parse serial port option --serial=/dev/ttyS1,nmea,4800,out
//
-// Format is "--serial=port_id,device,format,baud,direction" where
+// Format is "--serial=device,format,baud,direction" where
//
-// port_id = {a, b, c, d}
// device = OS device name to be open()'ed
// format = {nmea, fgfs}
// baud = {300, 1200, 2400, ..., 230400}
// direction = {in, out, bi}
-//
+
bool
fgOPTIONS::parse_serial( const string& serial_str ) {
string::size_type pos;
- string port;
- string config;
// cout << "Serial string = " << serial_str << endl;
- // port
+ // a flailing attempt to see if the port config string has a
+ // chance at being valid
pos = serial_str.find(",");
if ( pos == string::npos ) {
FG_LOG( FG_GENERAL, FG_ALERT,
return false;
}
- port = serial_str.substr(0, pos);
- config = serial_str.substr(++pos);
-
- if ( port == "a" ) {
- port_a_config = config;
- } else if ( port == "b" ) {
- port_b_config = config;
- } else if ( port == "c" ) {
- port_c_config = config;
- } else if ( port == "d" ) {
- port_d_config = config;
- } else {
- FG_LOG( FG_GENERAL, FG_ALERT, "Valid ports are a - d, config for port "
- << port << " ignored" );
- return false;
- }
+ port_options_list.push_back( serial_str );
return true;
}
} else if ( arg.find( "--lat=" ) != string::npos ) {
lat = parse_degree( arg.substr(6) );
} else if ( arg.find( "--altitude=" ) != string::npos ) {
- altitude = atof( arg.substr(11) );
+ if ( units == FG_UNITS_FEET ) {
+ altitude = atof( arg.substr(11) ) * FEET_TO_METER;
+ } else {
+ altitude = atof( arg.substr(11) );
+ }
} else if ( arg.find( "--heading=" ) != string::npos ) {
heading = atof( arg.substr(10) );
} else if ( arg.find( "--roll=" ) != string::npos ) {
pitch = atof( arg.substr(8) );
} else if ( arg.find( "--fg-root=" ) != string::npos ) {
fg_root = arg.substr( 10 );
- } else if ( arg.find( "--flight-model=" ) != string::npos ) {
- flight_model = parse_flight_model( arg.substr(15) );
+ } else if ( arg.find( "--fdm=" ) != string::npos ) {
+ flight_model = parse_fdm( arg.substr(6) );
} else if ( arg == "--fog-disable" ) {
fog = FG_FOG_DISABLED;
} else if ( arg == "--fog-fastest" ) {
printf("\t--enable-sound: enable sound effects\n");
printf("\n");
+ printf("Flight Model:\n");
+ printf("\t--fdm=abcd: one of slew, jsb, larcsim, or external\n");
+ printf("\n");
+
printf("Initial Position and Orientation:\n");
printf("\t--airport-id=ABCD: specify starting postion by airport id\n");
printf("\t--lon=degrees: starting longitude in degrees (west = -)\n");
printf("\t--lat=degrees: starting latitude in degrees (south = -)\n");
- printf("\t--altitude=meters: starting altitude in meters\n");
+ printf("\t--altitude=feet: starting altitude in feet\n");
+ printf("\t\t(unless --units-meters specified\n");
printf("\t--heading=degrees: heading (yaw) angle in degress (Psi)\n");
printf("\t--roll=degrees: roll angle in degrees (Phi)\n");
printf("\t--pitch=degrees: pitch angle in degrees (Theta)\n");
printf("\t--units-meters: Hud displays units in meters\n");
printf("\t--hud-tris: Hud displays number of triangles rendered\n");
printf("\t--hud-culled: Hud displays percentage of triangles culled\n");
+ printf("\n");
printf("Time Options:\n");
printf("\t--time-offset=[+-]hh:mm:ss: offset local time by this amount\n");
// $Log$
+// Revision 1.39 1999/02/05 21:29:12 curt
+// Modifications to incorporate Jon S. Berndts flight model code.
+//
+// Revision 1.38 1999/02/01 21:33:35 curt
+// Renamed FlightGear/Simulator/Flight to FlightGear/Simulator/FDM since
+// Jon accepted my offer to do this and thought it was a good idea.
+//
+// Revision 1.37 1999/01/19 20:57:05 curt
+// MacOS portability changes contributed by "Robert Puyol" <puyol@abvent.fr>
+//
+// Revision 1.36 1999/01/07 20:25:10 curt
+// Updated struct fgGENERAL to class FGGeneral.
+//
+// Revision 1.35 1998/12/06 14:52:57 curt
+// Fixed a problem with the initial starting altitude. "v->abs_view_pos" wasn't
+// being calculated correctly at the beginning causing the first terrain
+// intersection to fail, returning a ground altitude of zero, causing the plane
+// to free fall for one frame, until the ground altitude was corrected, but now
+// being under the ground we got a big bounce and the plane always ended up
+// upside down.
+//
+// Revision 1.34 1998/12/05 15:54:22 curt
+// Renamed class fgFLIGHT to class FGState as per request by JSB.
+//
+// Revision 1.33 1998/12/04 01:30:44 curt
+// Added support for the External flight model.
+//
+// Revision 1.32 1998/11/25 01:34:00 curt
+// Support for an arbitrary number of serial ports.
+//
// Revision 1.31 1998/11/23 21:49:04 curt
// Borland portability tweaks.
//