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
import Bindings.Libusb.InitializationDeinitialization
data C'libusb_device = C'libusb_device
data C'libusb_device_handle = C'libusb_device_handle
type C'ssize_t = Int64
type C'libusb_speed = CUInt
c'LIBUSB_SPEED_UNKNOWN = 0
c'LIBUSB_SPEED_UNKNOWN :: (Num a) => a
c'LIBUSB_SPEED_LOW = 1
c'LIBUSB_SPEED_LOW :: (Num a) => a
c'LIBUSB_SPEED_FULL = 2
c'LIBUSB_SPEED_FULL :: (Num a) => a
c'LIBUSB_SPEED_HIGH = 3
c'LIBUSB_SPEED_HIGH :: (Num a) => a
c'LIBUSB_SPEED_SUPER = 4
c'LIBUSB_SPEED_SUPER :: (Num a) => a
type C'libusb_supported_speed = CUInt
c'LIBUSB_LOW_SPEED_OPERATION = 1
c'LIBUSB_LOW_SPEED_OPERATION :: (Num a) => a
c'LIBUSB_FULL_SPEED_OPERATION = 2
c'LIBUSB_FULL_SPEED_OPERATION :: (Num a) => a
c'LIBUSB_HIGH_SPEED_OPERATION = 4
c'LIBUSB_HIGH_SPEED_OPERATION :: (Num a) => a
c'LIBUSB_SUPER_SPEED_OPERATION = 8
c'LIBUSB_SUPER_SPEED_OPERATION :: (Num a) => a
type C'libusb_usb_2_0_extension_attributes = CUInt
c'LIBUSB_BM_LPM_SUPPORT = 2
c'LIBUSB_BM_LPM_SUPPORT :: (Num a) => a
type C'libusb_ss_usb_device_capability_attributes = CUInt
c'LIBUSB_BM_LTM_SUPPORT = 2
c'LIBUSB_BM_LTM_SUPPORT :: (Num a) => a
type C'libusb_bos_type = CUInt
c'LIBUSB_BT_WIRELESS_USB_DEVICE_CAPABILITY = 1
c'LIBUSB_BT_WIRELESS_USB_DEVICE_CAPABILITY :: (Num a) => a
c'LIBUSB_BT_USB_2_0_EXTENSION = 2
c'LIBUSB_BT_USB_2_0_EXTENSION :: (Num a) => a
c'LIBUSB_BT_SS_USB_DEVICE_CAPABILITY = 3
c'LIBUSB_BT_SS_USB_DEVICE_CAPABILITY :: (Num a) => a
c'LIBUSB_BT_CONTAINER_ID = 4
c'LIBUSB_BT_CONTAINER_ID :: (Num a) => a
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)
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 ())
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)
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)
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)
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))
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)
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)
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)
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)
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))
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 ())
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)
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))
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 ())
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))
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)