aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile20
-rw-r--r--calibrate.c27
-rw-r--r--data_recorder.c33
3 files changed, 57 insertions, 23 deletions
diff --git a/Makefile b/Makefile
index 54fd6ee..5d7336b 100644
--- a/Makefile
+++ b/Makefile
@@ -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);
}