hilinfo, from Utah, for the hp300
This commit is contained in:
parent
547081bd86
commit
e239cfc569
|
@ -0,0 +1,7 @@
|
||||||
|
# $Id: Makefile,v 1.1 1994/04/04 21:52:21 cgd Exp $
|
||||||
|
|
||||||
|
PROG= hilinfo
|
||||||
|
NOMAN=
|
||||||
|
CFLAGS+= -I${.CURDIR}/../../sys/arch/hp300
|
||||||
|
|
||||||
|
.include <bsd.prog.mk>
|
|
@ -0,0 +1,147 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 1987-1993, The University of Utah and
|
||||||
|
* the Center for Software Science at the University of Utah (CSS).
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Permission to use, copy, modify and distribute this software is hereby
|
||||||
|
* granted provided that (1) source code retains these copyright, permission,
|
||||||
|
* and disclaimer notices, and (2) redistributions including binaries
|
||||||
|
* reproduce the notices in supporting documentation, and (3) all advertising
|
||||||
|
* materials mentioning features or use of this software display the following
|
||||||
|
* acknowledgement: ``This product includes software developed by the Center
|
||||||
|
* for Software Science at the University of Utah.''
|
||||||
|
*
|
||||||
|
* THE UNIVERSITY OF UTAH AND CSS ALLOW FREE USE OF THIS SOFTWARE IN ITS "AS
|
||||||
|
* IS" CONDITION. THE UNIVERSITY OF UTAH AND CSS DISCLAIM ANY LIABILITY OF
|
||||||
|
* ANY KIND FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
|
||||||
|
*
|
||||||
|
* CSS requests users of this software to return to css-dist@cs.utah.edu any
|
||||||
|
* improvements that they make and grant CSS redistribution rights.
|
||||||
|
*
|
||||||
|
* from: Utah $Hdr: hilinfo.c 1.3 94/04/04$
|
||||||
|
* $Id: hilinfo.c,v 1.1 1994/04/04 21:52:25 cgd Exp $
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/ioctl.h>
|
||||||
|
#include <sys/errno.h>
|
||||||
|
#include <dev/hilioctl.h>
|
||||||
|
|
||||||
|
int aflg = 0;
|
||||||
|
int tflg = 1;
|
||||||
|
char *pname;
|
||||||
|
char *dname, *tname();
|
||||||
|
struct _hilbuf11 hi;
|
||||||
|
struct _hilbuf16 sc;
|
||||||
|
|
||||||
|
struct hil_info {
|
||||||
|
u_char hil_lo;
|
||||||
|
u_char hil_hi;
|
||||||
|
char *hil_name;
|
||||||
|
} info[] = {
|
||||||
|
0xA0, 0xFF, "keyboard",
|
||||||
|
0x60, 0x6B, "mouse",
|
||||||
|
0x90, 0x97, "tablet",
|
||||||
|
0x34, 0x34, "id-module",
|
||||||
|
0x30, 0x30, "button-box",
|
||||||
|
0x00, 0x00, "unknown",
|
||||||
|
};
|
||||||
|
|
||||||
|
main(argc, argv)
|
||||||
|
char **argv;
|
||||||
|
{
|
||||||
|
extern int optind, optopt;
|
||||||
|
extern char *optarg;
|
||||||
|
register int c;
|
||||||
|
int multi;
|
||||||
|
|
||||||
|
pname = argv[0];
|
||||||
|
while ((c = getopt(argc, argv, "at")) != EOF)
|
||||||
|
switch (c) {
|
||||||
|
/* everything */
|
||||||
|
case 'a':
|
||||||
|
aflg++;
|
||||||
|
tflg = 0;
|
||||||
|
break;
|
||||||
|
/* type */
|
||||||
|
case 't':
|
||||||
|
tflg++;
|
||||||
|
aflg = 0;
|
||||||
|
break;
|
||||||
|
/* bogon */
|
||||||
|
case '?':
|
||||||
|
usage();
|
||||||
|
}
|
||||||
|
if (optind == argc)
|
||||||
|
usage();
|
||||||
|
multi = (argc - optind) - 1;
|
||||||
|
while (optind < argc) {
|
||||||
|
dname = argv[optind];
|
||||||
|
if (multi)
|
||||||
|
printf("%s: ", dname);
|
||||||
|
if (getinfo()) {
|
||||||
|
if (aflg)
|
||||||
|
printall();
|
||||||
|
else if (tflg)
|
||||||
|
printf("%s\n", tname());
|
||||||
|
}
|
||||||
|
optind++;
|
||||||
|
}
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
getinfo()
|
||||||
|
{
|
||||||
|
int f;
|
||||||
|
extern int errno;
|
||||||
|
|
||||||
|
f = open(dname, 0);
|
||||||
|
if (f < 0 || ioctl(f, HILIOCID, &hi) < 0) {
|
||||||
|
if (tflg)
|
||||||
|
printf(errno == EBUSY ? "busy\n" : "none\n");
|
||||||
|
else {
|
||||||
|
printf("error\n");
|
||||||
|
perror(dname);
|
||||||
|
}
|
||||||
|
close(f);
|
||||||
|
return(0);
|
||||||
|
}
|
||||||
|
(void) ioctl(f, HILIOCSC, &sc);
|
||||||
|
close(f);
|
||||||
|
return(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
printall()
|
||||||
|
{
|
||||||
|
register int i;
|
||||||
|
|
||||||
|
printf("%s: %s, info: ", dname, tname());
|
||||||
|
for (i = 0; i < 11; i++)
|
||||||
|
printf("%2.2x", hi.string[i]);
|
||||||
|
if (strcmp(tname(), "id-module") == 0) {
|
||||||
|
printf(", sc: ");
|
||||||
|
for (i = 0; i < 16; i++)
|
||||||
|
printf("%2.2x", sc.string[i]);
|
||||||
|
}
|
||||||
|
printf("\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
char *
|
||||||
|
tname()
|
||||||
|
{
|
||||||
|
register struct hil_info *hp;
|
||||||
|
|
||||||
|
for (hp = info; hp->hil_lo; hp++)
|
||||||
|
if (hi.string[0] >= hp->hil_lo && hi.string[0] <= hp->hil_hi)
|
||||||
|
break;
|
||||||
|
if (hi.string[0] == 0x61 && hi.string[1] == 0x13)
|
||||||
|
return("knobs");
|
||||||
|
return(hp->hil_name);
|
||||||
|
}
|
||||||
|
|
||||||
|
usage()
|
||||||
|
{
|
||||||
|
fprintf(stderr, "usage: %s [-at] device\n", pname);
|
||||||
|
exit(1);
|
||||||
|
}
|
Loading…
Reference in New Issue