1
0
Fork 0

Moved fg_debug to it's own library, added zlib support.

This commit is contained in:
curt 1998-04-18 04:11:25 +00:00
parent ab59ca78b9
commit 09fc7f812e
9 changed files with 51 additions and 462 deletions

View file

@ -35,8 +35,8 @@
#include <stdio.h>
#include <stdlib.h>
#include <Debug/fg_debug.h>
#include <Main/GLUTkey.h>
#include <Main/fg_debug.h>
#include <Main/views.h>
#include <Include/fg_constants.h>
@ -257,10 +257,13 @@ void GLUTspecialkey(int k, int x, int y) {
/* $Log$
/* Revision 1.32 1998/04/14 02:21:01 curt
/* Incorporated autopilot heading hold contributed by: Jeff Goeke-Smith
/* <jgoeke@voyager.net>
/* Revision 1.33 1998/04/18 04:11:25 curt
/* Moved fg_debug to it's own library, added zlib support.
/*
* Revision 1.32 1998/04/14 02:21:01 curt
* Incorporated autopilot heading hold contributed by: Jeff Goeke-Smith
* <jgoeke@voyager.net>
*
* Revision 1.31 1998/04/08 23:34:05 curt
* Patch from Durk to fix trim reversal with numlock key active.
*

View file

@ -41,9 +41,9 @@
# include <getopt.h>
#endif
#include <Debug/fg_debug.h>
#include <Main/GLUTkey.h>
#include <Main/fg_init.h>
#include <Main/fg_debug.h>
#include <Main/fg_getopt.h>
#include <Main/views.h>
@ -347,6 +347,7 @@ static void fgRenderFrame( void ) {
struct fgVIEW *v;
double angle;
GLfloat white[4] = { 1.0, 1.0, 1.0, 1.0 };
GLfloat black[4] = { 0.0, 0.0, 0.0, 1.0 };
l = &cur_light_params;
t = &cur_time_params;
@ -417,6 +418,8 @@ static void fgRenderFrame( void ) {
GL_LINEAR /* GL_LINEAR_MIPMAP_LINEAR */ ) ;
xglTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE ) ;
xglHint( GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST ) ;
/* set base color (I don't think this is doing anything here) */
xglColor4fv(white);
fgTileMgrRender();
@ -824,10 +827,13 @@ extern "C" {
#endif
/* $Log$
/* Revision 1.70 1998/04/14 02:21:02 curt
/* Incorporated autopilot heading hold contributed by: Jeff Goeke-Smith
/* <jgoeke@voyager.net>
/* Revision 1.71 1998/04/18 04:11:26 curt
/* Moved fg_debug to it's own library, added zlib support.
/*
* Revision 1.70 1998/04/14 02:21:02 curt
* Incorporated autopilot heading hold contributed by: Jeff Goeke-Smith
* <jgoeke@voyager.net>
*
* Revision 1.69 1998/04/08 23:35:34 curt
* Tweaks to Gnu automake/autoconf system.
*

View file

@ -8,7 +8,6 @@ fg_SOURCES = \
GLUTkey.c GLUTkey.h \
GLUTmain.c \
fg_config.h \
fg_debug.c fg_debug.h \
fg_getopt.c fg_getopt.h \
fg_init.c fg_init.h \
views.c views.h
@ -26,8 +25,10 @@ fg_LDADD = \
$(top_builddir)/Simulator/Time/libTime.la \
$(top_builddir)/Simulator/Weather/libWeather.la \
$(top_builddir)/Simulator/Joystick/libJoystick.la \
$(top_builddir)/Simulator/Math/libMath.la \
$(top_builddir)/Lib/Bucket/libBucket.la
$(top_builddir)/Lib/Math/libMath.la \
$(top_builddir)/Lib/Bucket/libBucket.la \
$(top_builddir)/Lib/Debug/libDebug.la \
$(top_builddir)/Lib/zlib/libz.la
INCLUDES += \
-DGLUT \

View file

@ -81,7 +81,6 @@ fg_SOURCES = \
GLUTkey.c GLUTkey.h \
GLUTmain.c \
fg_config.h \
fg_debug.c fg_debug.h \
fg_getopt.c fg_getopt.h \
fg_init.c fg_init.h \
views.c views.h
@ -99,8 +98,10 @@ fg_LDADD = \
$(top_builddir)/Simulator/Time/libTime.la \
$(top_builddir)/Simulator/Weather/libWeather.la \
$(top_builddir)/Simulator/Joystick/libJoystick.la \
$(top_builddir)/Simulator/Math/libMath.la \
$(top_builddir)/Lib/Bucket/libBucket.la
$(top_builddir)/Lib/Math/libMath.la \
$(top_builddir)/Lib/Bucket/libBucket.la \
$(top_builddir)/Lib/Debug/libDebug.la \
$(top_builddir)/Lib/zlib/libz.la
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
CONFIG_HEADER = ../../Include/config.h
CONFIG_CLEAN_FILES = runfg runfg.bat
@ -115,8 +116,7 @@ X_CFLAGS = @X_CFLAGS@
X_LIBS = @X_LIBS@
X_EXTRA_LIBS = @X_EXTRA_LIBS@
X_PRE_LIBS = @X_PRE_LIBS@
fg_OBJECTS = GLUTkey.o GLUTmain.o fg_debug.o fg_getopt.o fg_init.o \
views.o
fg_OBJECTS = GLUTkey.o GLUTmain.o fg_getopt.o fg_init.o views.o
fg_DEPENDENCIES = $(top_builddir)/Simulator/Aircraft/libAircraft.la \
$(top_builddir)/Simulator/Astro/libAstro.la \
$(top_builddir)/Simulator/Autopilot/libAutopilot.la \
@ -129,8 +129,9 @@ $(top_builddir)/Simulator/Scenery/libScenery.la \
$(top_builddir)/Simulator/Time/libTime.la \
$(top_builddir)/Simulator/Weather/libWeather.la \
$(top_builddir)/Simulator/Joystick/libJoystick.la \
$(top_builddir)/Simulator/Math/libMath.la \
$(top_builddir)/Lib/Bucket/libBucket.la
$(top_builddir)/Lib/Math/libMath.la \
$(top_builddir)/Lib/Bucket/libBucket.la \
$(top_builddir)/Lib/Debug/libDebug.la $(top_builddir)/Lib/zlib/libz.la
fg_LDFLAGS =
SCRIPTS = $(bin_SCRIPTS)
@ -145,8 +146,8 @@ DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
TAR = tar
GZIP = --best
DEP_FILES = .deps/GLUTkey.P .deps/GLUTmain.P .deps/fg_debug.P \
.deps/fg_getopt.P .deps/fg_init.P .deps/views.P
DEP_FILES = .deps/GLUTkey.P .deps/GLUTmain.P .deps/fg_getopt.P \
.deps/fg_init.P .deps/views.P
SOURCES = $(fg_SOURCES)
OBJECTS = $(fg_OBJECTS)

View file

@ -1,281 +0,0 @@
/* -*- Mode: C++ -*-
*
* fg_debug.c -- Flight Gear debug utility functions
*
* Written by Paul Bleisch, started January 1998.
*
* Copyright (C) 1998 Paul Bleisch, pbleisch@acm.org
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
* $Id$
* (Log is kept at end of this file)
**************************************************************************/
#include <string.h>
#include <stdio.h>
#include <stdarg.h>
#include <stdlib.h>
#include <Include/cmdargs.h> // Line to command line arguments
#include <Main/fg_debug.h>
static int fg_DebugSem = 1;
fgDebugClass fg_DebugClass = FG_NONE; // Need visibility for
fgDebugPriority fg_DebugPriority = FG_INFO; // command line processing.
static fgDebugCallback fg_DebugCallback = NULL;
FILE *fg_DebugOutput = NULL; // Visibility needed for command line processor.
// This can be set to a FILE from the command
// line. If not, it will be set to stderr.
/* TODO: Actually make this thing thread safe */
#ifdef USETHREADS
#define FG_GRABDEBUGSEM while( --fg_DebugSem < 0 ) { fg_DebugSem++; }
#define FG_RELEASEDEBUGSEM fg_DebugSem++;
#else
#define FG_GRABDEBUGSEM
#define FG_RELEASEDEBUGSEM
#endif
/* Used for convienence initialization from env variables.
*/
static struct {
char *str;
fgDebugClass dbg_class;
} fg_DebugClasses[] = {
{ "FG_NONE", 0x00000000 },
{ "FG_TERRAIN", 0x00000001 },
{ "FG_ASTRO", 0x00000002 },
{ "FG_FLIGHT", 0x00000004 },
{ "FG_INPUT", 0x00000008 },
{ "FG_GL", 0x00000010 },
{ "FG_VIEW", 0x00000020 },
{ "FG_COCKPIT", 0x00000040 },
{ "FG_GENERAL", 0x00000080 },
{ "FG_MATH", 0x00000100 },
{ "FG_EVENT", 0x00000200 },
{ "FG_AIRCRAFT",0x00000400 },
/* Do not edit below here, last entry should be null */
{ "FG_ALL", 0xFFFFFFFF },
{ NULL, 0 }
};
static fgDebugClass fgDebugStrToClass( char *str );
/* fgInitDebug =============================================================*/
void fgInitDebug( void ) {
char *pszClass, *pszPrio, *pszFile;
// Support for log file/alt debug output via command line, environment or
// reasonable default.
if( strlen( logArgbuf ) > 3) { // First check for command line option
// Assumed that we will append.
fg_DebugOutput = fopen(logArgbuf, "a+" );
}
if( !fg_DebugOutput ) { // If not set on command line, environment?
pszFile = getenv( "FG_DEBUGFILE" );
if( pszFile ) { // There is such an environmental variable.
fg_DebugOutput = fopen( pszFile, "a+" );
}
}
if( !fg_DebugOutput ) { // If neither command line nor environment
fg_DebugOutput = stderr; // then we use the fallback position
}
FG_GRABDEBUGSEM;
fg_DebugSem = fg_DebugSem; /* shut up GCC */
// Test command line option overridge of debug priority. If the value
// is in range (properly optioned) the we will override both defaults
// and the environmental value.
if ((priorityArgValue >= FG_BULK) && (priorityArgValue <= FG_ABORT)) {
fg_DebugPriority = priorityArgValue;
} else { // Either not set or out of range. We will not warn the user.
pszPrio = getenv( "FG_DEBUGPRIORITY" );
if( pszPrio ) {
fg_DebugPriority = atoi( pszPrio );
fprintf( stderr,
"fg_debug.c: Environment overrides default debug priority (%d)\n",
fg_DebugPriority );
}
}
if ((debugArgValue >= FG_ALL) && (debugArgValue < FG_UNDEFD)) {
fg_DebugPriority = priorityArgValue;
} else { // Either not set or out of range. We will not warn the user.
pszClass = getenv( "FG_DEBUGCLASS" );
if( pszClass ) {
fg_DebugClass = fgDebugStrToClass( pszClass );
fprintf( stderr,
"fg_debug.c: Environment overrides default debug class (0x%08X)\n",
fg_DebugClass );
}
}
FG_RELEASEDEBUGSEM;
}
/* fgDebugStrToClass ======================================================*/
fgDebugClass fgDebugStrToClass( char *str ) {
char *hex = "0123456789ABCDEF";
char *hexl = "0123456789abcdef";
char *pt, *p, *ph, ps = 1;
unsigned int val = 0, i;
if( str == NULL ) {
return 0;
}
/* Check for 0xXXXXXX notation */
if( (p = strstr( str, "0x")) ) {
p++; p++;
while (*p) {
if( (ph = strchr(hex,*p)) || (ph = strchr(hexl,*p)) ){
val <<= 4;
val += ph-hex;
p++;
} else {
// fprintf( stderr, "Error in hex string '%s'\n", str );
return FG_NONE;
}
}
} else {
/* Must be in string format */
p = str;
ps = 1;
while( ps ) {
while( *p && (*p==' ' || *p=='\t') ) p++; /* remove whitespace */
pt = p; /* mark token */
while( *p && (*p!='|') ) p++; /* find OR or EOS */
ps = *p; /* save value at p so we can attempt to be bounds safe */
*p++ = 0; /* terminate token */
/* determine value for token */
i=0;
while( fg_DebugClasses[i].str &&
strncmp( fg_DebugClasses[i].str, pt,
strlen(fg_DebugClasses[i].str)) ) i++;
if( fg_DebugClasses[i].str == NULL ) {
fprintf( stderr,
"fg_debug.c: Could not find message class '%s'\n",
pt );
} else {
val |= fg_DebugClasses[i].dbg_class;
}
}
}
return (fgDebugClass)val;
}
/* fgSetDebugOutput =======================================================*/
void fgSetDebugOutput( FILE *out ) {
FG_GRABDEBUGSEM;
fflush( fg_DebugOutput );
fg_DebugOutput = out;
FG_RELEASEDEBUGSEM;
}
/* fgSetDebugLevels =======================================================*/
void fgSetDebugLevels( fgDebugClass dbg_class, fgDebugPriority prio ) {
FG_GRABDEBUGSEM;
fg_DebugClass = dbg_class;
fg_DebugPriority = prio;
FG_RELEASEDEBUGSEM;
}
/* fgRegisterDebugCallback ================================================*/
fgDebugCallback fgRegisterDebugCallback( fgDebugCallback callback ) {
fgDebugCallback old;
FG_GRABDEBUGSEM;
old = fg_DebugCallback;
fg_DebugCallback = callback;
FG_RELEASEDEBUGSEM;
return old;
}
/* fgPrintf ===============================================================*/
int fgPrintf( fgDebugClass dbg_class, fgDebugPriority prio, char *fmt, ... ) {
char szOut[1024+1];
va_list ap;
int ret = 0;
// If no action to take, then don't bother with the semaphore
// activity Slight speed benefit.
// printf("dbg_class = %d fg_DebugClass = %d\n", dbg_class, fg_DebugClass);
// printf("prio = %d fg_DebugPriority = %d\n", prio, fg_DebugPriority);
if( !(dbg_class & fg_DebugClass) ) {
// Failed to match a specific debug class
if ( prio < fg_DebugPriority ) {
// priority is less than requested
// "ret" is zero anyway. But we might think about changing
// it upon some error condition?
return ret;
}
}
FG_GRABDEBUGSEM;
/* ret = vsprintf( szOut, fmt, (&fmt+1)); (but it didn't work, thus ... */
va_start (ap, fmt);
ret = vsprintf( szOut, fmt, ap);
va_end (ap);
if( fg_DebugCallback!=NULL && fg_DebugCallback(dbg_class, prio, szOut) ) {
FG_RELEASEDEBUGSEM;
return ret;
} else {
fprintf( fg_DebugOutput, szOut );
FG_RELEASEDEBUGSEM;
if( prio == FG_EXIT ) {
exit(0);
} else if( prio == FG_ABORT ) {
abort();
}
}
return ret;
}
/* $Log$
/* Revision 1.10 1998/03/14 00:31:21 curt
/* Beginning initial terrain texturing experiments.
/*
* Revision 1.9 1998/03/09 22:44:58 curt
* Modified so that you can specify FG_DEBUGCLASS ***or*** FG_DEBUG_PRIORITY
*
* Revision 1.8 1998/03/09 22:11:00 curt
* Processed through the format-o-matic.
*
* Revision 1.7 1998/02/16 13:39:43 curt
* Miscellaneous weekend tweaks. Fixed? a cache problem that caused whole
* tiles to occasionally be missing.
*
*/

View file

@ -1,143 +0,0 @@
/* -*- Mode: C++ -*-
*
* fg_debug.h -- Flight Gear debug utility functions
*
* Written by Paul Bleisch, started January 1998.
*
* Copyright (C) 1998 Paul Bleisch, pbleisch@acm.org
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
* (Log is kept at end of this file)
**************************************************************************/
#ifndef _FG_DEBUG_H
#define _FG_DEBUG_H
#include <stdio.h>
/* NB: To add a dbg_class, add it here, and add it to the structure in
fg_debug.c */
typedef enum {
FG_NONE = 0x00000000,
FG_TERRAIN = 0x00000001,
FG_ASTRO = 0x00000002,
FG_FLIGHT = 0x00000004,
FG_INPUT = 0x00000008,
FG_GL = 0x00000010,
FG_VIEW = 0x00000020,
FG_COCKPIT = 0x00000040,
FG_GENERAL = 0x00000080,
FG_MATH = 0x00000100,
FG_EVENT = 0x00000200,
FG_AIRCRAFT= 0x00000400,
FG_UNDEFD = 0x00001000, // For range checking
FG_ALL = 0xFFFFFFFF
} fgDebugClass;
/* NB: To add a priority, add it here. */
typedef enum {
FG_BULK, /* For frequent messages */
FG_DEBUG, /* Less frequent debug type messages */
FG_INFO, /* Informatory messages */
FG_WARN, /* Possible impending problem */
FG_ALERT, /* Very possible impending problem */
FG_EXIT, /* Problem (no core) */
FG_ABORT /* Abandon ship (core) */
} fgDebugPriority;
/* Initialize the debuggin stuff. */
void fgInitDebug( void );
/* fgPrintf
Expects:
class fgDebugClass mask for this message.
prio fgDebugPriority of this message.
fmt printf like string format
... var args for fmt
Returns:
number of items in fmt handled.
This function works like the standard C library function printf() with
the addition of message classes and priorities (see fgDebugClasses
and fgDebugPriorities). These additions allow us to classify messages
and disable sets of messages at runtime. Only messages with a prio
greater than or equal to fg_DebugPriority and in the current debug class
(fg_DebugClass) are printed.
*/
int fgPrintf( fgDebugClass dbg_class, fgDebugPriority prio, char *fmt, ... );
/* fgSetDebugLevels()
Expects:
dbg_class Bitmask representing classes to display.
prio Minimum priority of messages to display.
*/
void fgSetDebugLevels( fgDebugClass dbg_class, fgDebugPriority prio );
/* fgSetDebugOutput()
Expects:
file A FILE* to a stream to send messages to.
It is assumed the file stream is open and writable. The system
defaults to stderr. The current stream is flushed but not
closed.
*/
void fgSetDebugOutput( FILE *out );
/* fgRegisterDebugCallback
Expects:
callback A function that takes parameters as defined by the
fgDebugCallback type.
Returns:
a pointer to the previously registered callback (if any)
Install a user defined debug log callback. This callback is called w
whenever fgPrintf is called. The parameters passed to the callback are
defined above by fgDebugCallback. outstr is the string that is to be
printed. If callback returns nonzero, it is assumed that the message
was handled fully by the callback and **fgPrintf need do no further
processing of the message.** Only one callback may be installed at a
time.
*/
//typedef int (*fgDebugCallback)(fgDebugClass, fgDebugPriority, char *outstr);
//fgDebugCallback fgRegisterDebugCallback( fgDebugCallback callback );
typedef int (*fgDebugCallback)( int DebugClass, int DebugPriority, char *outstr);
fgDebugCallback fgRegisterDebugCallback( fgDebugCallback callback );
// Leave these alone. Access intended for fg_debug and command line processing.
//
extern fgDebugClass fg_DebugClass;
extern fgDebugPriority fg_DebugPriority;
extern FILE * fg_DebugOutput;
#endif /* _FG_DEBUG_H */

View file

@ -44,6 +44,7 @@
#include <Astro/sun.h>
#include <Autopilot/autopilot.h>
#include <Cockpit/cockpit.h>
#include <Debug/fg_debug.h>
#include <Joystick/joystick.h>
#include <Math/fg_random.h>
#include <Scenery/scenery.h>
@ -52,7 +53,6 @@
#include <Time/fg_time.h>
#include <Time/sunpos.h>
#include <Weather/weather.h>
#include <Main/fg_debug.h>
extern int show_hud; /* HUD state */
extern int displayInstruments;
@ -228,14 +228,10 @@ int fgInitSubsystems( void ) {
// FG_Altitude = FG_Runway_altitude + 3.758099;
// Test Position
FG_Longitude = ( -113.5 ) * DEG_TO_RAD;
FG_Latitude = ( 33.5 ) * DEG_TO_RAD;
FG_Runway_altitude = 8000.0;
FG_Altitude = FG_Runway_altitude + 3.758099;
// A random test position
// FG_Longitude = ( 88128.00 / 3600.0 ) * DEG_TO_RAD;
// FG_Latitude = ( 93312.00 / 3600.0 ) * DEG_TO_RAD;
// FG_Longitude = ( -109.5 ) * DEG_TO_RAD;
// FG_Latitude = ( 32.5 ) * DEG_TO_RAD;
// FG_Runway_altitude = (2646 + 2000);
// FG_Altitude = FG_Runway_altitude + 3.758099;
fgPrintf( FG_GENERAL, FG_INFO,
"Initial position is: (%.4f, %.4f, %.2f)\n",
@ -405,10 +401,13 @@ int fgInitSubsystems( void ) {
/* $Log$
/* Revision 1.55 1998/04/14 02:21:03 curt
/* Incorporated autopilot heading hold contributed by: Jeff Goeke-Smith
/* <jgoeke@voyager.net>
/* Revision 1.56 1998/04/18 04:11:28 curt
/* Moved fg_debug to it's own library, added zlib support.
/*
* Revision 1.55 1998/04/14 02:21:03 curt
* Incorporated autopilot heading hold contributed by: Jeff Goeke-Smith
* <jgoeke@voyager.net>
*
* Revision 1.54 1998/04/08 23:35:36 curt
* Tweaks to Gnu automake/autoconf system.
*

View file

@ -8,16 +8,16 @@ SET FG_ROOT=@prefix@
:CONT1
REM Check for the existance of the executable
IF NOT EXIST %FG_ROOT%/BIN/FG.EXE GOTO ERROR1
IF NOT EXIST %FG_ROOT%\BIN\FG.EXE GOTO ERROR1
REM Now that FG_ROOT has been set, run the program
ECHO FG_ROOT = %FG_ROOT%
%FG_ROOT%/BIN/FG.EXE
%FG_ROOT%\BIN\FG.EXE
GOTO END
:ERROR1
ECHO Cannot find %FG_ROOT%/BIN/FG.EXE
ECHO Cannot find %FG_ROOT%\BIN\FG.EXE
GOTO END
:END

View file

@ -28,13 +28,13 @@
#include <Include/fg_constants.h>
#include <Debug/fg_debug.h>
#include <Flight/flight.h>
#include <Math/mat3.h>
#include <Math/polar.h>
#include <Math/vector.h>
#include <Scenery/scenery.h>
#include <Time/fg_time.h>
#include <Main/fg_debug.h>
/* This is a record containing current view parameters */
struct fgVIEW current_view;
@ -188,9 +188,12 @@ void fgViewUpdate(fgFLIGHT *f, struct fgVIEW *v, struct fgLIGHT *l) {
/* $Log$
/* Revision 1.15 1998/02/20 00:16:24 curt
/* Thursday's tweaks.
/* Revision 1.16 1998/04/18 04:11:29 curt
/* Moved fg_debug to it's own library, added zlib support.
/*
* Revision 1.15 1998/02/20 00:16:24 curt
* Thursday's tweaks.
*
* Revision 1.14 1998/02/09 15:07:50 curt
* Minor tweaks.
*