| Maintainer | Bas van Dijk <v.dijk.bas@gmail.com> | 
|---|
System.USB.IO
Description
This module provides functions for performing control, bulk and interrupt transfers.
When your system supports the GHC EventManager this module additionally
 exports functions for performing isochronous transfers. These are currently
 not available on Windows.
WARNING: You need to enable the threaded runtime (-threaded) when using
 the isochronous functions. They throw a runtime error otherwise!
- type ReadAction = Size -> Timeout -> IO (ByteString, Status)
 - type ReadExactAction = Size -> Timeout -> IO ByteString
 - type WriteAction = ByteString -> Timeout -> IO (Size, Status)
 - type WriteExactAction = ByteString -> Timeout -> IO ()
 - type Size = Int
 - type Timeout = Int
 - noTimeout :: Timeout
 - data Status
 - type ControlAction α = RequestType -> Recipient -> Request -> Value -> Index -> α
 - data RequestType
 - data  Recipient 
- = ToDevice
 - | ToInterface
 - | ToEndpoint
 - | ToOther
 
 - type Request = Word8
 - type Value = Word16
 - type Index = Word16
 - control :: DeviceHandle -> ControlAction (Timeout -> IO ())
 - readControl :: DeviceHandle -> ControlAction ReadAction
 - readControlExact :: DeviceHandle -> ControlAction ReadExactAction
 - writeControl :: DeviceHandle -> ControlAction WriteAction
 - writeControlExact :: DeviceHandle -> ControlAction WriteExactAction
 - readBulk :: DeviceHandle -> EndpointAddress -> ReadAction
 - writeBulk :: DeviceHandle -> EndpointAddress -> WriteAction
 - readInterrupt :: DeviceHandle -> EndpointAddress -> ReadAction
 - writeInterrupt :: DeviceHandle -> EndpointAddress -> WriteAction
 - readIsochronous :: DeviceHandle -> EndpointAddress -> [Size] -> Timeout -> IO [ByteString]
 - writeIsochronous :: DeviceHandle -> EndpointAddress -> [ByteString] -> Timeout -> IO [Size]
 
Documentation
type ReadAction = Size -> Timeout -> IO (ByteString, Status)Source
Handy type synonym for read transfers.
A ReadAction is a function which takes a Size which defines how many bytes
to read and a Timeout. The function returns an IO action which, when
executed, performs the actual read and returns the ByteString that was read
paired with a Status flag which indicates whether the transfer
Completed or TimedOut.
type ReadExactAction = Size -> Timeout -> IO ByteStringSource
Handy type synonym for read transfers that must exactly read the specified
 number of bytes. An incompleteReadException is thrown otherwise.
type WriteAction = ByteString -> Timeout -> IO (Size, Status)Source
Handy type synonym for write transfers.
A WriteAction is a function which takes a ByteString to write and a
Timeout. The function returns an IO action which, when exectued, returns the
number of bytes that were actually written paired with a Status flag which
indicates whether the transfer Completed or TimedOut.
type WriteExactAction = ByteString -> Timeout -> IO ()Source
Handy type synonym for write transfers that must exactly write all the
 given bytes. An incompleteWriteException is thrown otherwise.
A timeout in milliseconds. A timeout defines how long a transfer should wait
 before giving up due to no response being received.
 Use noTimeout for no timeout.
Status of a terminated transfer.
Control transfers
type ControlAction α = RequestType -> Recipient -> Request -> Value -> Index -> αSource
Handy type synonym that names the parameters of a control transfer.
data RequestType Source
Constructors
| ToDevice | |
| ToInterface | |
| ToEndpoint | |
| ToOther | 
control :: DeviceHandle -> ControlAction (Timeout -> IO ())Source
Perform a USB control request that does not transfer data.
Exceptions:
-  
TimeoutExceptionif the transfer timed out. -  
PipeExceptionif the control request was not supported by the device -  
NoDeviceExceptionif the device has been disconnected. -   Another 
USBException. 
readControl :: DeviceHandle -> ControlAction ReadActionSource
Perform a USB control read.
Exceptions:
-  
PipeExceptionif the control request was not supported by the device -  
NoDeviceExceptionif the device has been disconnected. -   Another 
USBException. 
readControlExact :: DeviceHandle -> ControlAction ReadExactActionSource
A convenience function similar to readControl which checks if the
 specified number of bytes to read were actually read.
 Throws an incompleteReadException if this is not the case.
writeControl :: DeviceHandle -> ControlAction WriteActionSource
Perform a USB control write.
Exceptions:
-  
PipeExceptionif the control request was not supported by the device -  
NoDeviceExceptionif the device has been disconnected. -   Another 
USBException. 
writeControlExact :: DeviceHandle -> ControlAction WriteExactActionSource
A convenience function similar to writeControl which checks if the given
 bytes were actually fully written.
 Throws an incompleteWriteException if this is not the case.
Bulk transfers
readBulk :: DeviceHandle -> EndpointAddress -> ReadActionSource
Perform a USB bulk read.
Exceptions:
-  
PipeExceptionif the endpoint halted. -  
OverflowExceptionif the device offered more data, see Packets and overflows in thelibusbdocumentation: http://libusb.sourceforge.net/api-1.0/packetoverflow.html. -  
NoDeviceExceptionif the device has been disconnected. -  Another 
USBException. 
writeBulk :: DeviceHandle -> EndpointAddress -> WriteActionSource
Perform a USB bulk write.
Exceptions:
-  
PipeExceptionif the endpoint halted. -  
OverflowExceptionif the device offered more data, see Packets and overflows in thelibusbdocumentation: http://libusb.sourceforge.net/api-1.0/packetoverflow.html. -  
NoDeviceExceptionif the device has been disconnected. -  Another 
USBException. 
Interrupt transfers
readInterrupt :: DeviceHandle -> EndpointAddress -> ReadActionSource
Perform a USB interrupt read.
Exceptions:
-  
PipeExceptionif the endpoint halted. -  
OverflowExceptionif the device offered more data, see Packets and overflows in the libusb documentation: http://libusb.sourceforge.net/api-1.0/packetoverflow.html. -  
NoDeviceExceptionif the device has been disconnected. -  Another 
USBException. 
writeInterrupt :: DeviceHandle -> EndpointAddress -> WriteActionSource
Perform a USB interrupt write.
Exceptions:
-  
PipeExceptionif the endpoint halted. -  
OverflowExceptionif the device offered more data, see Packets and overflows in thelibusbdocumentation: http://libusb.sourceforge.net/api-1.0/packetoverflow.html. -  
NoDeviceExceptionif the device has been disconnected. -  Another 
USBException. 
Isochronous transfers
WARNING: You need to enable the threaded runtime (-threaded) when using
 the isochronous functions. They throw a runtime error otherwise!
Arguments
| :: DeviceHandle | |
| -> EndpointAddress | |
| -> [Size] | Sizes of isochronous packets  | 
| -> Timeout | |
| -> IO [ByteString] | 
Perform a USB isochronous read.
WARNING: You need to enable the threaded runtime (-threaded) for this
function to work correctly. It throws a runtime error otherwise!
Exceptions:
-  
PipeExceptionif the endpoint halted. -  
OverflowExceptionif the device offered more data, see Packets and overflows in thelibusbdocumentation: http://libusb.sourceforge.net/api-1.0/packetoverflow.html. -  
NoDeviceExceptionif the device has been disconnected. -  Another 
USBException. 
writeIsochronous :: DeviceHandle -> EndpointAddress -> [ByteString] -> Timeout -> IO [Size]Source
Perform a USB isochronous write.
WARNING: You need to enable the threaded runtime (-threaded) for this
function to work correctly. It throws a runtime error otherwise!
Exceptions:
-  
PipeExceptionif the endpoint halted. -  
OverflowExceptionif the device offered more data, see Packets and overflows in thelibusbdocumentation: http://libusb.sourceforge.net/api-1.0/packetoverflow.html. -  
NoDeviceExceptionif the device has been disconnected. -  Another 
USBException.