29#define HMD_TRACE(hmd, ...) U_LOG_XDEV_IFL_T(&hmd->base, hmd->log_level, __VA_ARGS__)
30#define HMD_DEBUG(hmd, ...) U_LOG_XDEV_IFL_D(&hmd->base, hmd->log_level, __VA_ARGS__)
31#define HMD_INFO(hmd, ...) U_LOG_XDEV_IFL_I(&hmd->base, hmd->log_level, __VA_ARGS__)
32#define HMD_WARN(hmd, ...) U_LOG_XDEV_IFL_W(&hmd->base, hmd->log_level, __VA_ARGS__)
33#define HMD_ERROR(hmd, ...) U_LOG_XDEV_IFL_E(&hmd->base, hmd->log_level, __VA_ARGS__)
35#define REPORT_MAX_SIZE 69
36#define KEEPALIVE_INTERVAL_NS 10000000000
38#define KEEPALIVE_SEND_RATE_NS ((KEEPALIVE_INTERVAL_NS * 19) / 20)
39#define IMU_SAMPLE_RATE (1000)
40#define NS_PER_SAMPLE (1000 * 1000)
42#define MICROMETERS_TO_METERS(microns) ((float)microns / 1000000.0f)
45#define DEFAULT_EXTRA_EYE_ROTATION DEG_TO_RAD(30.0f)
47#define IN_REPORT_DK2 11
50#define SIZE_ASSERT(type, size) \
51 static_assert(sizeof(type) == (size), "Size of " #type " is not " #size " bytes as was expected")
53enum rift_feature_reports
56 FEATURE_REPORT_CONFIG = 2,
57 FEATURE_REPORT_CALIBRATE = 3,
58 FEATURE_REPORT_RANGE = 4,
59 FEATURE_REPORT_REGISTER = 5,
60 FEATURE_REPORT_DFU = 6,
61 FEATURE_REPORT_DK1_KEEP_ALIVE = 8,
62 FEATURE_REPORT_DISPLAY_INFO = 9,
63 FEATURE_REPORT_SERIAL = 10,
66 FEATURE_REPORT_TRACKING = 12,
67 FEATURE_REPORT_DISPLAY = 13,
68 FEATURE_REPORT_MAG_CALIBRATION = 14,
69 FEATURE_REPORT_POS_CALIBRATION = 15,
70 FEATURE_REPORT_CUSTOM_PATTERN = 16,
71 FEATURE_REPORT_KEEPALIVE_MUX = 17,
72 FEATURE_REPORT_MANUFACTURING = 18,
73 FEATURE_REPORT_UUID = 19,
74 FEATURE_REPORT_TEMPERATURE = 20,
75 FEATURE_REPORT_GYROOFFSET = 21,
76 FEATURE_REPORT_LENS_DISTORTION = 22,
79 FEATURE_REPORT_RADIO_CONTROL = 26,
80 FEATURE_REPORT_RADIO_READ_DATA_CMD = 27,
81 FEATURE_REPORT_ENABLE_COMPONENTS = 29,
84enum rift_config_report_flags
87 RIFT_CONFIG_REPORT_USE_RAW = 1,
89 RIFT_CONFIG_REPORT_INTERNAL_CALIBRATION = 1 << 1,
91 RIFT_CONFIG_REPORT_USE_CALIBRATION = 1 << 2,
93 RIFT_CONFIG_REPORT_AUTO_CALIBRATION = 1 << 3,
95 RIFT_CONFIG_REPORT_MOTION_KEEP_ALIVE = 1 << 4,
97 RIFT_CONFIG_REPORT_COMMAND_KEEP_ALIVE = 1 << 5,
100 RIFT_CONFIG_REPORT_USE_SENSOR_COORDINATES = 1 << 6,
103 RIFT_CONFIG_REPORT_OVERRIDE_POWER = 1 << 7,
106enum rift_distortion_type
108 RIFT_DISTORTION_TYPE_DIMS = 1,
109 RIFT_DISTORTION_TYPE_K = 2,
115 RIFT_LENS_TYPE_A = 0,
117 RIFT_LENS_TYPE_B = 1,
120enum rift_lens_distortion_version
123 RIFT_LENS_DISTORTION_NONE = 0,
125 RIFT_LENS_DISTORTION_LCSV_CATMULL_ROM_10_VERSION_1 = 1,
128enum rift_component_flags
130 RIFT_COMPONENT_DISPLAY = 1 << 0,
131 RIFT_COMPONENT_AUDIO = 1 << 1,
132 RIFT_COMPONENT_LEDS = 1 << 2,
146 uint8_t config_flags;
150 uint16_t sample_rate;
158 uint8_t distortion_type;
160 uint16_t resolution_x;
162 uint16_t resolution_y;
164 uint32_t display_width;
166 uint32_t display_height;
170 uint32_t lens_separation;
171 uint32_t lens_distance[2];
177#define CATMULL_COEFFICIENTS 11
178#define CHROMATIC_ABBERATION_COEFFEICENT_COUNT 4
185 uint16_t k[CATMULL_COEFFICIENTS];
187 uint16_t meters_per_tan_angle_at_center;
188 uint16_t chromatic_abberation[CHROMATIC_ABBERATION_COEFFEICENT_COUNT];
198 uint8_t num_distortions;
200 uint8_t distortion_idx;
206 uint16_t distortion_version;
224enum rift_display_mode
226 RIFT_DISPLAY_MODE_GLOBAL,
227 RIFT_DISPLAY_MODE_ROLLING_TOP_BOTTOM,
228 RIFT_DISPLAY_MODE_ROLLING_LEFT_RIGHT,
229 RIFT_DISPLAY_MODE_ROLLING_RIGHT_LEFT,
232enum rift_display_limit
234 RIFT_DISPLAY_LIMIT_ACL_OFF = 0,
235 RIFT_DISPLAY_LIMIT_ACL_30 = 1,
236 RIFT_DISPLAY_LIMIT_ACL_25 = 2,
237 RIFT_DISPLAY_LIMIT_ACL_50 = 3,
240enum rift_display_flags
242 RIFT_DISPLAY_USE_ROLLING = 1 << 6,
243 RIFT_DISPLAY_REVERSE_ROLLING = 1 << 7,
244 RIFT_DISPLAY_HIGH_BRIGHTNESS = 1 << 8,
245 RIFT_DISPLAY_SELF_REFRESH = 1 << 9,
246 RIFT_DISPLAY_READ_PIXEL = 1 << 10,
247 RIFT_DISPLAY_DIRECT_PENTILE = 1 << 11,
267 uint16_t persistence;
270 uint16_t lighting_offset;
272 uint16_t pixel_settle;
306 uint16_t presence_sensor;
307 uint16_t iad_adc_value;
313 "Incorrect version data size");
315#define DK2_MAX_SAMPLES 2
320 uint16_t sample_count;
321 uint16_t temperature;
322 uint32_t sample_timestamp;
328 uint16_t frame_count;
329 uint32_t frame_timestamp;
331 uint8_t tracking_pattern;
332 uint16_t tracking_count;
333 uint32_t tracking_timestamp;
352 uint16_t temperature;
368 float k[CATMULL_COEFFICIENTS];
370 float meters_per_tan_angle_at_center;
371 float chromatic_abberation[CHROMATIC_ABBERATION_COEFFEICENT_COUNT];
377 uint16_t distortion_version;
403 float screen_gap_meters;
405 float lens_diameter_meters;
441 bool processed_sample_packet;
442 uint32_t last_remote_sample_time_us;
450 enum rift_variant variant;
455 uint16_t num_lens_distortions;
456 uint16_t distortion_in_use;
459 float icd_override_m;
463 bool imu_needs_calibration;
u_logging_level
Logging level enum.
Definition: u_logging.h:45
int64_t timepoint_ns
Integer timestamp type.
Definition: u_time.h:77
C interface to math library.
A IMU fusion specially made for 3dof devices.
Wrapper header for <math.h> to ensure pi-related math constants are defined.
Wrapper around OS native hid functions.
Wrapper around OS threading native functions.
Interface to Oculus Rift driver code.
static struct rift_hmd * rift_hmd(struct xrt_device *xdev)
Casting helper function.
Definition: rift_internal.h:469
Definition: oh_device.c:483
Definition: rift_internal.h:317
Definition: m_space.cpp:87
Definition: m_clock_tracking.c:35
Definition: m_imu_3dof.h:35
Definition: m_relation_history.cpp:49
Representing a single hid interface on a device.
Definition: os_hid.h:29
All in one helper that handles locking, waiting for change and starting a thread.
Definition: os_threading.h:478
Definition: rift_internal.h:366
Definition: rift_internal.h:181
Definition: rift_internal.h:144
Definition: rift_internal.h:305
Definition: rift_internal.h:156
Definition: rift_internal.h:251
Definition: rift_internal.h:216
Definition: rift_internal.h:288
Definition: rift_internal.h:281
Definition: rift_internal.h:296
Definition: rift_internal.h:339
A rift HMD device.
Definition: rift_internal.h:431
Definition: rift_internal.h:348
Definition: rift_internal.h:417
Definition: rift_internal.h:195
Definition: rift_internal.h:375
Definition: rift_internal.h:387
Definition: rift_internal.h:393
A single HMD or input device.
Definition: xrt_device.h:310
A tightly packed 3x3 matrix of floats.
Definition: xrt_defines.h:546
A 2 element vector with single floats.
Definition: xrt_defines.h:268
A 3 element vector with single floats.
Definition: xrt_defines.h:289
Misc helpers for device drivers.
Basic logging functionality.