{-# INCLUDE <bindings.macros.h> #-}
{-# INCLUDE <libusb.h> #-}
{-# LINE 1 "src/Bindings/Libusb/Descriptors.hsc" #-}

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

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

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

module Bindings.Libusb.Descriptors where
import Foreign
import Foreign.C
import Bindings.Libusb.HandlingAndEnumeration

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

  libusb_device_descriptor'bLength :: Word8
{-# LINE 13 "src/Bindings/Libusb/Descriptors.hsc" #-}
,
  libusb_device_descriptor'bDescriptorType :: Word8
{-# LINE 14 "src/Bindings/Libusb/Descriptors.hsc" #-}
,
  libusb_device_descriptor'bcdUSB :: Word16
{-# LINE 15 "src/Bindings/Libusb/Descriptors.hsc" #-}
,
  libusb_device_descriptor'bDeviceClass :: Word8
{-# LINE 16 "src/Bindings/Libusb/Descriptors.hsc" #-}
,
  libusb_device_descriptor'bDeviceSubClass :: Word8
{-# LINE 17 "src/Bindings/Libusb/Descriptors.hsc" #-}
,
  libusb_device_descriptor'bDeviceProtocol :: Word8
{-# LINE 18 "src/Bindings/Libusb/Descriptors.hsc" #-}
,
  libusb_device_descriptor'bMaxPacketSize0 :: Word8
{-# LINE 19 "src/Bindings/Libusb/Descriptors.hsc" #-}
,
  libusb_device_descriptor'idVendor :: Word16
{-# LINE 20 "src/Bindings/Libusb/Descriptors.hsc" #-}
,
  libusb_device_descriptor'idProduct :: Word16
{-# LINE 21 "src/Bindings/Libusb/Descriptors.hsc" #-}
,
  libusb_device_descriptor'bcdDevice :: Word16
{-# LINE 22 "src/Bindings/Libusb/Descriptors.hsc" #-}
,
  libusb_device_descriptor'iManufacturer :: Word8
{-# LINE 23 "src/Bindings/Libusb/Descriptors.hsc" #-}
,
  libusb_device_descriptor'iProduct :: Word8
{-# LINE 24 "src/Bindings/Libusb/Descriptors.hsc" #-}
,
  libusb_device_descriptor'iSerialNumber :: Word8
{-# LINE 25 "src/Bindings/Libusb/Descriptors.hsc" #-}
,
  libusb_device_descriptor'bNumConfigurations :: Word8
{-# LINE 26 "src/Bindings/Libusb/Descriptors.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'libusb_device_descriptor where
  sizeOf _ = 18
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 1
    v2 <- peekByteOff p 2
    v3 <- peekByteOff p 4
    v4 <- peekByteOff p 5
    v5 <- peekByteOff p 6
    v6 <- peekByteOff p 7
    v7 <- peekByteOff p 8
    v8 <- peekByteOff p 10
    v9 <- peekByteOff p 12
    v10 <- peekByteOff p 14
    v11 <- peekByteOff p 15
    v12 <- peekByteOff p 16
    v13 <- peekByteOff p 17
    return $ C'libusb_device_descriptor v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13
  poke p (C'libusb_device_descriptor v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13) = do
    pokeByteOff p 0 v0
    pokeByteOff p 1 v1
    pokeByteOff p 2 v2
    pokeByteOff p 4 v3
    pokeByteOff p 5 v4
    pokeByteOff p 6 v5
    pokeByteOff p 7 v6
    pokeByteOff p 8 v7
    pokeByteOff p 10 v8
    pokeByteOff p 12 v9
    pokeByteOff p 14 v10
    pokeByteOff p 15 v11
    pokeByteOff p 16 v12
    pokeByteOff p 17 v13
    return ()

{-# LINE 27 "src/Bindings/Libusb/Descriptors.hsc" #-}

data C'libusb_endpoint_descriptor = C'libusb_endpoint_descriptor{
{-# LINE 29 "src/Bindings/Libusb/Descriptors.hsc" #-}

  libusb_endpoint_descriptor'bLength :: Word8
{-# LINE 30 "src/Bindings/Libusb/Descriptors.hsc" #-}
,
  libusb_endpoint_descriptor'bDescriptorType :: Word8
{-# LINE 31 "src/Bindings/Libusb/Descriptors.hsc" #-}
,
  libusb_endpoint_descriptor'bEndpointAddress :: Word8
{-# LINE 32 "src/Bindings/Libusb/Descriptors.hsc" #-}
,
  libusb_endpoint_descriptor'bmAttributes :: Word8
{-# LINE 33 "src/Bindings/Libusb/Descriptors.hsc" #-}
,
  libusb_endpoint_descriptor'wMaxPacketSize :: Word16
{-# LINE 34 "src/Bindings/Libusb/Descriptors.hsc" #-}
,
  libusb_endpoint_descriptor'bInterval :: Word8
{-# LINE 35 "src/Bindings/Libusb/Descriptors.hsc" #-}
,
  libusb_endpoint_descriptor'bRefresh :: Word8
{-# LINE 36 "src/Bindings/Libusb/Descriptors.hsc" #-}
,
  libusb_endpoint_descriptor'bSynchAddress :: Word8
{-# LINE 37 "src/Bindings/Libusb/Descriptors.hsc" #-}
,
  libusb_endpoint_descriptor'extra :: Ptr CUChar
{-# LINE 38 "src/Bindings/Libusb/Descriptors.hsc" #-}
,
  libusb_endpoint_descriptor'extra_length :: CInt
{-# LINE 39 "src/Bindings/Libusb/Descriptors.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'libusb_endpoint_descriptor where
  sizeOf _ = 20
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 1
    v2 <- peekByteOff p 2
    v3 <- peekByteOff p 3
    v4 <- peekByteOff p 4
    v5 <- peekByteOff p 6
    v6 <- peekByteOff p 7
    v7 <- peekByteOff p 8
    v8 <- peekByteOff p 12
    v9 <- peekByteOff p 16
    return $ C'libusb_endpoint_descriptor v0 v1 v2 v3 v4 v5 v6 v7 v8 v9
  poke p (C'libusb_endpoint_descriptor v0 v1 v2 v3 v4 v5 v6 v7 v8 v9) = do
    pokeByteOff p 0 v0
    pokeByteOff p 1 v1
    pokeByteOff p 2 v2
    pokeByteOff p 3 v3
    pokeByteOff p 4 v4
    pokeByteOff p 6 v5
    pokeByteOff p 7 v6
    pokeByteOff p 8 v7
    pokeByteOff p 12 v8
    pokeByteOff p 16 v9
    return ()

{-# LINE 40 "src/Bindings/Libusb/Descriptors.hsc" #-}

data C'libusb_interface_descriptor = C'libusb_interface_descriptor{
{-# LINE 42 "src/Bindings/Libusb/Descriptors.hsc" #-}

  libusb_interface_descriptor'bLength :: Word8
{-# LINE 43 "src/Bindings/Libusb/Descriptors.hsc" #-}
,
  libusb_interface_descriptor'bDescriptorType :: Word8
{-# LINE 44 "src/Bindings/Libusb/Descriptors.hsc" #-}
,
  libusb_interface_descriptor'bInterfaceNumber :: Word8
{-# LINE 45 "src/Bindings/Libusb/Descriptors.hsc" #-}
,
  libusb_interface_descriptor'bAlternateSetting :: Word8
{-# LINE 46 "src/Bindings/Libusb/Descriptors.hsc" #-}
,
  libusb_interface_descriptor'bNumEndpoints :: Word8
{-# LINE 47 "src/Bindings/Libusb/Descriptors.hsc" #-}
,
  libusb_interface_descriptor'bInterfaceClass :: Word8
{-# LINE 48 "src/Bindings/Libusb/Descriptors.hsc" #-}
,
  libusb_interface_descriptor'bInterfaceSubClass :: Word8
{-# LINE 49 "src/Bindings/Libusb/Descriptors.hsc" #-}
,
  libusb_interface_descriptor'bInterfaceProtocol :: Word8
{-# LINE 50 "src/Bindings/Libusb/Descriptors.hsc" #-}
,
  libusb_interface_descriptor'iInterface :: Word8
{-# LINE 51 "src/Bindings/Libusb/Descriptors.hsc" #-}
,
  libusb_interface_descriptor'endpoint :: Ptr C'libusb_endpoint_descriptor
{-# LINE 52 "src/Bindings/Libusb/Descriptors.hsc" #-}
,
  libusb_interface_descriptor'extra :: Ptr CUChar
{-# LINE 53 "src/Bindings/Libusb/Descriptors.hsc" #-}
,
  libusb_interface_descriptor'extra_length :: CInt
{-# LINE 54 "src/Bindings/Libusb/Descriptors.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'libusb_interface_descriptor where
  sizeOf _ = 24
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 1
    v2 <- peekByteOff p 2
    v3 <- peekByteOff p 3
    v4 <- peekByteOff p 4
    v5 <- peekByteOff p 5
    v6 <- peekByteOff p 6
    v7 <- peekByteOff p 7
    v8 <- peekByteOff p 8
    v9 <- peekByteOff p 12
    v10 <- peekByteOff p 16
    v11 <- peekByteOff p 20
    return $ C'libusb_interface_descriptor v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11
  poke p (C'libusb_interface_descriptor v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11) = do
    pokeByteOff p 0 v0
    pokeByteOff p 1 v1
    pokeByteOff p 2 v2
    pokeByteOff p 3 v3
    pokeByteOff p 4 v4
    pokeByteOff p 5 v5
    pokeByteOff p 6 v6
    pokeByteOff p 7 v7
    pokeByteOff p 8 v8
    pokeByteOff p 12 v9
    pokeByteOff p 16 v10
    pokeByteOff p 20 v11
    return ()

{-# LINE 55 "src/Bindings/Libusb/Descriptors.hsc" #-}

data C'libusb_interface = C'libusb_interface{
{-# LINE 57 "src/Bindings/Libusb/Descriptors.hsc" #-}

  libusb_interface'altsetting :: Ptr C'libusb_interface_descriptor
{-# LINE 58 "src/Bindings/Libusb/Descriptors.hsc" #-}
,
  libusb_interface'num_altsetting :: CInt
{-# LINE 59 "src/Bindings/Libusb/Descriptors.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'libusb_interface where
  sizeOf _ = 8
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 4
    return $ C'libusb_interface v0 v1
  poke p (C'libusb_interface v0 v1) = do
    pokeByteOff p 0 v0
    pokeByteOff p 4 v1
    return ()

{-# LINE 60 "src/Bindings/Libusb/Descriptors.hsc" #-}

data C'libusb_config_descriptor = C'libusb_config_descriptor{
{-# LINE 62 "src/Bindings/Libusb/Descriptors.hsc" #-}

  libusb_config_descriptor'bLength :: Word8
{-# LINE 63 "src/Bindings/Libusb/Descriptors.hsc" #-}
,
  libusb_config_descriptor'bDescriptorType :: Word8
{-# LINE 64 "src/Bindings/Libusb/Descriptors.hsc" #-}
,
  libusb_config_descriptor'wTotalLength :: Word16
{-# LINE 65 "src/Bindings/Libusb/Descriptors.hsc" #-}
,
  libusb_config_descriptor'bNumInterfaces :: Word8
{-# LINE 66 "src/Bindings/Libusb/Descriptors.hsc" #-}
,
  libusb_config_descriptor'bConfigurationValue :: Word8
{-# LINE 67 "src/Bindings/Libusb/Descriptors.hsc" #-}
,
  libusb_config_descriptor'iConfiguration :: Word8
{-# LINE 68 "src/Bindings/Libusb/Descriptors.hsc" #-}
,
  libusb_config_descriptor'bmAttributes :: Word8
{-# LINE 69 "src/Bindings/Libusb/Descriptors.hsc" #-}
,
  libusb_config_descriptor'MaxPower :: Word8
{-# LINE 70 "src/Bindings/Libusb/Descriptors.hsc" #-}
,
  libusb_config_descriptor'interface :: Ptr C'libusb_interface
{-# LINE 71 "src/Bindings/Libusb/Descriptors.hsc" #-}
,
  libusb_config_descriptor'extra :: Ptr CUChar
{-# LINE 72 "src/Bindings/Libusb/Descriptors.hsc" #-}
,
  libusb_config_descriptor'extra_length :: CInt
{-# LINE 73 "src/Bindings/Libusb/Descriptors.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'libusb_config_descriptor where
  sizeOf _ = 24
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 1
    v2 <- peekByteOff p 2
    v3 <- peekByteOff p 4
    v4 <- peekByteOff p 5
    v5 <- peekByteOff p 6
    v6 <- peekByteOff p 7
    v7 <- peekByteOff p 8
    v8 <- peekByteOff p 12
    v9 <- peekByteOff p 16
    v10 <- peekByteOff p 20
    return $ C'libusb_config_descriptor v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10
  poke p (C'libusb_config_descriptor v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10) = do
    pokeByteOff p 0 v0
    pokeByteOff p 1 v1
    pokeByteOff p 2 v2
    pokeByteOff p 4 v3
    pokeByteOff p 5 v4
    pokeByteOff p 6 v5
    pokeByteOff p 7 v6
    pokeByteOff p 8 v7
    pokeByteOff p 12 v8
    pokeByteOff p 16 v9
    pokeByteOff p 20 v10
    return ()

{-# LINE 74 "src/Bindings/Libusb/Descriptors.hsc" #-}

type C'libusb_class_code = Word32

{-# LINE 76 "src/Bindings/Libusb/Descriptors.hsc" #-}

c'LIBUSB_CLASS_PER_INTERFACE = 0
c'LIBUSB_CLASS_PER_INTERFACE :: (Num a) => a

{-# LINE 78 "src/Bindings/Libusb/Descriptors.hsc" #-}
c'LIBUSB_CLASS_AUDIO = 1
c'LIBUSB_CLASS_AUDIO :: (Num a) => a

{-# LINE 79 "src/Bindings/Libusb/Descriptors.hsc" #-}
c'LIBUSB_CLASS_COMM = 2
c'LIBUSB_CLASS_COMM :: (Num a) => a

{-# LINE 80 "src/Bindings/Libusb/Descriptors.hsc" #-}
c'LIBUSB_CLASS_HID = 3
c'LIBUSB_CLASS_HID :: (Num a) => a

{-# LINE 81 "src/Bindings/Libusb/Descriptors.hsc" #-}
c'LIBUSB_CLASS_PRINTER = 7
c'LIBUSB_CLASS_PRINTER :: (Num a) => a

{-# LINE 82 "src/Bindings/Libusb/Descriptors.hsc" #-}
c'LIBUSB_CLASS_PTP = 6
c'LIBUSB_CLASS_PTP :: (Num a) => a

{-# LINE 83 "src/Bindings/Libusb/Descriptors.hsc" #-}
c'LIBUSB_CLASS_MASS_STORAGE = 8
c'LIBUSB_CLASS_MASS_STORAGE :: (Num a) => a

{-# LINE 84 "src/Bindings/Libusb/Descriptors.hsc" #-}
c'LIBUSB_CLASS_HUB = 9
c'LIBUSB_CLASS_HUB :: (Num a) => a

{-# LINE 85 "src/Bindings/Libusb/Descriptors.hsc" #-}
c'LIBUSB_CLASS_DATA = 10
c'LIBUSB_CLASS_DATA :: (Num a) => a

{-# LINE 86 "src/Bindings/Libusb/Descriptors.hsc" #-}
c'LIBUSB_CLASS_VENDOR_SPEC = 255
c'LIBUSB_CLASS_VENDOR_SPEC :: (Num a) => a

{-# LINE 87 "src/Bindings/Libusb/Descriptors.hsc" #-}

type C'libusb_descriptor_type = Word32

{-# LINE 89 "src/Bindings/Libusb/Descriptors.hsc" #-}

c'LIBUSB_DT_DEVICE = 1
c'LIBUSB_DT_DEVICE :: (Num a) => a

{-# LINE 91 "src/Bindings/Libusb/Descriptors.hsc" #-}
c'LIBUSB_DT_CONFIG = 2
c'LIBUSB_DT_CONFIG :: (Num a) => a

{-# LINE 92 "src/Bindings/Libusb/Descriptors.hsc" #-}
c'LIBUSB_DT_STRING = 3
c'LIBUSB_DT_STRING :: (Num a) => a

{-# LINE 93 "src/Bindings/Libusb/Descriptors.hsc" #-}
c'LIBUSB_DT_INTERFACE = 4
c'LIBUSB_DT_INTERFACE :: (Num a) => a

{-# LINE 94 "src/Bindings/Libusb/Descriptors.hsc" #-}
c'LIBUSB_DT_ENDPOINT = 5
c'LIBUSB_DT_ENDPOINT :: (Num a) => a

{-# LINE 95 "src/Bindings/Libusb/Descriptors.hsc" #-}
c'LIBUSB_DT_HID = 33
c'LIBUSB_DT_HID :: (Num a) => a

{-# LINE 96 "src/Bindings/Libusb/Descriptors.hsc" #-}
c'LIBUSB_DT_REPORT = 34
c'LIBUSB_DT_REPORT :: (Num a) => a

{-# LINE 97 "src/Bindings/Libusb/Descriptors.hsc" #-}
c'LIBUSB_DT_PHYSICAL = 35
c'LIBUSB_DT_PHYSICAL :: (Num a) => a

{-# LINE 98 "src/Bindings/Libusb/Descriptors.hsc" #-}
c'LIBUSB_DT_HUB = 41
c'LIBUSB_DT_HUB :: (Num a) => a

{-# LINE 99 "src/Bindings/Libusb/Descriptors.hsc" #-}

type C'libusb_endpoint_direction = Word32

{-# LINE 101 "src/Bindings/Libusb/Descriptors.hsc" #-}

c'LIBUSB_ENDPOINT_IN = 128
c'LIBUSB_ENDPOINT_IN :: (Num a) => a

{-# LINE 103 "src/Bindings/Libusb/Descriptors.hsc" #-}
c'LIBUSB_ENDPOINT_OUT = 0
c'LIBUSB_ENDPOINT_OUT :: (Num a) => a

{-# LINE 104 "src/Bindings/Libusb/Descriptors.hsc" #-}

type C'libusb_transfer_type = Word32

{-# LINE 106 "src/Bindings/Libusb/Descriptors.hsc" #-}

c'LIBUSB_TRANSFER_TYPE_CONTROL = 0
c'LIBUSB_TRANSFER_TYPE_CONTROL :: (Num a) => a

{-# LINE 108 "src/Bindings/Libusb/Descriptors.hsc" #-}
c'LIBUSB_TRANSFER_TYPE_ISOCHRONOUS = 1
c'LIBUSB_TRANSFER_TYPE_ISOCHRONOUS :: (Num a) => a

{-# LINE 109 "src/Bindings/Libusb/Descriptors.hsc" #-}
c'LIBUSB_TRANSFER_TYPE_BULK = 2
c'LIBUSB_TRANSFER_TYPE_BULK :: (Num a) => a

{-# LINE 110 "src/Bindings/Libusb/Descriptors.hsc" #-}
c'LIBUSB_TRANSFER_TYPE_INTERRUPT = 3
c'LIBUSB_TRANSFER_TYPE_INTERRUPT :: (Num a) => a

{-# LINE 111 "src/Bindings/Libusb/Descriptors.hsc" #-}

type C'libusb_iso_sync_type = Word32

{-# LINE 113 "src/Bindings/Libusb/Descriptors.hsc" #-}

c'LIBUSB_ISO_SYNC_TYPE_NONE = 0
c'LIBUSB_ISO_SYNC_TYPE_NONE :: (Num a) => a

{-# LINE 115 "src/Bindings/Libusb/Descriptors.hsc" #-}
c'LIBUSB_ISO_SYNC_TYPE_ASYNC = 1
c'LIBUSB_ISO_SYNC_TYPE_ASYNC :: (Num a) => a

{-# LINE 116 "src/Bindings/Libusb/Descriptors.hsc" #-}
c'LIBUSB_ISO_SYNC_TYPE_ADAPTIVE = 2
c'LIBUSB_ISO_SYNC_TYPE_ADAPTIVE :: (Num a) => a

{-# LINE 117 "src/Bindings/Libusb/Descriptors.hsc" #-}
c'LIBUSB_ISO_SYNC_TYPE_SYNC = 3
c'LIBUSB_ISO_SYNC_TYPE_SYNC :: (Num a) => a

{-# LINE 118 "src/Bindings/Libusb/Descriptors.hsc" #-}

type C'libusb_iso_usage_type = Word32

{-# LINE 120 "src/Bindings/Libusb/Descriptors.hsc" #-}

c'LIBUSB_ISO_USAGE_TYPE_DATA = 0
c'LIBUSB_ISO_USAGE_TYPE_DATA :: (Num a) => a

{-# LINE 122 "src/Bindings/Libusb/Descriptors.hsc" #-}
c'LIBUSB_ISO_USAGE_TYPE_FEEDBACK = 1
c'LIBUSB_ISO_USAGE_TYPE_FEEDBACK :: (Num a) => a

{-# LINE 123 "src/Bindings/Libusb/Descriptors.hsc" #-}
c'LIBUSB_ISO_USAGE_TYPE_IMPLICIT = 2
c'LIBUSB_ISO_USAGE_TYPE_IMPLICIT :: (Num a) => a

{-# LINE 124 "src/Bindings/Libusb/Descriptors.hsc" #-}

foreign import ccall "libusb_get_device_descriptor" c'libusb_get_device_descriptor
  :: Ptr C'libusb_device -> Ptr C'libusb_device_descriptor -> IO CInt
foreign import ccall "&libusb_get_device_descriptor" p'libusb_get_device_descriptor
  :: FunPtr (Ptr C'libusb_device -> Ptr C'libusb_device_descriptor -> IO CInt)

{-# LINE 127 "src/Bindings/Libusb/Descriptors.hsc" #-}

foreign import ccall "libusb_get_active_config_descriptor" c'libusb_get_active_config_descriptor
  :: Ptr C'libusb_device -> Ptr (Ptr C'libusb_config_descriptor) -> IO CInt
foreign import ccall "&libusb_get_active_config_descriptor" p'libusb_get_active_config_descriptor
  :: FunPtr (Ptr C'libusb_device -> Ptr (Ptr C'libusb_config_descriptor) -> IO CInt)

{-# LINE 130 "src/Bindings/Libusb/Descriptors.hsc" #-}

foreign import ccall "libusb_get_config_descriptor" c'libusb_get_config_descriptor
  :: Ptr C'libusb_device -> Word8 -> Ptr (Ptr C'libusb_config_descriptor) -> IO CInt
foreign import ccall "&libusb_get_config_descriptor" p'libusb_get_config_descriptor
  :: FunPtr (Ptr C'libusb_device -> Word8 -> Ptr (Ptr C'libusb_config_descriptor) -> IO CInt)

{-# LINE 133 "src/Bindings/Libusb/Descriptors.hsc" #-}

foreign import ccall "libusb_get_config_descriptor_by_value" c'libusb_get_config_descriptor_by_value
  :: Ptr C'libusb_device -> Word8 -> Ptr (Ptr C'libusb_config_descriptor) -> IO CInt
foreign import ccall "&libusb_get_config_descriptor_by_value" p'libusb_get_config_descriptor_by_value
  :: FunPtr (Ptr C'libusb_device -> Word8 -> Ptr (Ptr C'libusb_config_descriptor) -> IO CInt)

{-# LINE 137 "src/Bindings/Libusb/Descriptors.hsc" #-}

foreign import ccall "libusb_free_config_descriptor" c'libusb_free_config_descriptor
  :: Ptr C'libusb_config_descriptor -> IO ()
foreign import ccall "&libusb_free_config_descriptor" p'libusb_free_config_descriptor
  :: FunPtr (Ptr C'libusb_config_descriptor -> IO ())

{-# LINE 140 "src/Bindings/Libusb/Descriptors.hsc" #-}

foreign import ccall "libusb_get_string_descriptor_ascii" c'libusb_get_string_descriptor_ascii
  :: Ptr C'libusb_device_handle -> Word8 -> Ptr CUChar -> CInt -> IO CInt
foreign import ccall "&libusb_get_string_descriptor_ascii" p'libusb_get_string_descriptor_ascii
  :: FunPtr (Ptr C'libusb_device_handle -> Word8 -> Ptr CUChar -> CInt -> IO CInt)

{-# LINE 143 "src/Bindings/Libusb/Descriptors.hsc" #-}

foreign import ccall "inline_libusb_get_descriptor" c'libusb_get_descriptor
  :: Ptr C'libusb_device_handle -> Word8 -> Word8 -> Ptr CUChar -> CInt -> IO CInt

{-# LINE 147 "src/Bindings/Libusb/Descriptors.hsc" #-}

foreign import ccall "inline_libusb_get_string_descriptor" c'libusb_get_string_descriptor
  :: Ptr C'libusb_device_handle -> Word8 -> Word16 -> Ptr CUChar -> CInt -> IO CInt

{-# LINE 151 "src/Bindings/Libusb/Descriptors.hsc" #-}