| 
| 
#define  | S1_TRACE(d, ...)   U_LOG_XDEV_IFL_T(&d->base, d->log_level, __VA_ARGS__) | 
|   | 
| 
#define  | S1_DEBUG(d, ...)   U_LOG_XDEV_IFL_D(&d->base, d->log_level, __VA_ARGS__) | 
|   | 
| 
#define  | S1_DEBUG_HEX(d,  data,  data_size)   U_LOG_XDEV_IFL_D_HEX(&d->base, d->log_level, data, data_size) | 
|   | 
| 
#define  | S1_INFO(d, ...)   U_LOG_XDEV_IFL_I(&d->base, d->log_level, __VA_ARGS__) | 
|   | 
| 
#define  | S1_WARN(d, ...)   U_LOG_XDEV_IFL_W(&d->base, d->log_level, __VA_ARGS__) | 
|   | 
| 
#define  | S1_ERROR(d, ...)   U_LOG_XDEV_IFL_E(&d->base, d->log_level, __VA_ARGS__) | 
|   | 
| 
#define  | VIEW_SIZE   (1440) | 
|   | 
| 
#define  | PANEL_WIDTH   (VIEW_SIZE * 2) | 
|   | 
| 
#define  | READ_STRUCTURE(ctx,  dst)   read_into(ctx, dst, sizeof(*dst)) | 
|   | 
 | 
| 
static struct blubur_s1_hmd *  | blubur_s1_hmd (struct xrt_device *xdev) | 
|   | 
| 
static void  | blubur_s1_hmd_destroy (struct xrt_device *xdev) | 
|   | 
| 
static xrt_result_t  | blubur_s1_hmd_compute_poly_3k_distortion (struct xrt_device *xdev, uint32_t view, float u, float v, struct xrt_uv_triplet *out_result) | 
|   | 
| 
static xrt_result_t  | blubur_s1_hmd_compute_test_distortion (struct xrt_device *xdev, uint32_t view, float u, float v, struct xrt_uv_triplet *out_result) | 
|   | 
| 
static xrt_result_t  | blubur_s1_hmd_update_inputs (struct xrt_device *xdev) | 
|   | 
| 
static xrt_result_t  | blubur_s1_hmd_get_tracked_pose (struct xrt_device *xdev, enum xrt_input_name name, int64_t at_timestamp_ns, struct xrt_space_relation *out_relation) | 
|   | 
| 
static xrt_result_t  | blubur_s1_hmd_get_presence (struct xrt_device *xdev, bool *presence) | 
|   | 
| 
static xrt_result_t  | blubur_s1_hmd_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) | 
|   | 
| 
static void  | blubur_s1_hmd_fill_in_poly_3k (struct blubur_s1_hmd *hmd) | 
|   | 
| 
static void  | read_into (struct read_context *ctx, void *dest, size_t size) | 
|   | 
| static int32_t  | sign21 (uint32_t v) | 
|   | Sign-extend a 21-bit signed integer stored in a 32-bit unsigned integer.  More...
  | 
|   | 
| static void  | blubur_s1_decode_triad (const uint8_t b[8], int32_t out_xyz[3]) | 
|   | Decode 3×21-bit ints from 8 bytes (little-endian packing)  More...
  | 
|   | 
| 
static void  | blubur_s1_decode_sample_pack (const uint8_t sample_pack[32], struct blubur_s1_decoded_sample out_samples[2]) | 
|   | 
| 
static void  | blubur_s1_convert_accel_sample (const int32_t in[3], struct xrt_vec3 *out) | 
|   | 
| 
static void  | blubur_s1_convert_gyro_sample (const int32_t in[3], struct xrt_vec3 *out) | 
|   | 
| 
int  | blubur_s1_hmd_tick (struct blubur_s1_hmd *hmd) | 
|   | 
| 
static void *  | blubur_s1_hmd_thread (void *ptr) | 
|   | 
| struct blubur_s1_hmd *  | blubur_s1_hmd_create (struct os_hid_device *dev, const char *serial) | 
|   | Creates a Blubur S1 HMD device from an opened HID handle.  More...
  | 
|   | 
Implementation of Blubur S1 HMD driver. 
- Author
 - Beyley Cardellio ep1cm.nosp@m.1n10.nosp@m.n123@.nosp@m.gmai.nosp@m.l.com