{-# LANGUAGE CPP, NoImplicitPrelude #-} #if __GLASGOW_HASKELL__ >= 704 {-# LANGUAGE Trustworthy #-} #endif -------------------------------------------------------------------------------- -- | -- Module : System.USB.IO.Transfers -- Copyright : (c) 2009–2014 Bas van Dijk -- License : BSD3 (see the file LICENSE) -- Maintainer : Bas van Dijk -- Stability : Experimental -- -- /WARNING:/ This module is experimental and untested. The API will likely -- change in future releases. -- -- /WARNING:/ This module is only available on systems which support the GHC -- 'EventManager'. -- -- /WARNING:/ You need to enable the threaded runtime (@-threaded@) when using -- this module. The functions throw a runtime error otherwise! -- -- This modules provides alternative I\/O operations than the ones in -- "System.USB.IO". The difference is that this module separates the -- construction from the execution of a USB transfer. This has the -- advantage that a transfer can be constructed once and executed -- multiple times thereby saving repeated allocation costs. -- -------------------------------------------------------------------------------- module System.USB.IO.Transfers ( -- * Control transfers -- ** No data transfer ControlTransfer , newControlTransfer , performControlTransfer -- *** Setting , setControlTransferDeviceHandle , setControlTransferTimeout , setControlSetup -- *** Getting , getControlTransferDeviceHandle , getControlTransferTimeout -- ** Reading , ControlReadTransfer , newControlReadTransfer , performControlReadTransfer -- *** Setting , setControlReadTransferDeviceHandle , setControlReadTransferTimeout , setControlReadSetup -- *** Getting , getControlReadTransferDeviceHandle , getControlReadTransferTimeout -- ** Writing , ControlWriteTransfer , newControlWriteTransfer , performControlWriteTransfer -- *** Setting , setControlWriteTransferDeviceHandle , setControlWriteTransferTimeout , setControlWriteSetup -- *** Getting , getControlWriteTransferDeviceHandle , getControlWriteTransferTimeout -- * Bulk / Interrupt transfers , RepeatableTransferType(..) -- ** Reading , ReadTransfer , newReadTransfer , performReadTransfer -- *** Setting , setReadTransferType , setReadTransferDeviceHandle , setReadTransferEndpointAddress , setReadTransferTimeout , setReadTransferSize -- *** Getting , getReadTransferType , getReadTransferDeviceHandle , getReadTransferEndpointAddress , getReadTransferTimeout , getReadTransferSize -- ** Writing , WriteTransfer , newWriteTransfer , performWriteTransfer -- *** Setting , setWriteTransferType , setWriteTransferDeviceHandle , setWriteTransferEndpointAddress , setWriteTransferTimeout , setWriteTransferInput -- *** Getting , getWriteTransferType , getWriteTransferDeviceHandle , getWriteTransferEndpointAddress , getWriteTransferTimeout , getWriteTransferInput -- * Isochronous transfers -- ** Reading , IsochronousReadTransfer , newIsochronousReadTransfer , performIsochronousReadTransfer -- *** Setting , setIsochronousReadTransferDeviceHandle , setIsochronousReadTransferEndpointAddress , setIsochronousReadTransferSizes -- *** Getting , getIsochronousReadTransferDeviceHandle , getIsochronousReadTransferEndpointAddress , getIsochronousReadTransferSizes -- ** Writing , IsochronousWriteTransfer , newIsochronousWriteTransfer , performIsochronousWriteTransfer -- *** Setting , setIsochronousWriteTransferDeviceHandle , setIsochronousWriteTransferEndpointAddress , setIsochronousWriteTransferPackets -- *** Getting , getIsochronousWriteTransferDeviceHandle , getIsochronousWriteTransferEndpointAddress , getIsochronousWriteTransferPackets ) where #ifdef __HADDOCK__ #if MIN_VERSION_base(4,4,0) import GHC.Event #else import System.Event #endif ( EventManager ) #endif import System.USB.Base