{-# INCLUDE <bindings.macros.h> #-}
{-# INCLUDE <libusb.h> #-}
{-# 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 Prelude (IO,Num,return,(.),($),Eq,Show,take)
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.Posix.Sys.Types
import Bindings.Libusb.InitializationDeinitialization

data C'libusb_device = C'libusb_device

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

{-# LINE 13 "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 16 "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 18 "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 19 "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 20 "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 22 "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 24 "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 25 "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 27 "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 30 "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 31 "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 33 "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 35 "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 37 "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 39 "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 41 "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 43 "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 45 "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 46 "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 48 "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 50 "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 52 "src/Bindings/Libusb/HandlingAndEnumeration.hsc" #-}