diff --git a/src/xrt/drivers/wmr/wmr_common.h b/src/xrt/drivers/wmr/wmr_common.h index 29849cbbf..1f87f91d8 100644 --- a/src/xrt/drivers/wmr/wmr_common.h +++ b/src/xrt/drivers/wmr/wmr_common.h @@ -37,6 +37,9 @@ extern "C" { #define LENOVO_VID 0x17ef #define EXPLORER_PID 0xb801 +#define SAMSUNG_VID 0x04e8 +#define ODYSSEY_PID 0x7312 + /*! * @} */ diff --git a/src/xrt/drivers/wmr/wmr_prober.c b/src/xrt/drivers/wmr/wmr_prober.c index 24bbcc58f..157a8dbc9 100644 --- a/src/xrt/drivers/wmr/wmr_prober.c +++ b/src/xrt/drivers/wmr/wmr_prober.c @@ -69,6 +69,21 @@ check_and_get_interface_lenovo(struct xrt_prober_device *device, return true; } +static bool +check_and_get_interface_samsung(struct xrt_prober_device *device, + enum wmr_headset_type *out_hmd_type, + int *out_interface) +{ + if (device->product_id != ODYSSEY_PID) { + return false; + } + + *out_hmd_type = WMR_HEADSET_SAMSUNG_800ZAA; + *out_interface = 0; + + return true; +} + static bool find_control_device(struct xrt_prober *xp, struct xrt_prober_device **devices, @@ -91,6 +106,7 @@ find_control_device(struct xrt_prober *xp, switch (devices[i]->vendor_id) { case HP_VID: match = check_and_get_interface_hp(devices[i], out_hmd_type, &interface); break; case LENOVO_VID: match = check_and_get_interface_lenovo(devices[i], out_hmd_type, &interface); break; + case SAMSUNG_VID: match = check_and_get_interface_samsung(devices[i], out_hmd_type, &interface); break; default: break; }