Add support for SteelSeries Call of Duty

This commit is contained in:
Přemysl Eric Janouch 2013-06-22 00:38:02 +02:00
parent 22680c4c9d
commit 47a80ce71e
2 changed files with 37 additions and 3 deletions

5
README
View File

@ -10,6 +10,11 @@ If you don't fancy command line tools, there's also a basic GTK+ frontend
available. On Ubuntu and its derivates, you should be able to find it in your available. On Ubuntu and its derivates, you should be able to find it in your
System Settings. System Settings.
Supported devices
=================
- SteelSeries Sensei Raw
- SteelSeries Call of Duty: Black Ops II
Installation Installation
============ ============
Build dependencies: cmake >= 2.8.5, help2man, libusb >= 1.0, Build dependencies: cmake >= 2.8.5, help2man, libusb >= 1.0,

View File

@ -81,10 +81,33 @@ out:
return handle; return handle;
} }
/** Search for a device under various product ID's. */
static libusb_device_handle *
find_device_list (int vendor,
const int *products, size_t n_products, int *error)
{
int err = 0;
libusb_device_handle *handle;
while (n_products--)
{
handle = find_device (vendor, *products++, &err);
if (handle)
return handle;
if (err)
break;
}
if (error != NULL && err != 0)
*error = err;
return NULL;
}
// --- Device configuration ---------------------------------------------------- // --- Device configuration ----------------------------------------------------
#define USB_VENDOR_STEELSERIES 0x1038 #define USB_VENDOR_STEELSERIES 0x1038
#define USB_PRODUCT_STEELSERIES_SENSEI 0x1369 #define USB_PRODUCT_STEELSERIES_SENSEI_RAW 0x1369
#define USB_PRODUCT_STEELSERIES_COD_BO2 0x136f
#define USB_GET_REPORT 0x01 #define USB_GET_REPORT 0x01
#define USB_SET_REPORT 0x09 #define USB_SET_REPORT 0x09
@ -511,9 +534,15 @@ main (int argc, char *argv[])
ERROR (error_0, "libusb initialisation failed: %s\n", ERROR (error_0, "libusb initialisation failed: %s\n",
libusb_error_name (result)); libusb_error_name (result));
static const int products[] =
{
USB_PRODUCT_STEELSERIES_SENSEI_RAW,
USB_PRODUCT_STEELSERIES_COD_BO2
};
result = 0; result = 0;
libusb_device_handle *device = find_device libusb_device_handle *device = find_device_list (USB_VENDOR_STEELSERIES,
(USB_VENDOR_STEELSERIES, USB_PRODUCT_STEELSERIES_SENSEI, &result); products, sizeof products / sizeof products[0], &result);
if (!device) if (!device)
{ {
if (result) if (result)