{-# LINE 1 "src/Bindings/Libusb/HandlingAndEnumeration.hsc" #-}

{-# LINE 2 "src/Bindings/Libusb/HandlingAndEnumeration.hsc" #-}

{-# LINE 3 "src/Bindings/Libusb/HandlingAndEnumeration.hsc" #-}

-- | <http://libusb.sourceforge.net/api-1.0/group__dev.html>

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

{-# LINE 8 "src/Bindings/Libusb/HandlingAndEnumeration.hsc" #-}
import Bindings.Libusb.InitializationDeinitialization

data C'libusb_device = C'libusb_device

{-# LINE 11 "src/Bindings/Libusb/HandlingAndEnumeration.hsc" #-}
data C'libusb_device_handle = C'libusb_device_handle

{-# LINE 12 "src/Bindings/Libusb/HandlingAndEnumeration.hsc" #-}

type C'ssize_t = CInt

{-# LINE 14 "src/Bindings/Libusb/HandlingAndEnumeration.hsc" #-}

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)

{-# LINE 17 "src/Bindings/Libusb/HandlingAndEnumeration.hsc" #-}
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 ())

{-# LINE 19 "src/Bindings/Libusb/HandlingAndEnumeration.hsc" #-}
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)

{-# LINE 20 "src/Bindings/Libusb/HandlingAndEnumeration.hsc" #-}
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)

{-# LINE 21 "src/Bindings/Libusb/HandlingAndEnumeration.hsc" #-}
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)

{-# LINE 23 "src/Bindings/Libusb/HandlingAndEnumeration.hsc" #-}
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))

{-# LINE 25 "src/Bindings/Libusb/HandlingAndEnumeration.hsc" #-}
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 ())

{-# LINE 26 "src/Bindings/Libusb/HandlingAndEnumeration.hsc" #-}
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)

{-# LINE 28 "src/Bindings/Libusb/HandlingAndEnumeration.hsc" #-}
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))

{-# LINE 31 "src/Bindings/Libusb/HandlingAndEnumeration.hsc" #-}
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 ())

{-# LINE 32 "src/Bindings/Libusb/HandlingAndEnumeration.hsc" #-}
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))

{-# LINE 34 "src/Bindings/Libusb/HandlingAndEnumeration.hsc" #-}
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)

{-# LINE 36 "src/Bindings/Libusb/HandlingAndEnumeration.hsc" #-}
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)

{-# LINE 38 "src/Bindings/Libusb/HandlingAndEnumeration.hsc" #-}
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)

{-# LINE 40 "src/Bindings/Libusb/HandlingAndEnumeration.hsc" #-}
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)

{-# LINE 42 "src/Bindings/Libusb/HandlingAndEnumeration.hsc" #-}
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)

{-# LINE 44 "src/Bindings/Libusb/HandlingAndEnumeration.hsc" #-}
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)

{-# LINE 46 "src/Bindings/Libusb/HandlingAndEnumeration.hsc" #-}
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)

{-# LINE 47 "src/Bindings/Libusb/HandlingAndEnumeration.hsc" #-}
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)

{-# LINE 49 "src/Bindings/Libusb/HandlingAndEnumeration.hsc" #-}
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)

{-# LINE 51 "src/Bindings/Libusb/HandlingAndEnumeration.hsc" #-}
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)

{-# LINE 53 "src/Bindings/Libusb/HandlingAndEnumeration.hsc" #-}