xref: /dragonfly/share/examples/libusb20/README (revision dacffe4a)
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