From macdev-3dosx@acm.uiuc.edu Fri Jan 3 21:56:39 2003 From: macdev-3dosx@acm.uiuc.edu (James B. Tuley) Date: Fri, 3 Jan 2003 15:56:39 -0600 Subject: [3DOSX dev] Powerglove P5 Message-ID: <3C88DAF6-1F66-11D7-A0C2-00039354202E@uiuc.edu> After the December Apple dev tools update i was able to compile apples HID sample code with no problem. Basically to use the powerglove we need to build HID manager support into 3DOSX (one of the code samples on apples site is a dynamic library that will help (it abstracts a bunch)) and then write a profile for the power glove which should be really easy (i did it for a joystick already to learn how). Basically we will need to do something similar to apple's sample code "hid config save". _________________________________________________ Jay Tuley ACM MacWarriors Chieftain CS in Engineering http://www.acm.uiuc.edu/macwarriors tuley at acm.uiuc.edu University of Illinois From macdev-3dosx@acm.uiuc.edu Tue Jan 7 16:39:00 2003 From: macdev-3dosx@acm.uiuc.edu (James B. Tuley) Date: Tue, 7 Jan 2003 10:39:00 -0600 Subject: [3DOSX dev] 3dosx Message-ID: <86070CFF-225E-11D7-BE21-00039354202E@uiuc.edu> New version of 3dosx should be showing up on versiontracker now. -Jay _________________________________________________ Jay Tuley ACM MacWarriors Chairman CS in Engineering http://www.acm.uiuc.edu/macwarriors tuley at acm.uiuc.edu University of Illinois From macdev-3dosx@acm.uiuc.edu Wed Jan 29 06:12:30 2003 From: macdev-3dosx@acm.uiuc.edu (James B. Tuley) Date: Wed, 29 Jan 2003 00:12:30 -0600 Subject: [3DOSX dev] p5 Message-ID: Grrrrrr. Riddle me this, if one made a glove/joystick device, and created a hid interface for developers to access it, why would they use the usage table for a Bar Code Scanner (0x8C) HID Descriptor Descriptor Version Number: 0x0110 Country Code: 33 Descriptor Count: 1 Descriptor 1 Type: 0x22 (Report Descriptor) Length: 288 Parsed Report Descriptor: Usage Page (140) Usage 1 (0x1) Collection (Application) ReportID................ (1) Usage 4 (0x4) Logical Minimum......... (-1) Logical Maximum......... (1) Report Size............. (8) Report Count............ (1) Feature................. (Data, Variable, Absolute, No Wrap, Linear, Preferred State, No Null Position, Volatile, Bitfield) ReportID................ (2) Usage 2 (0x2) Logical Minimum......... (0) Logical Maximum......... (255) Report Size............. (8) Report Count............ (3) Feature................. (Data, Variable, Absolute, No Wrap, Linear, Preferred State, No Null Position, Volatile, Bitfield) ReportID................ (3) Usage 3 (0x3) Logical Minimum......... (0) Logical Maximum......... (255) Report Size............. (8) Report Count............ (-78) Feature................. (Data, Variable, Absolute, No Wrap, Linear, Preferred State, No Null Position, Volatile, Bitfield) ReportID................ (5) Usage 6 (0x6) Logical Minimum......... (-1) Logical Maximum......... (1) Report Size............. (8) Report Count............ (1) Feature................. (Data, Variable, Absolute, No Wrap, Linear, Preferred State, No Null Position, Volatile, Bitfield) ReportID................ (6) Usage 7 (0x7) Logical Minimum......... (0) Logical Maximum......... (255) Report Size............. (8) Report Count............ (5) Feature................. (Data, Variable, Absolute, No Wrap, Linear, Preferred State, No Null Position, Volatile, Bitfield) ReportID................ (7) Usage 8 (0x8) Logical Minimum......... (0) Logical Maximum......... (255) Report Size............. (8) Report Count............ (7) Feature................. (Data, Variable, Absolute, No Wrap, Linear, Preferred State, No Null Position, Volatile, Bitfield) ReportID................ (8) Usage 9 (0x9) Logical Minimum......... (0) Logical Maximum......... (255) Report Size............. (8) Report Count............ (7) Feature................. (Data, Variable, Absolute, No Wrap, Linear, Preferred State, No Null Position, Volatile, Bitfield) ReportID................ (9) Usage 10 (0xa) Logical Minimum......... (0) Logical Maximum......... (255) Report Size............. (8) Report Count............ (2) Feature................. (Data, Variable, Absolute, No Wrap, Linear, Preferred State, No Null Position, Volatile, Bitfield) ReportID................ (10) Usage 11 (0xb) Logical Minimum......... (0) Logical Maximum......... (255) Report Size............. (8) Report Count............ (1) Feature................. (Data, Variable, Absolute, No Wrap, Linear, Preferred State, No Null Position, Volatile, Bitfield) ReportID................ (11) Usage 12 (0xc) Logical Minimum......... (0) Logical Maximum......... (255) Report Size............. (8) Report Count............ (3) Feature................. (Data, Variable, Absolute, No Wrap, Linear, Preferred State, No Null Position, Volatile, Bitfield) ReportID................ (12) Usage 13 (0xd) Logical Minimum......... (0) Logical Maximum......... (255) Report Size............. (8) Report Count............ (61) Feature................. (Data, Variable, Absolute, No Wrap, Linear, Preferred State, No Null Position, Volatile, Bitfield) ReportID................ (13) Usage 14 (0xe) Logical Minimum......... (0) Logical Maximum......... (255) Report Size............. (8) Report Count............ (1) Feature................. (Data, Variable, Absolute, No Wrap, Linear, Preferred State, No Null Position, Volatile, Bitfield) ReportID................ (14) Usage 15 (0xf) Logical Minimum......... (0) Logical Maximum......... (255) Report Size............. (8) Report Count............ (7) Feature................. (Data, Variable, Absolute, No Wrap, Linear, Preferred State, No Null Position, Volatile, Bitfield) ReportID................ (15) Usage 16 (0x10) Logical Minimum......... (0) Logical Maximum......... (255) Report Size............. (8) Report Count............ (7) Feature................. (Data, Variable, Absolute, No Wrap, Linear, Preferred State, No Null Position, Volatile, Bitfield) ReportID................ (16) Usage 17 (0x11) Logical Minimum......... (0) Logical Maximum......... (255) Report Size............. (8) Report Count............ (7) Feature................. (Data, Variable, Absolute, No Wrap, Linear, Preferred State, No Null Position, Volatile, Bitfield) ReportID................ (17) Usage 18 (0x12) Logical Minimum......... (0) Logical Maximum......... (255) Report Size............. (8) Report Count............ (1) Feature................. (Data, Variable, Absolute, No Wrap, Linear, Preferred State, No Null Position, Volatile, Bitfield) ReportID................ (1) Usage 3 (0x3) Logical Minimum......... (0) Logical Maximum......... (255) Report Size............. (8) Report Count............ (23) Input................... (Data, Variable, Absolute, No Wrap, Linear, Preferred State, No Null Position, Bitfield) ReportID................ (3) Usage 4 (0x4) Logical Minimum......... (0) Logical Maximum......... (255) Report Size............. (8) Input................... (Data, Variable, Absolute, No Wrap, Linear, Preferred State, No Null Position, Bitfield) ReportID................ (8) Usage 8 (0x8) Logical Minimum......... (0) Logical Maximum......... (255) Report Size............. (8) Report Count............ (23) Input................... (Data, Variable, Absolute, No Wrap, Linear, Preferred State, No Null Position, Bitfield) End Collection From macdev-3dosx@acm.uiuc.edu Wed Jan 29 16:12:55 2003 From: macdev-3dosx@acm.uiuc.edu (Steven Bytnar) Date: Wed, 29 Jan 2003 10:12:55 -0600 Subject: [3DOSX dev] p5 In-Reply-To: References: Message-ID: <20030129161255.GF23581@openprojects> I worked on a USB stack just over a year ago. We found a lot of devices that did not follow the USB specifications correctly or just didn't follow the standards at all. Lots of keyboards reported bad information for their power capabilities; lots of mass storage drives don't implement the Mass Storage standards. But, of the devices we worked with, the three commercial grade bar code scanners we tested had the most correct and versatile HID descriptors---they advertised themselves as capable of being a keyboard as well as bar code scanner devices. Compared to keyboards, mice and joysticks, the 3 bar code scanners we saw got everything right. (BTW, the stack is due to be released with the next version of SCO's operating systems, sooner or later. :) ) It's possible though that they did this on purpose though, for device driver matching purposes... but if that's the case, they should've used a vendor-defined Page ID. FF00-FFFF. Why does this help device driver matching? Because it's uncommon to have a bar code scanner driver in your system... but it is common to have a joystick, keyboard or mouse driver in your system. If the OS provides both a generic joystick, mouse and keyboard HID driver, but doesn't provide a way to get the device-specific output from the joystick, mouse or keyboard device, and doesn't provide a way to forcibly match your driver in place of an existing one... well, there would be no way to take complete control of the device so you could talk to the device specific parts and you'd be out of luck. Still, there are other ways they could have crafted the descriptor without making the device act like a bar code scanner. I'd file a bug report with the p5 vendor and tell them they screwed up. They might decide to tell you the rationale behind their choice. This device could have even provided a Physical Interface Device descriptor (pid1_01.pdf @ usb.org). It's possible that the thing you're using to view the HID descriptors has a bug in the HID descriptor parser, but that is probably unlikely. I had written OS X USB descriptor dumper that saved all of the devices descriptors into a file, but I can't find it anymore. It was based on /Developer/Examples/IOKit/usb/USBSimple Example. I wonder... does the device have multiple configuration descriptors? Or just one? Or is the OS only showing the one that's currently matched? --Steve On Wed, Jan 29, 2003 at 12:12:30AM -0600, James B. Tuley wrote: > Grrrrrr. Riddle me this, if one made a glove/joystick device, and > created a hid interface for developers to access it, why would they use > the usage table for a Bar Code Scanner (0x8C) > > > HID Descriptor > Descriptor Version Number: 0x0110 > Country Code: 33 > Descriptor Count: 1 > Descriptor 1 > Type: 0x22 (Report Descriptor) > Length: 288 > Parsed Report Descriptor: > Usage Page (140) > Usage 1 (0x1) > Collection (Application) > ReportID................ (1) > Usage 4 (0x4) > Logical Minimum......... (-1) > Logical Maximum......... (1) > Report Size............. (8) > Report Count............ (1) > Feature................. (Data, > Variable, Absolute, No Wrap, Linear, Preferred State, No Null Position, > Volatile, Bitfield) > ReportID................ (2) > Usage 2 (0x2) > Logical Minimum......... (0) > Logical Maximum......... (255) > Report Size............. (8) > Report Count............ (3) > Feature................. (Data, > Variable, Absolute, No Wrap, Linear, Preferred State, No Null Position, > Volatile, Bitfield) > ReportID................ (3) > Usage 3 (0x3) > Logical Minimum......... (0) > Logical Maximum......... (255) > Report Size............. (8) > Report Count............ (-78) > Feature................. (Data, > Variable, Absolute, No Wrap, Linear, Preferred State, No Null Position, > Volatile, Bitfield) > ReportID................ (5) > Usage 6 (0x6) > Logical Minimum......... (-1) > Logical Maximum......... (1) > Report Size............. (8) > Report Count............ (1) > Feature................. (Data, > Variable, Absolute, No Wrap, Linear, Preferred State, No Null Position, > Volatile, Bitfield) > ReportID................ (6) > Usage 7 (0x7) > Logical Minimum......... (0) > Logical Maximum......... (255) > Report Size............. (8) > Report Count............ (5) > Feature................. (Data, > Variable, Absolute, No Wrap, Linear, Preferred State, No Null Position, > Volatile, Bitfield) > ReportID................ (7) > Usage 8 (0x8) > Logical Minimum......... (0) > Logical Maximum......... (255) > Report Size............. (8) > Report Count............ (7) > Feature................. (Data, > Variable, Absolute, No Wrap, Linear, Preferred State, No Null Position, > Volatile, Bitfield) > ReportID................ (8) > Usage 9 (0x9) > Logical Minimum......... (0) > Logical Maximum......... (255) > Report Size............. (8) > Report Count............ (7) > Feature................. (Data, > Variable, Absolute, No Wrap, Linear, Preferred State, No Null Position, > Volatile, Bitfield) > ReportID................ (9) > Usage 10 (0xa) > Logical Minimum......... (0) > Logical Maximum......... (255) > Report Size............. (8) > Report Count............ (2) > Feature................. (Data, > Variable, Absolute, No Wrap, Linear, Preferred State, No Null Position, > Volatile, Bitfield) > ReportID................ (10) > Usage 11 (0xb) > Logical Minimum......... (0) > Logical Maximum......... (255) > Report Size............. (8) > Report Count............ (1) > Feature................. (Data, > Variable, Absolute, No Wrap, Linear, Preferred State, No Null Position, > Volatile, Bitfield) > ReportID................ (11) > Usage 12 (0xc) > Logical Minimum......... (0) > Logical Maximum......... (255) > Report Size............. (8) > Report Count............ (3) > Feature................. (Data, > Variable, Absolute, No Wrap, Linear, Preferred State, No Null Position, > Volatile, Bitfield) > ReportID................ (12) > Usage 13 (0xd) > Logical Minimum......... (0) > Logical Maximum......... (255) > Report Size............. (8) > Report Count............ (61) > Feature................. (Data, > Variable, Absolute, No Wrap, Linear, Preferred State, No Null Position, > Volatile, Bitfield) > ReportID................ (13) > Usage 14 (0xe) > Logical Minimum......... (0) > Logical Maximum......... (255) > Report Size............. (8) > Report Count............ (1) > Feature................. (Data, > Variable, Absolute, No Wrap, Linear, Preferred State, No Null Position, > Volatile, Bitfield) > ReportID................ (14) > Usage 15 (0xf) > Logical Minimum......... (0) > Logical Maximum......... (255) > Report Size............. (8) > Report Count............ (7) > Feature................. (Data, > Variable, Absolute, No Wrap, Linear, Preferred State, No Null Position, > Volatile, Bitfield) > ReportID................ (15) > Usage 16 (0x10) > Logical Minimum......... (0) > Logical Maximum......... (255) > Report Size............. (8) > Report Count............ (7) > Feature................. (Data, > Variable, Absolute, No Wrap, Linear, Preferred State, No Null Position, > Volatile, Bitfield) > ReportID................ (16) > Usage 17 (0x11) > Logical Minimum......... (0) > Logical Maximum......... (255) > Report Size............. (8) > Report Count............ (7) > Feature................. (Data, > Variable, Absolute, No Wrap, Linear, Preferred State, No Null Position, > Volatile, Bitfield) > ReportID................ (17) > Usage 18 (0x12) > Logical Minimum......... (0) > Logical Maximum......... (255) > Report Size............. (8) > Report Count............ (1) > Feature................. (Data, > Variable, Absolute, No Wrap, Linear, Preferred State, No Null Position, > Volatile, Bitfield) > ReportID................ (1) > Usage 3 (0x3) > Logical Minimum......... (0) > Logical Maximum......... (255) > Report Size............. (8) > Report Count............ (23) > Input................... (Data, > Variable, Absolute, No Wrap, Linear, Preferred State, No Null Position, > Bitfield) > ReportID................ (3) > Usage 4 (0x4) > Logical Minimum......... (0) > Logical Maximum......... (255) > Report Size............. (8) > Input................... (Data, > Variable, Absolute, No Wrap, Linear, Preferred State, No Null Position, > Bitfield) > ReportID................ (8) > Usage 8 (0x8) > Logical Minimum......... (0) > Logical Maximum......... (255) > Report Size............. (8) > Report Count............ (23) > Input................... (Data, > Variable, Absolute, No Wrap, Linear, Preferred State, No Null Position, > Bitfield) > End Collection > > > _______________________________________________ > MacDev-3DOSX mailing list > MacDev-3DOSX@acm.uiuc.edu > http://clortho.acm.uiuc.edu/mailman/listinfo/macdev-3dosx From macdev-3dosx@acm.uiuc.edu Wed Jan 29 18:08:49 2003 From: macdev-3dosx@acm.uiuc.edu (James B. Tuley) Date: Wed, 29 Jan 2003 12:08:49 -0600 Subject: [3DOSX dev] p5 In-Reply-To: <20030129161255.GF23581@openprojects> Message-ID: On Wednesday, January 29, 2003, at 10:12 AM, Steven Bytnar wrote: > I wonder... does the device have multiple configuration descriptors? > Or just one? Or is the OS only showing the one that's currently > matched? it also has a descriptor for 3 button mouse, USB overdrive and other similar utilities on OS X, see the the 3 button mouse. thanks for the info, it helps with my frustration, though if it was a joystick hid it would have worked out of the box, just more work for us. -Jay