From 196bf24276d7965636b845813b3caff42177f027 Mon Sep 17 00:00:00 2001
From: Christoph Haag <haagch+gitlab@frickel.club>
Date: Mon, 19 Sep 2022 18:16:21 +0000
Subject: [PATCH] d/wmr: Add HP VR1000 support

---
 src/xrt/drivers/wmr/wmr_common.h |  1 +
 src/xrt/drivers/wmr/wmr_hmd.c    |  1 +
 src/xrt/drivers/wmr/wmr_hmd.h    |  1 +
 src/xrt/drivers/wmr/wmr_prober.c | 10 ++++++++--
 4 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/src/xrt/drivers/wmr/wmr_common.h b/src/xrt/drivers/wmr/wmr_common.h
index 45e51806b..3f4fb20e6 100644
--- a/src/xrt/drivers/wmr/wmr_common.h
+++ b/src/xrt/drivers/wmr/wmr_common.h
@@ -35,6 +35,7 @@ extern "C" {
 #define WMR_CONTROLLER_RIGHT_PRODUCT_STRING "Motion controller - Right"
 
 #define HP_VID 0x03f0
+#define VR1000_PID 0x0367
 #define REVERB_G1_PID 0x0c6a
 #define REVERB_G2_PID 0x0580
 #define REVERB_G2_CONTROLLER_PID 0x066a /* On 0x045e Microsoft VID */
diff --git a/src/xrt/drivers/wmr/wmr_hmd.c b/src/xrt/drivers/wmr/wmr_hmd.c
index 19f9b6afc..193abe36c 100644
--- a/src/xrt/drivers/wmr/wmr_hmd.c
+++ b/src/xrt/drivers/wmr/wmr_hmd.c
@@ -90,6 +90,7 @@ wmr_hmd_screen_enable_odyssey_plus(struct wmr_hmd *wh, bool enable);
 
 const struct wmr_headset_descriptor headset_map[] = {
     {WMR_HEADSET_GENERIC, NULL, "Unknown WMR HMD", NULL, NULL, NULL}, /* Catch-all for unknown headsets */
+    {WMR_HEADSET_HP_VR1000, "HP Reverb VR Headset VR1000-1xxx", "HP VR1000", NULL, NULL, NULL}, /*! @todo init funcs */
     {WMR_HEADSET_REVERB_G1, "HP Reverb VR Headset VR1000-2xxx", "HP Reverb", wmr_hmd_activate_reverb,
      wmr_hmd_deactivate_reverb, wmr_hmd_screen_enable_reverb},
     {WMR_HEADSET_REVERB_G2, "HP Reverb Virtual Reality Headset G2", "HP Reverb G2", wmr_hmd_activate_reverb,
diff --git a/src/xrt/drivers/wmr/wmr_hmd.h b/src/xrt/drivers/wmr/wmr_hmd.h
index 90d2ac434..e18959dd2 100644
--- a/src/xrt/drivers/wmr/wmr_hmd.h
+++ b/src/xrt/drivers/wmr/wmr_hmd.h
@@ -34,6 +34,7 @@ extern "C" {
 enum wmr_headset_type
 {
 	WMR_HEADSET_GENERIC,
+	WMR_HEADSET_HP_VR1000,
 	WMR_HEADSET_REVERB_G1,
 	WMR_HEADSET_REVERB_G2,
 	WMR_HEADSET_SAMSUNG_XE700X3AI,
diff --git a/src/xrt/drivers/wmr/wmr_prober.c b/src/xrt/drivers/wmr/wmr_prober.c
index 7c7d26212..80940c154 100644
--- a/src/xrt/drivers/wmr/wmr_prober.c
+++ b/src/xrt/drivers/wmr/wmr_prober.c
@@ -56,14 +56,20 @@ check_and_get_interface(struct xrt_prober_device *device,
 {
 	switch (device->vendor_id) {
 	case HP_VID:
-		if (device->product_id != REVERB_G1_PID && device->product_id != REVERB_G2_PID) {
+		if (device->product_id != REVERB_G1_PID && device->product_id != REVERB_G2_PID &&
+		    device->product_id != VR1000_PID) {
 			return false;
 		}
 
+
 		if (device->product_id == REVERB_G1_PID)
 			*out_hmd_type = WMR_HEADSET_REVERB_G1;
-		else
+		else if (device->product_id == REVERB_G2_CONTROLLER_PID)
 			*out_hmd_type = WMR_HEADSET_REVERB_G2;
+		else if (device->product_id == VR1000_PID)
+			*out_hmd_type = WMR_HEADSET_HP_VR1000;
+		else
+			return false;
 
 		*out_interface = 0;
 		return true;