The open source OpenXR runtime
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

a/vive: Add Vive Pro 2 support

authored by

Pedro Santos and committed by
Jakob Bornecrantz
9b0815bc f84353de

+33 -1
+1
src/xrt/auxiliary/vive/vive_common.h
··· 40 40 #define VIVE_LIGHTHOUSE_FPGA_RX 0x2000 41 41 42 42 #define VIVE_PRO_MAINBOARD_PID 0x0309 43 + #define VIVE_PRO2_MAINBOARD_PID 0x0342 43 44 #define VIVE_PRO_LHR_PID 0x2300 44 45 45 46 #define VIVE_WATCHMAN_DONGLE 0x2101
+30
src/xrt/auxiliary/vive/vive_config.c
··· 352 352 // eye relief knob adjusts this around [0.0255(near)-0.275(far)] 353 353 eye_to_screen_distance = 0.0255; 354 354 } 355 + if (d->variant == VIVE_VARIANT_PRO2) { 356 + lens_horizontal_separation = 0.055; 357 + h_meters = 0.07; 358 + // eye relief knob adjusts this around [0.0255(near)-0.275(far)] 359 + eye_to_screen_distance = 0.0255; 360 + } 355 361 356 362 double fov = 2 * atan2(w_meters - lens_horizontal_separation / 2.0, eye_to_screen_distance); 357 363 ··· 432 438 strcmp(d->firmware.model_number, "VIVE_Pro MV") == 0) { 433 439 d->variant = VIVE_VARIANT_PRO; 434 440 VIVE_DEBUG(d, "Found HTC Vive Pro HMD"); 441 + } else if (strcmp(d->firmware.model_number, "Vive_Pro 2 MV") == 0 || 442 + strcmp(d->firmware.model_number, "VIVE_Pro 2 MV") == 0) { 443 + d->variant = VIVE_VARIANT_PRO2; 444 + VIVE_DEBUG(d, "Found HTC Vive Pro 2 HMD"); 435 445 } else { 436 446 VIVE_ERROR(d, "Failed to parse Vive HMD variant!\n\tfirmware.model_[number|name]: '%s'", 437 447 d->firmware.model_number); ··· 461 471 JSON_VEC3(imu, "acc_bias", &d->imu.acc_bias); 462 472 JSON_VEC3(imu, "acc_scale", &d->imu.acc_scale); 463 473 JSON_VEC3(imu, "gyro_bias", &d->imu.gyro_bias); 474 + 475 + _get_lighthouse(d, json); 476 + 477 + struct xrt_pose trackref_to_head; 478 + struct xrt_pose imu_to_head; 479 + 480 + math_pose_invert(&d->display.trackref, &trackref_to_head); 481 + math_pose_transform(&trackref_to_head, &d->imu.trackref, &imu_to_head); 482 + 483 + d->display.imuref = imu_to_head; 484 + 485 + const cJSON *cameras_json = u_json_get(json, "tracked_cameras"); 486 + _get_cameras(d, cameras_json); 487 + } break; 488 + case VIVE_VARIANT_PRO2: { 489 + const cJSON *imu = cJSON_GetObjectItemCaseSensitive(json, "imu"); 490 + JSON_VEC3(imu, "acc_bias", &d->imu.acc_bias); 491 + JSON_VEC3(imu, "acc_scale", &d->imu.acc_scale); 492 + JSON_VEC3(imu, "gyro_bias", &d->imu.gyro_bias); 493 + JSON_VEC3(imu, "gyro_scale", &d->imu.gyro_scale); 464 494 465 495 _get_lighthouse(d, json); 466 496
+2 -1
src/xrt/auxiliary/vive/vive_config.h
··· 48 48 VIVE_UNKNOWN = 0, 49 49 VIVE_VARIANT_VIVE, 50 50 VIVE_VARIANT_PRO, 51 - VIVE_VARIANT_INDEX 51 + VIVE_VARIANT_INDEX, 52 + VIVE_VARIANT_PRO2, 52 53 }; 53 54 54 55 /*!