/
usb.cabal
101 lines (95 loc) · 4.25 KB
/
usb.cabal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
name: usb
version: 1.1
cabal-version: >=1.6
build-type: Custom
license: BSD3
license-file: LICENSE
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>
homepage: https://github.com/basvandijk/usb
bug-reports: https://github.com/basvandijk/usb/issues
category: System, Hardware
synopsis: Communicate with USB devices
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.
.
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:
.
* The libusb 1.0 documentation at:
<http://libusb.sourceforge.net/api-1.0/>
.
* The USB 2.0 specification at:
<http://www.usb.org/developers/docs/>
.
* The @bindings-libusb@ documentation at:
<http://hackage.haskell.org/package/bindings-libusb>
.
* \"USB in a NutShell\" at:
<http://www.beyondlogic.org/usbnutshell/usb1.htm>
extra-source-files: README.markdown, NEWS
source-repository head
Type: git
Location: git://github.com/basvandijk/usb.git
Library
GHC-Options: -Wall
build-depends: base >= 4 && < 4.6
, base-unicode-symbols >= 0.1.1 && < 0.3
, bindings-libusb >= 1.4.4 && < 1.5
, bytestring >= 0.9 && < 0.10
, text >= 0.5 && < 0.12
exposed-modules: System.USB
System.USB.Initialization
System.USB.Enumeration
System.USB.DeviceHandling
System.USB.Descriptors
System.USB.IO
System.USB.IO.StandardDeviceRequests
System.USB.Exceptions
System.USB.Internal
other-modules: System.USB.Base, Utils
if impl(ghc>7) && !os(windows)
cpp-options: -DHAS_EVENT_MANAGER
other-modules: Poll, Event, SystemEventManager, Timeval
build-depends: containers >= 0.1 && < 0.5