From 42bbb9f93fab2576a99b27e009d8f625cd08088f Mon Sep 17 00:00:00 2001 From: curt Date: Sat, 12 Jul 1997 02:13:04 +0000 Subject: [PATCH] Add ftime() support for those that don't have gettimeofday() --- Simulator/make.inc | 9 ++++++++- Time/fg_timer.c | 41 +++++++++++++++++++++++++++++++++-------- 2 files changed, 41 insertions(+), 9 deletions(-) diff --git a/Simulator/make.inc b/Simulator/make.inc index 4d6201089..8a482825d 100644 --- a/Simulator/make.inc +++ b/Simulator/make.inc @@ -54,7 +54,11 @@ AR = ar # a real time system and call the flight model routines # at a regular interval, rather than between screen updates # which can be highly variable. This can make the flight -# much smoother. +# model calculations much smoother. +# +# -DUSE_FTIME - Use ftime() to get an accurate current time instead of +# gettimeofday() +# #--------------------------------------------------------------------------- FG_CFLAGS = -g -Wall @@ -101,6 +105,9 @@ GRAPHICS_LIBS = $(MESA_LIBS) $(X11_LIBS) #--------------------------------------------------------------------------- # $Log$ +# Revision 1.4 1997/07/12 02:13:04 curt +# Add ftime() support for those that don't have gettimeofday() +# # Revision 1.3 1997/07/09 21:31:08 curt # Working on making the ground "hard." # diff --git a/Time/fg_timer.c b/Time/fg_timer.c index 0b07037ef..0f42b55af 100644 --- a/Time/fg_timer.c +++ b/Time/fg_timer.c @@ -26,9 +26,12 @@ #include /* for timer routines */ #include /* for printf() */ -#include /* for get/setitimer, gettimeofday, struct timeval */ -#include +#ifdef USE_FTIME +# include /* for ftime() and struct timeb */ +#else +# include /* for get/setitimer, gettimeofday, struct timeval */ +#endif USE_FTIME #include "fg_timer.h" @@ -79,28 +82,47 @@ void fgTimerInit(float dt, void (*f)()) { exit(0); } } - #endif HAVE_ITIMER + /* This function returns the number of milleseconds since the last time it was called. */ int fgGetTimeInterval() { + int interval; + static int inited = 0; + +#ifdef USE_FTIME + static struct timeb last; + static struct timeb current; +#else static struct timeval last; static struct timeval current; static struct timezone tz; - static int inited = 0; - - int interval; +#endif USE_FTIME if ( ! inited ) { inited = 1; + +#ifdef USE_FTIME + ftime(&last); +#else gettimeofday(&last, &tz); +#endif + interval = 0; } else { + +#ifdef USE_FTIME + ftime(¤t); + interval = 1000 * (current.time - last.time) + + (current.millitm - last.millitm); +#else gettimeofday(¤t, &tz); interval = 1000000 * (current.tv_sec - last.tv_sec) + (current.tv_usec - last.tv_usec); interval /= 1000; /* convert back to milleseconds */ +#endif + last = current; } @@ -109,9 +131,12 @@ int fgGetTimeInterval() { /* $Log$ -/* Revision 1.5 1997/06/26 19:08:38 curt -/* Restructuring make, adding automatic "make dep" support. +/* Revision 1.6 1997/07/12 02:13:04 curt +/* Add ftime() support for those that don't have gettimeofday() /* + * Revision 1.5 1997/06/26 19:08:38 curt + * Restructuring make, adding automatic "make dep" support. + * * Revision 1.4 1997/06/25 15:39:49 curt * Minor changes to compile with rsxnt/win32. *