Monado OpenXR Runtime
|
Data Fields | |
struct xrt_device | base |
const struct wmr_headset_descriptor * | hmd_desc |
struct wmr_config_header | config_hdr |
firmware configuration block, with device names etc More... | |
struct wmr_hmd_config | config |
Config data parsed from the firmware JSON. More... | |
struct os_thread_helper | oth |
Packet reading thread. More... | |
enum u_logging_level | log_level |
int32_t | left_view_y_offset |
int32_t | right_view_y_offset |
struct os_hid_device * | hid_hololens_sensors_dev |
This is the Hololens Sensors device, this is where we get all of the IMU data and read the config from. More... | |
struct os_mutex | hid_lock |
struct os_hid_device * | hid_control_dev |
This is the vendor specific companion device of the Hololens Sensors. More... | |
bool | hmd_screen_enable |
Current desired HMD screen state. More... | |
uint16_t | raw_ipd |
Latest raw IPD value read from the device. More... | |
uint8_t | proximity_sensor |
Latest proximity sensor value read from the device. More... | |
struct wmr_hmd_distortion_params | distortion_params [2] |
Distortion related parameters. More... | |
struct hololens_sensors_packet | packet |
struct { | |
struct os_mutex mutex | |
Protects all members of the fusion substruct. More... | |
struct m_imu_3dof i3dof | |
Main fusion calculator. More... | |
struct xrt_vec3 last_angular_velocity | |
The last angular velocity from the IMU, for prediction. More... | |
uint64_t last_imu_timestamp_ns | |
When did we get the last IMU sample, in CPU time. More... | |
} | fusion |
struct { | |
struct xrt_fs * source | |
Source of video/IMU data for tracking. More... | |
struct xrt_frame_context xfctx | |
Context for source. More... | |
struct xrt_tracked_slam * slam | |
SLAM tracker. More... | |
struct t_slam_calibration slam_calib | |
Calibration data for SLAM. 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... | |
bool | slam_over_3dof |
Whether to track the HMD with 6dof SLAM or fallback to the fusion 3dof tracker. More... | |
struct xrt_pose | pose |
Last tracked pose. More... | |
struct xrt_pose | offset |
Additional offset to apply to pose More... | |
bool | average_imus |
Average 4 IMU samples before sending them to the trackers. More... | |
struct u_var_draggable_f32 | tracked_offset_ms |
Offset for tracked pose offsets (applies to both fusion and SLAM). More... | |
struct { | |
struct u_var_button hmd_screen_enable_btn | |
struct u_var_button switch_tracker_btn | |
char hand_status [128] | |
char slam_status [128] | |
} | gui |
struct os_mutex | controller_status_lock |
struct os_cond | controller_status_cond |
bool | have_left_controller_status |
bool | have_right_controller_status |
struct wmr_hmd_controller_connection * | controller [2] |
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_parts * | hmd |
Null if this device does not interface with the users head. More... | |
struct xrt_tracking_origin * | tracking_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_profile * | binding_profiles |
size_t | input_count |
Number of inputs. More... | |
struct xrt_input * | inputs |
Array of input structs. More... | |
size_t | output_count |
Number of outputs. More... | |
struct xrt_output * | outputs |
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 |
bool | body_tracking_supported |
bool | battery_status_supported |
xrt_result_t(* | update_inputs )(struct xrt_device *xdev) |
Update any attached inputs. More... | |
xrt_result_t(* | get_tracked_pose )(struct xrt_device *xdev, enum xrt_input_name name, int64_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, int64_t desired_timestamp_ns, struct xrt_hand_joint_set *out_value, int64_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, int64_t at_timestamp_ns, struct xrt_facial_expression_set *out_value) |
Get the requested blend shape properties & weights for a face tracker. More... | |
xrt_result_t(* | get_body_skeleton )(struct xrt_device *xdev, enum xrt_input_name body_tracking_type, struct xrt_body_skeleton *out_value) |
Get the body skeleton in T-pose, used to query the skeleton hierarchy, scale, proportions etc. More... | |
xrt_result_t(* | get_body_joints )(struct xrt_device *xdev, enum xrt_input_name body_tracking_type, int64_t desired_timestamp_ns, struct xrt_body_joint_set *out_value) |
Get the joint locations for a body 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, int64_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... | |
xrt_result_t(* | get_battery_status )(struct xrt_device *xdev, bool *out_present, bool *out_charging, float *out_charge) |
Get battery status information. More... | |
xrt_result_t(* | begin_feature )(struct xrt_device *xdev, enum xrt_device_feature_type type) |
Enable the feature for this device. More... | |
xrt_result_t(* | end_feature )(struct xrt_device *xdev, enum xrt_device_feature_type type) |
Disable the feature for this device. More... | |
void(* | destroy )(struct xrt_device *xdev) |
Destroy device. More... | |
Additional Inherited Members | |
Static Public Member Functions inherited from xrt_device | |
static xrt_result_t | xrt_device_update_inputs (struct xrt_device *xdev) |
Helper function for xrt_device::update_inputs. More... | |
static xrt_result_t | xrt_device_get_tracked_pose (struct xrt_device *xdev, enum xrt_input_name name, int64_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, int64_t desired_timestamp_ns, struct xrt_hand_joint_set *out_value, int64_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, int64_t at_timestamp_ns, struct xrt_facial_expression_set *out_value) |
Helper function for xrt_device::get_face_tracking. More... | |
static xrt_result_t | xrt_device_get_body_skeleton (struct xrt_device *xdev, enum xrt_input_name body_tracking_type, struct xrt_body_skeleton *out_value) |
Helper function for xrt_device::get_body_skeleton. More... | |
static xrt_result_t | xrt_device_get_body_joints (struct xrt_device *xdev, enum xrt_input_name body_tracking_type, int64_t desired_timestamp_ns, struct xrt_body_joint_set *out_value) |
Helper function for xrt_device::get_body_joints. 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, int64_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 xrt_result_t | xrt_device_get_battery_status (struct xrt_device *xdev, bool *out_present, bool *out_charging, float *out_charge) |
Helper function for xrt_device::get_battery_status. More... | |
static xrt_result_t | xrt_device_begin_feature (struct xrt_device *xdev, enum xrt_device_feature_type type) |
Helper function for xrt_device::begin_feature. More... | |
static xrt_result_t | xrt_device_end_feature (struct xrt_device *xdev, enum xrt_device_feature_type type) |
Helper function for xrt_device::end_feature. More... | |
static void | xrt_device_destroy (struct xrt_device **xdev_ptr) |
Helper function for xrt_device::destroy. More... | |
Related Functions inherited from xrt_device | |
void | u_distortion_mesh_fill_in_compute (struct xrt_device *xdev) |
Given a xrt_device generates meshes by calling xdev->compute_distortion(), populates xdev->hmd_parts.distortion.mesh & xdev->hmd_parts.distortion.models . More... | |
void | u_distortion_mesh_fill_in_none (struct xrt_device *xdev) |
Given a xrt_device generates a no distortion mesh, populates xdev->hmd_parts.distortion.mesh & xdev->hmd_parts.distortion.models . More... | |
void | u_distortion_mesh_set_none (struct xrt_device *xdev) |
Given a xrt_device generates a no distortion mesh, also sets xdev->compute_distortion() and populates xdev->hmd_parts.distortion.mesh & xdev->hmd_parts.distortion.models . More... | |
bool wmr_hmd::average_imus |
Average 4 IMU samples before sending them to the trackers.
Referenced by wmr_hmd_fill_slam_imu_calibration().
struct wmr_hmd_config wmr_hmd::config |
Config data parsed from the firmware JSON.
Referenced by wmr_hmd_fill_slam_cams_calibration().
struct wmr_config_header wmr_hmd::config_hdr |
firmware configuration block, with device names etc
struct wmr_hmd_distortion_params wmr_hmd::distortion_params[2] |
Distortion related parameters.
bool wmr_hmd::hand_enabled |
Set at start. Whether the hand tracker was initialized.
struct os_hid_device* wmr_hmd::hid_control_dev |
This is the vendor specific companion device of the Hololens Sensors.
When activated, it will report the physical IPD adjustment and proximity sensor status of the headset. It also allows enabling/disabling the HMD screen on Reverb G1/G2.
struct os_hid_device* wmr_hmd::hid_hololens_sensors_dev |
This is the Hololens Sensors device, this is where we get all of the IMU data and read the config from.
During start it is owned by the thread creating the device, after init it is owned by the reading thread. Read/write access is protected by the hid_lock
bool wmr_hmd::hmd_screen_enable |
Current desired HMD screen state.
struct m_imu_3dof wmr_hmd::i3dof |
Main fusion calculator.
bool wmr_hmd::imu2me |
SLAM systems track the IMU pose, enabling this corrects it to middle of the eyes.
struct xrt_vec3 wmr_hmd::last_angular_velocity |
The last angular velocity from the IMU, for prediction.
uint64_t wmr_hmd::last_imu_timestamp_ns |
When did we get the last IMU sample, in CPU time.
struct os_mutex wmr_hmd::mutex |
Protects all members of the fusion
substruct.
struct xrt_pose wmr_hmd::offset |
Additional offset to apply to pose
struct os_thread_helper wmr_hmd::oth |
Packet reading thread.
struct xrt_pose wmr_hmd::pose |
Last tracked pose.
uint8_t wmr_hmd::proximity_sensor |
Latest proximity sensor value read from the device.
uint16_t wmr_hmd::raw_ipd |
Latest raw IPD value read from the device.
struct xrt_tracked_slam* wmr_hmd::slam |
SLAM tracker.
struct t_slam_calibration wmr_hmd::slam_calib |
Calibration data for SLAM.
Referenced by wmr_hmd_fill_slam_cams_calibration().
bool wmr_hmd::slam_enabled |
Set at start. Whether the SLAM tracker was initialized.
bool wmr_hmd::slam_over_3dof |
Whether to track the HMD with 6dof SLAM or fallback to the fusion
3dof tracker.
struct xrt_fs* wmr_hmd::source |
Source of video/IMU data for tracking.
struct u_var_draggable_f32 wmr_hmd::tracked_offset_ms |
Offset for tracked pose offsets (applies to both fusion and SLAM).
Applied when getting the tracked poses, so is effectively a offset to increase or decrease prediction.
struct { ... } wmr_hmd::tracking |
Fields related to camera-based tracking (SLAM and hand tracking)
Referenced by wmr_hmd_fill_slam_cams_calibration().
struct xrt_frame_context wmr_hmd::xfctx |