// Copyright 2021, Collabora, Ltd. // SPDX-License-Identifier: BSL-1.0 /*! * @file * @brief Combination of multiple @ref xrt_device. * @author Christoph Haag * @ingroup drv_multi */ #pragma once #include "xrt/xrt_defines.h" #include "xrt/xrt_device.h" #include "xrt/xrt_settings.h" #ifdef __cplusplus extern "C" { #endif /*! * @defgroup drv_multi Multi device wrapper driver * @ingroup drv * * @brief Driver that can wrap multiple devices, for example to override tracking. */ /*! * Create a device that takes ownership of the target device and mimics it. * * Does not take ownership of the tracker device, one can be assigned to multiple targets. * * The pose provided by get_tracked_pose will be provided by the tracker device. * * @param override_type The kind of override this wrapper device will provide. * @param tracking_override_target An existing device that will be mimicked by the created device. * @param tracking_override_tracker An existing device that will be used to provide tracking data. * @param tracking_override_input_name The input name of the tracker device. XRT_INPUT_GENERIC_TRACKER_POSE for generic * trackers. * @param offset A static offset describing the real world transform from the "tracked point" of the target device to * the "tracked point" of the tracker device. A tracking sensors attached .1m above the HMD "center" sets y = 0.1. * * @ingroup drv_multi */ struct xrt_device * multi_create_tracking_override(enum xrt_tracking_override_type override_type, struct xrt_device *tracking_override_target, struct xrt_device *tracking_override_tracker, enum xrt_input_name tracking_override_input_name, struct xrt_pose *offset); #ifdef __cplusplus } #endif