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


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

{-# LINE 5 "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.Alloc (alloca)
import Foreign.Marshal.Array (peekArray,pokeArray)
import Data.Int
import Data.Word

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

data C'libusb_device = C'libusb_device

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

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

type C'ssize_t = Int64

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

type C'libusb_speed = CUInt

{-# LINE 18 "src/Bindings/Libusb/HandlingAndEnumeration.hsc" #-}
c'LIBUSB_SPEED_UNKNOWN = 0
c'LIBUSB_SPEED_UNKNOWN :: (Num a) => a

{-# LINE 19 "src/Bindings/Libusb/HandlingAndEnumeration.hsc" #-}
c'LIBUSB_SPEED_LOW = 1
c'LIBUSB_SPEED_LOW :: (Num a) => a

{-# LINE 20 "src/Bindings/Libusb/HandlingAndEnumeration.hsc" #-}
c'LIBUSB_SPEED_FULL = 2
c'LIBUSB_SPEED_FULL :: (Num a) => a

{-# LINE 21 "src/Bindings/Libusb/HandlingAndEnumeration.hsc" #-}
c'LIBUSB_SPEED_HIGH = 3
c'LIBUSB_SPEED_HIGH :: (Num a) => a

{-# LINE 22 "src/Bindings/Libusb/HandlingAndEnumeration.hsc" #-}
c'LIBUSB_SPEED_SUPER = 4
c'LIBUSB_SPEED_SUPER :: (Num a) => a

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

type C'libusb_supported_speed = CUInt

{-# LINE 25 "src/Bindings/Libusb/HandlingAndEnumeration.hsc" #-}
c'LIBUSB_LOW_SPEED_OPERATION = 1
c'LIBUSB_LOW_SPEED_OPERATION :: (Num a) => a

{-# LINE 26 "src/Bindings/Libusb/HandlingAndEnumeration.hsc" #-}
c'LIBUSB_FULL_SPEED_OPERATION = 2
c'LIBUSB_FULL_SPEED_OPERATION :: (Num a) => a

{-# LINE 27 "src/Bindings/Libusb/HandlingAndEnumeration.hsc" #-}
c'LIBUSB_HIGH_SPEED_OPERATION = 4
c'LIBUSB_HIGH_SPEED_OPERATION :: (Num a) => a

{-# LINE 28 "src/Bindings/Libusb/HandlingAndEnumeration.hsc" #-}
c'LIBUSB_SUPER_SPEED_OPERATION = 8
c'LIBUSB_SUPER_SPEED_OPERATION :: (Num a) => a

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

type C'libusb_usb_2_0_extension_attributes = CUInt

{-# LINE 31 "src/Bindings/Libusb/HandlingAndEnumeration.hsc" #-}
c'LIBUSB_BM_LPM_SUPPORT = 2
c'LIBUSB_BM_LPM_SUPPORT :: (Num a) => a

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

type C'libusb_ss_usb_device_capability_attributes = CUInt

{-# LINE 34 "src/Bindings/Libusb/HandlingAndEnumeration.hsc" #-}
c'LIBUSB_BM_LTM_SUPPORT = 2
c'LIBUSB_BM_LTM_SUPPORT :: (Num a) => a

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

type C'libusb_bos_type = CUInt

{-# LINE 37 "src/Bindings/Libusb/HandlingAndEnumeration.hsc" #-}
c'LIBUSB_BT_WIRELESS_USB_DEVICE_CAPABILITY = 1
c'LIBUSB_BT_WIRELESS_USB_DEVICE_CAPABILITY :: (Num a) => a

{-# LINE 38 "src/Bindings/Libusb/HandlingAndEnumeration.hsc" #-}
c'LIBUSB_BT_USB_2_0_EXTENSION = 2
c'LIBUSB_BT_USB_2_0_EXTENSION :: (Num a) => a

{-# LINE 39 "src/Bindings/Libusb/HandlingAndEnumeration.hsc" #-}
c'LIBUSB_BT_SS_USB_DEVICE_CAPABILITY = 3
c'LIBUSB_BT_SS_USB_DEVICE_CAPABILITY :: (Num a) => a

{-# LINE 40 "src/Bindings/Libusb/HandlingAndEnumeration.hsc" #-}
c'LIBUSB_BT_CONTAINER_ID = 4
c'LIBUSB_BT_CONTAINER_ID :: (Num a) => a

{-# LINE 41 "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 44 "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 46 "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 47 "src/Bindings/Libusb/HandlingAndEnumeration.hsc" #-}
foreign import ccall "libusb_get_port_number" c'libusb_get_port_number
  :: Ptr C'libusb_device -> IO Word8
foreign import ccall "&libusb_get_port_number" p'libusb_get_port_number
  :: FunPtr (Ptr C'libusb_device -> IO Word8)

{-# LINE 48 "src/Bindings/Libusb/HandlingAndEnumeration.hsc" #-}
foreign import ccall "libusb_get_port_numbers" c'libusb_get_port_numbers
  :: Ptr C'libusb_device -> Ptr Word8 -> CInt -> IO CInt
foreign import ccall "&libusb_get_port_numbers" p'libusb_get_port_numbers
  :: FunPtr (Ptr C'libusb_device -> Ptr Word8 -> CInt -> IO CInt)

{-# LINE 50 "src/Bindings/Libusb/HandlingAndEnumeration.hsc" #-}
foreign import ccall "libusb_get_parent" c'libusb_get_parent
  :: Ptr C'libusb_device -> IO (Ptr C'libusb_device)
foreign import ccall "&libusb_get_parent" p'libusb_get_parent
  :: FunPtr (Ptr C'libusb_device -> IO (Ptr C'libusb_device))

{-# LINE 51 "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 52 "src/Bindings/Libusb/HandlingAndEnumeration.hsc" #-}
foreign import ccall "libusb_get_device_speed" c'libusb_get_device_speed
  :: Ptr C'libusb_device -> IO CInt
foreign import ccall "&libusb_get_device_speed" p'libusb_get_device_speed
  :: FunPtr (Ptr C'libusb_device -> IO CInt)

{-# LINE 53 "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 55 "src/Bindings/Libusb/HandlingAndEnumeration.hsc" #-}
foreign import ccall "libusb_get_max_iso_packet_size" c'libusb_get_max_iso_packet_size
  :: Ptr C'libusb_device -> CUChar -> IO CInt
foreign import ccall "&libusb_get_max_iso_packet_size" p'libusb_get_max_iso_packet_size
  :: FunPtr (Ptr C'libusb_device -> CUChar -> IO CInt)

{-# LINE 56 "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 58 "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 59 "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 61 "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 64 "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 65 "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 67 "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 69 "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 71 "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 73 "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 75 "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 77 "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 79 "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 80 "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 82 "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 84 "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 86 "src/Bindings/Libusb/HandlingAndEnumeration.hsc" #-}
foreign import ccall "libusb_set_auto_detach_kernel_driver" c'libusb_set_auto_detach_kernel_driver
  :: Ptr C'libusb_device_handle -> CInt -> IO CInt
foreign import ccall "&libusb_set_auto_detach_kernel_driver" p'libusb_set_auto_detach_kernel_driver
  :: FunPtr (Ptr C'libusb_device_handle -> CInt -> IO CInt)

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