diff options
author | n_hibma <n_hibma@FreeBSD.org> | 2000-10-16 18:13:59 +0000 |
---|---|---|
committer | n_hibma <n_hibma@FreeBSD.org> | 2000-10-16 18:13:59 +0000 |
commit | ef4994a1212dd74d2ea9e3be4b586433d2aeb0bd (patch) | |
tree | f5bf67808c38fb5703446a339a4b2fbee87bfa91 /lib/libusbhid/descr.c | |
parent | ba11a89d00cdc5eb8917da96d66e9feae77dc5e6 (diff) | |
download | FreeBSD-src-ef4994a1212dd74d2ea9e3be4b586433d2aeb0bd.zip FreeBSD-src-ef4994a1212dd74d2ea9e3be4b586433d2aeb0bd.tar.gz |
Sync with NetBSD:
K&R -> ANSI
Bugfix: 'Keep the bit position even when the report descriptor says POP.'
Add hid_use_report_desc, hid_parse_usage_page, hid_parse_usage_in_page.
Changed iface for hid_report_size.
Diffstat (limited to 'lib/libusbhid/descr.c')
-rw-r--r-- | lib/libusbhid/descr.c | 30 |
1 files changed, 19 insertions, 11 deletions
diff --git a/lib/libusbhid/descr.c b/lib/libusbhid/descr.c index 8904a87..65b60ce 100644 --- a/lib/libusbhid/descr.c +++ b/lib/libusbhid/descr.c @@ -1,4 +1,4 @@ -/* $NetBSD: descr.c,v 1.7 1999/10/13 17:48:04 drochner Exp $ */ +/* $NetBSD: descr.c,v 1.9 2000/09/24 02:13:24 augustss Exp $ */ /* * Copyright (c) 1999 Lennart Augustsson <augustss@netbsd.org> @@ -37,7 +37,9 @@ #include <string.h> #include <unistd.h> #include <sys/time.h> +#if defined(__FreeBSD__) #include <sys/ioctl.h> +#endif #include <dev/usb/usb.h> @@ -45,28 +47,34 @@ #include "usbvar.h" report_desc_t -hid_get_report_desc(fd) - int fd; +hid_get_report_desc(int fd) { struct usb_ctl_report_desc rep; - report_desc_t r; rep.size = 0; if (ioctl(fd, USB_GET_REPORT_DESC, &rep) < 0) - return (0); - r = malloc(sizeof *r + rep.size); + return (NULL); + + return hid_use_report_desc(rep.data, (unsigned int)rep.size); +} + +report_desc_t +hid_use_report_desc(unsigned char *data, unsigned int size) +{ + report_desc_t r; + + r = malloc(sizeof(*r) + size); if (r == 0) { errno = ENOMEM; - return (0); + return (NULL); } - r->size = rep.size; - memcpy(r->data, rep.data, (unsigned int)rep.size); + r->size = size; + memcpy(r->data, data, size); return (r); } void -hid_dispose_report_desc(r) - report_desc_t r; +hid_dispose_report_desc(report_desc_t r) { free(r); |