From f183aa480c549695ac5b481fade04e62f71d1e0a Mon Sep 17 00:00:00 2001 From: Mike Turvey Date: Wed, 3 Jan 2018 18:58:43 -0700 Subject: Controller Buttons Fully Implemented Fully plumbed support for controller buttons Also, commented haptic call because it messed with the vive_magic calls, given where I had it. --- include/libsurvive/survive.h | 8 ++++---- include/libsurvive/survive_types.h | 8 +++++++- 2 files changed, 11 insertions(+), 5 deletions(-) (limited to 'include/libsurvive') diff --git a/include/libsurvive/survive.h b/include/libsurvive/survive.h index f3a17c8..e4afadf 100644 --- a/include/libsurvive/survive.h +++ b/include/libsurvive/survive.h @@ -93,10 +93,7 @@ struct config_group; #define BUTTON_QUEUE_MAX_LEN 32 -#define BUTTON_EVENT_BUTTON_NONE 0 -#define BUTTON_EVENT_BUTTON_DOWN 1 -#define BUTTON_EVENT_BUTTON_UP 2 -#define BUTTON_EVENT_AXIS_CHANGED 3 + // note: buttonId and axisId are 1-indexed values. // a value of 0 for an id means that no data is present in that value @@ -129,6 +126,7 @@ struct SurviveContext light_process_func lightproc; imu_process_func imuproc; angle_process_func angleproc; + button_process_func buttonproc; struct config_group* global_config_values; struct config_group* lh_config; //lighthouse configs @@ -163,6 +161,7 @@ void survive_install_error_fn( SurviveContext * ctx, text_feedback_func fbp ); void survive_install_light_fn( SurviveContext * ctx, light_process_func fbp ); 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_close( SurviveContext * ctx ); int survive_poll( SurviveContext * ctx ); @@ -185,6 +184,7 @@ int survive_cal_get_status( struct SurviveContext * ctx, char * description, int void survive_default_light_process( SurviveObject * so, int sensor_id, int acode, int timeinsweep, uint32_t timecode, uint32_t length , uint32_t lh); void survive_default_imu_process( SurviveObject * so, int mode, FLT * accelgyro, uint32_t timecode, int id ); 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); ////////////////////// Survive Drivers //////////////////////////// diff --git a/include/libsurvive/survive_types.h b/include/libsurvive/survive_types.h index 224719e..fa3eb2f 100644 --- a/include/libsurvive/survive_types.h +++ b/include/libsurvive/survive_types.h @@ -27,6 +27,12 @@ typedef struct SurvivePose #define INTBUFFSIZE 64 #define SENSORS_PER_OBJECT 32 +// These are used for the eventType of button_process_func +#define BUTTON_EVENT_BUTTON_NONE 0 +#define BUTTON_EVENT_BUTTON_DOWN 1 +#define BUTTON_EVENT_BUTTON_UP 2 +#define BUTTON_EVENT_AXIS_CHANGED 3 + typedef struct SurviveObject SurviveObject; typedef struct SurviveContext SurviveContext; typedef struct BaseStationData BaseStationData; @@ -36,7 +42,7 @@ typedef void (*text_feedback_func)( SurviveContext * ctx, const char * fault ); typedef void (*light_process_func)( SurviveObject * so, int sensor_id, int acode, int timeinsweep, uint32_t timecode, uint32_t length, uint32_t lighthouse); typedef void (*imu_process_func)( SurviveObject * so, int mask, FLT * accelgyro, uint32_t timecode, int id ); 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); //Device drivers (prefix your drivers with "DriverReg") i.e. // REGISTER_LINKTIME( DriverRegHTCVive ); -- cgit v1.2.3