llow parsing of usage strings.
This commit is contained in:
parent
8d014ac8a4
commit
cb9f491cfe
|
@ -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>
|
* Copyright (c) 1999 Lennart Augustsson <augustss@netbsd.org>
|
||||||
|
@ -192,3 +192,40 @@ hid_usage_in_page(unsigned int u)
|
||||||
sprintf(b, "0x%04x", i);
|
sprintf(b, "0x%04x", i);
|
||||||
return b;
|
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);
|
||||||
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
.\" $NetBSD: usb.3,v 1.12 2000/09/24 02:13:24 augustss Exp $
|
.\" $NetBSD: usb.3,v 1.13 2000/09/24 02:17:52 augustss Exp $
|
||||||
.\"
|
.\"
|
||||||
.\" Copyright (c) 1999 Lennart Augustsson <augustss@netbsd.org>
|
.\" Copyright (c) 1999 Lennart Augustsson <augustss@netbsd.org>
|
||||||
.\" All rights reserved.
|
.\" All rights reserved.
|
||||||
|
@ -67,6 +67,10 @@
|
||||||
.Fn hid_usage_page "int i"
|
.Fn hid_usage_page "int i"
|
||||||
.Ft char *
|
.Ft char *
|
||||||
.Fn hid_usage_in_page "u_int u"
|
.Fn hid_usage_in_page "u_int u"
|
||||||
|
.Ft int
|
||||||
|
.Fn hid_parse_usage_page "const char *"
|
||||||
|
.Ft char *
|
||||||
|
.Fn hid_parse_usage_in_page "const char *"
|
||||||
.Ft void
|
.Ft void
|
||||||
.Fn hid_init "char *file"
|
.Fn hid_init "char *file"
|
||||||
.Ft int
|
.Ft int
|
||||||
|
@ -162,7 +166,19 @@ will return the symbolic name of a usage page, and the function
|
||||||
.Fn hid_usage_in_page
|
.Fn hid_usage_in_page
|
||||||
will return the symbolic name of the usage within the page.
|
will return the symbolic name of the usage within the page.
|
||||||
Both these functions may return a pointer to static data.
|
Both these functions may return a pointer to static data.
|
||||||
Before either of these functions can be called the usage table
|
.Pp
|
||||||
|
The functions
|
||||||
|
.Fn hid_parse_usage_page
|
||||||
|
and
|
||||||
|
.Fn hid_parse_usage_in_page
|
||||||
|
are the inverses of
|
||||||
|
.Fn hid_usage_page
|
||||||
|
and
|
||||||
|
.Fn hid_usage_in_page .
|
||||||
|
They take a usage string and return the number of the usage, or -1
|
||||||
|
if it cannot be found.
|
||||||
|
.Pp
|
||||||
|
Before any of these functions can be called the usage table
|
||||||
must be parsed, this is done by calling
|
must be parsed, this is done by calling
|
||||||
.Fn hid_init
|
.Fn hid_init
|
||||||
with the name of the table. Passing
|
with the name of the table. Passing
|
||||||
|
|
Loading…
Reference in New Issue