1*dacffe4aSSascha WildnerAs I dug my own way through the documentation of libusb 2.0 that ships 2*dacffe4aSSascha Wildnerwith FreeBSD 8+ as the OS'es own USB library API, I noticed there are 3*dacffe4aSSascha Wildneronly few code examples around under /usr/src (namely, usbconfig 4*dacffe4aSSascha Wildneritself). 5*dacffe4aSSascha Wildner 6*dacffe4aSSascha WildnerThe libusb20(3) man page is a starting point, but it's a reference 7*dacffe4aSSascha Wildnermanual, nothing less, nothing more. Using just a reference, it's not 8*dacffe4aSSascha Wildnervery easy to start writing your own code based on that. 9*dacffe4aSSascha Wildner 10*dacffe4aSSascha WildnerSo I started writing my own examples, to "get a feeling" about how to 11*dacffe4aSSascha Wildneruse the library. I covered two typical scenarios which are common for 12*dacffe4aSSascha Wildnera number of devices. 13*dacffe4aSSascha Wildner 14*dacffe4aSSascha WildnerThe first one is called "bulk", and uses bulk output (host to device) 15*dacffe4aSSascha Wildnerand input transfers to talk to an USB device. 16*dacffe4aSSascha Wildner 17*dacffe4aSSascha WildnerThe second one is called "control", and can use both control output 18*dacffe4aSSascha Wildnerand input transfers, as well as so-called interrupt transfers. The 19*dacffe4aSSascha Wildnerlatter are used for data that are being reported frequently or 20*dacffe4aSSascha Wildnerrepeatedly, like position updates from a pointing device (mouse). 21*dacffe4aSSascha WildnerDespite of its name, the host has to poll devices for their interrupt 22*dacffe4aSSascha Wildnertransfers on each USB frame (i.e., each 1 ms). 23*dacffe4aSSascha Wildner 24*dacffe4aSSascha WildnerRecommended reading is the USB 3.0 specification (the older 2.0 one 25*dacffe4aSSascha Wildnerwould do as well), to be found under 26*dacffe4aSSascha Wildner 27*dacffe4aSSascha Wildnerhttp://www.usb.org/developers/docs/ 28*dacffe4aSSascha Wildner 29*dacffe4aSSascha Wildneras well as documents for individual USB device classes where 30*dacffe4aSSascha Wildnerappropriate. 31*dacffe4aSSascha Wildner 32*dacffe4aSSascha WildnerFeel free to be liberal in the licensing of these examples: while the 33*dacffe4aSSascha Wildnerbeer-ware license mandates to keep the license notice, this only 34*dacffe4aSSascha Wildnerapplies to modifications of the original examples itself. For 35*dacffe4aSSascha Wildnercopy&pasting (even a larger) piece of an example into your own work, I 36*dacffe4aSSascha Wildnerwon't imply you have to reproduce the beer-ware license text there. 37*dacffe4aSSascha WildnerFeel free to credit my name in your derived work if you want. 38*dacffe4aSSascha Wildner 39*dacffe4aSSascha WildnerDresden, July 2012 40*dacffe4aSSascha WildnerJoerg Wunsch <joerg@FreeBSD.org> 41*dacffe4aSSascha Wildner 42*dacffe4aSSascha Wildner# $FreeBSD: head/share/examples/libusb20/README 238603 2012-07-18 21:30:17Z joerg $ 43