Draft: d/xreal_light: Basic Xreal Light driver
CC #328, webpage!47
I'm opening this MR early so that:
- Contributors can point me in the right direction; and
- Whatever code I have is available to build off of if I abandon this effort
To Do
-
Get monado/utilities/xr-hardware!31 (merged) merged (blocker) -
Get !2156 merged (dependency) -
Wait on !2150 (merged) to be merged (merge conflicts) -
CMakeLists.txt
-
Add XRT_BUILD_DRIVER_XREAL_LIGHT
option_with_deps
(dependent onhidapi
) -
Add "XREAL_LIGHT"
toAVAILABLE_DRIVERS
list -
Add debug message
-
-
Create src/xrt/targets/common/target_builder_xreal_light.c
-
Add target to target_lists.c
-
Add target target_builder_interface.h
-
Add target to CMakeLists.txt
-
t_builder_xreal_light_create
-
estimate_system
-
Check for OV580 -
Check for MCU -
Check for display matching EDID data
-
-
open_system
-
Get xrt_prober_device
for OV580 -
Get xrt_prober_device
for MCU -
Open interfaces as needed -
Pass interfaces to xreal_light_hmd_create
-
-
-
-
xreal_light_hmd_create
-
Figure out which inputs to create -
XRT_INPUT_GENERIC_HEAD_POSE -> 3DoF (Does this also do 6DoF or not?) -
XRT_INPUT_GENERIC_STAGE_SPACE_POSE? -> Is this for 6DoF? -
XRT_INPUT_GENERIC_HAND_TRACKING_RIGHT & XRT_INPUT_GENERIC_HAND_TRACKING_LEFT? -> Or is this done in a separate driver
-
-
Figure out which outputs to create -
None?
-
-
xreal_light_hmd_get_tracked_pose
-
xreal_light_hmd_destroy
-
xreal_light_hmd_update_inputs
-
IMU reading thread -
Hand tracking -
6DoF tracking -
Figure out what else needs to be implemented to get a working driver
-
-
Finish this TODO list
References
https://voidcomputing.hu/blog/good-bad-ugly/
https://github.com/badicsalex/ar-drivers-rs/blob/master/src/nreal_light.rs