Explorar o código

hidapi: Fix bus type in HIDAPI_IGNORE_DEVICE() on Linux

This bug prevented the Steam Controller's keyboard and mouse
interfaces from being properly ignored by the HIDAPI joystick
driver on Linux.
Cameron Gutman hai 10 meses
pai
achega
e67ae274a5
Modificáronse 1 ficheiros con 22 adicións e 1 borrados
  1. 22 1
      src/hidapi/linux/hid.c

+ 22 - 1
src/hidapi/linux/hid.c

@@ -1042,7 +1042,28 @@ struct hid_device_info  HID_API_EXPORT *hid_enumerate(unsigned short vendor_id,
 			memset(&usage_iterator, 0, sizeof(usage_iterator));
 			get_next_hid_usage(report_desc.value, report_desc.size, &usage_iterator, &page, &usage);
 		}
-		if (HIDAPI_IGNORE_DEVICE(bus_type, dev_vid, dev_pid, page, usage)) {
+
+		/* Convert from Linux bus types to standard HIDAPI ones */
+		hid_bus_type hidapi_bus_type;
+		switch (bus_type) {
+			case BUS_USB:
+				hidapi_bus_type = HID_API_BUS_USB;
+				break;
+			case BUS_BLUETOOTH:
+				hidapi_bus_type = HID_API_BUS_BLUETOOTH;
+				break;
+			case BUS_I2C:
+				hidapi_bus_type = HID_API_BUS_I2C;
+				break;
+			case BUS_SPI:
+				hidapi_bus_type = HID_API_BUS_SPI;
+				break;
+			default:
+				hidapi_bus_type = HID_API_BUS_UNKNOWN;
+				break;
+		}
+
+		if (HIDAPI_IGNORE_DEVICE(hidapi_bus_type, dev_vid, dev_pid, page, usage)) {
 			continue;
 		}
 #endif