PERFORCE change 161718 for review

Hans Petter Selasky hselasky at FreeBSD.org
Thu May 7 11:15:54 UTC 2009


http://perforce.freebsd.org/chv.cgi?CH=161718

Change 161718 by hselasky at hselasky_laptop001 on 2009/05/07 11:15:49

	
	USB CORE: HID parsing
	 - make sure collections have the usage field set.
	 - improve hid_is_collection() function.

Affected files ...

.. //depot/projects/usb/src/sys/dev/usb/usb_hid.c#31 edit

Differences ...

==== //depot/projects/usb/src/sys/dev/usb/usb_hid.c#31 (text+ko) ====

@@ -309,6 +309,7 @@
 				c->kind = hid_collection;
 				c->collection = dval;
 				c->collevel++;
+				c->usage = s->usage_last;
 				*h = *c;
 				return (1);
 			case 11:	/* Feature */
@@ -408,6 +409,9 @@
 				if (bSize != 4)
 					dval = (dval & mask) | c->_usage_page;
 
+				/* set last usage, in case of a collection */
+				s->usage_last = dval;
+
 				if (s->nusage < MAXUSAGE) {
 					s->usages_min[s->nusage] = dval;
 					s->usages_max[s->nusage] = dval;
@@ -630,9 +634,11 @@
 	if (hd == NULL)
 		return (0);
 
-	err = hid_get_item(hd, &hi) &&
-	    hi.kind == hid_collection &&
-	    hi.usage == usage;
+	while ((err = hid_get_item(hd, &hi))) {
+		 if (hi.kind == hid_collection &&
+		     hi.usage == usage)
+			break;
+	}
 	hid_end_parse(hd);
 	return (err);
 }


More information about the p4-projects mailing list