Monado OpenXR Runtime
vive_device Struct Reference
Inheritance diagram for vive_device:
Collaboration diagram for vive_device:

Data Fields

struct xrt_device base
 
struct os_hid_devicemainboard_dev
 
struct os_hid_devicesensors_dev
 
struct os_hid_devicewatchman_dev
 
struct lighthouse_watchman watchman
 
struct os_thread_helper sensors_thread
 
struct os_thread_helper watchman_thread
 
struct os_thread_helper mainboard_thread
 
struct {
   timepoint_ns   last_sample_ts_ns
 
   uint32_t   last_sample_ticks
 
   uint8_t   sequence
 
imu
 
struct {
   uint16_t   ipd
 
   uint16_t   lens_separation
 
   uint16_t   proximity
 
   uint8_t   button
 
   uint8_t   audio_button
 
board
 
enum u_logging_level log_level
 
bool disconnect_notified
 
struct {
   struct u_var_button   switch_tracker_btn
 
   char   hand_status [128]
 
   char   slam_status [128]
 
gui
 
struct vive_config config
 
struct {
   struct os_mutex   mutex
 Protects all members of the fusion substruct. More...
 
   struct m_imu_3dof   i3dof
 Main fusion calculator. More...
 
   struct m_relation_history *   relation_hist
 Prediction. More...
 
fusion
 
struct {
   struct xrt_tracked_slam *   slam
 SLAM tracker. More...
 
   bool   slam_enabled
 Set at start. Whether the SLAM tracker was initialized. More...
 
   bool   hand_enabled
 Set at start. Whether the hand tracker was initialized. More...
 
   bool   imu2me
 SLAM systems track the IMU pose, enabling this corrects it to middle of the eyes. More...
 
tracking
 Fields related to camera-based tracking (SLAM and hand tracking) More...
 
struct u_var_draggable_f32 tracked_offset_ms
 Offset for tracked pose offsets (applies to both fusion and SLAM). More...
 
struct xrt_pose P_imu_me
 IMU to head/display/middle-of-eyes transform in OpenXR coords. More...
 
bool slam_over_3dof
 Whether to track the HMD with 6dof SLAM or fallback to the 3dof tracker. More...
 
struct vive_sourcesource
 In charge of managing raw samples, redirects them for tracking. More...
 
struct xrt_pose pose
 Last tracked pose. More...
 
struct xrt_pose offset
 Additional offset to apply to pose More...
 
- Data Fields inherited from xrt_device
enum xrt_device_name name
 Enum identifier of the device. More...
 
enum xrt_device_type device_type
 
char str [256]
 A string describing the device. More...
 
char serial [256]
 A unique identifier. Persistent across configurations, if possible. More...
 
struct xrt_hmd_partshmd
 Null if this device does not interface with the users head. More...
 
struct xrt_tracking_origintracking_origin
 Always set, pointing to the tracking system for this device. More...
 
size_t binding_profile_count
 Number of bindings in xrt_device::binding_profiles. More...
 
struct xrt_binding_profilebinding_profiles
 
size_t input_count
 Number of inputs. More...
 
struct xrt_inputinputs
 Array of input structs. More...
 
size_t output_count
 Number of outputs. More...
 
struct xrt_outputoutputs
 Array of output structs. More...
 
bool orientation_tracking_supported
 
bool position_tracking_supported
 
bool hand_tracking_supported
 
bool eye_gaze_supported
 
bool force_feedback_supported
 
bool ref_space_usage_supported
 
bool form_factor_check_supported
 
bool stage_supported
 
bool face_tracking_supported
 
void(* update_inputs )(struct xrt_device *xdev)
 Update any attached inputs. More...
 
void(* get_tracked_pose )(struct xrt_device *xdev, enum xrt_input_name name, uint64_t at_timestamp_ns, struct xrt_space_relation *out_relation)
 Get relationship of a tracked device to the tracking origin space as the base space. More...
 
void(* get_hand_tracking )(struct xrt_device *xdev, enum xrt_input_name name, uint64_t desired_timestamp_ns, struct xrt_hand_joint_set *out_value, uint64_t *out_timestamp_ns)
 Get relationship of hand joints to the tracking origin space as the base space. More...
 
xrt_result_t(* get_face_tracking )(struct xrt_device *xdev, enum xrt_input_name facial_expression_type, struct xrt_facial_expression_set *out_value)
 Get the requested blend shape properties & weights for a face tracker. More...
 
void(* set_output )(struct xrt_device *xdev, enum xrt_output_name name, const union xrt_output_value *value)
 Set a output value. More...
 
void(* get_view_poses )(struct xrt_device *xdev, const struct xrt_vec3 *default_eye_relation, uint64_t at_timestamp_ns, uint32_t view_count, struct xrt_space_relation *out_head_relation, struct xrt_fov *out_fovs, struct xrt_pose *out_poses)
 Get the per-view pose in relation to the view space. More...
 
bool(* compute_distortion )(struct xrt_device *xdev, uint32_t view, float u, float v, struct xrt_uv_triplet *out_result)
 Compute the distortion at a single point. More...
 
xrt_result_t(* get_visibility_mask )(struct xrt_device *xdev, enum xrt_visibility_mask_type type, uint32_t view_index, struct xrt_visibility_mask **out_mask)
 Get the visibility mask for this device. More...
 
xrt_result_t(* ref_space_usage )(struct xrt_device *xdev, enum xrt_reference_space_type type, enum xrt_input_name name, bool used)
 Called by the xrt_space_overseer when a reference space that is implemented by this device is first used, or when the last usage of the reference space stops. More...
 
bool(* is_form_factor_available )(struct xrt_device *xdev, enum xrt_form_factor form_factor)
 Check if given form factor is available or not. More...
 
void(* destroy )(struct xrt_device *xdev)
 Destroy device. More...
 

Additional Inherited Members

- Public Member Functions inherited from xrt_device
static void xrt_device_update_inputs (struct xrt_device *xdev)
 Helper function for xrt_device::update_inputs. More...
 
static void xrt_device_get_tracked_pose (struct xrt_device *xdev, enum xrt_input_name name, uint64_t at_timestamp_ns, struct xrt_space_relation *out_relation)
 Helper function for xrt_device::get_tracked_pose. More...
 
static void xrt_device_get_hand_tracking (struct xrt_device *xdev, enum xrt_input_name name, uint64_t desired_timestamp_ns, struct xrt_hand_joint_set *out_value, uint64_t *out_timestamp_ns)
 Helper function for xrt_device::get_hand_tracking. More...
 
static xrt_result_t xrt_device_get_face_tracking (struct xrt_device *xdev, enum xrt_input_name facial_expression_type, struct xrt_facial_expression_set *out_value)
 Helper function for xrt_device::get_face_tracking. More...
 
static void xrt_device_set_output (struct xrt_device *xdev, enum xrt_output_name name, const union xrt_output_value *value)
 Helper function for xrt_device::set_output. More...
 
static void xrt_device_get_view_poses (struct xrt_device *xdev, const struct xrt_vec3 *default_eye_relation, uint64_t at_timestamp_ns, uint32_t view_count, struct xrt_space_relation *out_head_relation, struct xrt_fov *out_fovs, struct xrt_pose *out_poses)
 Helper function for xrt_device::get_view_poses. More...
 
static bool xrt_device_compute_distortion (struct xrt_device *xdev, uint32_t view, float u, float v, struct xrt_uv_triplet *out_result)
 Helper function for xrt_device::compute_distortion. More...
 
static xrt_result_t xrt_device_get_visibility_mask (struct xrt_device *xdev, enum xrt_visibility_mask_type type, uint32_t view_index, struct xrt_visibility_mask **out_mask)
 Helper function for xrt_device::get_visibility_mask. More...
 
static xrt_result_t xrt_device_ref_space_usage (struct xrt_device *xdev, enum xrt_reference_space_type type, enum xrt_input_name name, bool used)
 Helper function for xrt_device::ref_space_usage. More...
 
static bool xrt_device_is_form_factor_available (struct xrt_device *xdev, enum xrt_form_factor form_factor)
 Helper function for xrt_device::is_form_factor_available. More...
 
static void xrt_device_destroy (struct xrt_device **xdev_ptr)
 Helper function for xrt_device::destroy. More...
 

Field Documentation

◆ hand_enabled

bool vive_device::hand_enabled

Set at start. Whether the hand tracker was initialized.

◆ i3dof

struct m_imu_3dof vive_device::i3dof

Main fusion calculator.

◆ imu2me

bool vive_device::imu2me

SLAM systems track the IMU pose, enabling this corrects it to middle of the eyes.

◆ mutex

struct os_mutex vive_device::mutex

Protects all members of the fusion substruct.

◆ offset

struct xrt_pose vive_device::offset

Additional offset to apply to pose

◆ P_imu_me

struct xrt_pose vive_device::P_imu_me

IMU to head/display/middle-of-eyes transform in OpenXR coords.

Referenced by precompute_sensor_transforms().

◆ pose

struct xrt_pose vive_device::pose

Last tracked pose.

◆ relation_hist

struct m_relation_history* vive_device::relation_hist

Prediction.

◆ slam

struct xrt_tracked_slam* vive_device::slam

SLAM tracker.

◆ slam_enabled

bool vive_device::slam_enabled

Set at start. Whether the SLAM tracker was initialized.

◆ slam_over_3dof

bool vive_device::slam_over_3dof

Whether to track the HMD with 6dof SLAM or fallback to the 3dof tracker.

◆ source

struct vive_source* vive_device::source

In charge of managing raw samples, redirects them for tracking.

◆ tracked_offset_ms

struct u_var_draggable_f32 vive_device::tracked_offset_ms

Offset for tracked pose offsets (applies to both fusion and SLAM).

Applied when getting the tracked poses, so is effectivily a offset to increase or decrease prediction.

◆ 

struct { ... } vive_device::tracking

Fields related to camera-based tracking (SLAM and hand tracking)


The documentation for this struct was generated from the following file: