Date: Mon, 26 Feb 2007 14:43:42 -0600 From: Tony Shadwick <tshadwick+freebsd-arch.freebsd.org@oss-solutions.com> To: freebsd-arch@freebsd.org Subject: USB HID Driver help Message-ID: <45E3467E.2070000@oss-solutions.com>
next in thread | raw e-mail | index | archive | help
I'm definitely not a high-end programmer, but I have gone to the trouble of working out the protocol for a USB light gun that is normally used on a Playstation 2 video game console. It has 10 buttons, and can track on-screen location if it has access to the composite sync video signal. http://forum.arcadecontrols.com/index.php?topic=60813.0 I've written just a basic parser for the gun. FreeBSD picks up the gun and gives it a ugen character device that I then take continuous input from. The protocol is 6 bytes long repeated pretty much as fast as the gun can send it. What I would like to do is create a USB HID driver for the gun so that things like MAME can use it, and for the fun of it perhaps even X11 pick it up as a mouse. There are two linux drivers out there already, one for the stock GunCon 2: http://mywebpages.comcast.net/bgoines78/ and one for a variant on the GunCon2 called "LCD Topgun": http://kaillera.com/topgun/ The oddity about this is that all version of the gun, 3rd party, first party, whatever, all present themselves as the same Vendor ID and Product ID, so there's no way (that I'm aware of) to distinguish a GunCo 2 from an LCD Topgun, from a Mad Catz lightgun, etc. Perhaps there are other values that can be queried to figure it out, but I'm not that far in yet. I've looked at the ugen driver, and it doesn't seem right that I copy that driver and just change values. I also don't know what headers need to be included to create basically a 10 button mouse. The Linux code isn't very portable in that regard. The basic logic is sound I suppose, but I've looked at the developer's handbook, and although it hits the very basics, there's nothing that say "this is how you would go about creating a valid HID driver for FreeBSD". It could be that I'm looking at it backwards, and the hardware is supposed to conform to a standard that the software expects, and really what I'm trying to do is a create a "middleware" that translates the gun's native protocol to HID standards, but if that's the case, how is the Linux driver doing it? Anyway, I'd appreciate any help! Tony
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?45E3467E.2070000>
