diff options
| author | augustss <augustss@NetBSD.org> | 2000-09-24 02:17:52 +0000 |
|---|---|---|
| committer | augustss <augustss@NetBSD.org> | 2000-09-24 02:17:52 +0000 |
| commit | cb9f491cfe4f48de2f3776a86994e63cd1bd538c (patch) | |
| tree | 47fc6c1e0b6758b5d279cde7051ca2b9cc761381 /lib/libusb/usage.c | |
| parent | 8d014ac8a4b1c5f7507916669cae364f5c6e8fe4 (diff) | |
llow parsing of usage strings.
Diffstat (limited to 'lib/libusb/usage.c')
| -rw-r--r-- | lib/libusb/usage.c | 39 |
1 files changed, 38 insertions, 1 deletions
diff --git a/lib/libusb/usage.c b/lib/libusb/usage.c index d87afdc88c7..2b98e4333be 100644 --- a/lib/libusb/usage.c +++ b/lib/libusb/usage.c @@ -1,4 +1,4 @@ -/* $NetBSD: usage.c,v 1.6 2000/08/13 22:22:02 augustss Exp $ */ +/* $NetBSD: usage.c,v 1.7 2000/09/24 02:17:52 augustss Exp $ */ /* * Copyright (c) 1999 Lennart Augustsson <augustss@netbsd.org> @@ -192,3 +192,40 @@ hid_usage_in_page(unsigned int u) sprintf(b, "0x%04x", i); return b; } + +int +hid_parse_usage_page(const char *name) +{ + int k; + + if (!pages) + errx(1, "no hid table\n"); + + for (k = 0; k < npages; k++) + if (strcmp(pages[k].name, name) == 0) + return pages[k].usage; + return -1; +} + +/* XXX handle hex */ +int +hid_parse_usage_in_page(const char *name) +{ + const char *sep = strchr(name, ':'); + int k, j; + unsigned int l; + + if (sep == NULL) + return -1; + l = sep - name; + for (k = 0; k < npages; k++) + if (strncmp(pages[k].name, name, l) == 0) + goto found; + return -1; + found: + sep++; + for (j = 0; j < pages[k].pagesize; j++) + if (strcmp(pages[k].page_contents[j].name, sep) == 0) + return (pages[k].usage << 16) | pages[k].page_contents[j].usage; + return (-1); +} |
