Could someone please comment on the email/post below.

I really need to know if those errors are caused by the device not being
fully HID compliant or up to spec. Or if there is a problem in the
kernel itself?

I really need to find a solution ASAP. Thank you.

On Tue, 2003-09-23 at 00:30, William L. Thomson Jr. wrote:
> Ok it appears older kernels do not recognize the cash drawer at all. At
> least not with the hid driver.
> 
> The current kernel 2.4.22 does and I can access the driver via the hid
> driver and /dev/usb/hiddev*.
> 
> I can send write events and open the cash drawer with no problems or
> errors.
> 
> However it seems when ever ioctl(cd,HIDIOCINITREPORT,0) is called there
> is a pause. When I do a dmesg I get the following
> 
> host/usb-uhci.c: interrupt, status 2, frame# 1910
> usb_control/bulk_msg: timeout
> host/usb-uhci.c: interrupt, status 3, frame# 772
> 
> Also during initial recognition of the cash drawer I get a similar entry
> 
> usb_control/bulk_msg: timeout
> hiddev0: USB HID v1.00 Device [APG Cash Drawer 554 HID USBPro(tm)II Interface] on 
> usb1:2.0
> 
> I would not care, except that the timeout causes reading the status to
> take longer than it should.
> 
> I have removed that call from the following code, and it still runs, but
> it does not update. Basically in order for the following code to work I
> have to make that call. Which slows things down and makes it so I can't
> use the status of cash drawer in apps.
> 
> Is there another call I can make to get the data to update to current
> device status? Is there something I can do to get avoid the timeout or
> change it?
> 
> Here is the code I am using to determine the status
> 
> #include <stdlib.h>
> #include <string.h>
> #include <fcntl.h>
> #include <unistd.h>
> #include <stdio.h>
> #include <sys/types.h>
> #include <sys/ioctl.h>
> #include <sys/stat.h>
> #include <asm/types.h>
> #include <sys/signal.h>
> #include <linux/hiddev.h>
> 
> int main (int argc, char **argv) {
>   int cd = -1;
>   struct hiddev_usage_ref usage_ref;
>         
>       if(argc!=2) {
>               fprintf(stderr, "usage: %s hiddevice - probably /dev/usb/hiddev0\n", 
> argv[0]);
>               exit(1);
>       }
>       if((cd=open(argv[1],O_RDONLY))<0) {
>               perror("hiddev open");
>               exit(1);
>       }
>       if(ioctl(cd,HIDIOCINITREPORT,0)<0)
>               exit(1);
>       memset(&usage_ref,0,sizeof(usage_ref));
>       usage_ref.report_type = HID_REPORT_TYPE_INPUT;
>       usage_ref.report_id = 0;
>       usage_ref.field_index = 0;
>       usage_ref.usage_index = 0;
>       ioctl(cd,HIDIOCGUCODE,&usage_ref);
>       ioctl(cd,HIDIOCGUSAGE,&usage_ref);
>       if(usage_ref.usage_code==0xf000f4)
>               printf("%d\n",usage_ref.value);
>       else
>               printf("%d\n",0);
>       close(cd);
>       exit(0);
> }
> 
> Any comments or suggestions are greatly appreciated.
-- 
Sincerely,
William L. Thomson Jr.
Support Group
Obsidian-Studios, Inc.
http://www.obsidian-studios.com



-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to