aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorCNLohr <charles@cnlohr.com>2018-03-12 12:29:14 -0400
committerGitHub <noreply@github.com>2018-03-12 12:29:14 -0400
commite456a3ec1b0e1f04d55cdad7d95898f20bd26c89 (patch)
treec651c71625a8dbecc0b8293a1701a648eb836984 /include
parent7fadeeff29074520224be385ecd6c50271a07220 (diff)
parentee0fd0be34cd6715b704be534b7e97087905571f (diff)
downloadlibsurvive-e456a3ec1b0e1f04d55cdad7d95898f20bd26c89.tar.gz
libsurvive-e456a3ec1b0e1f04d55cdad7d95898f20bd26c89.tar.bz2
Merge pull request #112 from cnlohr/poser_callbacks
Poser callbacks
Diffstat (limited to 'include')
-rw-r--r--include/libsurvive/poser.h16
-rw-r--r--include/libsurvive/survive.h3
-rw-r--r--include/libsurvive/survive_types.h1
3 files changed, 16 insertions, 4 deletions
diff --git a/include/libsurvive/poser.h b/include/libsurvive/poser.h
index 582590e..57a8599 100644
--- a/include/libsurvive/poser.h
+++ b/include/libsurvive/poser.h
@@ -17,15 +17,23 @@ typedef enum PoserType_t
POSERDATA_DISASSOCIATE, //If you get this, it doesn't contain data. It just tells you to please disassociate from the current SurviveObject and delete your poserdata.
} PoserType;
+typedef void (*poser_raw_pose_func)(SurviveObject *so, uint8_t lighthouse, FLT *pose, void *user);
+typedef void (*poser_lighthouse_pose_func)(SurviveObject *so, uint8_t lighthouse, SurvivePose *pose, void *user);
+
typedef struct
{
PoserType pt;
- uint8_t data[0];
+ poser_raw_pose_func rawposeproc;
+ poser_lighthouse_pose_func lighthouseposeproc;
+ void *userdata;
} PoserData;
+void PoserData_poser_raw_pose_func(PoserData *poser_data, SurviveObject *so, uint8_t lighthouse, FLT *pose);
+void PoserData_lighthouse_pose_func(PoserData *poser_data, SurviveObject *so, uint8_t lighthouse, SurvivePose *pose);
+
typedef struct
{
- PoserType pt;
+ PoserData hdr;
uint8_t datamask; //0 = accel present, 1 = gyro present, 2 = mag present.
FLT accel[3];
FLT gyro[3];
@@ -35,7 +43,7 @@ typedef struct
typedef struct
{
- PoserType pt;
+ PoserData hdr;
int sensor_id;
int acode; //OOTX Code associated with this sweep. bit 1 indicates vertical(1) or horizontal(0) sweep
int lh; //Lighthouse making this sweep
@@ -46,7 +54,7 @@ typedef struct
typedef struct
{
- PoserType pt;
+ PoserData hdr;
//If "lengths[...]" < 0, means not a valid piece of sweep information.
FLT lengths[SENSORS_PER_OBJECT][NUM_LIGHTHOUSES][2];
diff --git a/include/libsurvive/survive.h b/include/libsurvive/survive.h
index 58462b3..03a71bc 100644
--- a/include/libsurvive/survive.h
+++ b/include/libsurvive/survive.h
@@ -129,6 +129,7 @@ struct SurviveContext
angle_process_func angleproc;
button_process_func buttonproc;
raw_pose_func rawposeproc;
+ lighthouse_pose_func lighthouseposeproc;
struct config_group* global_config_values;
struct config_group* lh_config; //lighthouse configs
@@ -175,6 +176,7 @@ void survive_install_imu_fn( SurviveContext * ctx, imu_process_func fbp );
void survive_install_angle_fn( SurviveContext * ctx, angle_process_func fbp );
void survive_install_button_fn(SurviveContext * ctx, button_process_func fbp);
void survive_install_raw_pose_fn(SurviveContext * ctx, raw_pose_func fbp);
+void survive_install_lighthouse_pose_fn(SurviveContext *ctx, lighthouse_pose_func fbp);
void survive_close( SurviveContext * ctx );
int survive_poll( SurviveContext * ctx );
@@ -202,6 +204,7 @@ void survive_default_imu_process( SurviveObject * so, int mode, FLT * accelgyro,
void survive_default_angle_process( SurviveObject * so, int sensor_id, int acode, uint32_t timecode, FLT length, FLT angle, uint32_t lh );
void survive_default_button_process(SurviveObject * so, uint8_t eventType, uint8_t buttonId, uint8_t axis1Id, uint16_t axis1Val, uint8_t axis2Id, uint16_t axis2Val);
void survive_default_raw_pose_process(SurviveObject *so, uint8_t lighthouse, SurvivePose *pose);
+void survive_default_lighthouse_pose_process(SurviveContext *ctx, uint8_t lighthouse, SurvivePose *pose);
////////////////////// Survive Drivers ////////////////////////////
diff --git a/include/libsurvive/survive_types.h b/include/libsurvive/survive_types.h
index 4db76b4..ce0baac 100644
--- a/include/libsurvive/survive_types.h
+++ b/include/libsurvive/survive_types.h
@@ -50,6 +50,7 @@ typedef void (*imu_process_func)( SurviveObject * so, int mask, FLT * accelgyro,
typedef void (*angle_process_func)( SurviveObject * so, int sensor_id, int acode, uint32_t timecode, FLT length, FLT angle, uint32_t lh);
typedef void(*button_process_func)(SurviveObject * so, uint8_t eventType, uint8_t buttonId, uint8_t axis1Id, uint16_t axis1Val, uint8_t axis2Id, uint16_t axis2Val);
typedef void (*raw_pose_func)(SurviveObject *so, uint8_t lighthouse, SurvivePose *pose);
+typedef void (*lighthouse_pose_func)(SurviveContext *ctx, uint8_t lighthouse, SurvivePose *pose);
typedef int(*haptic_func)(SurviveObject * so, uint8_t reserved, uint16_t pulseHigh , uint16_t pulseLow, uint16_t repeatCount);