The open source OpenXR runtime

a/vive: Move HMD variant determination to public file

Part-of: <https://gitlab.freedesktop.org/monado/monado/-/merge_requests/2568>

+65 -34
+2
src/xrt/auxiliary/vive/CMakeLists.txt
··· 9 9 vive_builder.h 10 10 vive_calibration.c 11 11 vive_calibration.h 12 + vive_common.h 13 + vive_common.c 12 14 vive_config.h 13 15 vive_config.c 14 16 vive_poses.h
+44
src/xrt/auxiliary/vive/vive_common.c
··· 1 + // Copyright 2020-2021, Collabora, Ltd. 2 + // Copyright 2025, Beyley Cardellio 3 + // SPDX-License-Identifier: BSL-1.0 4 + /*! 5 + * @file 6 + * @brief Common things like defines for Vive and Index. 7 + * @author Beyley Cardellio <ep1cm1n10n123@gmail.com> 8 + * @author Lubosz Sarnecki <lubosz.sarnecki@collabora.com> 9 + * @author Moshi Turner <moshiturner@protonmail.com> 10 + * @ingroup aux_vive 11 + */ 12 + 13 + #include <util/u_logging.h> 14 + 15 + #include "vive_common.h" 16 + 17 + #include <string.h> 18 + 19 + 20 + enum VIVE_VARIANT 21 + vive_determine_variant(const char *model_number) 22 + { 23 + enum VIVE_VARIANT variant = VIVE_UNKNOWN; 24 + 25 + if (strcmp(model_number, "Utah MP") == 0) { 26 + variant = VIVE_VARIANT_INDEX; 27 + U_LOG_D("Found Valve Index HMD"); 28 + } else if (strcmp(model_number, "Vive MV") == 0 || strcmp(model_number, "Vive MV.") == 0 || 29 + strcmp(model_number, "Vive. MV") == 0) { 30 + variant = VIVE_VARIANT_VIVE; 31 + U_LOG_D("Found HTC Vive HMD"); 32 + } else if (strcmp(model_number, "Vive_Pro MV") == 0 || strcmp(model_number, "VIVE_Pro MV") == 0) { 33 + variant = VIVE_VARIANT_PRO; 34 + U_LOG_D("Found HTC Vive Pro HMD"); 35 + } else if (strcmp(model_number, "Vive_Pro 2 MV") == 0 || strcmp(model_number, "VIVE_Pro 2 MV") == 0 || 36 + strcmp(model_number, "VIVE_Pro 2 PV") == 0 || strcmp(model_number, "Vive_Pro 2 PV") == 0) { 37 + variant = VIVE_VARIANT_PRO2; 38 + U_LOG_D("Found HTC Vive Pro 2 HMD"); 39 + } else { 40 + U_LOG_W("Failed to parse Vive HMD variant!\n\tfirmware.model_[number|name]: '%s'", model_number); 41 + } 42 + 43 + return variant; 44 + }
+17
src/xrt/auxiliary/vive/vive_common.h
··· 33 33 */ 34 34 35 35 36 + /*! 37 + * Headset variant. 38 + * 39 + * @ingroup aux_vive 40 + */ 41 + enum VIVE_VARIANT 42 + { 43 + VIVE_UNKNOWN = 0, 44 + VIVE_VARIANT_VIVE, 45 + VIVE_VARIANT_PRO, 46 + VIVE_VARIANT_INDEX, 47 + VIVE_VARIANT_PRO2, 48 + }; 49 + 36 50 #define HTC_VID 0x0bb4 37 51 #define VALVE_VID 0x28de 38 52 ··· 45 59 46 60 #define VIVE_WATCHMAN_DONGLE 0x2101 47 61 #define VIVE_WATCHMAN_DONGLE_GEN2 0x2102 62 + 63 + enum VIVE_VARIANT 64 + vive_determine_variant(const char *model_number); 48 65 49 66 50 67 #ifdef __cplusplus
+1 -20
src/xrt/auxiliary/vive/vive_config.c
··· 429 429 430 430 VIVE_DEBUG(d, "Parsing model number: %s", d->firmware.model_number); 431 431 432 - if (strcmp(d->firmware.model_number, "Utah MP") == 0) { 433 - d->variant = VIVE_VARIANT_INDEX; 434 - VIVE_DEBUG(d, "Found Valve Index HMD"); 435 - } else if (strcmp(d->firmware.model_number, "Vive MV") == 0 || 436 - strcmp(d->firmware.model_number, "Vive MV.") == 0 || 437 - strcmp(d->firmware.model_number, "Vive. MV") == 0) { 438 - d->variant = VIVE_VARIANT_VIVE; 439 - VIVE_DEBUG(d, "Found HTC Vive HMD"); 440 - } else if (strcmp(d->firmware.model_number, "Vive_Pro MV") == 0 || 441 - strcmp(d->firmware.model_number, "VIVE_Pro MV") == 0) { 442 - d->variant = VIVE_VARIANT_PRO; 443 - VIVE_DEBUG(d, "Found HTC Vive Pro HMD"); 444 - } else if (strcmp(d->firmware.model_number, "Vive_Pro 2 MV") == 0 || 445 - strcmp(d->firmware.model_number, "VIVE_Pro 2 MV") == 0) { 446 - d->variant = VIVE_VARIANT_PRO2; 447 - VIVE_DEBUG(d, "Found HTC Vive Pro 2 HMD"); 448 - } else { 449 - VIVE_ERROR(d, "Failed to parse Vive HMD variant!\n\tfirmware.model_[number|name]: '%s'", 450 - d->firmware.model_number); 451 - } 432 + d->variant = vive_determine_variant(d->firmware.model_number); 452 433 453 434 switch (d->variant) { 454 435 case VIVE_VARIANT_VIVE:
+1 -14
src/xrt/auxiliary/vive/vive_config.h
··· 15 15 16 16 #include "util/u_logging.h" 17 17 #include "util/u_distortion_mesh.h" 18 + #include "vive/vive_common.h" 18 19 19 20 20 21 // public documentation ··· 37 38 extern "C" { 38 39 #endif 39 40 40 - 41 - /*! 42 - * Headset variant. 43 - * 44 - * @ingroup aux_vive 45 - */ 46 - enum VIVE_VARIANT 47 - { 48 - VIVE_UNKNOWN = 0, 49 - VIVE_VARIANT_VIVE, 50 - VIVE_VARIANT_PRO, 51 - VIVE_VARIANT_INDEX, 52 - VIVE_VARIANT_PRO2, 53 - }; 54 41 55 42 /*! 56 43 * Controller variant.