my usb prog

From: Chuck Robey <chuckr_at_telenix.org>
Date: Sun, 25 May 2008 12:31:26 -0400
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Man, I'm just not sure if I am making a mistake posting here, but I tried the
usb list, and no answer to either subject, so I am risking bothering you.  If
I'm wrong, and you jump all over me, I will learn that way, at least, not to do
it again.  Ok, 2 parts below, here's part 1:

I've been working trying to get my UC-Logic graphic tablet to work under
- -current.  First thing I did, I began with an equivalent of a "Hello, world" and
 added different features so I could get more experience playing with uhid0
(where dmesg puts my tablet).  One part of it is a reader/dumper of the
descriptor using libusbhid, and one part it printed out, the usage page, kept on
 printing as a 0x0D (the number of a Digitizer) instead of what I thought it
should have been, the word "Digitizer".  I looked over libusbhid, and found a
small change I could put into usage.c to get the right part to print ...

 cvs diff: Diffing .
Index: usage.c
===================================================================
RCS file: /home/ncvs/src/lib/libusbhid/usage.c,v
retrieving revision 1.8
diff -u -r1.8 usage.c
- --- usage.c     9 Apr 2003 01:52:48 -0000       1.8
+++ usage.c     24 May 2008 16:34:17 -0000
_at__at_ -164,7 +164,7 _at__at_
                errx(1, "no hid table");

        for (k = 0; k < npages; k++)
- -               if (pages[k].usage == i)
+               if (pages[k].usage == HID_PAGE(i))
                        return pages[k].name;
        sprintf(b, "0x%04x", i);
        return b;

I wanted to apply this myself, but I wanted someone else to verify it looks ok
to apply.  I used to be pretty active wtih ports, but didn't work in src before
(publicly), so if you'd just NOT apply this, just tell me if it's ok or not, I
will see about applying it.  I  have a freebsd.org ssh login from long while
back, it still works, so if this is a good diff, please leave it to me to do, ok?

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2nd part is that my other prog, a uhid0 dumper, which is the first part of a
Xinput module for my tablet, is not able to correctly dump the uhid0.  At first
it looked like:

        while(nread = read(udev, buf, 1024) > 0){
            for(i=0; i<nread; i++)
                fprintf(stderr,"i;%d:%x",nread,buf[i]);
        }

This always returns ";1;9" in endless repetitions, no changes, and nread is
always 1.  nread is a ssize_t.  Well, finally, I got to wondering if it might be
possible that nread was wrong, so I made these changes to show me the first few
bytes following, no matter what the nread was:

        while(nread = read(udev, buf, 1024) > 0){
            fprintf(stderr,";%d",nread);
            for(i=0; i<5; i++)
                fprintf(stderr,":%x",buf[i]);
        }

Well, the funny thing is, the data coming out changes!  I get the strong notion
that I really outght to simply read the number of bytes that the report
descriptor tells me to, but the first code sample above, shouldn't it work just
as I wrote it?  What am I doing wrong?  Or, is it possible that the uhid code is
wrong, I should maybe read the uhid driver and fix something?  I can easily dump
enough of the desciptor to find out how much to read, no problem there, I just
can't figure out why the "correct" approach fails.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.4 (FreeBSD)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFIOZRez62J6PPcoOkRAi0TAJ9aV1dY4SMBSmyqv9hHski3J0IlkQCeLHex
zz42d1+2Tf6SERctKLE/+gM=
=mWZN
-----END PGP SIGNATURE-----
Received on Sun May 25 2008 - 15:06:07 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:31 UTC