It's a known "feature".

The original intent was to have bitmasks to match similar product/ 
vendor IDs, but somewhere along the line it got over-optimized into  
what you see now.

If you want your code to work with libhid as it is shipped in various  
distributions, you can use the custom matcher function. This has been  
discussed before - see the archives.

On Aug 26, 2008, at 3:43 PM, Christopher wrote:

> hid_compare_usb_device() returns false positives for devices with  
> similar vendor or product ids.
> In the current code we check:
> "if ((dev->descriptor.idProduct & match->product_id) == match- 
> >product_id)"
> However, "(dev->descriptor.idProduct & match->product_id) == match- 
> >product_id" does not imply that dev->descriptor.idProduct == match- 
> >product_id.
> Example:
> idProduct = 0x0011
> product_id = 0x0001
> idProduct & product_id == 0x0001
>
> Let me know if the patch is not formatted properly,
> Christopher Berner
>
> Index: src/hid_opening.c
> ===================================================================
> --- src/hid_opening.c (revision 362)
> +++ src/hid_opening.c (working copy)
> @@ -77,14 +77,14 @@
>
>    TRACE("inspecting vendor ID...");
>    if (dev->descriptor.idVendor > 0 &&
> -      (dev->descriptor.idVendor & match->vendor_id) == match- 
> >vendor_id) {
> +      (dev->descriptor.idVendor == match->vendor_id)) {
>        TRACE("match on vendor ID: 0x%04x.", dev->descriptor.idVendor);
>        ret |= USB_MATCH_VENDOR;
>    }
>    else TRACE("no match on vendor ID.");
>
>    TRACE("inspecting product ID...");
> -  if ((dev->descriptor.idProduct & match->product_id) == match- 
> >product_id) {
> +  if ((dev->descriptor.idProduct == match->product_id)) {
>        TRACE("match on product ID: 0x%04x.", dev- 
> >descriptor.idProduct);
>        ret |= USB_MATCH_PRODUCT;
>    }
> _______________________________________________
> libhid-discuss mailing list
> [email protected]
> http://lists.alioth.debian.org/mailman/listinfo/libhid-discuss

_______________________________________________
libhid-discuss mailing list
[email protected]
http://lists.alioth.debian.org/mailman/listinfo/libhid-discuss

Reply via email to