The open source OpenXR runtime
at prediction-2 46 lines 1.5 kB view raw
1// Copyright 2020-2021, N Madsen. 2// Copyright 2020-2023, Collabora, Ltd. 3// Copyright 2020-2023, Jan Schmidt 4// SPDX-License-Identifier: BSL-1.0 5/*! 6 * @file 7 * @brief Driver for WMR Controllers. 8 * @author Jan Schmidt <jan@centricular.com> 9 * @ingroup drv_wmr 10 */ 11#include <assert.h> 12 13#include "wmr_common.h" 14#include "wmr_controller.h" 15 16struct wmr_controller_base * 17wmr_controller_og_create(struct wmr_controller_connection *conn, 18 enum xrt_device_type controller_type, 19 uint16_t pid, 20 enum u_logging_level log_level); 21 22struct wmr_controller_base * 23wmr_controller_hp_create(struct wmr_controller_connection *conn, 24 enum xrt_device_type controller_type, 25 enum u_logging_level log_level); 26 27struct wmr_controller_base * 28wmr_controller_create(struct wmr_controller_connection *conn, 29 enum xrt_device_type controller_type, 30 uint16_t vid, 31 uint16_t pid, 32 enum u_logging_level log_level) 33{ 34 struct wmr_controller_base *ret = NULL; 35 36 assert(vid == MICROSOFT_VID); /* The only known controllers all use Microsoft VID right now */ 37 38 switch (pid) { 39 case WMR_CONTROLLER_PID: 40 case ODYSSEY_CONTROLLER_PID: ret = wmr_controller_og_create(conn, controller_type, pid, log_level); break; 41 case REVERB_G2_CONTROLLER_PID: ret = wmr_controller_hp_create(conn, controller_type, log_level); break; 42 default: break; 43 } 44 45 return ret; 46}