module Bindings.Libusb.HandlingAndEnumeration where
import Foreign.Ptr (Ptr,FunPtr,plusPtr)
import Foreign.Ptr (wordPtrToPtr,castPtrToFunPtr)
import Foreign.Storable
import Foreign.C.Types
import Foreign.C.String (CString,CStringLen,CWString,CWStringLen)
import Foreign.Marshal.Array (peekArray,pokeArray)
import Data.Int
import Data.Word
import Bindings.Libusb.InitializationDeinitialization
data C'libusb_device = C'libusb_device
data C'libusb_device_handle = C'libusb_device_handle
type C'ssize_t = CInt
foreign import ccall "libusb_get_device_list" c'libusb_get_device_list
:: Ptr C'libusb_context -> Ptr (Ptr (Ptr C'libusb_device)) -> IO C'ssize_t
foreign import ccall "&libusb_get_device_list" p'libusb_get_device_list
:: FunPtr (Ptr C'libusb_context -> Ptr (Ptr (Ptr C'libusb_device)) -> IO C'ssize_t)
foreign import ccall "libusb_free_device_list" c'libusb_free_device_list
:: Ptr (Ptr C'libusb_device) -> CInt -> IO ()
foreign import ccall "&libusb_free_device_list" p'libusb_free_device_list
:: FunPtr (Ptr (Ptr C'libusb_device) -> CInt -> IO ())
foreign import ccall "libusb_get_bus_number" c'libusb_get_bus_number
:: Ptr C'libusb_device -> IO Word8
foreign import ccall "&libusb_get_bus_number" p'libusb_get_bus_number
:: FunPtr (Ptr C'libusb_device -> IO Word8)
foreign import ccall "libusb_get_device_address" c'libusb_get_device_address
:: Ptr C'libusb_device -> IO Word8
foreign import ccall "&libusb_get_device_address" p'libusb_get_device_address
:: FunPtr (Ptr C'libusb_device -> IO Word8)
foreign import ccall "libusb_get_max_packet_size" c'libusb_get_max_packet_size
:: Ptr C'libusb_device -> CUChar -> IO CInt
foreign import ccall "&libusb_get_max_packet_size" p'libusb_get_max_packet_size
:: FunPtr (Ptr C'libusb_device -> CUChar -> IO CInt)
foreign import ccall "libusb_ref_device" c'libusb_ref_device
:: Ptr C'libusb_device -> IO (Ptr C'libusb_device)
foreign import ccall "&libusb_ref_device" p'libusb_ref_device
:: FunPtr (Ptr C'libusb_device -> IO (Ptr C'libusb_device))
foreign import ccall "libusb_unref_device" c'libusb_unref_device
:: Ptr C'libusb_device -> IO ()
foreign import ccall "&libusb_unref_device" p'libusb_unref_device
:: FunPtr (Ptr C'libusb_device -> IO ())
foreign import ccall "libusb_open" c'libusb_open
:: Ptr C'libusb_device -> Ptr (Ptr C'libusb_device_handle) -> IO CInt
foreign import ccall "&libusb_open" p'libusb_open
:: FunPtr (Ptr C'libusb_device -> Ptr (Ptr C'libusb_device_handle) -> IO CInt)
foreign import ccall "libusb_open_device_with_vid_pid" c'libusb_open_device_with_vid_pid
:: Ptr C'libusb_context -> Word16 -> Word16 -> IO (Ptr C'libusb_device_handle)
foreign import ccall "&libusb_open_device_with_vid_pid" p'libusb_open_device_with_vid_pid
:: FunPtr (Ptr C'libusb_context -> Word16 -> Word16 -> IO (Ptr C'libusb_device_handle))
foreign import ccall "libusb_close" c'libusb_close
:: Ptr C'libusb_device_handle -> IO ()
foreign import ccall "&libusb_close" p'libusb_close
:: FunPtr (Ptr C'libusb_device_handle -> IO ())
foreign import ccall "libusb_get_device" c'libusb_get_device
:: Ptr C'libusb_device_handle -> IO (Ptr C'libusb_device)
foreign import ccall "&libusb_get_device" p'libusb_get_device
:: FunPtr (Ptr C'libusb_device_handle -> IO (Ptr C'libusb_device))
foreign import ccall "libusb_get_configuration" c'libusb_get_configuration
:: Ptr C'libusb_device_handle -> Ptr CInt -> IO CInt
foreign import ccall "&libusb_get_configuration" p'libusb_get_configuration
:: FunPtr (Ptr C'libusb_device_handle -> Ptr CInt -> IO CInt)
foreign import ccall "libusb_set_configuration" c'libusb_set_configuration
:: Ptr C'libusb_device_handle -> CInt -> IO CInt
foreign import ccall "&libusb_set_configuration" p'libusb_set_configuration
:: FunPtr (Ptr C'libusb_device_handle -> CInt -> IO CInt)
foreign import ccall "libusb_claim_interface" c'libusb_claim_interface
:: Ptr C'libusb_device_handle -> CInt -> IO CInt
foreign import ccall "&libusb_claim_interface" p'libusb_claim_interface
:: FunPtr (Ptr C'libusb_device_handle -> CInt -> IO CInt)
foreign import ccall "libusb_release_interface" c'libusb_release_interface
:: Ptr C'libusb_device_handle -> CInt -> IO CInt
foreign import ccall "&libusb_release_interface" p'libusb_release_interface
:: FunPtr (Ptr C'libusb_device_handle -> CInt -> IO CInt)
foreign import ccall "libusb_set_interface_alt_setting" c'libusb_set_interface_alt_setting
:: Ptr C'libusb_device_handle -> CInt -> CInt -> IO CInt
foreign import ccall "&libusb_set_interface_alt_setting" p'libusb_set_interface_alt_setting
:: FunPtr (Ptr C'libusb_device_handle -> CInt -> CInt -> IO CInt)
foreign import ccall "libusb_clear_halt" c'libusb_clear_halt
:: Ptr C'libusb_device_handle -> CUChar -> IO CInt
foreign import ccall "&libusb_clear_halt" p'libusb_clear_halt
:: FunPtr (Ptr C'libusb_device_handle -> CUChar -> IO CInt)
foreign import ccall "libusb_reset_device" c'libusb_reset_device
:: Ptr C'libusb_device_handle -> IO CInt
foreign import ccall "&libusb_reset_device" p'libusb_reset_device
:: FunPtr (Ptr C'libusb_device_handle -> IO CInt)
foreign import ccall "libusb_kernel_driver_active" c'libusb_kernel_driver_active
:: Ptr C'libusb_device_handle -> CInt -> IO CInt
foreign import ccall "&libusb_kernel_driver_active" p'libusb_kernel_driver_active
:: FunPtr (Ptr C'libusb_device_handle -> CInt -> IO CInt)
foreign import ccall "libusb_detach_kernel_driver" c'libusb_detach_kernel_driver
:: Ptr C'libusb_device_handle -> CInt -> IO CInt
foreign import ccall "&libusb_detach_kernel_driver" p'libusb_detach_kernel_driver
:: FunPtr (Ptr C'libusb_device_handle -> CInt -> IO CInt)
foreign import ccall "libusb_attach_kernel_driver" c'libusb_attach_kernel_driver
:: Ptr C'libusb_device_handle -> CInt -> IO CInt
foreign import ccall "&libusb_attach_kernel_driver" p'libusb_attach_kernel_driver
:: FunPtr (Ptr C'libusb_device_handle -> CInt -> IO CInt)