diff options
-rw-r--r-- | Makefile | 20 | ||||
-rw-r--r-- | calibrate.c | 27 | ||||
-rw-r--r-- | data_recorder.c | 33 |
3 files changed, 57 insertions, 23 deletions
@@ -4,6 +4,7 @@ CC:=gcc CFLAGS:=-Iinclude/libsurvive -I. -fPIC -g -O3 -Iredist -flto -DUSE_DOUBLE -std=gnu99 -rdynamic +#LDFLAGS:=-L/usr/local/lib -lpthread -lusb-1.0 -lz -lm -flto -g LDFLAGS:=-L/usr/local/lib -lpthread -lusb-1.0 -lz -lm -flto -g #---------- @@ -13,8 +14,11 @@ UNAME=$(shell uname) # Mac OSX ifeq ($(UNAME), Darwin) -DRAWFUNCTIONS=redist/CNFGFunctions.c redist/CNFGNullDriver.c -GRAPHICS_LOFI:=redist/CNFGFunctions.o redist/CNFGNullDriver.o + +CFLAGS:=$(CFLAGS) -DRASTERIZER -DHIDAPI -I/usr/local/include -x objective-c +LDFLAGS:=$(LDFLAGS) -framework OpenGL -framework Cocoa -framework IOKit +DRAWFUNCTIONS=redist/CNFGFunctions.c redist/CocoaDriver.m +GRAPHICS_LOFI:=redist/CNFGFunctions.o redist/CocoaDriver.o # Linux / FreeBSD else @@ -27,6 +31,9 @@ endif POSERS:=src/poser_dummy.o src/poser_daveortho.o src/poser_charlesslow.o src/poser_octavioradii.o src/poser_turveytori.o REDISTS:=redist/json_helpers.o redist/linmath.o redist/jsmn.o redist/os_generic.o +ifeq ($(UNAME), Darwin) +REDISTS:=$(REDISTS) redist/hid-osx.c +endif LIBSURVIVE_CORE:=src/survive.o src/survive_usb.o src/survive_data.o src/survive_process.o src/ootx_decoder.o src/survive_driverman.o src/survive_vive.o src/survive_config.o src/survive_cal.o @@ -52,13 +59,16 @@ LIBSURVIVE_C:=$(LIBSURVIVE_O:.o=.c) # unused: redist/crc32.c +testCocoa : testCocoa.c $(DRAWFUNCTIONS) + $(CC) -o $@ $^ $(LDFLAGS) $(CFLAGS) + test : test.c ./lib/libsurvive.so redist/os_generic.o $(CC) -o $@ $^ $(LDFLAGS) $(CFLAGS) -data_recorder : data_recorder.c ./lib/libsurvive.so redist/os_generic.c $(GRAPHICS_LOFI) +data_recorder : data_recorder.c ./lib/libsurvive.so redist/os_generic.c $(DRAWFUNCTIONS) $(CC) -o $@ $^ $(LDFLAGS) $(CFLAGS) -calibrate : calibrate.c ./lib/libsurvive.so redist/os_generic.c $(GRAPHICS_LOFI) +calibrate : calibrate.c ./lib/libsurvive.so redist/os_generic.c $(DRAWFUNCTIONS) $(CC) -o $@ $^ $(LDFLAGS) $(CFLAGS) calibrate_client : calibrate_client.c ./lib/libsurvive.so redist/os_generic.c $(GRAPHICS_LOFI) @@ -79,7 +89,7 @@ calibrate_tcc : $(LIBSURVIVE_C) tcc -DRUNTIME_SYMNUM $(CFLAGS) -o $@ $^ $(LDFLAGS) calibrate.c redist/os_generic.c $(DRAWFUNCTIONS) redist/symbol_enumerator.c clean : - rm -rf *.o src/*.o *~ src/*~ test data_recorder lib/libsurvive.so redist/*.o redist/*~ + rm -rf *.o src/*.o *~ src/*~ test data_recorder calibrate lib/libsurvive.so redist/*.o redist/*~ diff --git a/calibrate.c b/calibrate.c index 67c1d27..9a43696 100644 --- a/calibrate.c +++ b/calibrate.c @@ -1,4 +1,4 @@ -//Data recorder mod with GUI showing light positions. +// recorder mod with GUI showing light positions. #include <stdio.h> #include <stdlib.h> @@ -105,7 +105,7 @@ void my_angle_process( struct SurviveObject * so, int sensor_id, int acode, uint char* sensor_name[32]; -void * GuiThread( void * v ) +void * GuiThread( void * jnk ) { short screenx, screeny; CNFGBGColor = 0x000000; @@ -167,10 +167,9 @@ void * GuiThread( void * v ) } } +int SurviveThreadLoaded=0; - - -int main() +void * SurviveThread(void *jnk) { ctx = survive_init( 0 ); @@ -186,23 +185,35 @@ int main() survive_cal_install( ctx ); - OGCreateThread( GuiThread, 0 ); - - if( !ctx ) { fprintf( stderr, "Fatal. Could not start\n" ); return 1; } + SurviveThreadLoaded=1; + while(survive_poll(ctx) == 0 && !quit) { //Do stuff. } survive_close( ctx ); +} + + +int main() +{ + // Create the survive thread + OGCreateThread( SurviveThread, 0 ); + + // Wait for the survive thread to load + while(!SurviveThreadLoaded){ OGUSleep(100); } + // Run the GUI in the main thread + GuiThread(0); printf( "Returned\n" ); + return 0; } diff --git a/data_recorder.c b/data_recorder.c index 04a219a..085b67d 100644 --- a/data_recorder.c +++ b/data_recorder.c @@ -100,6 +100,10 @@ void my_imu_process( struct SurviveObject * so, int mask, FLT * accelgyro, uint3 void * GuiThread( void * v ) { + CNFGBGColor = 0x000000; + CNFGDialogColor = 0x444444; + CNFGSetup( "Survive GUI Debug", 640, 480 ); + short screenx, screeny; while(1) { @@ -128,37 +132,46 @@ void * GuiThread( void * v ) } } - CNFGSwapBuffers(); OGUSleep( 10000 ); } } +int SurviveThreadLoaded=0; - -int main() +void *SurviveThread(void *junk) { ctx = survive_init( 0 ); survive_install_light_fn( ctx, my_light_process ); survive_install_imu_fn( ctx, my_imu_process ); - - CNFGBGColor = 0x000000; - CNFGDialogColor = 0x444444; - CNFGSetup( "Survive GUI Debug", 640, 480 ); - OGCreateThread( GuiThread, 0 ); - - if( !ctx ) { fprintf( stderr, "Fatal. Could not start\n" ); return 1; } + SurviveThreadLoaded = 1; + while(survive_poll(ctx) == 0) { + printf("Do stuff.\n"); //Do stuff. } + + return 0; +} + +int main() +{ + // Create the libsurvive thread + OGCreateThread(SurviveThread, 0); + + // Wait for the survive thread to load + while (!SurviveThreadLoaded) { OGUSleep(100); } + + // Run the Gui in the main thread + GuiThread(0); } |