module Bindings.Libusb.Descriptors 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
import Bindings.Libusb.HandlingAndEnumeration
data C'libusb_device_descriptor = C'libusb_device_descriptor{
c'libusb_device_descriptor'bLength :: Word8,
c'libusb_device_descriptor'bDescriptorType :: Word8,
c'libusb_device_descriptor'bcdUSB :: Word16,
c'libusb_device_descriptor'bDeviceClass :: Word8,
c'libusb_device_descriptor'bDeviceSubClass :: Word8,
c'libusb_device_descriptor'bDeviceProtocol :: Word8,
c'libusb_device_descriptor'bMaxPacketSize0 :: Word8,
c'libusb_device_descriptor'idVendor :: Word16,
c'libusb_device_descriptor'idProduct :: Word16,
c'libusb_device_descriptor'bcdDevice :: Word16,
c'libusb_device_descriptor'iManufacturer :: Word8,
c'libusb_device_descriptor'iProduct :: Word8,
c'libusb_device_descriptor'iSerialNumber :: Word8,
c'libusb_device_descriptor'bNumConfigurations :: Word8
} deriving (Eq,Show)
p'libusb_device_descriptor'bLength p = plusPtr p 0
p'libusb_device_descriptor'bLength :: Ptr (C'libusb_device_descriptor) -> Ptr (Word8)
p'libusb_device_descriptor'bDescriptorType p = plusPtr p 1
p'libusb_device_descriptor'bDescriptorType :: Ptr (C'libusb_device_descriptor) -> Ptr (Word8)
p'libusb_device_descriptor'bcdUSB p = plusPtr p 2
p'libusb_device_descriptor'bcdUSB :: Ptr (C'libusb_device_descriptor) -> Ptr (Word16)
p'libusb_device_descriptor'bDeviceClass p = plusPtr p 4
p'libusb_device_descriptor'bDeviceClass :: Ptr (C'libusb_device_descriptor) -> Ptr (Word8)
p'libusb_device_descriptor'bDeviceSubClass p = plusPtr p 5
p'libusb_device_descriptor'bDeviceSubClass :: Ptr (C'libusb_device_descriptor) -> Ptr (Word8)
p'libusb_device_descriptor'bDeviceProtocol p = plusPtr p 6
p'libusb_device_descriptor'bDeviceProtocol :: Ptr (C'libusb_device_descriptor) -> Ptr (Word8)
p'libusb_device_descriptor'bMaxPacketSize0 p = plusPtr p 7
p'libusb_device_descriptor'bMaxPacketSize0 :: Ptr (C'libusb_device_descriptor) -> Ptr (Word8)
p'libusb_device_descriptor'idVendor p = plusPtr p 8
p'libusb_device_descriptor'idVendor :: Ptr (C'libusb_device_descriptor) -> Ptr (Word16)
p'libusb_device_descriptor'idProduct p = plusPtr p 10
p'libusb_device_descriptor'idProduct :: Ptr (C'libusb_device_descriptor) -> Ptr (Word16)
p'libusb_device_descriptor'bcdDevice p = plusPtr p 12
p'libusb_device_descriptor'bcdDevice :: Ptr (C'libusb_device_descriptor) -> Ptr (Word16)
p'libusb_device_descriptor'iManufacturer p = plusPtr p 14
p'libusb_device_descriptor'iManufacturer :: Ptr (C'libusb_device_descriptor) -> Ptr (Word8)
p'libusb_device_descriptor'iProduct p = plusPtr p 15
p'libusb_device_descriptor'iProduct :: Ptr (C'libusb_device_descriptor) -> Ptr (Word8)
p'libusb_device_descriptor'iSerialNumber p = plusPtr p 16
p'libusb_device_descriptor'iSerialNumber :: Ptr (C'libusb_device_descriptor) -> Ptr (Word8)
p'libusb_device_descriptor'bNumConfigurations p = plusPtr p 17
p'libusb_device_descriptor'bNumConfigurations :: Ptr (C'libusb_device_descriptor) -> Ptr (Word8)
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 ()
data C'libusb_endpoint_descriptor = C'libusb_endpoint_descriptor{
c'libusb_endpoint_descriptor'bLength :: Word8,
c'libusb_endpoint_descriptor'bDescriptorType :: Word8,
c'libusb_endpoint_descriptor'bEndpointAddress :: Word8,
c'libusb_endpoint_descriptor'bmAttributes :: Word8,
c'libusb_endpoint_descriptor'wMaxPacketSize :: Word16,
c'libusb_endpoint_descriptor'bInterval :: Word8,
c'libusb_endpoint_descriptor'bRefresh :: Word8,
c'libusb_endpoint_descriptor'bSynchAddress :: Word8,
c'libusb_endpoint_descriptor'extra :: Ptr CUChar,
c'libusb_endpoint_descriptor'extra_length :: CInt
} deriving (Eq,Show)
p'libusb_endpoint_descriptor'bLength p = plusPtr p 0
p'libusb_endpoint_descriptor'bLength :: Ptr (C'libusb_endpoint_descriptor) -> Ptr (Word8)
p'libusb_endpoint_descriptor'bDescriptorType p = plusPtr p 1
p'libusb_endpoint_descriptor'bDescriptorType :: Ptr (C'libusb_endpoint_descriptor) -> Ptr (Word8)
p'libusb_endpoint_descriptor'bEndpointAddress p = plusPtr p 2
p'libusb_endpoint_descriptor'bEndpointAddress :: Ptr (C'libusb_endpoint_descriptor) -> Ptr (Word8)
p'libusb_endpoint_descriptor'bmAttributes p = plusPtr p 3
p'libusb_endpoint_descriptor'bmAttributes :: Ptr (C'libusb_endpoint_descriptor) -> Ptr (Word8)
p'libusb_endpoint_descriptor'wMaxPacketSize p = plusPtr p 4
p'libusb_endpoint_descriptor'wMaxPacketSize :: Ptr (C'libusb_endpoint_descriptor) -> Ptr (Word16)
p'libusb_endpoint_descriptor'bInterval p = plusPtr p 6
p'libusb_endpoint_descriptor'bInterval :: Ptr (C'libusb_endpoint_descriptor) -> Ptr (Word8)
p'libusb_endpoint_descriptor'bRefresh p = plusPtr p 7
p'libusb_endpoint_descriptor'bRefresh :: Ptr (C'libusb_endpoint_descriptor) -> Ptr (Word8)
p'libusb_endpoint_descriptor'bSynchAddress p = plusPtr p 8
p'libusb_endpoint_descriptor'bSynchAddress :: Ptr (C'libusb_endpoint_descriptor) -> Ptr (Word8)
p'libusb_endpoint_descriptor'extra p = plusPtr p 12
p'libusb_endpoint_descriptor'extra :: Ptr (C'libusb_endpoint_descriptor) -> Ptr (Ptr CUChar)
p'libusb_endpoint_descriptor'extra_length p = plusPtr p 16
p'libusb_endpoint_descriptor'extra_length :: Ptr (C'libusb_endpoint_descriptor) -> Ptr (CInt)
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 ()
data C'libusb_interface_descriptor = C'libusb_interface_descriptor{
c'libusb_interface_descriptor'bLength :: Word8,
c'libusb_interface_descriptor'bDescriptorType :: Word8,
c'libusb_interface_descriptor'bInterfaceNumber :: Word8,
c'libusb_interface_descriptor'bAlternateSetting :: Word8,
c'libusb_interface_descriptor'bNumEndpoints :: Word8,
c'libusb_interface_descriptor'bInterfaceClass :: Word8,
c'libusb_interface_descriptor'bInterfaceSubClass :: Word8,
c'libusb_interface_descriptor'bInterfaceProtocol :: Word8,
c'libusb_interface_descriptor'iInterface :: Word8,
c'libusb_interface_descriptor'endpoint :: Ptr C'libusb_endpoint_descriptor,
c'libusb_interface_descriptor'extra :: Ptr CUChar,
c'libusb_interface_descriptor'extra_length :: CInt
} deriving (Eq,Show)
p'libusb_interface_descriptor'bLength p = plusPtr p 0
p'libusb_interface_descriptor'bLength :: Ptr (C'libusb_interface_descriptor) -> Ptr (Word8)
p'libusb_interface_descriptor'bDescriptorType p = plusPtr p 1
p'libusb_interface_descriptor'bDescriptorType :: Ptr (C'libusb_interface_descriptor) -> Ptr (Word8)
p'libusb_interface_descriptor'bInterfaceNumber p = plusPtr p 2
p'libusb_interface_descriptor'bInterfaceNumber :: Ptr (C'libusb_interface_descriptor) -> Ptr (Word8)
p'libusb_interface_descriptor'bAlternateSetting p = plusPtr p 3
p'libusb_interface_descriptor'bAlternateSetting :: Ptr (C'libusb_interface_descriptor) -> Ptr (Word8)
p'libusb_interface_descriptor'bNumEndpoints p = plusPtr p 4
p'libusb_interface_descriptor'bNumEndpoints :: Ptr (C'libusb_interface_descriptor) -> Ptr (Word8)
p'libusb_interface_descriptor'bInterfaceClass p = plusPtr p 5
p'libusb_interface_descriptor'bInterfaceClass :: Ptr (C'libusb_interface_descriptor) -> Ptr (Word8)
p'libusb_interface_descriptor'bInterfaceSubClass p = plusPtr p 6
p'libusb_interface_descriptor'bInterfaceSubClass :: Ptr (C'libusb_interface_descriptor) -> Ptr (Word8)
p'libusb_interface_descriptor'bInterfaceProtocol p = plusPtr p 7
p'libusb_interface_descriptor'bInterfaceProtocol :: Ptr (C'libusb_interface_descriptor) -> Ptr (Word8)
p'libusb_interface_descriptor'iInterface p = plusPtr p 8
p'libusb_interface_descriptor'iInterface :: Ptr (C'libusb_interface_descriptor) -> Ptr (Word8)
p'libusb_interface_descriptor'endpoint p = plusPtr p 12
p'libusb_interface_descriptor'endpoint :: Ptr (C'libusb_interface_descriptor) -> Ptr (Ptr C'libusb_endpoint_descriptor)
p'libusb_interface_descriptor'extra p = plusPtr p 16
p'libusb_interface_descriptor'extra :: Ptr (C'libusb_interface_descriptor) -> Ptr (Ptr CUChar)
p'libusb_interface_descriptor'extra_length p = plusPtr p 20
p'libusb_interface_descriptor'extra_length :: Ptr (C'libusb_interface_descriptor) -> Ptr (CInt)
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 ()
data C'libusb_interface = C'libusb_interface{
c'libusb_interface'altsetting :: Ptr C'libusb_interface_descriptor,
c'libusb_interface'num_altsetting :: CInt
} deriving (Eq,Show)
p'libusb_interface'altsetting p = plusPtr p 0
p'libusb_interface'altsetting :: Ptr (C'libusb_interface) -> Ptr (Ptr C'libusb_interface_descriptor)
p'libusb_interface'num_altsetting p = plusPtr p 4
p'libusb_interface'num_altsetting :: Ptr (C'libusb_interface) -> Ptr (CInt)
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 ()
data C'libusb_config_descriptor = C'libusb_config_descriptor{
c'libusb_config_descriptor'bLength :: Word8,
c'libusb_config_descriptor'bDescriptorType :: Word8,
c'libusb_config_descriptor'wTotalLength :: Word16,
c'libusb_config_descriptor'bNumInterfaces :: Word8,
c'libusb_config_descriptor'bConfigurationValue :: Word8,
c'libusb_config_descriptor'iConfiguration :: Word8,
c'libusb_config_descriptor'bmAttributes :: Word8,
c'libusb_config_descriptor'MaxPower :: Word8,
c'libusb_config_descriptor'interface :: Ptr C'libusb_interface,
c'libusb_config_descriptor'extra :: Ptr CUChar,
c'libusb_config_descriptor'extra_length :: CInt
} deriving (Eq,Show)
p'libusb_config_descriptor'bLength p = plusPtr p 0
p'libusb_config_descriptor'bLength :: Ptr (C'libusb_config_descriptor) -> Ptr (Word8)
p'libusb_config_descriptor'bDescriptorType p = plusPtr p 1
p'libusb_config_descriptor'bDescriptorType :: Ptr (C'libusb_config_descriptor) -> Ptr (Word8)
p'libusb_config_descriptor'wTotalLength p = plusPtr p 2
p'libusb_config_descriptor'wTotalLength :: Ptr (C'libusb_config_descriptor) -> Ptr (Word16)
p'libusb_config_descriptor'bNumInterfaces p = plusPtr p 4
p'libusb_config_descriptor'bNumInterfaces :: Ptr (C'libusb_config_descriptor) -> Ptr (Word8)
p'libusb_config_descriptor'bConfigurationValue p = plusPtr p 5
p'libusb_config_descriptor'bConfigurationValue :: Ptr (C'libusb_config_descriptor) -> Ptr (Word8)
p'libusb_config_descriptor'iConfiguration p = plusPtr p 6
p'libusb_config_descriptor'iConfiguration :: Ptr (C'libusb_config_descriptor) -> Ptr (Word8)
p'libusb_config_descriptor'bmAttributes p = plusPtr p 7
p'libusb_config_descriptor'bmAttributes :: Ptr (C'libusb_config_descriptor) -> Ptr (Word8)
p'libusb_config_descriptor'MaxPower p = plusPtr p 8
p'libusb_config_descriptor'MaxPower :: Ptr (C'libusb_config_descriptor) -> Ptr (Word8)
p'libusb_config_descriptor'interface p = plusPtr p 12
p'libusb_config_descriptor'interface :: Ptr (C'libusb_config_descriptor) -> Ptr (Ptr C'libusb_interface)
p'libusb_config_descriptor'extra p = plusPtr p 16
p'libusb_config_descriptor'extra :: Ptr (C'libusb_config_descriptor) -> Ptr (Ptr CUChar)
p'libusb_config_descriptor'extra_length p = plusPtr p 20
p'libusb_config_descriptor'extra_length :: Ptr (C'libusb_config_descriptor) -> Ptr (CInt)
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 ()
type C'libusb_class_code = CUInt
c'LIBUSB_CLASS_PER_INTERFACE = 0
c'LIBUSB_CLASS_PER_INTERFACE :: (Num a) => a
c'LIBUSB_CLASS_AUDIO = 1
c'LIBUSB_CLASS_AUDIO :: (Num a) => a
c'LIBUSB_CLASS_COMM = 2
c'LIBUSB_CLASS_COMM :: (Num a) => a
c'LIBUSB_CLASS_HID = 3
c'LIBUSB_CLASS_HID :: (Num a) => a
c'LIBUSB_CLASS_PRINTER = 7
c'LIBUSB_CLASS_PRINTER :: (Num a) => a
c'LIBUSB_CLASS_PTP = 6
c'LIBUSB_CLASS_PTP :: (Num a) => a
c'LIBUSB_CLASS_MASS_STORAGE = 8
c'LIBUSB_CLASS_MASS_STORAGE :: (Num a) => a
c'LIBUSB_CLASS_HUB = 9
c'LIBUSB_CLASS_HUB :: (Num a) => a
c'LIBUSB_CLASS_DATA = 10
c'LIBUSB_CLASS_DATA :: (Num a) => a
c'LIBUSB_CLASS_VENDOR_SPEC = 255
c'LIBUSB_CLASS_VENDOR_SPEC :: (Num a) => a
type C'libusb_descriptor_type = CUInt
c'LIBUSB_DT_DEVICE = 1
c'LIBUSB_DT_DEVICE :: (Num a) => a
c'LIBUSB_DT_CONFIG = 2
c'LIBUSB_DT_CONFIG :: (Num a) => a
c'LIBUSB_DT_STRING = 3
c'LIBUSB_DT_STRING :: (Num a) => a
c'LIBUSB_DT_INTERFACE = 4
c'LIBUSB_DT_INTERFACE :: (Num a) => a
c'LIBUSB_DT_ENDPOINT = 5
c'LIBUSB_DT_ENDPOINT :: (Num a) => a
c'LIBUSB_DT_HID = 33
c'LIBUSB_DT_HID :: (Num a) => a
c'LIBUSB_DT_REPORT = 34
c'LIBUSB_DT_REPORT :: (Num a) => a
c'LIBUSB_DT_PHYSICAL = 35
c'LIBUSB_DT_PHYSICAL :: (Num a) => a
c'LIBUSB_DT_HUB = 41
c'LIBUSB_DT_HUB :: (Num a) => a
type C'libusb_endpoint_direction = CUInt
c'LIBUSB_ENDPOINT_IN = 128
c'LIBUSB_ENDPOINT_IN :: (Num a) => a
c'LIBUSB_ENDPOINT_OUT = 0
c'LIBUSB_ENDPOINT_OUT :: (Num a) => a
type C'libusb_transfer_type = CUInt
c'LIBUSB_TRANSFER_TYPE_CONTROL = 0
c'LIBUSB_TRANSFER_TYPE_CONTROL :: (Num a) => a
c'LIBUSB_TRANSFER_TYPE_ISOCHRONOUS = 1
c'LIBUSB_TRANSFER_TYPE_ISOCHRONOUS :: (Num a) => a
c'LIBUSB_TRANSFER_TYPE_BULK = 2
c'LIBUSB_TRANSFER_TYPE_BULK :: (Num a) => a
c'LIBUSB_TRANSFER_TYPE_INTERRUPT = 3
c'LIBUSB_TRANSFER_TYPE_INTERRUPT :: (Num a) => a
type C'libusb_iso_sync_type = CUInt
c'LIBUSB_ISO_SYNC_TYPE_NONE = 0
c'LIBUSB_ISO_SYNC_TYPE_NONE :: (Num a) => a
c'LIBUSB_ISO_SYNC_TYPE_ASYNC = 1
c'LIBUSB_ISO_SYNC_TYPE_ASYNC :: (Num a) => a
c'LIBUSB_ISO_SYNC_TYPE_ADAPTIVE = 2
c'LIBUSB_ISO_SYNC_TYPE_ADAPTIVE :: (Num a) => a
c'LIBUSB_ISO_SYNC_TYPE_SYNC = 3
c'LIBUSB_ISO_SYNC_TYPE_SYNC :: (Num a) => a
type C'libusb_iso_usage_type = CUInt
c'LIBUSB_ISO_USAGE_TYPE_DATA = 0
c'LIBUSB_ISO_USAGE_TYPE_DATA :: (Num a) => a
c'LIBUSB_ISO_USAGE_TYPE_FEEDBACK = 1
c'LIBUSB_ISO_USAGE_TYPE_FEEDBACK :: (Num a) => a
c'LIBUSB_ISO_USAGE_TYPE_IMPLICIT = 2
c'LIBUSB_ISO_USAGE_TYPE_IMPLICIT :: (Num a) => a
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)
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)
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)
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)
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 ())
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)
foreign import ccall "inline_libusb_get_descriptor" c'libusb_get_descriptor
:: Ptr C'libusb_device_handle -> Word8 -> Word8 -> Ptr CUChar -> CInt -> IO CInt
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