aboutsummaryrefslogtreecommitdiff
path: root/include/libsurvive
diff options
context:
space:
mode:
Diffstat (limited to 'include/libsurvive')
-rw-r--r--include/libsurvive/poser.h22
-rw-r--r--include/libsurvive/survive.h10
-rw-r--r--include/libsurvive/survive_types.h3
3 files changed, 23 insertions, 12 deletions
diff --git a/include/libsurvive/poser.h b/include/libsurvive/poser.h
index ccd36ce..b0b1a7b 100644
--- a/include/libsurvive/poser.h
+++ b/include/libsurvive/poser.h
@@ -8,18 +8,19 @@
extern "C" {
#endif
-typedef enum PoserType_t
-{
+typedef enum PoserType_t {
POSERDATA_NONE = 0,
POSERDATA_IMU,
- POSERDATA_LIGHT, //Single lighting event.
- POSERDATA_FULL_SCENE, //Full, statified X, Y sweep data for both lighthouses.
- 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.
- POSERDATA_SYNC, //Sync pulse.
+ POSERDATA_LIGHT, // Single lighting event.
+ POSERDATA_FULL_SCENE, // Full, statified X, Y sweep data for both lighthouses.
+ 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.
+ POSERDATA_SYNC, // Sync pulse.
} PoserType;
typedef void (*poser_raw_pose_func)(SurviveObject *so, uint8_t lighthouse, SurvivePose *pose, void *user);
-typedef void (*poser_lighthouse_pose_func)(SurviveObject *so, uint8_t lighthouse, SurvivePose *pose, void *user);
+typedef void (*poser_lighthouse_pose_func)(SurviveObject *so, uint8_t lighthouse, SurvivePose *lighthouse_pose,
+ SurvivePose *object_pose, void *user);
typedef struct
{
@@ -30,10 +31,11 @@ typedef struct
} PoserData;
void PoserData_poser_raw_pose_func(PoserData *poser_data, SurviveObject *so, uint8_t lighthouse, SurvivePose *pose);
-void PoserData_lighthouse_pose_func(PoserData *poser_data, SurviveObject *so, uint8_t lighthouse, SurvivePose *pose);
+void PoserData_lighthouse_pose_func(PoserData *poser_data, SurviveObject *so, uint8_t lighthouse,
+ /* OUTPARAM */ SurvivePose *objUp2world, SurvivePose *lighthouse_poses,
+ SurvivePose *object_pose);
-typedef struct
-{
+typedef struct PoserDataIMU {
PoserData hdr;
uint8_t datamask; //0 = accel present, 1 = gyro present, 2 = mag present.
FLT accel[3];
diff --git a/include/libsurvive/survive.h b/include/libsurvive/survive.h
index 180d83c..747d076 100644
--- a/include/libsurvive/survive.h
+++ b/include/libsurvive/survive.h
@@ -16,14 +16,21 @@ extern "C" {
typedef struct {
FLT angles[SENSORS_PER_OBJECT][NUM_LIGHTHOUSES][2]; // 2 Axes (Angles in LH space)
uint32_t timecode[SENSORS_PER_OBJECT][NUM_LIGHTHOUSES][2]; // Timecode per axis in ticks
+
+ FLT accel[3];
+ FLT gyro[3];
+ FLT mag[3];
} SurviveSensorActivations;
struct PoserDataLight;
+struct PoserDataIMU;
/**
* Adds a lightData packet to the table.
*/
void SurviveSensorActivations_add(SurviveSensorActivations *self, struct PoserDataLight *lightData);
+void SurviveSensorActivations_add_imu(SurviveSensorActivations *self, struct PoserDataIMU *imuData);
+
/**
* Returns true iff both angles for the given sensor and lighthouse were seen at most `tolerance` ticks before the given
* `timecode_now`.
@@ -252,7 +259,8 @@ 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);
+void survive_default_lighthouse_pose_process(SurviveContext *ctx, uint8_t lighthouse, SurvivePose *lh_pose,
+ SurvivePose *obj_pose);
int survive_default_htc_config_process(SurviveObject *so, char *ct0conf, int len);
diff --git a/include/libsurvive/survive_types.h b/include/libsurvive/survive_types.h
index 5f5dd1f..7253df0 100644
--- a/include/libsurvive/survive_types.h
+++ b/include/libsurvive/survive_types.h
@@ -53,7 +53,8 @@ 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 void (*lighthouse_pose_func)(SurviveContext *ctx, uint8_t lighthouse, SurvivePose *lighthouse_pose,
+ SurvivePose *object_pose);
typedef int(*haptic_func)(SurviveObject * so, uint8_t reserved, uint16_t pulseHigh , uint16_t pulseLow, uint16_t repeatCount);