1
0
Fork 0

Added pow() macro bug work around.

Added support for starting FGFS at various resolutions.
Added some initial serial port support.
Specify default log levels in main().
This commit is contained in:
curt 1998-11-16 13:59:58 +00:00
parent 302a831599
commit f2234416b0
7 changed files with 192 additions and 29 deletions

View file

@ -178,7 +178,7 @@ static void fgInitVisuals( void ) {
}
#ifdef IS_THIS_BETTER_THAN_A_ZERO_CHARLIE
#if 0
// Draw a basic instrument panel
static void fgUpdateInstrViewParams( void ) {
@ -562,7 +562,8 @@ static void fgMainLoop( void ) {
FG_Runway_altitude * FEET_TO_METER,
FG_Altitude * FEET_TO_METER); */
// fgAircraftOutputCurrent(a);
// Do any serial port work that might need to be done
fgSerialProcess();
// see if we need to load any new scenery tiles
fgTileMgrUpdate();
@ -606,7 +607,8 @@ static void fgMainLoop( void ) {
// need to calculate some reasonable scaling factor and
// then clamp it on the positive aoa (neg adj) side
double aoa = FG_Gamma_vert_rad * 2.2;
double aoa_adj = pow(-aoa, 3) * pow(M_E, aoa);
double tmp = 3.0;
double aoa_adj = pow(-aoa, tmp) * pow(M_E, aoa);
if (aoa_adj < -0.8) aoa_adj = -0.8;
pitch += aoa_adj;
//fprintf(stderr, "pitch3: %f ", pitch);
@ -831,8 +833,12 @@ int fgGlutInit( int *argc, char **argv ) {
// Define Display Parameters
xglutInitDisplayMode( GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE );
FG_LOG( FG_GENERAL, FG_INFO, "Opening a window: " <<
current_options.get_xsize() << "x" << current_options.get_ysize() );
// Define initial window size
xglutInitWindowSize(640, 480);
xglutInitWindowSize( current_options.get_xsize(),
current_options.get_ysize() );
// Initialize windows
if ( current_options.get_game_mode() == 0 ) {
@ -840,7 +846,11 @@ int fgGlutInit( int *argc, char **argv ) {
xglutCreateWindow("Flight Gear");
} else {
// Open the cool new 'game mode' window
glutGameModeString("width=640 height=480 bpp=16");
string game_mode_params = "width=" + current_options.get_xsize();
game_mode_params += "height=" + current_options.get_ysize();
game_mode_params += " bpp=16";
cout << "game mode params = " << game_mode_params;
glutGameModeString( game_mode_params.c_str() );
glutEnterGameMode();
}
@ -886,6 +896,9 @@ int main( int argc, char **argv ) {
// Initialize the [old] debugging output system
// fgInitDebug();
// set default log levels
fglog().setLogLevels( FG_ALL, FG_INFO );
FG_LOG( FG_GENERAL, FG_INFO, "Flight Gear: Version" << VERSION << endl );
// Attempt to locate and parse a config file
@ -909,7 +922,8 @@ int main( int argc, char **argv ) {
// Something must have gone horribly wrong with the command
// line parsing or maybe the user just requested help ... :-)
current_options.usage();
FG_LOG( FG_GENERAL, FG_ALERT, "\nExiting ...");
// FG_LOG( FG_GENERAL, FG_ALERT, "\nExiting ...");
cout << endl << "Exiting ..." << endl;
exit(-1);
}
@ -946,6 +960,12 @@ int main( int argc, char **argv ) {
// $Log$
// Revision 1.67 1998/11/16 13:59:58 curt
// Added pow() macro bug work around.
// Added support for starting FGFS at various resolutions.
// Added some initial serial port support.
// Specify default log levels in main().
//
// Revision 1.66 1998/11/11 00:24:00 curt
// Added Michael Johnson's audio patches for testing.
// Also did a few tweaks to avoid numerical problems when starting at a place

View file

@ -23,6 +23,12 @@ if ENABLE_XMESA_FX
DEFS += -DXMESA -DFX
endif
if ENABLE_UNIX_SERIAL
SERIAL_LIBS = $(top_builddir)/Lib/Serial/libSerial.a
else
SERIAL_LIBS =
endif
EXTRA_DIST = runfgfs.in runfgfs.bat.in
bin_PROGRAMS = fgfs
@ -33,6 +39,7 @@ fgfs_SOURCES = \
GLUTkey.cxx GLUTkey.hxx GLUTmain.cxx \
fg_config.h \
fg_init.cxx fg_init.hxx \
fg_serial.cxx fg_serial.hxx \
options.cxx options.hxx \
splash.cxx splash.hxx \
views.cxx views.hxx
@ -53,7 +60,7 @@ fgfs_LDADD = \
$(top_builddir)/Simulator/Time/libTime.a \
$(top_builddir)/Simulator/Weather/libWeather.a \
$(top_builddir)/Simulator/Joystick/libJoystick.a \
$(AUDIO_LIBS) \
$(AUDIO_LIBS) $(SERIAL_LIBS) \
$(top_builddir)/Lib/Math/libMath.a \
$(top_builddir)/Lib/Bucket/libBucket.a \
$(top_builddir)/Lib/Debug/libDebug.a \

View file

@ -129,9 +129,6 @@ int fgInitGeneral( void ) {
g = &general;
// set default log levels
fglog().setLogLevels( FG_ALL, FG_INFO );
FG_LOG( FG_GENERAL, FG_INFO, "General Initialization" );
FG_LOG( FG_GENERAL, FG_INFO, "======= ==============" );
@ -373,7 +370,10 @@ int fgInitSubsystems( void )
// Autopilot init added here, by Jeff Goeke-Smith
fgAPInit(&current_aircraft);
// Initialize serial ports
fgSerialInit();
FG_LOG( FG_GENERAL, FG_INFO, endl);
return(1);
@ -381,6 +381,12 @@ int fgInitSubsystems( void )
// $Log$
// Revision 1.50 1998/11/16 14:00:01 curt
// Added pow() macro bug work around.
// Added support for starting FGFS at various resolutions.
// Added some initial serial port support.
// Specify default log levels in main().
//
// Revision 1.49 1998/11/11 00:24:02 curt
// Added Michael Johnson's audio patches for testing.
// Also did a few tweaks to avoid numerical problems when starting at a place

View file

@ -38,11 +38,15 @@
#include <Include/fg_constants.h>
#include <Misc/fgstream.hxx>
#include "fg_serial.hxx"
#include "options.hxx"
const int fgOPTIONS::FG_RADIUS_MIN;
const int fgOPTIONS::FG_RADIUS_MAX;
inline double
atof( const string& str )
{
@ -92,10 +96,6 @@ fgOPTIONS::fgOPTIONS() :
// lon(-111.7884614 + 0.01),
// lat( 34.8486289 - 0.015),
// Somewhere near the Grand Canyon
// lon(-112.5),
// lat( 36.5),
// Jim Brennon's Kingmont Observatory
// lon(-121.1131667),
// lat( 38.8293917),
@ -108,10 +108,6 @@ fgOPTIONS::fgOPTIONS() :
// lon(-73.5),
// lat( 10.0),
// Test Position
// lon( 8.5),
// lat(47.5),
// Timms Hill (WI)
// lon(-90.1953055556),
// lat( 45.4511388889),
@ -148,6 +144,8 @@ fgOPTIONS::fgOPTIONS() :
skyblend(1),
textures(1),
wireframe(0),
xsize(640),
ysize(480),
// Scenery options
tile_diameter(5),
@ -157,7 +155,19 @@ fgOPTIONS::fgOPTIONS() :
tris_or_culled(0),
// Time options
time_offset(0)
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("")
{
// set initial values/defaults
char* envp = ::getenv( "FG_ROOT" );
@ -339,6 +349,53 @@ fgOPTIONS::parse_fov( const string& arg ) {
}
// Parse serial port option --serial=a,/dev/ttyS1,nmea,4800,out
//
// Format is "--serial=port_id,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
pos = serial_str.find(",");
if ( pos == string::npos ) {
FG_LOG( FG_GENERAL, FG_ALERT,
"Malformed serial port configure string" );
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;
}
return true;
}
// Parse a single option
int fgOPTIONS::parse_option( const string& arg ) {
// General Options
@ -418,11 +475,26 @@ int fgOPTIONS::parse_option( const string& arg ) {
} else if ( arg == "--disable-textures" ) {
textures = false;
} else if ( arg == "--enable-textures" ) {
textures = true;
textures = true;
} else if ( arg == "--disable-wireframe" ) {
wireframe = false;
} else if ( arg == "--enable-wireframe" ) {
wireframe = true;
wireframe = true;
} else if ( arg.find( "--geometry=" ) != string::npos ) {
string geometry = arg.substr( 11 );
if ( geometry == "640x480" ) {
xsize = 640;
ysize = 480;
} else if ( geometry == "800x600" ) {
xsize = 800;
ysize = 600;
} else if ( geometry == "1024x768" ) {
xsize = 1024;
ysize = 768;
} else {
FG_LOG( FG_GENERAL, FG_ALERT, "Unknown geometry: " << geometry );
exit(-1);
}
} else if ( arg == "--units-feet" ) {
units = FG_UNITS_FEET;
} else if ( arg == "--units-meters" ) {
@ -435,7 +507,9 @@ int fgOPTIONS::parse_option( const string& arg ) {
} else if ( arg == "--hud-tris" ) {
tris_or_culled = 0;
} else if ( arg == "--hud-culled" ) {
tris_or_culled = 1;
tris_or_culled = 1;
} else if ( arg.find( "--serial=" ) != string::npos ) {
parse_serial( arg.substr(9) );
} else {
FG_LOG( FG_GENERAL, FG_ALERT, "Unknown option '" << arg << "'" );
return FG_OPTIONS_ERROR;
@ -549,6 +623,7 @@ void fgOPTIONS::usage ( void ) {
printf("\t--enable-textures: enable textures\n");
printf("\t--disable-wireframe: disable wireframe drawing mode\n");
printf("\t--enable-wireframe: enable wireframe drawing mode\n");
printf("\t--geomtry=WWWxHHH: specify window geometry: 640x480, 800x600\n");
printf("\n");
printf("Scenery Options:\n");
@ -572,6 +647,12 @@ fgOPTIONS::~fgOPTIONS( void ) {
// $Log$
// Revision 1.30 1998/11/16 14:00:02 curt
// Added pow() macro bug work around.
// Added support for starting FGFS at various resolutions.
// Added some initial serial port support.
// Specify default log levels in main().
//
// Revision 1.29 1998/11/06 21:18:12 curt
// Converted to new logstream debugging facility. This allows release
// builds with no messages at all (and no performance impact) by using

View file

@ -47,6 +47,8 @@
using namespace std;
#endif
#include "fg_serial.hxx"
class fgOPTIONS {
@ -112,6 +114,7 @@ private:
bool skyblend; // Blend sky to haze (using polygons) or just clear
bool textures; // Textures enabled/disabled
bool wireframe; // Wireframe mode enabled/disabled
int xsize, ysize; // window size derived from geometry string
// Scenery options
int tile_radius; // Square radius of rendered tiles (around center
@ -128,6 +131,18 @@ private:
// Time options
int time_offset; // Offset true time by this many seconds
// Serial Ports, we currently support up to four channels
// fgSerialPortKind port_a_kind; // Port a kind
// fgSerialPortKind port_b_kind; // Port b kind
// fgSerialPortKind port_c_kind; // Port c kind
// fgSerialPortKind port_d_kind; // Port d kind
// Serial port configuration strings
string port_a_config;
string port_b_config;
string port_c_config;
string port_d_config;
public:
fgOPTIONS();
@ -171,12 +186,26 @@ public:
inline bool get_skyblend() const { return skyblend; }
inline bool get_textures() const { return textures; }
inline bool get_wireframe() const { return wireframe; }
inline int get_xsize() const { return xsize; }
inline int get_ysize() const { return ysize; }
inline int get_tile_radius() const { return tile_radius; }
inline int get_tile_diameter() const { return tile_diameter; }
inline int get_time_offset() const { return time_offset; }
inline int get_units() const { return units; }
inline int get_tris_or_culled() const { return tris_or_culled; }
inline int get_time_offset() const { return time_offset; }
// inline fgSerialPortKind get_port_a_kind() const { return port_a_kind; }
// inline fgSerialPortKind get_port_b_kind() const { return port_b_kind; }
// inline fgSerialPortKind get_port_c_kind() const { return port_c_kind; }
// inline fgSerialPortKind get_port_d_kind() const { return port_d_kind; }
inline string get_port_a_config() const { return port_a_config; }
inline string get_port_b_config() const { return port_b_config; }
inline string get_port_c_config() const { return port_c_config; }
inline string get_port_d_config() const { return port_d_config; }
// Update functions
inline void set_hud_status( bool status ) { hud_status = status; }
inline void set_fov( double amount ) { fov = amount; }
@ -201,6 +230,7 @@ private:
int parse_tile_radius( const string& arg );
int parse_flight_model( const string& fm );
double parse_fov( const string& arg );
bool parse_serial( const string& serial_str );
};
@ -211,6 +241,12 @@ extern fgOPTIONS current_options;
// $Log$
// Revision 1.21 1998/11/16 14:00:04 curt
// Added pow() macro bug work around.
// Added support for starting FGFS at various resolutions.
// Added some initial serial port support.
// Specify default log levels in main().
//
// Revision 1.20 1998/11/02 23:04:05 curt
// HUD units now display in feet by default with meters being a command line
// option.

View file

@ -41,6 +41,7 @@
#include <Objects/texload.h>
#include "splash.hxx"
#include "views.hxx"
static GLuint splash_texid;
@ -96,10 +97,10 @@ void fgSplashUpdate ( double progress ) {
int xsize = 480;
int ysize = 380;
xmin = (640 - xsize) / 2;
xmin = (current_view.winWidth - xsize) / 2;
xmax = xmin + xsize;
ymin = (480 - ysize) / 2;
ymin = (current_view.winHeight - ysize) / 2;
ymax = ymin + ysize;
// first clear the screen;
@ -110,7 +111,7 @@ void fgSplashUpdate ( double progress ) {
xglMatrixMode(GL_PROJECTION);
xglPushMatrix();
xglLoadIdentity();
gluOrtho2D(0, 640, 0, 480);
gluOrtho2D(0, current_view.winWidth, 0, current_view.winHeight);
xglMatrixMode(GL_MODELVIEW);
xglPushMatrix();
xglLoadIdentity();
@ -148,6 +149,12 @@ void fgSplashUpdate ( double progress ) {
// $Log$
// Revision 1.8 1998/11/16 14:00:05 curt
// Added pow() macro bug work around.
// Added support for starting FGFS at various resolutions.
// Added some initial serial port support.
// Specify default log levels in main().
//
// Revision 1.7 1998/11/06 21:18:14 curt
// Converted to new logstream debugging facility. This allows release
// builds with no messages at all (and no performance impact) by using

View file

@ -58,8 +58,8 @@ void fgVIEW::Init( void ) {
view_offset = 0.0;
goal_view_offset = 0.0;
winWidth = 640; // FG_DEFAULT_WIN_WIDTH
winHeight = 480; // FG_DEFAULT_WIN_HEIGHT
winWidth = current_options.get_xsize();
winHeight = current_options.get_ysize();
win_ratio = (double) winWidth / (double) winHeight;
update_fov = true;
}
@ -599,6 +599,12 @@ fgVIEW::~fgVIEW( void ) {
// $Log$
// Revision 1.27 1998/11/16 14:00:06 curt
// Added pow() macro bug work around.
// Added support for starting FGFS at various resolutions.
// Added some initial serial port support.
// Specify default log levels in main().
//
// Revision 1.26 1998/11/09 23:39:25 curt
// Tweaks for the instrument panel.
//