module Bindings.Libusb.Asynchronous where
import Foreign
import Foreign.C
import Bindings.Libusb.HandlingAndEnumeration
data C'libusb_control_setup = C'libusb_control_setup{
libusb_control_setup'bmRequestType :: Word8
,
libusb_control_setup'bRequest :: Word8
,
libusb_control_setup'wValue :: Word16
,
libusb_control_setup'wIndex :: Word16
,
libusb_control_setup'wLength :: Word16
} deriving (Eq,Show)
instance Storable C'libusb_control_setup where
sizeOf _ = 8
alignment = sizeOf
peek p = do
v0 <- peekByteOff p 0
v1 <- peekByteOff p 1
v2 <- peekByteOff p 2
v3 <- peekByteOff p 4
v4 <- peekByteOff p 6
return $ C'libusb_control_setup v0 v1 v2 v3 v4
poke p (C'libusb_control_setup v0 v1 v2 v3 v4) = do
pokeByteOff p 0 v0
pokeByteOff p 1 v1
pokeByteOff p 2 v2
pokeByteOff p 4 v3
pokeByteOff p 6 v4
return ()
data C'libusb_iso_packet_descriptor = C'libusb_iso_packet_descriptor{
libusb_iso_packet_descriptor'length :: CUInt
,
libusb_iso_packet_descriptor'actual_length :: CUInt
,
libusb_iso_packet_descriptor'status :: C'libusb_transfer_status
} deriving (Eq,Show)
instance Storable C'libusb_iso_packet_descriptor where
sizeOf _ = 12
alignment = sizeOf
peek p = do
v0 <- peekByteOff p 0
v1 <- peekByteOff p 4
v2 <- peekByteOff p 8
return $ C'libusb_iso_packet_descriptor v0 v1 v2
poke p (C'libusb_iso_packet_descriptor v0 v1 v2) = do
pokeByteOff p 0 v0
pokeByteOff p 4 v1
pokeByteOff p 8 v2
return ()
data C'libusb_transfer = C'libusb_transfer{
libusb_transfer'dev_handle :: Ptr C'libusb_device_handle
,
libusb_transfer'flags :: Word8
,
libusb_transfer'endpoint :: CUChar
,
libusb_transfer'type :: CUChar
,
libusb_transfer'timeout :: CUInt
,
libusb_transfer'status :: C'libusb_transfer_status
,
libusb_transfer'length :: CInt
,
libusb_transfer'actual_length :: CInt
,
libusb_transfer'callback :: C'libusb_transfer_cb_fn
,
libusb_transfer'user_data :: Ptr ()
,
libusb_transfer'buffer :: Ptr CUChar
,
libusb_transfer'num_iso_packets :: CInt
,
libusb_transfer'iso_packet_desc :: [C'libusb_iso_packet_descriptor]
} deriving (Eq,Show)
instance Storable C'libusb_transfer where
sizeOf _ = 40
alignment = sizeOf
peek p = do
v0 <- peekByteOff p 0
v1 <- peekByteOff p 4
v2 <- peekByteOff p 5
v3 <- peekByteOff p 6
v4 <- peekByteOff p 8
v5 <- peekByteOff p 12
v6 <- peekByteOff p 16
v7 <- peekByteOff p 20
v8 <- peekByteOff p 24
v9 <- peekByteOff p 28
v10 <- peekByteOff p 32
v11 <- peekByteOff p 36
v12 <- return []
return $ C'libusb_transfer v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12
poke p (C'libusb_transfer v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12) = do
pokeByteOff p 0 v0
pokeByteOff p 4 v1
pokeByteOff p 5 v2
pokeByteOff p 6 v3
pokeByteOff p 8 v4
pokeByteOff p 12 v5
pokeByteOff p 16 v6
pokeByteOff p 20 v7
pokeByteOff p 24 v8
pokeByteOff p 28 v9
pokeByteOff p 32 v10
pokeByteOff p 36 v11
pokeArray (plusPtr p 40) v12
return ()
type C'libusb_transfer_cb_fn = FunPtr (Ptr C'libusb_transfer -> IO ())
foreign import ccall "wrapper" mk'libusb_transfer_cb_fn
:: (Ptr C'libusb_transfer -> IO ()) -> IO C'libusb_transfer_cb_fn
type C'libusb_transfer_status = Word32
c'LIBUSB_TRANSFER_COMPLETED = 0
c'LIBUSB_TRANSFER_COMPLETED :: (Num a) => a
c'LIBUSB_TRANSFER_ERROR = 1
c'LIBUSB_TRANSFER_ERROR :: (Num a) => a
c'LIBUSB_TRANSFER_TIMED_OUT = 2
c'LIBUSB_TRANSFER_TIMED_OUT :: (Num a) => a
c'LIBUSB_TRANSFER_CANCELLED = 3
c'LIBUSB_TRANSFER_CANCELLED :: (Num a) => a
c'LIBUSB_TRANSFER_STALL = 4
c'LIBUSB_TRANSFER_STALL :: (Num a) => a
c'LIBUSB_TRANSFER_NO_DEVICE = 5
c'LIBUSB_TRANSFER_NO_DEVICE :: (Num a) => a
c'LIBUSB_TRANSFER_OVERFLOW = 6
c'LIBUSB_TRANSFER_OVERFLOW :: (Num a) => a
type C'libusb_transfer_flags = Word32
c'LIBUSB_TRANSFER_SHORT_NOT_OK = 1
c'LIBUSB_TRANSFER_SHORT_NOT_OK :: (Num a) => a
c'LIBUSB_TRANSFER_FREE_BUFFER = 2
c'LIBUSB_TRANSFER_FREE_BUFFER :: (Num a) => a
c'LIBUSB_TRANSFER_FREE_TRANSFER = 4
c'LIBUSB_TRANSFER_FREE_TRANSFER :: (Num a) => a
foreign import ccall "libusb_alloc_transfer" c'libusb_alloc_transfer
:: CInt -> IO (Ptr C'libusb_transfer)
foreign import ccall "&libusb_alloc_transfer" p'libusb_alloc_transfer
:: FunPtr (CInt -> IO (Ptr C'libusb_transfer))
foreign import ccall "libusb_free_transfer" c'libusb_free_transfer
:: Ptr C'libusb_transfer -> IO ()
foreign import ccall "&libusb_free_transfer" p'libusb_free_transfer
:: FunPtr (Ptr C'libusb_transfer -> IO ())
foreign import ccall "libusb_submit_transfer" c'libusb_submit_transfer
:: Ptr C'libusb_transfer -> IO CInt
foreign import ccall "&libusb_submit_transfer" p'libusb_submit_transfer
:: FunPtr (Ptr C'libusb_transfer -> IO CInt)
foreign import ccall "libusb_cancel_transfer" c'libusb_cancel_transfer
:: Ptr C'libusb_transfer -> IO CInt
foreign import ccall "&libusb_cancel_transfer" p'libusb_cancel_transfer
:: FunPtr (Ptr C'libusb_transfer -> IO CInt)
foreign import ccall "inline_libusb_control_transfer_get_data" c'libusb_control_transfer_get_data
:: Ptr C'libusb_transfer -> IO (Ptr CUChar)
foreign import ccall "inline_libusb_control_transfer_get_setup" c'libusb_control_transfer_get_setup
:: Ptr C'libusb_transfer -> IO (Ptr C'libusb_control_setup)
foreign import ccall "inline_libusb_fill_control_setup" c'libusb_fill_control_setup
:: Ptr CUChar -> Word8 -> Word8 -> Word16 -> Word16 -> Word16 -> IO ()
foreign import ccall "inline_libusb_fill_control_transfer" c'libusb_fill_control_transfer
:: Ptr C'libusb_transfer -> Ptr C'libusb_device_handle -> Ptr CUChar -> C'libusb_transfer_cb_fn -> Ptr () -> CUInt -> IO ()
foreign import ccall "inline_libusb_fill_bulk_transfer" c'libusb_fill_bulk_transfer
:: Ptr C'libusb_transfer -> Ptr C'libusb_device_handle -> CUChar -> Ptr CUChar -> CInt -> C'libusb_transfer_cb_fn -> Ptr () -> CUInt -> IO ()
foreign import ccall "inline_libusb_fill_interrupt_transfer" c'libusb_fill_interrupt_transfer
:: Ptr C'libusb_transfer -> Ptr C'libusb_device_handle -> CUChar -> Ptr CUChar -> CInt -> C'libusb_transfer_cb_fn -> Ptr () -> CUInt -> IO ()
foreign import ccall "inline_libusb_fill_iso_transfer" c'libusb_fill_iso_transfer
:: Ptr C'libusb_transfer -> Ptr C'libusb_device_handle -> CUChar -> Ptr CUChar -> CInt -> CInt -> C'libusb_transfer_cb_fn -> Ptr () -> CUInt -> IO ()
foreign import ccall "inline_libusb_set_iso_packet_lengths" c'libusb_set_iso_packet_lengths
:: Ptr C'libusb_transfer -> CUInt -> IO ()
foreign import ccall "inline_libusb_get_iso_packet_buffer" c'libusb_get_iso_packet_buffer
:: Ptr C'libusb_transfer -> CUInt -> IO (Ptr CUChar)
foreign import ccall "inline_libusb_get_iso_packet_buffer_simple" c'libusb_get_iso_packet_buffer_simple
:: Ptr C'libusb_transfer -> CUInt -> IO (Ptr CUChar)