usb: Communicate with USB devices

[ bsd3, hardware, library, system ] [ Propose Tags ]

This library enables you to communicate with USB devices from userspace. It is implemented as a high-level wrapper around bindings-libusb which is a low-level binding to the C library: libusb-1.*.

The USB transfer functions in this library have a simple synchronous interface (they block) but are implemented using the libusb asynchronous interface. They integrate with the GHC event manager making them efficient (no busy-loops) and interruptible (throwing an exception to the thread executing a transfer immediately cancels the transfer).

If the GHC event manager is not available (because you're either not using GHC or because you're on Windows) the library degrades gracefully to the libusb synchronous implementation.

This documentation assumes knowledge of how to operate USB devices from a software standpoint (descriptors, configurations, interfaces, endpoints, control/bulk/interrupt/isochronous transfers, etc). Full information can be found in the USB 2.0 Specification.

For an example how to use this library see the usb-example package at:

https://github.com/basvandijk/usb-example

or the ls-usb package at:

http://hackage.haskell.org/package/ls-usb

Also see the usb-safe package which wraps this package and provides some strong safety guarantees for working with USB devices:

http://hackage.haskell.org/package/usb-safe

Finally have a look at the usb-iteratee package which provides iteratee enumerators for enumerating bulk, interrupt and isochronous endpoints:

http://hackage.haskell.org/package/usb-iteratee

Besides this API documentation the following sources might be interesting:


[Skip to Readme]

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

  • No Candidates
Versions [RSS] 0.1, 0.1.0.1, 0.2, 0.2.0.1, 0.3, 0.3.0.1, 0.3.1, 0.4, 0.5, 0.5.0.1, 0.6, 0.6.0.1, 0.6.0.2, 0.6.0.3, 0.6.0.4, 0.6.0.5, 0.6.0.6, 0.6.0.7, 0.6.0.8, 0.7, 0.8, 1.0, 1.1, 1.1.0.1, 1.1.0.2, 1.1.0.3, 1.1.0.4, 1.2, 1.2.0.1, 1.3.0.0, 1.3.0.1, 1.3.0.2, 1.3.0.3, 1.3.0.4, 1.3.0.5, 1.3.0.6
Change log NEWS
Dependencies base (>=4 && <4.6), base-unicode-symbols (>=0.1.1 && <0.3), bindings-libusb (>=1.4.4 && <1.5), bytestring (>=0.9 && <0.10), containers (>=0.1 && <0.5), text (>=0.5 && <0.12) [details]
License BSD-3-Clause
Copyright 2009–2012 Bas van Dijk <v.dijk.bas@gmail.com>
Author Bas van Dijk <v.dijk.bas@gmail.com>
Maintainer Bas van Dijk <v.dijk.bas@gmail.com>
Category System, Hardware
Home page http://basvandijk.github.com/usb
Bug tracker https://github.com/basvandijk/usb/issues
Source repo head: git clone git://github.com/basvandijk/usb.git
Uploaded by BasVanDijk at 2012-04-12T21:21:14Z
Distributions
Reverse Dependencies 8 direct, 1 indirect [details]
Downloads 29448 total (70 in the last 30 days)
Rating 2.0 (votes: 1) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs uploaded by user
Build status unknown [no reports yet]

Readme for usb-1.1.0.1

[back to package description]

This library enables you to communicate with USB devices from userspace. It is implemented as a high-level wrapper around bindings-libusb which is a low-level binding to the C library: libusb-1.*.

The USB transfer functions in this library have a simple synchronous interface (they block) but are implemented using the libusb asynchronous interface. They integrate with the GHC event manager making them efficient (no busy-loops) and interruptible (throwing an exception to the thread executing a transfer immediately cancels the transfer).

If the GHC event manager is not available (because you're either not using GHC or because you're on Windows) the library degrades gracefully to the libusb synchronous implementation.

The documentation assumes knowledge of how to operate USB devices from a software standpoint (descriptors, configurations, interfaces, endpoints, control/bulk/interrupt/isochronous transfers, etc). Full information can be found in the USB 2.0 Specification.

For an example how to use this library see either the usb-example or ls-usb package.

Also see the usb-safe package which wraps this package and provides some strong safety guarantees for working with USB devices.

Finally have a look at the usb-iteratee package which provides iteratee enumerators for enumerating bulk, interrupt and isochronous endpoints.

Besides the API documentation the following sources might be interesting: