Monado OpenXR Runtime
Loading...
Searching...
No Matches
rift_interface.h File Reference

Interface to Oculus Rift driver code. More...

Include dependency graph for rift_interface.h:

Go to the source code of this file.

Macros

#define OCULUS_VR_VID   0x2833
 
#define OCULUS_DK2_PID   0x0021
 
#define OCULUS_DK2_SENSOR_PID   0x0201
 
#define OCULUS_CV1_PID   0x0031
 
#define OCULUS_CV1_SENSOR_PID   0x0211
 
#define RIFT_DK2_PRODUCT_STRING   "Rift DK2"
 
#define RIFT_CV1_PRODUCT_STRING   "Rift CV1"
 

Enumerations

enum  rift_variant { RIFT_VARIANT_DK2 , RIFT_VARIANT_CV1 }
 

Functions

int rift_devices_create (struct os_hid_device *hmd_dev, struct os_hid_device *radio_dev, enum rift_variant variant, const char *serial_number, struct xrt_frame_context *xfctx, struct rift_hmd **out_hmd, struct xrt_device **out_xdevs)
 Creates Rift HMD and related devices.
 
bool rift_get_radio_id (struct rift_hmd *hmd, uint8_t out_radio_id[5])
 
bool rift_hmd_frame_timestamp_callback (void *user_data, timepoint_ns *timestamp, timepoint_ns frame_start_ns, uint32_t pts)
 Timestamps a camera frame with the time of the exposure that produced it, which is taken to be the exposure whose IN report arrived within half a frame interval of one whole frame interval before the frame's first packet.
 
int rift_add_to_constellation_tracker (struct rift_hmd *hmd, struct t_constellation_tracker *tracker)
 
struct t_timing_event_sourcerift_hmd_get_timing_event_source (struct rift_hmd *hmd)
 Gets the HMD's timing event source.
 

Detailed Description

Interface to Oculus Rift driver code.

Author
Beyley Cardellio ep1cm.nosp@m.1n10.nosp@m.n123@.nosp@m.gmai.nosp@m.l.com

Function Documentation

◆ rift_devices_create()

int rift_devices_create ( struct os_hid_device hmd_dev,
struct os_hid_device radio_dev,
enum rift_variant  variant,
const char *  serial_number,
struct xrt_frame_context xfctx,
struct rift_hmd **  out_hmd,
struct xrt_device **  out_xdevs 
)

Creates Rift HMD and related devices.

Parameters
hmd_devThe HID device for the HMD.
radio_devThe HID device for the radio, if present (CV1 only).
variantThe Rift variant (DK2 or CV1).
serial_numberThe serial number of the device.
xfctxThe frame context to use for the timing source functions. Non-optional.
out_hmdOutput pointer for the created rift_hmd struct.
out_xdevsOutput array for the created xrt_device pointers. The array must have space for at least 4 devices (HMD, left touch, right touch, remote).
Returns
The number of devices created, or a negative value on error.

References xrt_hmd_parts::blend_modes, xrt_device::compute_distortion, xrt_device::destroy, rift_hmd::device_mutex, xrt_view::display, xrt_hmd_parts::distortion, xrt_hmd_parts::fov, xrt_device::get_tracked_pose, xrt_device::get_view_poses, xrt_device::get_visibility_mask, xrt_device::hmd, xrt_device::inputs, rift_hmd::last_remote_exposure_time_ns, m_clock_windowed_skew_tracker_alloc(), m_ff_f64_alloc(), m_ff_vec3_f32_alloc(), xrt_hmd_parts::models, xrt_device::name, xrt_hmd_parts::nominal_frame_interval_ns, os_nanosleep(), xrt_hmd_parts::preferred, t_constellation_tracker_device::push_constellation_tracker_sample, rift_hmd::radio_state, rift_upload_back_strap_disable_pattern(), xrt_view::rot, xrt_hmd_parts::screens, xrt_device::serial, xrt_device::str, xrt_device::supported, time_s_to_ns(), u_distortion_mesh_fill_in_compute(), U_LOG_CHK_ONLY_PRINT, u_truncate_snprintf(), u_var_add_root(), xrt_device::update_inputs, xrt_view::viewport, xrt_hmd_parts::views, and XRT_INPUT_GENERIC_HEAD_POSE.

◆ rift_hmd_frame_timestamp_callback()

bool rift_hmd_frame_timestamp_callback ( void *  user_data,
timepoint_ns timestamp,
timepoint_ns  frame_start_ns,
uint32_t  pts 
)

Timestamps a camera frame with the time of the exposure that produced it, which is taken to be the exposure whose IN report arrived within half a frame interval of one whole frame interval before the frame's first packet.

Parameters
user_dataThe rift_hmd whose exposures the frame is matched against.
[out]timestampWhere the exposure time is written, only touched when this returns true.
frame_start_nsWhen the frame's first payload packet arrived, in local monotonic time.
ptsThe PTS of the frame, in the camera's own clock. Only used for logging.
Returns
True when an exposure time was written. False when no exposure lines up with the frame, in which case the caller should keep whatever timestamp it already had.

References rift_hmd::exposure_history, rift_hmd::exposure_history_pushed, xrt_device::hmd, rift_exposure_event::recv_timestamp_ns, RIFT_EXPOSURE_HISTORY_SIZE, rift_exposure_event::sequence, and rift_exposure_event::timestamp_ns.

◆ rift_hmd_get_timing_event_source()

struct t_timing_event_source * rift_hmd_get_timing_event_source ( struct rift_hmd hmd)

Gets the HMD's timing event source.

Parameters
hmdThe rift_hmd to get the timing event source from.
Returns
The timing event source for the HMD, or NULL if the timing source is not initialized.