bindings-libusb 0.0.7 → 1.0
raw patch · 19 files changed
+1771/−2308 lines, 19 filesdep ~bindings-commondep ~bindings-posixPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: bindings-common, bindings-posix
API changes (from Hackage documentation)
- Bindings.Libusb: Libusb_config_descriptor :: Word8 -> Word8 -> Word16 -> Word8 -> Word8 -> Word8 -> Word8 -> Word8 -> Ptr Libusb_interface -> Ptr CUChar -> CInt -> Libusb_config_descriptor
- Bindings.Libusb: Libusb_device_descriptor :: Word8 -> Word8 -> Word16 -> Word8 -> Word8 -> Word8 -> Word8 -> Word16 -> Word16 -> Word16 -> Word8 -> Word8 -> Word8 -> Word8 -> Libusb_device_descriptor
- Bindings.Libusb: Libusb_endpoint_descriptor :: Word8 -> Word8 -> Word8 -> Word8 -> Word16 -> Word8 -> Word8 -> Word8 -> Ptr CUChar -> CInt -> Libusb_endpoint_descriptor
- Bindings.Libusb: Libusb_interface :: Ptr Libusb_interface_descriptor -> CInt -> Libusb_interface
- Bindings.Libusb: Libusb_interface_descriptor :: Word8 -> Word8 -> Word8 -> Word8 -> Word8 -> Word8 -> Word8 -> Word8 -> Word8 -> Ptr Libusb_endpoint_descriptor -> Ptr CUChar -> CInt -> Libusb_interface_descriptor
- Bindings.Libusb: _LIBUSB_CLASS_AUDIO :: Libusb_class_code
- Bindings.Libusb: _LIBUSB_CLASS_COMM :: Libusb_class_code
- Bindings.Libusb: _LIBUSB_CLASS_DATA :: Libusb_class_code
- Bindings.Libusb: _LIBUSB_CLASS_HID :: Libusb_class_code
- Bindings.Libusb: _LIBUSB_CLASS_HUB :: Libusb_class_code
- Bindings.Libusb: _LIBUSB_CLASS_MASS_STORAGE :: Libusb_class_code
- Bindings.Libusb: _LIBUSB_CLASS_PER_INTERFACE :: Libusb_class_code
- Bindings.Libusb: _LIBUSB_CLASS_PRINTER :: Libusb_class_code
- Bindings.Libusb: _LIBUSB_CLASS_PTP :: Libusb_class_code
- Bindings.Libusb: _LIBUSB_CLASS_VENDOR_SPEC :: Libusb_class_code
- Bindings.Libusb: _LIBUSB_DT_CONFIG :: Libusb_descriptor_type
- Bindings.Libusb: _LIBUSB_DT_DEVICE :: Libusb_descriptor_type
- Bindings.Libusb: _LIBUSB_DT_ENDPOINT :: Libusb_descriptor_type
- Bindings.Libusb: _LIBUSB_DT_HID :: Libusb_descriptor_type
- Bindings.Libusb: _LIBUSB_DT_HUB :: Libusb_descriptor_type
- Bindings.Libusb: _LIBUSB_DT_INTERFACE :: Libusb_descriptor_type
- Bindings.Libusb: _LIBUSB_DT_PHYSICAL :: Libusb_descriptor_type
- Bindings.Libusb: _LIBUSB_DT_REPORT :: Libusb_descriptor_type
- Bindings.Libusb: _LIBUSB_DT_STRING :: Libusb_descriptor_type
- Bindings.Libusb: _LIBUSB_ENDPOINT_IN :: Libusb_endpoint_direction
- Bindings.Libusb: _LIBUSB_ENDPOINT_OUT :: Libusb_endpoint_direction
- Bindings.Libusb: _LIBUSB_ERROR_ACCESS :: Libusb_error
- Bindings.Libusb: _LIBUSB_ERROR_BUSY :: Libusb_error
- Bindings.Libusb: _LIBUSB_ERROR_INTERRUPTED :: Libusb_error
- Bindings.Libusb: _LIBUSB_ERROR_INVALID_PARAM :: Libusb_error
- Bindings.Libusb: _LIBUSB_ERROR_IO :: Libusb_error
- Bindings.Libusb: _LIBUSB_ERROR_NOT_FOUND :: Libusb_error
- Bindings.Libusb: _LIBUSB_ERROR_NOT_SUPPORTED :: Libusb_error
- Bindings.Libusb: _LIBUSB_ERROR_NO_DEVICE :: Libusb_error
- Bindings.Libusb: _LIBUSB_ERROR_NO_MEM :: Libusb_error
- Bindings.Libusb: _LIBUSB_ERROR_OTHER :: Libusb_error
- Bindings.Libusb: _LIBUSB_ERROR_OVERFLOW :: Libusb_error
- Bindings.Libusb: _LIBUSB_ERROR_PIPE :: Libusb_error
- Bindings.Libusb: _LIBUSB_ERROR_TIMEOUT :: Libusb_error
- Bindings.Libusb: _LIBUSB_ISO_SYNC_TYPE_ADAPTIVE :: Libusb_iso_sync_type
- Bindings.Libusb: _LIBUSB_ISO_SYNC_TYPE_ASYNC :: Libusb_iso_sync_type
- Bindings.Libusb: _LIBUSB_ISO_SYNC_TYPE_NONE :: Libusb_iso_sync_type
- Bindings.Libusb: _LIBUSB_ISO_SYNC_TYPE_SYNC :: Libusb_iso_sync_type
- Bindings.Libusb: _LIBUSB_ISO_USAGE_TYPE_DATA :: Libusb_iso_usage_type
- Bindings.Libusb: _LIBUSB_ISO_USAGE_TYPE_FEEDBACK :: Libusb_iso_usage_type
- Bindings.Libusb: _LIBUSB_ISO_USAGE_TYPE_IMPLICIT :: Libusb_iso_usage_type
- Bindings.Libusb: _LIBUSB_RECIPIENT_DEVICE :: Libusb_request_recipient
- Bindings.Libusb: _LIBUSB_RECIPIENT_ENDPOINT :: Libusb_request_recipient
- Bindings.Libusb: _LIBUSB_RECIPIENT_INTERFACE :: Libusb_request_recipient
- Bindings.Libusb: _LIBUSB_RECIPIENT_OTHER :: Libusb_request_recipient
- Bindings.Libusb: _LIBUSB_REQUEST_CLEAR_FEATURE :: Libusb_standard_request
- Bindings.Libusb: _LIBUSB_REQUEST_GET_CONFIGURATION :: Libusb_standard_request
- Bindings.Libusb: _LIBUSB_REQUEST_GET_DESCRIPTOR :: Libusb_standard_request
- Bindings.Libusb: _LIBUSB_REQUEST_GET_INTERFACE :: Libusb_standard_request
- Bindings.Libusb: _LIBUSB_REQUEST_GET_STATUS :: Libusb_standard_request
- Bindings.Libusb: _LIBUSB_REQUEST_SET_ADDRESS :: Libusb_standard_request
- Bindings.Libusb: _LIBUSB_REQUEST_SET_CONFIGURATION :: Libusb_standard_request
- Bindings.Libusb: _LIBUSB_REQUEST_SET_DESCRIPTOR :: Libusb_standard_request
- Bindings.Libusb: _LIBUSB_REQUEST_SET_FEATURE :: Libusb_standard_request
- Bindings.Libusb: _LIBUSB_REQUEST_SET_INTERFACE :: Libusb_standard_request
- Bindings.Libusb: _LIBUSB_REQUEST_SYNCH_FRAME :: Libusb_standard_request
- Bindings.Libusb: _LIBUSB_REQUEST_TYPE_CLASS :: Libusb_request_type
- Bindings.Libusb: _LIBUSB_REQUEST_TYPE_RESERVED :: Libusb_request_type
- Bindings.Libusb: _LIBUSB_REQUEST_TYPE_STANDARD :: Libusb_request_type
- Bindings.Libusb: _LIBUSB_REQUEST_TYPE_VENDOR :: Libusb_request_type
- Bindings.Libusb: _LIBUSB_SUCCESS :: Libusb_error
- Bindings.Libusb: _LIBUSB_TRANSFER_CANCELLED :: Libusb_transfer_status
- Bindings.Libusb: _LIBUSB_TRANSFER_COMPLETED :: Libusb_transfer_status
- Bindings.Libusb: _LIBUSB_TRANSFER_ERROR :: Libusb_transfer_status
- Bindings.Libusb: _LIBUSB_TRANSFER_FREE_BUFFER :: Libusb_transfer_flags
- Bindings.Libusb: _LIBUSB_TRANSFER_FREE_TRANSFER :: Libusb_transfer_flags
- Bindings.Libusb: _LIBUSB_TRANSFER_NO_DEVICE :: Libusb_transfer_status
- Bindings.Libusb: _LIBUSB_TRANSFER_OVERFLOW :: Libusb_transfer_status
- Bindings.Libusb: _LIBUSB_TRANSFER_SHORT_NOT_OK :: Libusb_transfer_flags
- Bindings.Libusb: _LIBUSB_TRANSFER_STALL :: Libusb_transfer_status
- Bindings.Libusb: _LIBUSB_TRANSFER_TIMED_OUT :: Libusb_transfer_status
- Bindings.Libusb: _LIBUSB_TRANSFER_TYPE_BULK :: Libusb_transfer_type
- Bindings.Libusb: _LIBUSB_TRANSFER_TYPE_CONTROL :: Libusb_transfer_type
- Bindings.Libusb: _LIBUSB_TRANSFER_TYPE_INTERRUPT :: Libusb_transfer_type
- Bindings.Libusb: _LIBUSB_TRANSFER_TYPE_ISOCHRONOUS :: Libusb_transfer_type
- Bindings.Libusb: data Libusb_config_descriptor
- Bindings.Libusb: data Libusb_context
- Bindings.Libusb: data Libusb_control_setup
- Bindings.Libusb: data Libusb_device
- Bindings.Libusb: data Libusb_device_descriptor
- Bindings.Libusb: data Libusb_device_handle
- Bindings.Libusb: data Libusb_endpoint_descriptor
- Bindings.Libusb: data Libusb_interface
- Bindings.Libusb: data Libusb_interface_descriptor
- Bindings.Libusb: data Libusb_iso_packet_descriptor
- Bindings.Libusb: data Libusb_pollfd
- Bindings.Libusb: data Libusb_pollfd_added_cb a
- Bindings.Libusb: data Libusb_pollfd_removed_cb a
- Bindings.Libusb: data Libusb_transfer a
- Bindings.Libusb: data Libusb_transfer_cb_fn a
- Bindings.Libusb: libusb_alloc_transfer :: CInt -> IO (Ptr (Libusb_transfer a))
- Bindings.Libusb: libusb_attach_kernel_driver :: Ptr Libusb_device_handle -> CInt -> IO CInt
- Bindings.Libusb: libusb_bulk_transfer :: Ptr Libusb_device_handle -> CUChar -> Ptr CUChar -> CInt -> Ptr CInt -> CUInt -> IO CInt
- Bindings.Libusb: libusb_cancel_transfer :: Ptr (Libusb_transfer a) -> IO CInt
- Bindings.Libusb: libusb_claim_interface :: Ptr Libusb_device_handle -> CInt -> IO CInt
- Bindings.Libusb: libusb_clear_halt :: Ptr Libusb_device_handle -> CUChar -> IO CInt
- Bindings.Libusb: libusb_close :: Ptr Libusb_device_handle -> IO ()
- Bindings.Libusb: libusb_config_descriptor'bConfigurationValue :: Libusb_config_descriptor -> Word8
- Bindings.Libusb: libusb_config_descriptor'bDescriptorType :: Libusb_config_descriptor -> Word8
- Bindings.Libusb: libusb_config_descriptor'bLength :: Libusb_config_descriptor -> Word8
- Bindings.Libusb: libusb_config_descriptor'bNumInterfaces :: Libusb_config_descriptor -> Word8
- Bindings.Libusb: libusb_config_descriptor'bmAttributes :: Libusb_config_descriptor -> Word8
- Bindings.Libusb: libusb_config_descriptor'extra :: Libusb_config_descriptor -> Ptr CUChar
- Bindings.Libusb: libusb_config_descriptor'extra_length :: Libusb_config_descriptor -> CInt
- Bindings.Libusb: libusb_config_descriptor'iConfiguration :: Libusb_config_descriptor -> Word8
- Bindings.Libusb: libusb_config_descriptor'interface :: Libusb_config_descriptor -> Ptr Libusb_interface
- Bindings.Libusb: libusb_config_descriptor'maxPower :: Libusb_config_descriptor -> Word8
- Bindings.Libusb: libusb_config_descriptor'wTotalLength :: Libusb_config_descriptor -> Word16
- Bindings.Libusb: libusb_control_transfer :: Ptr Libusb_device_handle -> Word8 -> Word8 -> Word16 -> Word16 -> Ptr CUChar -> Word16 -> CUInt -> IO CInt
- Bindings.Libusb: libusb_control_transfer_get_data :: Ptr (Libusb_transfer a) -> IO (Ptr CUChar)
- Bindings.Libusb: libusb_control_transfer_get_setup :: Ptr (Libusb_transfer a) -> IO (Ptr Libusb_control_setup)
- Bindings.Libusb: libusb_cpu_to_le16 :: Word16 -> Word16
- Bindings.Libusb: libusb_detach_kernel_driver :: Ptr Libusb_device_handle -> CInt -> IO CInt
- Bindings.Libusb: libusb_device_descriptor'bDescriptorType :: Libusb_device_descriptor -> Word8
- Bindings.Libusb: libusb_device_descriptor'bDeviceClass :: Libusb_device_descriptor -> Word8
- Bindings.Libusb: libusb_device_descriptor'bDeviceProtocol :: Libusb_device_descriptor -> Word8
- Bindings.Libusb: libusb_device_descriptor'bDeviceSubClass :: Libusb_device_descriptor -> Word8
- Bindings.Libusb: libusb_device_descriptor'bLength :: Libusb_device_descriptor -> Word8
- Bindings.Libusb: libusb_device_descriptor'bMaxPacketSize0 :: Libusb_device_descriptor -> Word8
- Bindings.Libusb: libusb_device_descriptor'bNumConfigurations :: Libusb_device_descriptor -> Word8
- Bindings.Libusb: libusb_device_descriptor'bcdDevice :: Libusb_device_descriptor -> Word16
- Bindings.Libusb: libusb_device_descriptor'bcdUSB :: Libusb_device_descriptor -> Word16
- Bindings.Libusb: libusb_device_descriptor'iManufacturer :: Libusb_device_descriptor -> Word8
- Bindings.Libusb: libusb_device_descriptor'iProduct :: Libusb_device_descriptor -> Word8
- Bindings.Libusb: libusb_device_descriptor'iSerialNumber :: Libusb_device_descriptor -> Word8
- Bindings.Libusb: libusb_device_descriptor'idProduct :: Libusb_device_descriptor -> Word16
- Bindings.Libusb: libusb_device_descriptor'idVendor :: Libusb_device_descriptor -> Word16
- Bindings.Libusb: libusb_endpoint_descriptor'bDescriptorType :: Libusb_endpoint_descriptor -> Word8
- Bindings.Libusb: libusb_endpoint_descriptor'bEndpointAddress :: Libusb_endpoint_descriptor -> Word8
- Bindings.Libusb: libusb_endpoint_descriptor'bInterval :: Libusb_endpoint_descriptor -> Word8
- Bindings.Libusb: libusb_endpoint_descriptor'bLength :: Libusb_endpoint_descriptor -> Word8
- Bindings.Libusb: libusb_endpoint_descriptor'bRefresh :: Libusb_endpoint_descriptor -> Word8
- Bindings.Libusb: libusb_endpoint_descriptor'bSynchAddress :: Libusb_endpoint_descriptor -> Word8
- Bindings.Libusb: libusb_endpoint_descriptor'bmAttributes :: Libusb_endpoint_descriptor -> Word8
- Bindings.Libusb: libusb_endpoint_descriptor'extra :: Libusb_endpoint_descriptor -> Ptr CUChar
- Bindings.Libusb: libusb_endpoint_descriptor'extra_length :: Libusb_endpoint_descriptor -> CInt
- Bindings.Libusb: libusb_endpoint_descriptor'wMaxPacketSize :: Libusb_endpoint_descriptor -> Word16
- Bindings.Libusb: libusb_event_handler_active :: Ptr Libusb_context -> IO CInt
- Bindings.Libusb: libusb_event_handling_ok :: Ptr Libusb_context -> IO CInt
- Bindings.Libusb: libusb_exit :: Ptr Libusb_context -> IO ()
- Bindings.Libusb: libusb_fill_bulk_transfer :: Ptr (Libusb_transfer a) -> Ptr Libusb_device_handle -> CUChar -> Ptr CUChar -> CInt -> FunPtr (Libusb_transfer_cb_fn a) -> Ptr a -> CUInt -> IO ()
- Bindings.Libusb: libusb_fill_control_setup :: Ptr CUChar -> Word8 -> Word8 -> Word16 -> Word16 -> Word16 -> IO ()
- Bindings.Libusb: libusb_fill_control_transfer :: Ptr (Libusb_transfer a) -> Ptr Libusb_device_handle -> Ptr CUChar -> FunPtr (Libusb_transfer_cb_fn a) -> Ptr a -> CUInt -> IO ()
- Bindings.Libusb: libusb_fill_interrupt_transfer :: Ptr (Libusb_transfer a) -> Ptr Libusb_device_handle -> CUChar -> Ptr CUChar -> CInt -> FunPtr (Libusb_transfer_cb_fn a) -> Ptr a -> CUInt -> IO ()
- Bindings.Libusb: libusb_fill_iso_transfer :: Ptr (Libusb_transfer a) -> Ptr Libusb_device_handle -> CUChar -> Ptr CUChar -> CInt -> CInt -> FunPtr (Libusb_transfer_cb_fn a) -> Ptr a -> CUInt -> IO ()
- Bindings.Libusb: libusb_free_config_descriptor :: Ptr Libusb_config_descriptor -> IO ()
- Bindings.Libusb: libusb_free_device_list :: Ptr (Ptr Libusb_device) -> CInt -> IO ()
- Bindings.Libusb: libusb_free_transfer :: Ptr (Libusb_transfer a)
- Bindings.Libusb: libusb_get_active_config_descriptor :: Ptr Libusb_device -> Ptr (Ptr Libusb_config_descriptor) -> IO CInt
- Bindings.Libusb: libusb_get_bus_number :: Ptr Libusb_device -> IO Word8
- Bindings.Libusb: libusb_get_config_descriptor :: Ptr Libusb_device -> Word8 -> Ptr (Ptr Libusb_config_descriptor) -> IO CInt
- Bindings.Libusb: libusb_get_config_descriptor_by_value :: Ptr Libusb_device -> Word8 -> Ptr (Ptr Libusb_config_descriptor) -> IO CInt
- Bindings.Libusb: libusb_get_configuration :: Ptr Libusb_device_handle -> Ptr CInt -> IO CInt
- Bindings.Libusb: libusb_get_descriptor :: Ptr Libusb_device_handle -> Word8 -> Word8 -> Ptr CUChar -> CInt -> IO CInt
- Bindings.Libusb: libusb_get_device :: Ptr Libusb_device_handle -> IO (Ptr Libusb_device)
- Bindings.Libusb: libusb_get_device_address :: Ptr Libusb_device -> IO Word8
- Bindings.Libusb: libusb_get_device_descriptor :: Ptr Libusb_device -> Ptr Libusb_device_descriptor -> IO CInt
- Bindings.Libusb: libusb_get_device_list :: Ptr Libusb_context -> Ptr (Ptr (Ptr Libusb_device)) -> IO CInt
- Bindings.Libusb: libusb_get_iso_packet_buffer :: Ptr (Libusb_transfer a) -> CUInt -> IO (Ptr CUChar)
- Bindings.Libusb: libusb_get_iso_packet_buffer_simple :: Ptr (Libusb_transfer a) -> CUInt -> IO (Ptr CUChar)
- Bindings.Libusb: libusb_get_max_packet_size :: Ptr Libusb_device -> CUChar -> IO CInt
- Bindings.Libusb: libusb_get_next_timeout :: Ptr Libusb_context -> Ptr Timeval -> IO CInt
- Bindings.Libusb: libusb_get_pollfds :: Ptr Libusb_context -> IO (Ptr (Ptr Libusb_pollfd))
- Bindings.Libusb: libusb_get_string_descriptor :: Ptr Libusb_device_handle -> Word8 -> Word16 -> Ptr CUChar -> CInt -> IO CInt
- Bindings.Libusb: libusb_get_string_descriptor_ascii :: Ptr Libusb_device_handle -> Word8 -> Ptr CUChar -> CInt -> IO CInt
- Bindings.Libusb: libusb_handle_events :: Ptr Libusb_context -> IO CInt
- Bindings.Libusb: libusb_handle_events_locked :: Ptr Libusb_context -> Ptr Timeval -> IO CInt
- Bindings.Libusb: libusb_handle_events_timeout :: Ptr Libusb_context -> Ptr Timeval -> IO CInt
- Bindings.Libusb: libusb_init :: Ptr (Ptr Libusb_context) -> IO CInt
- Bindings.Libusb: libusb_interface'altsetting :: Libusb_interface -> Ptr Libusb_interface_descriptor
- Bindings.Libusb: libusb_interface'num_altsetting :: Libusb_interface -> CInt
- Bindings.Libusb: libusb_interface_descriptor'bAlternateSetting :: Libusb_interface_descriptor -> Word8
- Bindings.Libusb: libusb_interface_descriptor'bDescriptorType :: Libusb_interface_descriptor -> Word8
- Bindings.Libusb: libusb_interface_descriptor'bInterfaceClass :: Libusb_interface_descriptor -> Word8
- Bindings.Libusb: libusb_interface_descriptor'bInterfaceNumber :: Libusb_interface_descriptor -> Word8
- Bindings.Libusb: libusb_interface_descriptor'bInterfaceProtocol :: Libusb_interface_descriptor -> Word8
- Bindings.Libusb: libusb_interface_descriptor'bInterfaceSubClass :: Libusb_interface_descriptor -> Word8
- Bindings.Libusb: libusb_interface_descriptor'bLength :: Libusb_interface_descriptor -> Word8
- Bindings.Libusb: libusb_interface_descriptor'bNumEndpoints :: Libusb_interface_descriptor -> Word8
- Bindings.Libusb: libusb_interface_descriptor'endpoint :: Libusb_interface_descriptor -> Ptr Libusb_endpoint_descriptor
- Bindings.Libusb: libusb_interface_descriptor'extra :: Libusb_interface_descriptor -> Ptr CUChar
- Bindings.Libusb: libusb_interface_descriptor'extra_length :: Libusb_interface_descriptor -> CInt
- Bindings.Libusb: libusb_interface_descriptor'iInterface :: Libusb_interface_descriptor -> Word8
- Bindings.Libusb: libusb_interrupt_transfer :: Ptr Libusb_device_handle -> CUChar -> Ptr CUChar -> CInt -> Ptr CInt -> CUInt -> IO CInt
- Bindings.Libusb: libusb_kernel_driver_active :: Ptr Libusb_device_handle -> CInt -> IO CInt
- Bindings.Libusb: libusb_le16_to_cpu :: Word16 -> Word16
- Bindings.Libusb: libusb_lock_event_waiters :: Ptr Libusb_context -> IO ()
- Bindings.Libusb: libusb_lock_events :: Ptr Libusb_context -> IO ()
- Bindings.Libusb: libusb_open :: Ptr Libusb_device -> Ptr (Ptr Libusb_device_handle) -> IO CInt
- Bindings.Libusb: libusb_open_device_with_vid_pid :: Ptr Libusb_context -> Word16 -> Word16 -> IO (Ptr Libusb_device_handle)
- Bindings.Libusb: libusb_ref_device :: Ptr Libusb_device -> IO (Ptr Libusb_device)
- Bindings.Libusb: libusb_release_interface :: Ptr Libusb_device_handle -> CInt -> IO CInt
- Bindings.Libusb: libusb_reset_device :: Ptr Libusb_device_handle -> IO CInt
- Bindings.Libusb: libusb_set_configuration :: Ptr Libusb_device_handle -> CInt -> IO CInt
- Bindings.Libusb: libusb_set_debug :: Ptr Libusb_context -> CInt -> IO ()
- Bindings.Libusb: libusb_set_interface_alt_setting :: Ptr Libusb_device_handle -> CInt -> CInt -> IO CInt
- Bindings.Libusb: libusb_set_iso_packet_lengths :: Ptr (Libusb_transfer a) -> CUInt -> IO ()
- Bindings.Libusb: libusb_set_pollfd_notifiers :: Ptr Libusb_context -> Libusb_pollfd_added_cb a -> Libusb_pollfd_removed_cb a -> Ptr a -> IO ()
- Bindings.Libusb: libusb_submit_transfer :: Ptr (Libusb_transfer a) -> IO CInt
- Bindings.Libusb: libusb_try_lock_events :: Ptr Libusb_context -> IO CInt
- Bindings.Libusb: libusb_unlock_event_waiters :: Ptr Libusb_context -> IO ()
- Bindings.Libusb: libusb_unlock_events :: Ptr Libusb_context -> IO ()
- Bindings.Libusb: libusb_unref_device :: Ptr Libusb_device -> IO ()
- Bindings.Libusb: libusb_wait_for_event :: Ptr Libusb_context -> Ptr Timeval -> IO CInt
- Bindings.Libusb: ptr_libusb_exit :: FunPtr (Ptr Libusb_context -> IO ())
- Bindings.Libusb: ptr_libusb_unref_device :: FunPtr (Ptr Libusb_device -> IO ())
- Bindings.Libusb: type Libusb_class_code = Word8
- Bindings.Libusb: type Libusb_descriptor_type = Word8
- Bindings.Libusb: type Libusb_endpoint_direction = Word8
- Bindings.Libusb: type Libusb_error = CInt
- Bindings.Libusb: type Libusb_iso_sync_type = Word8
- Bindings.Libusb: type Libusb_iso_usage_type = Word8
- Bindings.Libusb: type Libusb_request_recipient = Word8
- Bindings.Libusb: type Libusb_request_type = Word8
- Bindings.Libusb: type Libusb_standard_request = Word8
- Bindings.Libusb: type Libusb_transfer_flags = Word8
- Bindings.Libusb: type Libusb_transfer_status = CInt
- Bindings.Libusb: type Libusb_transfer_type = Word8
+ Bindings.Libusb.Asynchronous: C'libusb_control_setup :: Word8 -> Word8 -> Word16 -> Word16 -> Word16 -> C'libusb_control_setup
+ Bindings.Libusb.Asynchronous: C'libusb_iso_packet_descriptor :: CUInt -> CUInt -> C'libusb_transfer_status -> C'libusb_iso_packet_descriptor
+ Bindings.Libusb.Asynchronous: C'libusb_transfer :: Ptr C'libusb_device_handle -> Word8 -> CUChar -> CUChar -> CUInt -> C'libusb_transfer_status -> CInt -> CInt -> C'libusb_transfer_cb_fn -> Ptr () -> Ptr CUChar -> CInt -> C'libusb_transfer
+ Bindings.Libusb.Asynchronous: c'LIBUSB_TRANSFER_CANCELLED :: (Num a) => a
+ Bindings.Libusb.Asynchronous: c'LIBUSB_TRANSFER_COMPLETED :: (Num a) => a
+ Bindings.Libusb.Asynchronous: c'LIBUSB_TRANSFER_ERROR :: (Num a) => a
+ Bindings.Libusb.Asynchronous: c'LIBUSB_TRANSFER_FREE_BUFFER :: (Num a) => a
+ Bindings.Libusb.Asynchronous: c'LIBUSB_TRANSFER_FREE_TRANSFER :: (Num a) => a
+ Bindings.Libusb.Asynchronous: c'LIBUSB_TRANSFER_NO_DEVICE :: (Num a) => a
+ Bindings.Libusb.Asynchronous: c'LIBUSB_TRANSFER_OVERFLOW :: (Num a) => a
+ Bindings.Libusb.Asynchronous: c'LIBUSB_TRANSFER_SHORT_NOT_OK :: (Num a) => a
+ Bindings.Libusb.Asynchronous: c'LIBUSB_TRANSFER_STALL :: (Num a) => a
+ Bindings.Libusb.Asynchronous: c'LIBUSB_TRANSFER_TIMED_OUT :: (Num a) => a
+ Bindings.Libusb.Asynchronous: c'libusb_alloc_transfer :: CInt -> IO (Ptr C'libusb_transfer)
+ Bindings.Libusb.Asynchronous: c'libusb_cancel_transfer :: Ptr C'libusb_transfer -> IO CInt
+ Bindings.Libusb.Asynchronous: c'libusb_control_transfer_get_data :: Ptr C'libusb_transfer -> IO (Ptr CUChar)
+ Bindings.Libusb.Asynchronous: c'libusb_control_transfer_get_setup :: Ptr C'libusb_transfer -> IO (Ptr C'libusb_control_setup)
+ Bindings.Libusb.Asynchronous: c'libusb_fill_bulk_transfer :: Ptr C'libusb_transfer -> Ptr C'libusb_device_handle -> CUChar -> Ptr CUChar -> CInt -> C'libusb_transfer_cb_fn -> Ptr () -> CUInt -> IO ()
+ Bindings.Libusb.Asynchronous: c'libusb_fill_control_setup :: Ptr CUChar -> Word8 -> Word8 -> Word16 -> Word16 -> Word16 -> IO ()
+ Bindings.Libusb.Asynchronous: c'libusb_fill_control_transfer :: Ptr C'libusb_transfer -> Ptr C'libusb_device_handle -> Ptr CUChar -> C'libusb_transfer_cb_fn -> Ptr () -> CUInt -> IO ()
+ Bindings.Libusb.Asynchronous: c'libusb_fill_interrupt_transfer :: Ptr C'libusb_transfer -> Ptr C'libusb_device_handle -> CUChar -> Ptr CUChar -> CInt -> C'libusb_transfer_cb_fn -> Ptr () -> CUInt -> IO ()
+ Bindings.Libusb.Asynchronous: c'libusb_fill_iso_transfer :: Ptr C'libusb_transfer -> Ptr C'libusb_device_handle -> CUChar -> Ptr CUChar -> CInt -> CInt -> C'libusb_transfer_cb_fn -> Ptr () -> CUInt -> IO ()
+ Bindings.Libusb.Asynchronous: c'libusb_free_transfer :: Ptr C'libusb_transfer -> IO ()
+ Bindings.Libusb.Asynchronous: c'libusb_get_iso_packet_buffer :: Ptr C'libusb_transfer -> CUInt -> IO (Ptr CUChar)
+ Bindings.Libusb.Asynchronous: c'libusb_get_iso_packet_buffer_simple :: Ptr C'libusb_transfer -> CUInt -> IO (Ptr CUChar)
+ Bindings.Libusb.Asynchronous: c'libusb_set_iso_packet_lengths :: Ptr C'libusb_transfer -> CUInt -> IO ()
+ Bindings.Libusb.Asynchronous: c'libusb_submit_transfer :: Ptr C'libusb_transfer -> IO CInt
+ Bindings.Libusb.Asynchronous: data C'libusb_control_setup
+ Bindings.Libusb.Asynchronous: data C'libusb_iso_packet_descriptor
+ Bindings.Libusb.Asynchronous: data C'libusb_transfer
+ Bindings.Libusb.Asynchronous: instance Storable C'libusb_control_setup
+ Bindings.Libusb.Asynchronous: instance Storable C'libusb_iso_packet_descriptor
+ Bindings.Libusb.Asynchronous: instance Storable C'libusb_transfer
+ Bindings.Libusb.Asynchronous: libusb_control_setup'bRequest :: C'libusb_control_setup -> Word8
+ Bindings.Libusb.Asynchronous: libusb_control_setup'bmRequestType :: C'libusb_control_setup -> Word8
+ Bindings.Libusb.Asynchronous: libusb_control_setup'wIndex :: C'libusb_control_setup -> Word16
+ Bindings.Libusb.Asynchronous: libusb_control_setup'wLength :: C'libusb_control_setup -> Word16
+ Bindings.Libusb.Asynchronous: libusb_control_setup'wValue :: C'libusb_control_setup -> Word16
+ Bindings.Libusb.Asynchronous: libusb_iso_packet_descriptor'actual_length :: C'libusb_iso_packet_descriptor -> CUInt
+ Bindings.Libusb.Asynchronous: libusb_iso_packet_descriptor'length :: C'libusb_iso_packet_descriptor -> CUInt
+ Bindings.Libusb.Asynchronous: libusb_iso_packet_descriptor'status :: C'libusb_iso_packet_descriptor -> C'libusb_transfer_status
+ Bindings.Libusb.Asynchronous: libusb_transfer'actual_length :: C'libusb_transfer -> CInt
+ Bindings.Libusb.Asynchronous: libusb_transfer'buffer :: C'libusb_transfer -> Ptr CUChar
+ Bindings.Libusb.Asynchronous: libusb_transfer'callback :: C'libusb_transfer -> C'libusb_transfer_cb_fn
+ Bindings.Libusb.Asynchronous: libusb_transfer'dev_handle :: C'libusb_transfer -> Ptr C'libusb_device_handle
+ Bindings.Libusb.Asynchronous: libusb_transfer'endpoint :: C'libusb_transfer -> CUChar
+ Bindings.Libusb.Asynchronous: libusb_transfer'flags :: C'libusb_transfer -> Word8
+ Bindings.Libusb.Asynchronous: libusb_transfer'length :: C'libusb_transfer -> CInt
+ Bindings.Libusb.Asynchronous: libusb_transfer'num_iso_packets :: C'libusb_transfer -> CInt
+ Bindings.Libusb.Asynchronous: libusb_transfer'status :: C'libusb_transfer -> C'libusb_transfer_status
+ Bindings.Libusb.Asynchronous: libusb_transfer'timeout :: C'libusb_transfer -> CUInt
+ Bindings.Libusb.Asynchronous: libusb_transfer'type :: C'libusb_transfer -> CUChar
+ Bindings.Libusb.Asynchronous: libusb_transfer'user_data :: C'libusb_transfer -> Ptr ()
+ Bindings.Libusb.Asynchronous: mk'libusb_transfer_cb_fn :: (Ptr C'libusb_transfer -> IO ()) -> IO C'libusb_transfer_cb_fn
+ Bindings.Libusb.Asynchronous: p'libusb_alloc_transfer :: FunPtr (CInt -> IO (Ptr C'libusb_transfer))
+ Bindings.Libusb.Asynchronous: p'libusb_cancel_transfer :: FunPtr (Ptr C'libusb_transfer -> IO CInt)
+ Bindings.Libusb.Asynchronous: p'libusb_free_transfer :: FunPtr (Ptr C'libusb_transfer -> IO ())
+ Bindings.Libusb.Asynchronous: p'libusb_submit_transfer :: FunPtr (Ptr C'libusb_transfer -> IO CInt)
+ Bindings.Libusb.Asynchronous: type C'libusb_transfer_cb_fn = FunPtr (Ptr C'libusb_transfer -> IO ())
+ Bindings.Libusb.Asynchronous: type C'libusb_transfer_flags = Word32
+ Bindings.Libusb.Asynchronous: type C'libusb_transfer_status = Word32
+ Bindings.Libusb.Descriptors: C'libusb_config_descriptor :: Word8 -> Word8 -> Word16 -> Word8 -> Word8 -> Word8 -> Word8 -> Word8 -> Ptr C'libusb_interface -> Ptr CUChar -> CInt -> C'libusb_config_descriptor
+ Bindings.Libusb.Descriptors: C'libusb_device_descriptor :: Word8 -> Word8 -> Word16 -> Word8 -> Word8 -> Word8 -> Word8 -> Word16 -> Word16 -> Word16 -> Word8 -> Word8 -> Word8 -> Word8 -> C'libusb_device_descriptor
+ Bindings.Libusb.Descriptors: C'libusb_endpoint_descriptor :: Word8 -> Word8 -> Word8 -> Word8 -> Word16 -> Word8 -> Word8 -> Word8 -> Ptr CUChar -> CInt -> C'libusb_endpoint_descriptor
+ Bindings.Libusb.Descriptors: C'libusb_interface :: Ptr C'libusb_interface_descriptor -> CInt -> C'libusb_interface
+ Bindings.Libusb.Descriptors: C'libusb_interface_descriptor :: Word8 -> Word8 -> Word8 -> Word8 -> Word8 -> Word8 -> Word8 -> Word8 -> Word8 -> Ptr C'libusb_endpoint_descriptor -> Ptr CUChar -> CInt -> C'libusb_interface_descriptor
+ Bindings.Libusb.Descriptors: c'LIBUSB_CLASS_AUDIO :: (Num a) => a
+ Bindings.Libusb.Descriptors: c'LIBUSB_CLASS_COMM :: (Num a) => a
+ Bindings.Libusb.Descriptors: c'LIBUSB_CLASS_DATA :: (Num a) => a
+ Bindings.Libusb.Descriptors: c'LIBUSB_CLASS_HID :: (Num a) => a
+ Bindings.Libusb.Descriptors: c'LIBUSB_CLASS_HUB :: (Num a) => a
+ Bindings.Libusb.Descriptors: c'LIBUSB_CLASS_MASS_STORAGE :: (Num a) => a
+ Bindings.Libusb.Descriptors: c'LIBUSB_CLASS_PER_INTERFACE :: (Num a) => a
+ Bindings.Libusb.Descriptors: c'LIBUSB_CLASS_PRINTER :: (Num a) => a
+ Bindings.Libusb.Descriptors: c'LIBUSB_CLASS_PTP :: (Num a) => a
+ Bindings.Libusb.Descriptors: c'LIBUSB_CLASS_VENDOR_SPEC :: (Num a) => a
+ Bindings.Libusb.Descriptors: c'LIBUSB_DT_CONFIG :: (Num a) => a
+ Bindings.Libusb.Descriptors: c'LIBUSB_DT_DEVICE :: (Num a) => a
+ Bindings.Libusb.Descriptors: c'LIBUSB_DT_ENDPOINT :: (Num a) => a
+ Bindings.Libusb.Descriptors: c'LIBUSB_DT_HID :: (Num a) => a
+ Bindings.Libusb.Descriptors: c'LIBUSB_DT_HUB :: (Num a) => a
+ Bindings.Libusb.Descriptors: c'LIBUSB_DT_INTERFACE :: (Num a) => a
+ Bindings.Libusb.Descriptors: c'LIBUSB_DT_PHYSICAL :: (Num a) => a
+ Bindings.Libusb.Descriptors: c'LIBUSB_DT_REPORT :: (Num a) => a
+ Bindings.Libusb.Descriptors: c'LIBUSB_DT_STRING :: (Num a) => a
+ Bindings.Libusb.Descriptors: c'LIBUSB_ENDPOINT_IN :: (Num a) => a
+ Bindings.Libusb.Descriptors: c'LIBUSB_ENDPOINT_OUT :: (Num a) => a
+ Bindings.Libusb.Descriptors: c'LIBUSB_ISO_SYNC_TYPE_ADAPTIVE :: (Num a) => a
+ Bindings.Libusb.Descriptors: c'LIBUSB_ISO_SYNC_TYPE_ASYNC :: (Num a) => a
+ Bindings.Libusb.Descriptors: c'LIBUSB_ISO_SYNC_TYPE_NONE :: (Num a) => a
+ Bindings.Libusb.Descriptors: c'LIBUSB_ISO_SYNC_TYPE_SYNC :: (Num a) => a
+ Bindings.Libusb.Descriptors: c'LIBUSB_ISO_USAGE_TYPE_DATA :: (Num a) => a
+ Bindings.Libusb.Descriptors: c'LIBUSB_ISO_USAGE_TYPE_FEEDBACK :: (Num a) => a
+ Bindings.Libusb.Descriptors: c'LIBUSB_ISO_USAGE_TYPE_IMPLICIT :: (Num a) => a
+ Bindings.Libusb.Descriptors: c'LIBUSB_TRANSFER_TYPE_BULK :: (Num a) => a
+ Bindings.Libusb.Descriptors: c'LIBUSB_TRANSFER_TYPE_CONTROL :: (Num a) => a
+ Bindings.Libusb.Descriptors: c'LIBUSB_TRANSFER_TYPE_INTERRUPT :: (Num a) => a
+ Bindings.Libusb.Descriptors: c'LIBUSB_TRANSFER_TYPE_ISOCHRONOUS :: (Num a) => a
+ Bindings.Libusb.Descriptors: c'libusb_free_config_descriptor :: Ptr C'libusb_config_descriptor -> IO ()
+ Bindings.Libusb.Descriptors: c'libusb_get_active_config_descriptor :: Ptr C'libusb_device -> Ptr (Ptr C'libusb_config_descriptor) -> IO CInt
+ Bindings.Libusb.Descriptors: c'libusb_get_config_descriptor :: Ptr C'libusb_device -> Word8 -> Ptr (Ptr C'libusb_config_descriptor) -> IO CInt
+ Bindings.Libusb.Descriptors: c'libusb_get_config_descriptor_by_value :: Ptr C'libusb_device -> Word8 -> Ptr (Ptr C'libusb_config_descriptor) -> IO CInt
+ Bindings.Libusb.Descriptors: c'libusb_get_descriptor :: Ptr C'libusb_device_handle -> Word8 -> Word8 -> Ptr CUChar -> CInt -> IO CInt
+ Bindings.Libusb.Descriptors: c'libusb_get_device_descriptor :: Ptr C'libusb_device -> Ptr C'libusb_device_descriptor -> IO CInt
+ Bindings.Libusb.Descriptors: c'libusb_get_string_descriptor :: Ptr C'libusb_device_handle -> Word8 -> Word16 -> Ptr CUChar -> CInt -> IO CInt
+ Bindings.Libusb.Descriptors: c'libusb_get_string_descriptor_ascii :: Ptr C'libusb_device_handle -> Word8 -> Ptr CUChar -> CInt -> IO CInt
+ Bindings.Libusb.Descriptors: data C'libusb_config_descriptor
+ Bindings.Libusb.Descriptors: data C'libusb_device_descriptor
+ Bindings.Libusb.Descriptors: data C'libusb_endpoint_descriptor
+ Bindings.Libusb.Descriptors: data C'libusb_interface
+ Bindings.Libusb.Descriptors: data C'libusb_interface_descriptor
+ Bindings.Libusb.Descriptors: instance Storable C'libusb_config_descriptor
+ Bindings.Libusb.Descriptors: instance Storable C'libusb_device_descriptor
+ Bindings.Libusb.Descriptors: instance Storable C'libusb_endpoint_descriptor
+ Bindings.Libusb.Descriptors: instance Storable C'libusb_interface
+ Bindings.Libusb.Descriptors: instance Storable C'libusb_interface_descriptor
+ Bindings.Libusb.Descriptors: libusb_config_descriptor'MaxPower :: C'libusb_config_descriptor -> Word8
+ Bindings.Libusb.Descriptors: libusb_config_descriptor'bConfigurationValue :: C'libusb_config_descriptor -> Word8
+ Bindings.Libusb.Descriptors: libusb_config_descriptor'bDescriptorType :: C'libusb_config_descriptor -> Word8
+ Bindings.Libusb.Descriptors: libusb_config_descriptor'bLength :: C'libusb_config_descriptor -> Word8
+ Bindings.Libusb.Descriptors: libusb_config_descriptor'bNumInterfaces :: C'libusb_config_descriptor -> Word8
+ Bindings.Libusb.Descriptors: libusb_config_descriptor'bmAttributes :: C'libusb_config_descriptor -> Word8
+ Bindings.Libusb.Descriptors: libusb_config_descriptor'extra :: C'libusb_config_descriptor -> Ptr CUChar
+ Bindings.Libusb.Descriptors: libusb_config_descriptor'extra_length :: C'libusb_config_descriptor -> CInt
+ Bindings.Libusb.Descriptors: libusb_config_descriptor'iConfiguration :: C'libusb_config_descriptor -> Word8
+ Bindings.Libusb.Descriptors: libusb_config_descriptor'interface :: C'libusb_config_descriptor -> Ptr C'libusb_interface
+ Bindings.Libusb.Descriptors: libusb_config_descriptor'wTotalLength :: C'libusb_config_descriptor -> Word16
+ Bindings.Libusb.Descriptors: libusb_device_descriptor'bDescriptorType :: C'libusb_device_descriptor -> Word8
+ Bindings.Libusb.Descriptors: libusb_device_descriptor'bDeviceClass :: C'libusb_device_descriptor -> Word8
+ Bindings.Libusb.Descriptors: libusb_device_descriptor'bDeviceProtocol :: C'libusb_device_descriptor -> Word8
+ Bindings.Libusb.Descriptors: libusb_device_descriptor'bDeviceSubClass :: C'libusb_device_descriptor -> Word8
+ Bindings.Libusb.Descriptors: libusb_device_descriptor'bLength :: C'libusb_device_descriptor -> Word8
+ Bindings.Libusb.Descriptors: libusb_device_descriptor'bMaxPacketSize0 :: C'libusb_device_descriptor -> Word8
+ Bindings.Libusb.Descriptors: libusb_device_descriptor'bNumConfigurations :: C'libusb_device_descriptor -> Word8
+ Bindings.Libusb.Descriptors: libusb_device_descriptor'bcdDevice :: C'libusb_device_descriptor -> Word16
+ Bindings.Libusb.Descriptors: libusb_device_descriptor'bcdUSB :: C'libusb_device_descriptor -> Word16
+ Bindings.Libusb.Descriptors: libusb_device_descriptor'iManufacturer :: C'libusb_device_descriptor -> Word8
+ Bindings.Libusb.Descriptors: libusb_device_descriptor'iProduct :: C'libusb_device_descriptor -> Word8
+ Bindings.Libusb.Descriptors: libusb_device_descriptor'iSerialNumber :: C'libusb_device_descriptor -> Word8
+ Bindings.Libusb.Descriptors: libusb_device_descriptor'idProduct :: C'libusb_device_descriptor -> Word16
+ Bindings.Libusb.Descriptors: libusb_device_descriptor'idVendor :: C'libusb_device_descriptor -> Word16
+ Bindings.Libusb.Descriptors: libusb_endpoint_descriptor'bDescriptorType :: C'libusb_endpoint_descriptor -> Word8
+ Bindings.Libusb.Descriptors: libusb_endpoint_descriptor'bEndpointAddress :: C'libusb_endpoint_descriptor -> Word8
+ Bindings.Libusb.Descriptors: libusb_endpoint_descriptor'bInterval :: C'libusb_endpoint_descriptor -> Word8
+ Bindings.Libusb.Descriptors: libusb_endpoint_descriptor'bLength :: C'libusb_endpoint_descriptor -> Word8
+ Bindings.Libusb.Descriptors: libusb_endpoint_descriptor'bRefresh :: C'libusb_endpoint_descriptor -> Word8
+ Bindings.Libusb.Descriptors: libusb_endpoint_descriptor'bSynchAddress :: C'libusb_endpoint_descriptor -> Word8
+ Bindings.Libusb.Descriptors: libusb_endpoint_descriptor'bmAttributes :: C'libusb_endpoint_descriptor -> Word8
+ Bindings.Libusb.Descriptors: libusb_endpoint_descriptor'extra :: C'libusb_endpoint_descriptor -> Ptr CUChar
+ Bindings.Libusb.Descriptors: libusb_endpoint_descriptor'extra_length :: C'libusb_endpoint_descriptor -> CInt
+ Bindings.Libusb.Descriptors: libusb_endpoint_descriptor'wMaxPacketSize :: C'libusb_endpoint_descriptor -> Word16
+ Bindings.Libusb.Descriptors: libusb_interface'altsetting :: C'libusb_interface -> Ptr C'libusb_interface_descriptor
+ Bindings.Libusb.Descriptors: libusb_interface'num_altsetting :: C'libusb_interface -> CInt
+ Bindings.Libusb.Descriptors: libusb_interface_descriptor'bAlternateSetting :: C'libusb_interface_descriptor -> Word8
+ Bindings.Libusb.Descriptors: libusb_interface_descriptor'bDescriptorType :: C'libusb_interface_descriptor -> Word8
+ Bindings.Libusb.Descriptors: libusb_interface_descriptor'bInterfaceClass :: C'libusb_interface_descriptor -> Word8
+ Bindings.Libusb.Descriptors: libusb_interface_descriptor'bInterfaceNumber :: C'libusb_interface_descriptor -> Word8
+ Bindings.Libusb.Descriptors: libusb_interface_descriptor'bInterfaceProtocol :: C'libusb_interface_descriptor -> Word8
+ Bindings.Libusb.Descriptors: libusb_interface_descriptor'bInterfaceSubClass :: C'libusb_interface_descriptor -> Word8
+ Bindings.Libusb.Descriptors: libusb_interface_descriptor'bLength :: C'libusb_interface_descriptor -> Word8
+ Bindings.Libusb.Descriptors: libusb_interface_descriptor'bNumEndpoints :: C'libusb_interface_descriptor -> Word8
+ Bindings.Libusb.Descriptors: libusb_interface_descriptor'endpoint :: C'libusb_interface_descriptor -> Ptr C'libusb_endpoint_descriptor
+ Bindings.Libusb.Descriptors: libusb_interface_descriptor'extra :: C'libusb_interface_descriptor -> Ptr CUChar
+ Bindings.Libusb.Descriptors: libusb_interface_descriptor'extra_length :: C'libusb_interface_descriptor -> CInt
+ Bindings.Libusb.Descriptors: libusb_interface_descriptor'iInterface :: C'libusb_interface_descriptor -> Word8
+ Bindings.Libusb.Descriptors: p'libusb_free_config_descriptor :: FunPtr (Ptr C'libusb_config_descriptor -> IO ())
+ Bindings.Libusb.Descriptors: p'libusb_get_active_config_descriptor :: FunPtr (Ptr C'libusb_device -> Ptr (Ptr C'libusb_config_descriptor) -> IO CInt)
+ Bindings.Libusb.Descriptors: p'libusb_get_config_descriptor :: FunPtr (Ptr C'libusb_device -> Word8 -> Ptr (Ptr C'libusb_config_descriptor) -> IO CInt)
+ Bindings.Libusb.Descriptors: p'libusb_get_config_descriptor_by_value :: FunPtr (Ptr C'libusb_device -> Word8 -> Ptr (Ptr C'libusb_config_descriptor) -> IO CInt)
+ Bindings.Libusb.Descriptors: p'libusb_get_device_descriptor :: FunPtr (Ptr C'libusb_device -> Ptr C'libusb_device_descriptor -> IO CInt)
+ Bindings.Libusb.Descriptors: p'libusb_get_string_descriptor_ascii :: FunPtr (Ptr C'libusb_device_handle -> Word8 -> Ptr CUChar -> CInt -> IO CInt)
+ Bindings.Libusb.Descriptors: type C'libusb_class_code = Word32
+ Bindings.Libusb.Descriptors: type C'libusb_descriptor_type = Word32
+ Bindings.Libusb.Descriptors: type C'libusb_endpoint_direction = Word32
+ Bindings.Libusb.Descriptors: type C'libusb_iso_sync_type = Word32
+ Bindings.Libusb.Descriptors: type C'libusb_iso_usage_type = Word32
+ Bindings.Libusb.Descriptors: type C'libusb_transfer_type = Word32
+ Bindings.Libusb.HandlingAndEnumeration: C'libusb_device :: C'libusb_device
+ Bindings.Libusb.HandlingAndEnumeration: C'libusb_device_handle :: C'libusb_device_handle
+ Bindings.Libusb.HandlingAndEnumeration: c'libusb_attach_kernel_driver :: Ptr C'libusb_device_handle -> CInt -> IO CInt
+ Bindings.Libusb.HandlingAndEnumeration: c'libusb_claim_interface :: Ptr C'libusb_device_handle -> CInt -> IO CInt
+ Bindings.Libusb.HandlingAndEnumeration: c'libusb_clear_halt :: Ptr C'libusb_device_handle -> CUChar -> IO CInt
+ Bindings.Libusb.HandlingAndEnumeration: c'libusb_close :: Ptr C'libusb_device_handle -> IO ()
+ Bindings.Libusb.HandlingAndEnumeration: c'libusb_detach_kernel_driver :: Ptr C'libusb_device_handle -> CInt -> IO CInt
+ Bindings.Libusb.HandlingAndEnumeration: c'libusb_free_device_list :: Ptr (Ptr C'libusb_device) -> CInt -> IO ()
+ Bindings.Libusb.HandlingAndEnumeration: c'libusb_get_bus_number :: Ptr C'libusb_device -> IO Word8
+ Bindings.Libusb.HandlingAndEnumeration: c'libusb_get_configuration :: Ptr C'libusb_device_handle -> Ptr int -> IO CInt
+ Bindings.Libusb.HandlingAndEnumeration: c'libusb_get_device :: Ptr C'libusb_device_handle -> IO (Ptr C'libusb_device)
+ Bindings.Libusb.HandlingAndEnumeration: c'libusb_get_device_address :: Ptr C'libusb_device -> IO Word8
+ Bindings.Libusb.HandlingAndEnumeration: c'libusb_get_device_list :: Ptr C'libusb_context -> Ptr (Ptr (Ptr C'libusb_device)) -> IO C'ssize_t
+ Bindings.Libusb.HandlingAndEnumeration: c'libusb_get_max_packet_size :: Ptr C'libusb_device -> CUChar -> IO CInt
+ Bindings.Libusb.HandlingAndEnumeration: c'libusb_kernel_driver_active :: Ptr C'libusb_device_handle -> CInt -> IO CInt
+ Bindings.Libusb.HandlingAndEnumeration: c'libusb_open :: Ptr C'libusb_device -> Ptr (Ptr C'libusb_device_handle) -> IO CInt
+ Bindings.Libusb.HandlingAndEnumeration: c'libusb_open_device_with_vid_pid :: Ptr C'libusb_context -> Word16 -> Word16 -> IO (Ptr C'libusb_device_handle)
+ Bindings.Libusb.HandlingAndEnumeration: c'libusb_ref_device :: Ptr C'libusb_device -> IO (Ptr C'libusb_device)
+ Bindings.Libusb.HandlingAndEnumeration: c'libusb_release_interface :: Ptr C'libusb_device_handle -> CInt -> IO CInt
+ Bindings.Libusb.HandlingAndEnumeration: c'libusb_reset_device :: Ptr C'libusb_device_handle -> IO CInt
+ Bindings.Libusb.HandlingAndEnumeration: c'libusb_set_configuration :: Ptr C'libusb_device_handle -> CInt -> IO CInt
+ Bindings.Libusb.HandlingAndEnumeration: c'libusb_set_interface_alt_setting :: Ptr C'libusb_device_handle -> CInt -> CInt -> IO CInt
+ Bindings.Libusb.HandlingAndEnumeration: c'libusb_unref_device :: Ptr C'libusb_device -> IO ()
+ Bindings.Libusb.HandlingAndEnumeration: data C'libusb_device
+ Bindings.Libusb.HandlingAndEnumeration: data C'libusb_device_handle
+ Bindings.Libusb.HandlingAndEnumeration: p'libusb_attach_kernel_driver :: FunPtr (Ptr C'libusb_device_handle -> CInt -> IO CInt)
+ Bindings.Libusb.HandlingAndEnumeration: p'libusb_claim_interface :: FunPtr (Ptr C'libusb_device_handle -> CInt -> IO CInt)
+ Bindings.Libusb.HandlingAndEnumeration: p'libusb_clear_halt :: FunPtr (Ptr C'libusb_device_handle -> CUChar -> IO CInt)
+ Bindings.Libusb.HandlingAndEnumeration: p'libusb_close :: FunPtr (Ptr C'libusb_device_handle -> IO ())
+ Bindings.Libusb.HandlingAndEnumeration: p'libusb_detach_kernel_driver :: FunPtr (Ptr C'libusb_device_handle -> CInt -> IO CInt)
+ Bindings.Libusb.HandlingAndEnumeration: p'libusb_free_device_list :: FunPtr (Ptr (Ptr C'libusb_device) -> CInt -> IO ())
+ Bindings.Libusb.HandlingAndEnumeration: p'libusb_get_bus_number :: FunPtr (Ptr C'libusb_device -> IO Word8)
+ Bindings.Libusb.HandlingAndEnumeration: p'libusb_get_configuration :: FunPtr (Ptr C'libusb_device_handle -> Ptr int -> IO CInt)
+ Bindings.Libusb.HandlingAndEnumeration: p'libusb_get_device :: FunPtr (Ptr C'libusb_device_handle -> IO (Ptr C'libusb_device))
+ Bindings.Libusb.HandlingAndEnumeration: p'libusb_get_device_address :: FunPtr (Ptr C'libusb_device -> IO Word8)
+ Bindings.Libusb.HandlingAndEnumeration: p'libusb_get_device_list :: FunPtr (Ptr C'libusb_context -> Ptr (Ptr (Ptr C'libusb_device)) -> IO C'ssize_t)
+ Bindings.Libusb.HandlingAndEnumeration: p'libusb_get_max_packet_size :: FunPtr (Ptr C'libusb_device -> CUChar -> IO CInt)
+ Bindings.Libusb.HandlingAndEnumeration: p'libusb_kernel_driver_active :: FunPtr (Ptr C'libusb_device_handle -> CInt -> IO CInt)
+ Bindings.Libusb.HandlingAndEnumeration: p'libusb_open :: FunPtr (Ptr C'libusb_device -> Ptr (Ptr C'libusb_device_handle) -> IO CInt)
+ Bindings.Libusb.HandlingAndEnumeration: p'libusb_open_device_with_vid_pid :: FunPtr (Ptr C'libusb_context -> Word16 -> Word16 -> IO (Ptr C'libusb_device_handle))
+ Bindings.Libusb.HandlingAndEnumeration: p'libusb_ref_device :: FunPtr (Ptr C'libusb_device -> IO (Ptr C'libusb_device))
+ Bindings.Libusb.HandlingAndEnumeration: p'libusb_release_interface :: FunPtr (Ptr C'libusb_device_handle -> CInt -> IO CInt)
+ Bindings.Libusb.HandlingAndEnumeration: p'libusb_reset_device :: FunPtr (Ptr C'libusb_device_handle -> IO CInt)
+ Bindings.Libusb.HandlingAndEnumeration: p'libusb_set_configuration :: FunPtr (Ptr C'libusb_device_handle -> CInt -> IO CInt)
+ Bindings.Libusb.HandlingAndEnumeration: p'libusb_set_interface_alt_setting :: FunPtr (Ptr C'libusb_device_handle -> CInt -> CInt -> IO CInt)
+ Bindings.Libusb.HandlingAndEnumeration: p'libusb_unref_device :: FunPtr (Ptr C'libusb_device -> IO ())
+ Bindings.Libusb.InitializationDeinitialization: C'libusb_context :: C'libusb_context
+ Bindings.Libusb.InitializationDeinitialization: c'libusb_exit :: Ptr C'libusb_context -> IO ()
+ Bindings.Libusb.InitializationDeinitialization: c'libusb_init :: Ptr (Ptr C'libusb_context) -> IO CInt
+ Bindings.Libusb.InitializationDeinitialization: c'libusb_set_debug :: Ptr C'libusb_context -> CInt -> IO ()
+ Bindings.Libusb.InitializationDeinitialization: data C'libusb_context
+ Bindings.Libusb.InitializationDeinitialization: p'libusb_exit :: FunPtr (Ptr C'libusb_context -> IO ())
+ Bindings.Libusb.InitializationDeinitialization: p'libusb_init :: FunPtr (Ptr (Ptr C'libusb_context) -> IO CInt)
+ Bindings.Libusb.InitializationDeinitialization: p'libusb_set_debug :: FunPtr (Ptr C'libusb_context -> CInt -> IO ())
+ Bindings.Libusb.Miscellaneous: c'LIBUSB_ERROR_ACCESS :: (Num a) => a
+ Bindings.Libusb.Miscellaneous: c'LIBUSB_ERROR_BUSY :: (Num a) => a
+ Bindings.Libusb.Miscellaneous: c'LIBUSB_ERROR_INTERRUPTED :: (Num a) => a
+ Bindings.Libusb.Miscellaneous: c'LIBUSB_ERROR_INVALID_PARAM :: (Num a) => a
+ Bindings.Libusb.Miscellaneous: c'LIBUSB_ERROR_IO :: (Num a) => a
+ Bindings.Libusb.Miscellaneous: c'LIBUSB_ERROR_NOT_FOUND :: (Num a) => a
+ Bindings.Libusb.Miscellaneous: c'LIBUSB_ERROR_NOT_SUPPORTED :: (Num a) => a
+ Bindings.Libusb.Miscellaneous: c'LIBUSB_ERROR_NO_DEVICE :: (Num a) => a
+ Bindings.Libusb.Miscellaneous: c'LIBUSB_ERROR_NO_MEM :: (Num a) => a
+ Bindings.Libusb.Miscellaneous: c'LIBUSB_ERROR_OTHER :: (Num a) => a
+ Bindings.Libusb.Miscellaneous: c'LIBUSB_ERROR_OVERFLOW :: (Num a) => a
+ Bindings.Libusb.Miscellaneous: c'LIBUSB_ERROR_PIPE :: (Num a) => a
+ Bindings.Libusb.Miscellaneous: c'LIBUSB_ERROR_TIMEOUT :: (Num a) => a
+ Bindings.Libusb.Miscellaneous: c'LIBUSB_RECIPIENT_DEVICE :: (Num a) => a
+ Bindings.Libusb.Miscellaneous: c'LIBUSB_RECIPIENT_ENDPOINT :: (Num a) => a
+ Bindings.Libusb.Miscellaneous: c'LIBUSB_RECIPIENT_INTERFACE :: (Num a) => a
+ Bindings.Libusb.Miscellaneous: c'LIBUSB_RECIPIENT_OTHER :: (Num a) => a
+ Bindings.Libusb.Miscellaneous: c'LIBUSB_REQUEST_CLEAR_FEATURE :: (Num a) => a
+ Bindings.Libusb.Miscellaneous: c'LIBUSB_REQUEST_GET_CONFIGURATION :: (Num a) => a
+ Bindings.Libusb.Miscellaneous: c'LIBUSB_REQUEST_GET_DESCRIPTOR :: (Num a) => a
+ Bindings.Libusb.Miscellaneous: c'LIBUSB_REQUEST_GET_INTERFACE :: (Num a) => a
+ Bindings.Libusb.Miscellaneous: c'LIBUSB_REQUEST_GET_STATUS :: (Num a) => a
+ Bindings.Libusb.Miscellaneous: c'LIBUSB_REQUEST_SET_ADDRESS :: (Num a) => a
+ Bindings.Libusb.Miscellaneous: c'LIBUSB_REQUEST_SET_CONFIGURATION :: (Num a) => a
+ Bindings.Libusb.Miscellaneous: c'LIBUSB_REQUEST_SET_DESCRIPTOR :: (Num a) => a
+ Bindings.Libusb.Miscellaneous: c'LIBUSB_REQUEST_SET_FEATURE :: (Num a) => a
+ Bindings.Libusb.Miscellaneous: c'LIBUSB_REQUEST_SET_INTERFACE :: (Num a) => a
+ Bindings.Libusb.Miscellaneous: c'LIBUSB_REQUEST_SYNCH_FRAME :: (Num a) => a
+ Bindings.Libusb.Miscellaneous: c'LIBUSB_REQUEST_TYPE_CLASS :: (Num a) => a
+ Bindings.Libusb.Miscellaneous: c'LIBUSB_REQUEST_TYPE_RESERVED :: (Num a) => a
+ Bindings.Libusb.Miscellaneous: c'LIBUSB_REQUEST_TYPE_STANDARD :: (Num a) => a
+ Bindings.Libusb.Miscellaneous: c'LIBUSB_REQUEST_TYPE_VENDOR :: (Num a) => a
+ Bindings.Libusb.Miscellaneous: c'LIBUSB_SUCCESS :: (Num a) => a
+ Bindings.Libusb.Miscellaneous: c'libusb_cpu_to_le16 :: Word16 -> Word16
+ Bindings.Libusb.Miscellaneous: c'libusb_le16_to_cpu :: Word16 -> Word16
+ Bindings.Libusb.Miscellaneous: type C'libusb_error = Int32
+ Bindings.Libusb.Miscellaneous: type C'libusb_request_recipient = Word32
+ Bindings.Libusb.Miscellaneous: type C'libusb_request_type = Word32
+ Bindings.Libusb.Miscellaneous: type C'libusb_standard_request = Word32
+ Bindings.Libusb.PollingAndTiming: C'libusb_pollfd :: CInt -> CShort -> C'libusb_pollfd
+ Bindings.Libusb.PollingAndTiming: c'libusb_event_handler_active :: Ptr C'libusb_context -> IO CInt
+ Bindings.Libusb.PollingAndTiming: c'libusb_event_handling_ok :: Ptr C'libusb_context -> IO CInt
+ Bindings.Libusb.PollingAndTiming: c'libusb_get_next_timeout :: Ptr C'libusb_context -> Ptr C'timeval -> IO CInt
+ Bindings.Libusb.PollingAndTiming: c'libusb_get_pollfds :: Ptr C'libusb_context -> IO (Ptr (Ptr C'libusb_pollfd))
+ Bindings.Libusb.PollingAndTiming: c'libusb_handle_events :: Ptr C'libusb_context -> IO CInt
+ Bindings.Libusb.PollingAndTiming: c'libusb_handle_events_locked :: Ptr C'libusb_context -> Ptr C'timeval -> IO CInt
+ Bindings.Libusb.PollingAndTiming: c'libusb_handle_events_timeout :: Ptr C'libusb_context -> Ptr C'timeval -> IO CInt
+ Bindings.Libusb.PollingAndTiming: c'libusb_lock_event_waiters :: Ptr C'libusb_context -> IO ()
+ Bindings.Libusb.PollingAndTiming: c'libusb_lock_events :: Ptr C'libusb_context -> IO ()
+ Bindings.Libusb.PollingAndTiming: c'libusb_set_pollfd_notifiers :: Ptr C'libusb_context -> C'libusb_pollfd_added_cb -> C'libusb_pollfd_removed_cb -> Ptr () -> IO ()
+ Bindings.Libusb.PollingAndTiming: c'libusb_try_lock_events :: Ptr C'libusb_context -> IO CInt
+ Bindings.Libusb.PollingAndTiming: c'libusb_unlock_event_waiters :: Ptr C'libusb_context -> IO ()
+ Bindings.Libusb.PollingAndTiming: c'libusb_unlock_events :: Ptr C'libusb_context -> IO ()
+ Bindings.Libusb.PollingAndTiming: c'libusb_wait_for_event :: Ptr C'libusb_context -> Ptr C'timeval -> IO CInt
+ Bindings.Libusb.PollingAndTiming: data C'libusb_pollfd
+ Bindings.Libusb.PollingAndTiming: instance Storable C'libusb_pollfd
+ Bindings.Libusb.PollingAndTiming: libusb_pollfd'events :: C'libusb_pollfd -> CShort
+ Bindings.Libusb.PollingAndTiming: libusb_pollfd'fd :: C'libusb_pollfd -> CInt
+ Bindings.Libusb.PollingAndTiming: mk'libusb_pollfd_added_cb :: (CInt -> CShort -> Ptr () -> IO ()) -> IO C'libusb_pollfd_added_cb
+ Bindings.Libusb.PollingAndTiming: mk'libusb_pollfd_removed_cb :: (CInt -> Ptr () -> IO ()) -> IO C'libusb_pollfd_removed_cb
+ Bindings.Libusb.PollingAndTiming: p'libusb_event_handler_active :: FunPtr (Ptr C'libusb_context -> IO CInt)
+ Bindings.Libusb.PollingAndTiming: p'libusb_event_handling_ok :: FunPtr (Ptr C'libusb_context -> IO CInt)
+ Bindings.Libusb.PollingAndTiming: p'libusb_get_next_timeout :: FunPtr (Ptr C'libusb_context -> Ptr C'timeval -> IO CInt)
+ Bindings.Libusb.PollingAndTiming: p'libusb_get_pollfds :: FunPtr (Ptr C'libusb_context -> IO (Ptr (Ptr C'libusb_pollfd)))
+ Bindings.Libusb.PollingAndTiming: p'libusb_handle_events :: FunPtr (Ptr C'libusb_context -> IO CInt)
+ Bindings.Libusb.PollingAndTiming: p'libusb_handle_events_locked :: FunPtr (Ptr C'libusb_context -> Ptr C'timeval -> IO CInt)
+ Bindings.Libusb.PollingAndTiming: p'libusb_handle_events_timeout :: FunPtr (Ptr C'libusb_context -> Ptr C'timeval -> IO CInt)
+ Bindings.Libusb.PollingAndTiming: p'libusb_lock_event_waiters :: FunPtr (Ptr C'libusb_context -> IO ())
+ Bindings.Libusb.PollingAndTiming: p'libusb_lock_events :: FunPtr (Ptr C'libusb_context -> IO ())
+ Bindings.Libusb.PollingAndTiming: p'libusb_set_pollfd_notifiers :: FunPtr (Ptr C'libusb_context -> C'libusb_pollfd_added_cb -> C'libusb_pollfd_removed_cb -> Ptr () -> IO ())
+ Bindings.Libusb.PollingAndTiming: p'libusb_try_lock_events :: FunPtr (Ptr C'libusb_context -> IO CInt)
+ Bindings.Libusb.PollingAndTiming: p'libusb_unlock_event_waiters :: FunPtr (Ptr C'libusb_context -> IO ())
+ Bindings.Libusb.PollingAndTiming: p'libusb_unlock_events :: FunPtr (Ptr C'libusb_context -> IO ())
+ Bindings.Libusb.PollingAndTiming: p'libusb_wait_for_event :: FunPtr (Ptr C'libusb_context -> Ptr C'timeval -> IO CInt)
+ Bindings.Libusb.PollingAndTiming: type C'libusb_pollfd_added_cb = FunPtr (CInt -> CShort -> Ptr () -> IO ())
+ Bindings.Libusb.PollingAndTiming: type C'libusb_pollfd_removed_cb = FunPtr (CInt -> Ptr () -> IO ())
+ Bindings.Libusb.Synchronous: c'libusb_bulk_transfer :: Ptr C'libusb_device_handle -> CUChar -> Ptr CUChar -> CInt -> Ptr CInt -> CUInt -> IO CInt
+ Bindings.Libusb.Synchronous: c'libusb_control_transfer :: Ptr C'libusb_device_handle -> Word8 -> Word8 -> Word16 -> Word16 -> Ptr CUChar -> Word16 -> CUInt -> IO CInt
+ Bindings.Libusb.Synchronous: c'libusb_interrupt_transfer :: Ptr C'libusb_device_handle -> CUChar -> Ptr CUChar -> CInt -> Ptr CInt -> CUInt -> IO CInt
+ Bindings.Libusb.Synchronous: p'libusb_bulk_transfer :: FunPtr (Ptr C'libusb_device_handle -> CUChar -> Ptr CUChar -> CInt -> Ptr CInt -> CUInt -> IO CInt)
+ Bindings.Libusb.Synchronous: p'libusb_control_transfer :: FunPtr (Ptr C'libusb_device_handle -> Word8 -> Word8 -> Word16 -> Word16 -> Ptr CUChar -> Word16 -> CUInt -> IO CInt)
+ Bindings.Libusb.Synchronous: p'libusb_interrupt_transfer :: FunPtr (Ptr C'libusb_device_handle -> CUChar -> Ptr CUChar -> CInt -> Ptr CInt -> CUInt -> IO CInt)
Files
- .hg_archival.txt +1/−1
- bindings-libusb.cabal +18/−21
- src/Bindings/Libusb.hs +0/−211
- src/Bindings/Libusb.hsc +18/−0
- src/Bindings/Libusb/Asynchronous.hsc +86/−0
- src/Bindings/Libusb/Descriptors.hsc +150/−0
- src/Bindings/Libusb/HandlingAndEnumeration.hsc +52/−0
- src/Bindings/Libusb/InitializationDeinitialization.hsc +14/−0
- src/Bindings/Libusb/Miscellaneous.hsc +57/−0
- src/Bindings/Libusb/PollingAndTiming.hsc +40/−0
- src/Bindings/Libusb/Synchronous.hsc +18/−0
- src/LibusbConstants.hs +0/−229
- src/LibusbFunctions.hs +0/−262
- src/LibusbTypes.hs +0/−651
- src/constants.c +0/−377
- src/functions.c +0/−129
- src/include/libusb.h +1201/−0
- src/inlines.c +116/−0
- src/types.c +0/−427
.hg_archival.txt view
@@ -1,2 +1,2 @@ repo: 98941e61c842f8b0ee8011f6a907f7e5f55fe0ac-node: 64fa5d451fc22872970e333809c1611ada432698+node: b87cf92e1808c07f761275eb45fd325ea6126549
bindings-libusb.cabal view
@@ -1,9 +1,9 @@ cabal-version: >= 1.2.3 name: bindings-libusb-homepage: http://bitbucket.org/mauricio/bindings+homepage: http://bitbucket.org/mauricio/bindings-libusb synopsis:- Check bindings-common package for directions.-version: 0.0.7+ Low level bindings to libusb.+version: 1.0 license: BSD3 license-file: LICENSE maintainer: Maurício C. Antunes <mauricio.antunes@gmail.com>@@ -11,28 +11,25 @@ build-type: Simple category: FFI bug-reports: http://bitbucket.org/mauricio/bindings-libusb/issues-stability: Needs users feedback library hs-source-dirs: src extensions: ForeignFunctionInterface- TypeSynonymInstances- ScopedTypeVariables- EmptyDataDecls- TypeFamilies build-depends:- base >= 3 && <5, bindings-posix, bindings-common+ base >= 3 && < 5,+ bindings-common >= 1 && < 2,+ bindings-posix >= 1 && < 2 exposed-modules: Bindings.Libusb- other-modules:- LibusbConstants- LibusbFunctions- LibusbTypes--- This has to be commented so hackage won't complain--- about a missing library.--- c-sources:--- src/constants.c--- src/functions.c--- src/types.c--- pkgconfig-depends:--- libusb-1.0 >= 1.0.0+ Bindings.Libusb.Asynchronous+ Bindings.Libusb.Descriptors+ Bindings.Libusb.HandlingAndEnumeration+ Bindings.Libusb.InitializationDeinitialization+ Bindings.Libusb.Miscellaneous+ Bindings.Libusb.PollingAndTiming+ Bindings.Libusb.Synchronous+ include-dirs:+ src/include+ extra-libraries:+ usb-1.0+ c-sources: src/inlines.c
− src/Bindings/Libusb.hs
@@ -1,211 +0,0 @@-module Bindings.Libusb (-- -- * Library initialization/deinitialization-- -- | <http://libusb.sourceforge.net/api-1.0/group__lib.html>-- Libusb_context,- libusb_set_debug,- libusb_init,- libusb_exit,- ptr_libusb_exit,-- -- * Device handling and enumeration-- -- | <http://libusb.sourceforge.net/api-1.0/group__dev.html>-- Libusb_device,- Libusb_device_handle,- libusb_get_device_list,- libusb_free_device_list,- libusb_get_bus_number,- libusb_get_device_address,- libusb_get_max_packet_size,- libusb_ref_device,- libusb_unref_device,- ptr_libusb_unref_device,- libusb_open,- libusb_open_device_with_vid_pid,- libusb_close,- libusb_get_device,- libusb_get_configuration,- libusb_set_configuration,- libusb_claim_interface,- libusb_release_interface,- libusb_set_interface_alt_setting,- libusb_clear_halt,- libusb_reset_device,- libusb_kernel_driver_active,- libusb_attach_kernel_driver,- libusb_detach_kernel_driver,-- -- * Miscellaneous-- -- | <http://libusb.sourceforge.net/api-1.0/group__misc.html>-- libusb_cpu_to_le16,- libusb_le16_to_cpu,- Libusb_standard_request,- _LIBUSB_REQUEST_GET_STATUS,- _LIBUSB_REQUEST_CLEAR_FEATURE,- _LIBUSB_REQUEST_SET_FEATURE,- _LIBUSB_REQUEST_SET_ADDRESS,- _LIBUSB_REQUEST_GET_DESCRIPTOR,- _LIBUSB_REQUEST_SET_DESCRIPTOR,- _LIBUSB_REQUEST_GET_CONFIGURATION,- _LIBUSB_REQUEST_SET_CONFIGURATION,- _LIBUSB_REQUEST_GET_INTERFACE,- _LIBUSB_REQUEST_SET_INTERFACE,- _LIBUSB_REQUEST_SYNCH_FRAME,- Libusb_request_type,- _LIBUSB_REQUEST_TYPE_STANDARD,- _LIBUSB_REQUEST_TYPE_CLASS,- _LIBUSB_REQUEST_TYPE_VENDOR,- _LIBUSB_REQUEST_TYPE_RESERVED,- Libusb_request_recipient,- _LIBUSB_RECIPIENT_DEVICE,- _LIBUSB_RECIPIENT_INTERFACE,- _LIBUSB_RECIPIENT_ENDPOINT,- _LIBUSB_RECIPIENT_OTHER,- Libusb_error,- _LIBUSB_SUCCESS,- _LIBUSB_ERROR_IO,- _LIBUSB_ERROR_INVALID_PARAM,- _LIBUSB_ERROR_ACCESS,- _LIBUSB_ERROR_NO_DEVICE,- _LIBUSB_ERROR_NOT_FOUND,- _LIBUSB_ERROR_BUSY,- _LIBUSB_ERROR_TIMEOUT,- _LIBUSB_ERROR_OVERFLOW,- _LIBUSB_ERROR_PIPE,- _LIBUSB_ERROR_INTERRUPTED,- _LIBUSB_ERROR_NO_MEM,- _LIBUSB_ERROR_NOT_SUPPORTED,- _LIBUSB_ERROR_OTHER,-- -- * USB descriptors-- -- | <http://libusb.sourceforge.net/api-1.0/group__desc.html>-- Libusb_device_descriptor(..),- Libusb_endpoint_descriptor(..),- Libusb_interface_descriptor(..),- Libusb_interface(..),- Libusb_config_descriptor(..),- Libusb_class_code,- _LIBUSB_CLASS_PER_INTERFACE,- _LIBUSB_CLASS_AUDIO,- _LIBUSB_CLASS_COMM,- _LIBUSB_CLASS_HID,- _LIBUSB_CLASS_PRINTER,- _LIBUSB_CLASS_PTP,- _LIBUSB_CLASS_MASS_STORAGE,- _LIBUSB_CLASS_HUB,- _LIBUSB_CLASS_DATA,- _LIBUSB_CLASS_VENDOR_SPEC,- Libusb_descriptor_type,- _LIBUSB_DT_DEVICE,- _LIBUSB_DT_CONFIG,- _LIBUSB_DT_STRING,- _LIBUSB_DT_INTERFACE,- _LIBUSB_DT_ENDPOINT,- _LIBUSB_DT_HID,- _LIBUSB_DT_REPORT,- _LIBUSB_DT_PHYSICAL,- _LIBUSB_DT_HUB,- Libusb_endpoint_direction,- _LIBUSB_ENDPOINT_IN,- _LIBUSB_ENDPOINT_OUT,- Libusb_transfer_type,- _LIBUSB_TRANSFER_TYPE_CONTROL,- _LIBUSB_TRANSFER_TYPE_ISOCHRONOUS,- _LIBUSB_TRANSFER_TYPE_BULK,- _LIBUSB_TRANSFER_TYPE_INTERRUPT,- Libusb_iso_sync_type,- _LIBUSB_ISO_SYNC_TYPE_NONE,- _LIBUSB_ISO_SYNC_TYPE_ASYNC,- _LIBUSB_ISO_SYNC_TYPE_ADAPTIVE,- _LIBUSB_ISO_SYNC_TYPE_SYNC,- Libusb_iso_usage_type,- _LIBUSB_ISO_USAGE_TYPE_DATA,- _LIBUSB_ISO_USAGE_TYPE_FEEDBACK,- _LIBUSB_ISO_USAGE_TYPE_IMPLICIT,- libusb_get_device_descriptor,- libusb_get_active_config_descriptor,- libusb_get_config_descriptor,- libusb_get_config_descriptor_by_value,- libusb_free_config_descriptor,- libusb_get_string_descriptor_ascii,- libusb_get_descriptor,- libusb_get_string_descriptor,-- -- * Asynchronous device I/O-- -- | <http://libusb.sourceforge.net/api-1.0/group__asyncio.html>-- Libusb_control_setup,- Libusb_iso_packet_descriptor,- Libusb_transfer,- Libusb_transfer_cb_fn,- Libusb_transfer_status,- _LIBUSB_TRANSFER_COMPLETED,- _LIBUSB_TRANSFER_ERROR,- _LIBUSB_TRANSFER_TIMED_OUT,- _LIBUSB_TRANSFER_CANCELLED,- _LIBUSB_TRANSFER_STALL,- _LIBUSB_TRANSFER_NO_DEVICE,- _LIBUSB_TRANSFER_OVERFLOW,- Libusb_transfer_flags,- _LIBUSB_TRANSFER_SHORT_NOT_OK,- _LIBUSB_TRANSFER_FREE_BUFFER,- _LIBUSB_TRANSFER_FREE_TRANSFER,- libusb_alloc_transfer,- libusb_free_transfer,- libusb_submit_transfer,- libusb_cancel_transfer,- libusb_control_transfer_get_data,- libusb_control_transfer_get_setup,- libusb_fill_control_setup,- libusb_fill_control_transfer,- libusb_fill_bulk_transfer,- libusb_fill_interrupt_transfer,- libusb_fill_iso_transfer,- libusb_set_iso_packet_lengths,- libusb_get_iso_packet_buffer,- libusb_get_iso_packet_buffer_simple,-- -- * Polling and timing-- -- | <http://libusb.sourceforge.net/api-1.0/group__poll.html>-- Libusb_pollfd,- Libusb_pollfd_added_cb,- Libusb_pollfd_removed_cb,- libusb_try_lock_events,- libusb_lock_events,- libusb_unlock_events,- libusb_event_handling_ok,- libusb_event_handler_active,- libusb_lock_event_waiters,- libusb_unlock_event_waiters,- libusb_wait_for_event,- libusb_handle_events_timeout,- libusb_handle_events,- libusb_handle_events_locked,- libusb_get_next_timeout,- libusb_set_pollfd_notifiers,- libusb_get_pollfds,-- -- * Synchronous device I/O-- -- | <http://libusb.sourceforge.net/api-1.0/group__syncio.html>-- libusb_interrupt_transfer,- libusb_bulk_transfer,- libusb_control_transfer-- ) where--import LibusbTypes-import LibusbFunctions-import LibusbConstants
+ src/Bindings/Libusb.hsc view
@@ -0,0 +1,18 @@+-- | <http://libusb.sourceforge.net/api-1.0>++module Bindings.Libusb (+ module Bindings.Libusb.Asynchronous,+ module Bindings.Libusb.Descriptors,+ module Bindings.Libusb.HandlingAndEnumeration,+ module Bindings.Libusb.InitializationDeinitialization,+ module Bindings.Libusb.Miscellaneous,+ module Bindings.Libusb.PollingAndTiming,+ module Bindings.Libusb.Synchronous,+ ) where+import Bindings.Libusb.Asynchronous+import Bindings.Libusb.Descriptors+import Bindings.Libusb.HandlingAndEnumeration+import Bindings.Libusb.InitializationDeinitialization+import Bindings.Libusb.Miscellaneous+import Bindings.Libusb.PollingAndTiming+import Bindings.Libusb.Synchronous
+ src/Bindings/Libusb/Asynchronous.hsc view
@@ -0,0 +1,86 @@+#include <bindings.macros.h>+#include <libusb.h>++-- | <http://libusb.sourceforge.net/api-1.0/group__asyncio.html>++module Bindings.Libusb.Asynchronous where+import Foreign+import Foreign.C+import Bindings.Libusb.HandlingAndEnumeration++#starttype struct libusb_control_setup+#field bmRequestType , Word8+#field bRequest , Word8+#field wValue , Word16+#field wIndex , Word16+#field wLength , Word16+#stoptype++#starttype struct libusb_iso_packet_descriptor+#field length , CUInt+#field actual_length , CUInt+#field status , <libusb_transfer_status>+#stoptype++#starttype struct libusb_transfer+#field dev_handle , Ptr <libusb_device_handle>+#field flags , Word8+#field endpoint , CUChar+#field type , CUChar+#field timeout , CUInt+#field status , <libusb_transfer_status>+#field length , CInt+#field actual_length , CInt+#field callback , <libusb_transfer_cb_fn>+#field user_data , Ptr ()+#field buffer , Ptr CUChar+#field num_iso_packets , CInt+#stoptype++#callback libusb_transfer_cb_fn , Ptr <libusb_transfer> -> IO ()++#integral_t enum libusb_transfer_status++#num LIBUSB_TRANSFER_COMPLETED+#num LIBUSB_TRANSFER_ERROR+#num LIBUSB_TRANSFER_TIMED_OUT+#num LIBUSB_TRANSFER_CANCELLED+#num LIBUSB_TRANSFER_STALL+#num LIBUSB_TRANSFER_NO_DEVICE+#num LIBUSB_TRANSFER_OVERFLOW++#integral_t enum libusb_transfer_flags++#num LIBUSB_TRANSFER_SHORT_NOT_OK+#num LIBUSB_TRANSFER_FREE_BUFFER+#num LIBUSB_TRANSFER_FREE_TRANSFER++#ccall libusb_alloc_transfer , CInt -> \+ IO (Ptr <libusb_transfer>)+#ccall libusb_free_transfer , Ptr <libusb_transfer> -> IO ()+#ccall libusb_submit_transfer , Ptr <libusb_transfer> -> IO CInt+#ccall libusb_cancel_transfer , Ptr <libusb_transfer> -> IO CInt+#cinline libusb_control_transfer_get_data , Ptr <libusb_transfer> -> \+ IO (Ptr CUChar)+#cinline libusb_control_transfer_get_setup , Ptr <libusb_transfer> -> \+ IO (Ptr <libusb_control_setup>)+#cinline libusb_fill_control_setup , Ptr CUChar -> Word8 -> Word8 -> \+ Word16 -> Word16 -> Word16 -> IO ()+#cinline libusb_fill_control_transfer , Ptr <libusb_transfer> -> \+ Ptr <libusb_device_handle> -> Ptr CUChar -> \+ <libusb_transfer_cb_fn> -> Ptr () -> CUInt -> IO ()+#cinline libusb_fill_bulk_transfer , Ptr <libusb_transfer> -> \+ Ptr <libusb_device_handle> -> CUChar -> Ptr CUChar -> CInt -> \+ <libusb_transfer_cb_fn> -> Ptr () -> CUInt -> IO ()+#cinline libusb_fill_interrupt_transfer , Ptr <libusb_transfer> -> \+ Ptr <libusb_device_handle> -> CUChar -> Ptr CUChar -> CInt -> \+ <libusb_transfer_cb_fn> -> Ptr () -> CUInt -> IO ()+#cinline libusb_fill_iso_transfer , Ptr <libusb_transfer> -> \+ Ptr <libusb_device_handle> -> CUChar -> Ptr CUChar -> CInt -> \+ CInt -> <libusb_transfer_cb_fn> -> Ptr () -> CUInt -> IO ()+#cinline libusb_set_iso_packet_lengths , Ptr <libusb_transfer> -> \+ CUInt -> IO ()+#cinline libusb_get_iso_packet_buffer , Ptr <libusb_transfer> -> \+ CUInt -> IO (Ptr CUChar)+#cinline libusb_get_iso_packet_buffer_simple , Ptr <libusb_transfer> -> \+ CUInt -> IO (Ptr CUChar)
+ src/Bindings/Libusb/Descriptors.hsc view
@@ -0,0 +1,150 @@+#include <bindings.macros.h>+#include <libusb.h>++-- | <http://libusb.sourceforge.net/api-1.0/group__desc.html>++module Bindings.Libusb.Descriptors where+import Foreign+import Foreign.C+import Bindings.Libusb.HandlingAndEnumeration++#starttype struct libusb_device_descriptor+#field bLength , Word8+#field bDescriptorType , Word8+#field bcdUSB , Word16+#field bDeviceClass , Word8+#field bDeviceSubClass , Word8+#field bDeviceProtocol , Word8+#field bMaxPacketSize0 , Word8+#field idVendor , Word16+#field idProduct , Word16+#field bcdDevice , Word16+#field iManufacturer , Word8+#field iProduct , Word8+#field iSerialNumber , Word8+#field bNumConfigurations , Word8+#stoptype++#starttype struct libusb_endpoint_descriptor+#field bLength , Word8+#field bDescriptorType , Word8+#field bEndpointAddress , Word8+#field bmAttributes , Word8+#field wMaxPacketSize , Word16+#field bInterval , Word8+#field bRefresh , Word8+#field bSynchAddress , Word8+#field extra , Ptr CUChar+#field extra_length , CInt+#stoptype++#starttype struct libusb_interface_descriptor+#field bLength , Word8+#field bDescriptorType , Word8+#field bInterfaceNumber , Word8+#field bAlternateSetting , Word8+#field bNumEndpoints , Word8+#field bInterfaceClass , Word8+#field bInterfaceSubClass , Word8+#field bInterfaceProtocol , Word8+#field iInterface , Word8+#field endpoint , Ptr <libusb_endpoint_descriptor>+#field extra , Ptr CUChar+#field extra_length , CInt+#stoptype++#starttype struct libusb_interface+#field altsetting , Ptr <libusb_interface_descriptor>+#field num_altsetting , CInt+#stoptype++#starttype struct libusb_config_descriptor+#field bLength , Word8+#field bDescriptorType , Word8+#field wTotalLength , Word16+#field bNumInterfaces , Word8+#field bConfigurationValue , Word8+#field iConfiguration , Word8+#field bmAttributes , Word8+#field MaxPower , Word8+#field interface , Ptr <libusb_interface>+#field extra , Ptr CUChar+#field extra_length , CInt+#stoptype++#integral_t enum libusb_class_code++#num LIBUSB_CLASS_PER_INTERFACE+#num LIBUSB_CLASS_AUDIO+#num LIBUSB_CLASS_COMM+#num LIBUSB_CLASS_HID+#num LIBUSB_CLASS_PRINTER+#num LIBUSB_CLASS_PTP+#num LIBUSB_CLASS_MASS_STORAGE+#num LIBUSB_CLASS_HUB+#num LIBUSB_CLASS_DATA+#num LIBUSB_CLASS_VENDOR_SPEC++#integral_t enum libusb_descriptor_type++#num LIBUSB_DT_DEVICE+#num LIBUSB_DT_CONFIG+#num LIBUSB_DT_STRING+#num LIBUSB_DT_INTERFACE+#num LIBUSB_DT_ENDPOINT+#num LIBUSB_DT_HID+#num LIBUSB_DT_REPORT+#num LIBUSB_DT_PHYSICAL+#num LIBUSB_DT_HUB++#integral_t enum libusb_endpoint_direction++#num LIBUSB_ENDPOINT_IN+#num LIBUSB_ENDPOINT_OUT++#integral_t enum libusb_transfer_type++#num LIBUSB_TRANSFER_TYPE_CONTROL+#num LIBUSB_TRANSFER_TYPE_ISOCHRONOUS+#num LIBUSB_TRANSFER_TYPE_BULK+#num LIBUSB_TRANSFER_TYPE_INTERRUPT++#integral_t enum libusb_iso_sync_type++#num LIBUSB_ISO_SYNC_TYPE_NONE+#num LIBUSB_ISO_SYNC_TYPE_ASYNC+#num LIBUSB_ISO_SYNC_TYPE_ADAPTIVE+#num LIBUSB_ISO_SYNC_TYPE_SYNC++#integral_t enum libusb_iso_usage_type++#num LIBUSB_ISO_USAGE_TYPE_DATA+#num LIBUSB_ISO_USAGE_TYPE_FEEDBACK+#num LIBUSB_ISO_USAGE_TYPE_IMPLICIT++#ccall libusb_get_device_descriptor , Ptr <libusb_device> -> \+ Ptr <libusb_device_descriptor> -> IO CInt++#ccall libusb_get_active_config_descriptor , Ptr <libusb_device> -> \+ Ptr (Ptr <libusb_config_descriptor>) -> IO CInt++#ccall libusb_get_config_descriptor , Ptr <libusb_device> -> \+ Word8 -> Ptr (Ptr <libusb_config_descriptor>) -> IO CInt++#ccall libusb_get_config_descriptor_by_value , Ptr <libusb_device> -> \+ Word8 -> Ptr (Ptr <libusb_config_descriptor>) -> \+ IO CInt++#ccall libusb_free_config_descriptor , Ptr <libusb_config_descriptor> -> \+ IO ()++#ccall libusb_get_string_descriptor_ascii , Ptr <libusb_device_handle> -> \+ Word8 -> Ptr CUChar -> CInt -> IO CInt++#cinline libusb_get_descriptor , Ptr <libusb_device_handle> -> \+ Word8 -> Word8 -> Ptr CUChar -> \+ CInt -> IO CInt++#cinline libusb_get_string_descriptor , Ptr <libusb_device_handle> -> \+ Word8 -> Word16 -> Ptr CUChar -> \+ CInt -> IO CInt
+ src/Bindings/Libusb/HandlingAndEnumeration.hsc view
@@ -0,0 +1,52 @@+#include <bindings.macros.h>+#include <libusb.h>++-- | <http://libusb.sourceforge.net/api-1.0/group__dev.html>++module Bindings.Libusb.HandlingAndEnumeration where+import Foreign+import Foreign.C+import Bindings.Posix.Sys.Types+import Bindings.Libusb.InitializationDeinitialization++#opaque_t libusb_device+#opaque_t libusb_device_handle++#ccall libusb_get_device_list , Ptr <libusb_context> -> \+ Ptr (Ptr (Ptr <libusb_device>)) -> IO <ssize_t>+#ccall libusb_free_device_list , Ptr (Ptr <libusb_device>) -> \+ CInt -> IO ()+#ccall libusb_get_bus_number , Ptr <libusb_device> -> IO Word8+#ccall libusb_get_device_address , Ptr <libusb_device> -> IO Word8+#ccall libusb_get_max_packet_size , Ptr <libusb_device> -> \+ CUChar -> IO CInt+#ccall libusb_ref_device , Ptr <libusb_device> -> \+ IO (Ptr <libusb_device>)+#ccall libusb_unref_device , Ptr <libusb_device> -> IO ()+#ccall libusb_open , Ptr <libusb_device> -> \+ Ptr (Ptr <libusb_device_handle>) -> IO CInt+#ccall libusb_open_device_with_vid_pid , Ptr <libusb_context> -> \+ Word16 -> Word16 -> \+ IO (Ptr <libusb_device_handle>)+#ccall libusb_close , Ptr <libusb_device_handle> -> IO ()+#ccall libusb_get_device , Ptr <libusb_device_handle> -> \+ IO (Ptr <libusb_device>)+#ccall libusb_get_configuration , Ptr <libusb_device_handle> -> \+ Ptr int -> IO CInt+#ccall libusb_set_configuration , Ptr <libusb_device_handle> -> \+ CInt -> IO CInt+#ccall libusb_claim_interface , Ptr <libusb_device_handle> -> \+ CInt -> IO CInt+#ccall libusb_release_interface , Ptr <libusb_device_handle> -> \+ CInt -> IO CInt+#ccall libusb_set_interface_alt_setting , Ptr <libusb_device_handle> -> \+ CInt -> CInt -> IO CInt+#ccall libusb_clear_halt , Ptr <libusb_device_handle> -> \+ CUChar -> IO CInt+#ccall libusb_reset_device , Ptr <libusb_device_handle> -> IO CInt+#ccall libusb_kernel_driver_active , Ptr <libusb_device_handle> -> \+ CInt -> IO CInt+#ccall libusb_detach_kernel_driver , Ptr <libusb_device_handle> -> \+ CInt -> IO CInt+#ccall libusb_attach_kernel_driver , Ptr <libusb_device_handle> -> \+ CInt -> IO CInt
+ src/Bindings/Libusb/InitializationDeinitialization.hsc view
@@ -0,0 +1,14 @@+#include <bindings.macros.h>+#include <libusb.h>++-- | <http://libusb.sourceforge.net/api-1.0/group__lib.html>++module Bindings.Libusb.InitializationDeinitialization where+import Foreign+import Foreign.C++#opaque_t libusb_context++#ccall libusb_set_debug , Ptr <libusb_context> -> CInt -> IO ()+#ccall libusb_init , Ptr (Ptr <libusb_context>) -> IO CInt+#ccall libusb_exit , Ptr <libusb_context> -> IO ()
+ src/Bindings/Libusb/Miscellaneous.hsc view
@@ -0,0 +1,57 @@+#include <bindings.macros.h>+#include <libusb.h>++-- | <http://libusb.sourceforge.net/api-1.0/group__misc.html>++module Bindings.Libusb.Miscellaneous where+import Foreign+import Foreign.C++#cinline libusb_cpu_to_le16 , Word16 -> Word16+#cinline libusb_le16_to_cpu , Word16 -> Word16++#integral_t enum libusb_standard_request++#num LIBUSB_REQUEST_GET_STATUS+#num LIBUSB_REQUEST_CLEAR_FEATURE+#num LIBUSB_REQUEST_SET_FEATURE+#num LIBUSB_REQUEST_SET_ADDRESS+#num LIBUSB_REQUEST_GET_DESCRIPTOR+#num LIBUSB_REQUEST_SET_DESCRIPTOR+#num LIBUSB_REQUEST_GET_CONFIGURATION+#num LIBUSB_REQUEST_SET_CONFIGURATION+#num LIBUSB_REQUEST_GET_INTERFACE+#num LIBUSB_REQUEST_SET_INTERFACE+#num LIBUSB_REQUEST_SYNCH_FRAME++#integral_t enum libusb_request_type++#num LIBUSB_REQUEST_TYPE_STANDARD+#num LIBUSB_REQUEST_TYPE_CLASS+#num LIBUSB_REQUEST_TYPE_VENDOR+#num LIBUSB_REQUEST_TYPE_RESERVED++#integral_t enum libusb_request_recipient++#num LIBUSB_RECIPIENT_DEVICE+#num LIBUSB_RECIPIENT_INTERFACE+#num LIBUSB_RECIPIENT_ENDPOINT+#num LIBUSB_RECIPIENT_OTHER++#integral_t enum libusb_error++#num LIBUSB_SUCCESS+#num LIBUSB_ERROR_IO+#num LIBUSB_ERROR_INVALID_PARAM+#num LIBUSB_ERROR_ACCESS+#num LIBUSB_ERROR_NO_DEVICE+#num LIBUSB_ERROR_NOT_FOUND+#num LIBUSB_ERROR_BUSY+#num LIBUSB_ERROR_TIMEOUT+#num LIBUSB_ERROR_OVERFLOW+#num LIBUSB_ERROR_PIPE+#num LIBUSB_ERROR_INTERRUPTED+#num LIBUSB_ERROR_NO_MEM+#num LIBUSB_ERROR_NOT_SUPPORTED+#num LIBUSB_ERROR_OTHER+
+ src/Bindings/Libusb/PollingAndTiming.hsc view
@@ -0,0 +1,40 @@+#include <bindings.macros.h>+#include <libusb.h>++-- | <http://libusb.sourceforge.net/api-1.0/group__poll.html>++module Bindings.Libusb.PollingAndTiming where+import Foreign+import Foreign.C+import Bindings.Posix.Sys.Select+import Bindings.Libusb.InitializationDeinitialization++#starttype struct libusb_pollfd+#field fd , CInt+#field events , CShort+#stoptype++#callback libusb_pollfd_added_cb , CInt -> CShort -> Ptr () -> IO ()+#callback libusb_pollfd_removed_cb , CInt -> Ptr () -> IO ()++#ccall libusb_try_lock_events , Ptr <libusb_context> -> IO CInt+#ccall libusb_lock_events , Ptr <libusb_context> -> IO ()+#ccall libusb_unlock_events , Ptr <libusb_context> -> IO ()+#ccall libusb_event_handling_ok , Ptr <libusb_context> -> IO CInt+#ccall libusb_event_handler_active , Ptr <libusb_context> -> IO CInt+#ccall libusb_lock_event_waiters , Ptr <libusb_context> -> IO ()+#ccall libusb_unlock_event_waiters , Ptr <libusb_context> -> IO ()+#ccall libusb_wait_for_event , Ptr <libusb_context> -> \+ Ptr <timeval> -> IO CInt+#ccall libusb_handle_events_timeout , Ptr <libusb_context> -> \+ Ptr <timeval> -> IO CInt+#ccall libusb_handle_events , Ptr <libusb_context> -> IO CInt+#ccall libusb_handle_events_locked , Ptr <libusb_context> -> \+ Ptr <timeval> -> IO CInt+#ccall libusb_get_next_timeout , Ptr <libusb_context> -> \+ Ptr <timeval> -> IO CInt+#ccall libusb_set_pollfd_notifiers , Ptr <libusb_context> -> \+ <libusb_pollfd_added_cb> -> <libusb_pollfd_removed_cb> -> \+ Ptr () -> IO ()+#ccall libusb_get_pollfds , Ptr <libusb_context> -> \+ IO (Ptr (Ptr <libusb_pollfd>))
+ src/Bindings/Libusb/Synchronous.hsc view
@@ -0,0 +1,18 @@+#include <bindings.macros.h>+#include <libusb.h>++-- | <http://libusb.sourceforge.net/api-1.0/group__syncio.html>++module Bindings.Libusb.Synchronous where+import Foreign+import Foreign.C+import Bindings.Libusb.HandlingAndEnumeration++#ccall libusb_control_transfer , Ptr <libusb_device_handle> -> \+ Word8 -> Word8 -> Word16 -> Word16 -> Ptr CUChar -> \+ Word16 -> CUInt -> IO CInt+#ccall libusb_bulk_transfer , Ptr <libusb_device_handle> -> \+ CUChar -> Ptr CUChar -> CInt -> Ptr CInt -> CUInt -> IO CInt+#ccall libusb_interrupt_transfer , Ptr <libusb_device_handle> -> \+ CUChar -> Ptr CUChar -> CInt -> Ptr CInt -> CUInt -> IO CInt+
− src/LibusbConstants.hs
@@ -1,229 +0,0 @@-module LibusbConstants where-import Foreign-import LibusbTypes--foreign import ccall "_LIBUSB_REQUEST_GET_STATUS"- _LIBUSB_REQUEST_GET_STATUS :: Libusb_standard_request--foreign import ccall "_LIBUSB_REQUEST_CLEAR_FEATURE"- _LIBUSB_REQUEST_CLEAR_FEATURE :: Libusb_standard_request--foreign import ccall "_LIBUSB_REQUEST_SET_FEATURE"- _LIBUSB_REQUEST_SET_FEATURE :: Libusb_standard_request--foreign import ccall "_LIBUSB_REQUEST_SET_ADDRESS"- _LIBUSB_REQUEST_SET_ADDRESS :: Libusb_standard_request--foreign import ccall "_LIBUSB_REQUEST_GET_DESCRIPTOR"- _LIBUSB_REQUEST_GET_DESCRIPTOR :: Libusb_standard_request--foreign import ccall "_LIBUSB_REQUEST_SET_DESCRIPTOR"- _LIBUSB_REQUEST_SET_DESCRIPTOR :: Libusb_standard_request--foreign import ccall "_LIBUSB_REQUEST_GET_CONFIGURATION"- _LIBUSB_REQUEST_GET_CONFIGURATION :: Libusb_standard_request--foreign import ccall "_LIBUSB_REQUEST_SET_CONFIGURATION"- _LIBUSB_REQUEST_SET_CONFIGURATION :: Libusb_standard_request--foreign import ccall "_LIBUSB_REQUEST_GET_INTERFACE"- _LIBUSB_REQUEST_GET_INTERFACE :: Libusb_standard_request--foreign import ccall "_LIBUSB_REQUEST_SET_INTERFACE"- _LIBUSB_REQUEST_SET_INTERFACE :: Libusb_standard_request--foreign import ccall "_LIBUSB_REQUEST_SYNCH_FRAME"- _LIBUSB_REQUEST_SYNCH_FRAME :: Libusb_standard_request--foreign import ccall "_LIBUSB_REQUEST_TYPE_STANDARD"- _LIBUSB_REQUEST_TYPE_STANDARD :: Libusb_request_type--foreign import ccall "_LIBUSB_REQUEST_TYPE_CLASS"- _LIBUSB_REQUEST_TYPE_CLASS :: Libusb_request_type--foreign import ccall "_LIBUSB_REQUEST_TYPE_VENDOR"- _LIBUSB_REQUEST_TYPE_VENDOR :: Libusb_request_type--foreign import ccall "_LIBUSB_REQUEST_TYPE_RESERVED"- _LIBUSB_REQUEST_TYPE_RESERVED :: Libusb_request_type--foreign import ccall "_LIBUSB_RECIPIENT_DEVICE"- _LIBUSB_RECIPIENT_DEVICE :: Libusb_request_recipient--foreign import ccall "_LIBUSB_RECIPIENT_INTERFACE"- _LIBUSB_RECIPIENT_INTERFACE :: Libusb_request_recipient--foreign import ccall "_LIBUSB_RECIPIENT_ENDPOINT"- _LIBUSB_RECIPIENT_ENDPOINT :: Libusb_request_recipient--foreign import ccall "_LIBUSB_RECIPIENT_OTHER"- _LIBUSB_RECIPIENT_OTHER :: Libusb_request_recipient--foreign import ccall "_LIBUSB_SUCCESS"- _LIBUSB_SUCCESS :: Libusb_error--foreign import ccall "_LIBUSB_ERROR_IO"- _LIBUSB_ERROR_IO :: Libusb_error--foreign import ccall "_LIBUSB_ERROR_INVALID_PARAM"- _LIBUSB_ERROR_INVALID_PARAM :: Libusb_error--foreign import ccall "_LIBUSB_ERROR_ACCESS"- _LIBUSB_ERROR_ACCESS :: Libusb_error--foreign import ccall "_LIBUSB_ERROR_NO_DEVICE"- _LIBUSB_ERROR_NO_DEVICE :: Libusb_error--foreign import ccall "_LIBUSB_ERROR_NOT_FOUND"- _LIBUSB_ERROR_NOT_FOUND :: Libusb_error--foreign import ccall "_LIBUSB_ERROR_BUSY"- _LIBUSB_ERROR_BUSY :: Libusb_error--foreign import ccall "_LIBUSB_ERROR_TIMEOUT"- _LIBUSB_ERROR_TIMEOUT :: Libusb_error--foreign import ccall "_LIBUSB_ERROR_OVERFLOW"- _LIBUSB_ERROR_OVERFLOW :: Libusb_error--foreign import ccall "_LIBUSB_ERROR_PIPE"- _LIBUSB_ERROR_PIPE :: Libusb_error--foreign import ccall "_LIBUSB_ERROR_INTERRUPTED"- _LIBUSB_ERROR_INTERRUPTED :: Libusb_error--foreign import ccall "_LIBUSB_ERROR_NO_MEM"- _LIBUSB_ERROR_NO_MEM :: Libusb_error--foreign import ccall "_LIBUSB_ERROR_NOT_SUPPORTED"- _LIBUSB_ERROR_NOT_SUPPORTED :: Libusb_error--foreign import ccall "_LIBUSB_ERROR_OTHER"- _LIBUSB_ERROR_OTHER :: Libusb_error--foreign import ccall "_LIBUSB_CLASS_PER_INTERFACE"- _LIBUSB_CLASS_PER_INTERFACE :: Libusb_class_code--foreign import ccall "_LIBUSB_CLASS_AUDIO"- _LIBUSB_CLASS_AUDIO :: Libusb_class_code--foreign import ccall "_LIBUSB_CLASS_COMM"- _LIBUSB_CLASS_COMM :: Libusb_class_code--foreign import ccall "_LIBUSB_CLASS_HID"- _LIBUSB_CLASS_HID :: Libusb_class_code--foreign import ccall "_LIBUSB_CLASS_PRINTER"- _LIBUSB_CLASS_PRINTER :: Libusb_class_code--foreign import ccall "_LIBUSB_CLASS_PTP"- _LIBUSB_CLASS_PTP :: Libusb_class_code--foreign import ccall "_LIBUSB_CLASS_MASS_STORAGE"- _LIBUSB_CLASS_MASS_STORAGE :: Libusb_class_code--foreign import ccall "_LIBUSB_CLASS_HUB"- _LIBUSB_CLASS_HUB :: Libusb_class_code--foreign import ccall "_LIBUSB_CLASS_DATA"- _LIBUSB_CLASS_DATA :: Libusb_class_code--foreign import ccall "_LIBUSB_CLASS_VENDOR_SPEC"- _LIBUSB_CLASS_VENDOR_SPEC :: Libusb_class_code--foreign import ccall "_LIBUSB_DT_DEVICE"- _LIBUSB_DT_DEVICE :: Libusb_descriptor_type--foreign import ccall "_LIBUSB_DT_CONFIG"- _LIBUSB_DT_CONFIG :: Libusb_descriptor_type--foreign import ccall "_LIBUSB_DT_STRING"- _LIBUSB_DT_STRING :: Libusb_descriptor_type--foreign import ccall "_LIBUSB_DT_INTERFACE"- _LIBUSB_DT_INTERFACE :: Libusb_descriptor_type--foreign import ccall "_LIBUSB_DT_ENDPOINT"- _LIBUSB_DT_ENDPOINT :: Libusb_descriptor_type--foreign import ccall "_LIBUSB_DT_HID"- _LIBUSB_DT_HID :: Libusb_descriptor_type--foreign import ccall "_LIBUSB_DT_REPORT"- _LIBUSB_DT_REPORT :: Libusb_descriptor_type--foreign import ccall "_LIBUSB_DT_PHYSICAL"- _LIBUSB_DT_PHYSICAL :: Libusb_descriptor_type--foreign import ccall "_LIBUSB_DT_HUB"- _LIBUSB_DT_HUB :: Libusb_descriptor_type--foreign import ccall "_LIBUSB_ENDPOINT_IN"- _LIBUSB_ENDPOINT_IN :: Libusb_endpoint_direction--foreign import ccall "_LIBUSB_ENDPOINT_OUT"- _LIBUSB_ENDPOINT_OUT :: Libusb_endpoint_direction--foreign import ccall "_LIBUSB_TRANSFER_TYPE_CONTROL"- _LIBUSB_TRANSFER_TYPE_CONTROL :: Libusb_transfer_type--foreign import ccall "_LIBUSB_TRANSFER_TYPE_ISOCHRONOUS"- _LIBUSB_TRANSFER_TYPE_ISOCHRONOUS :: Libusb_transfer_type--foreign import ccall "_LIBUSB_TRANSFER_TYPE_BULK"- _LIBUSB_TRANSFER_TYPE_BULK :: Libusb_transfer_type--foreign import ccall "_LIBUSB_TRANSFER_TYPE_INTERRUPT"- _LIBUSB_TRANSFER_TYPE_INTERRUPT :: Libusb_transfer_type--foreign import ccall "_LIBUSB_ISO_SYNC_TYPE_NONE"- _LIBUSB_ISO_SYNC_TYPE_NONE :: Libusb_iso_sync_type--foreign import ccall "_LIBUSB_ISO_SYNC_TYPE_ASYNC"- _LIBUSB_ISO_SYNC_TYPE_ASYNC :: Libusb_iso_sync_type--foreign import ccall "_LIBUSB_ISO_SYNC_TYPE_ADAPTIVE"- _LIBUSB_ISO_SYNC_TYPE_ADAPTIVE :: Libusb_iso_sync_type--foreign import ccall "_LIBUSB_ISO_SYNC_TYPE_SYNC"- _LIBUSB_ISO_SYNC_TYPE_SYNC :: Libusb_iso_sync_type--foreign import ccall "_LIBUSB_ISO_USAGE_TYPE_DATA"- _LIBUSB_ISO_USAGE_TYPE_DATA :: Libusb_iso_usage_type--foreign import ccall "_LIBUSB_ISO_USAGE_TYPE_FEEDBACK"- _LIBUSB_ISO_USAGE_TYPE_FEEDBACK :: Libusb_iso_usage_type--foreign import ccall "_LIBUSB_ISO_USAGE_TYPE_IMPLICIT"- _LIBUSB_ISO_USAGE_TYPE_IMPLICIT :: Libusb_iso_usage_type--foreign import ccall "_LIBUSB_TRANSFER_COMPLETED"- _LIBUSB_TRANSFER_COMPLETED :: Libusb_transfer_status--foreign import ccall "_LIBUSB_TRANSFER_ERROR"- _LIBUSB_TRANSFER_ERROR :: Libusb_transfer_status--foreign import ccall "_LIBUSB_TRANSFER_TIMED_OUT"- _LIBUSB_TRANSFER_TIMED_OUT :: Libusb_transfer_status--foreign import ccall "_LIBUSB_TRANSFER_CANCELLED"- _LIBUSB_TRANSFER_CANCELLED :: Libusb_transfer_status--foreign import ccall "_LIBUSB_TRANSFER_STALL"- _LIBUSB_TRANSFER_STALL :: Libusb_transfer_status--foreign import ccall "_LIBUSB_TRANSFER_NO_DEVICE"- _LIBUSB_TRANSFER_NO_DEVICE :: Libusb_transfer_status--foreign import ccall "_LIBUSB_TRANSFER_OVERFLOW"- _LIBUSB_TRANSFER_OVERFLOW :: Libusb_transfer_status--foreign import ccall "_LIBUSB_TRANSFER_SHORT_NOT_OK"- _LIBUSB_TRANSFER_SHORT_NOT_OK :: Libusb_transfer_flags--foreign import ccall "_LIBUSB_TRANSFER_FREE_BUFFER"- _LIBUSB_TRANSFER_FREE_BUFFER :: Libusb_transfer_flags--foreign import ccall "_LIBUSB_TRANSFER_FREE_TRANSFER"- _LIBUSB_TRANSFER_FREE_TRANSFER :: Libusb_transfer_flags-
− src/LibusbFunctions.hs
@@ -1,262 +0,0 @@-module LibusbFunctions where-import Bindings.C-import Bindings.Posix-import Foreign-import Foreign.C-import LibusbTypes--foreign import ccall "libusb_set_debug" libusb_set_debug- :: Ptr Libusb_context -> CInt -> IO () ;--foreign import ccall "libusb_init" libusb_init- :: Ptr (Ptr Libusb_context) -> IO CInt--foreign import ccall "libusb_exit" libusb_exit- :: Ptr Libusb_context -> IO ()--foreign import ccall "&libusb_exit" ptr_libusb_exit- :: FunPtr (Ptr Libusb_context -> IO ())--foreign import ccall "libusb_get_device_list" libusb_get_device_list- :: Ptr Libusb_context -> Ptr (Ptr (Ptr Libusb_device)) -> IO CInt--foreign import ccall "libusb_free_device_list" libusb_free_device_list- :: Ptr (Ptr Libusb_device) -> CInt -> IO ()--foreign import ccall "libusb_get_bus_number" libusb_get_bus_number- :: Ptr Libusb_device -> IO Word8--foreign import ccall "libusb_get_device_address"- libusb_get_device_address- :: Ptr Libusb_device -> IO Word8--foreign import ccall "libusb_get_max_packet_size"- libusb_get_max_packet_size- :: Ptr Libusb_device -> CUChar -> IO CInt--foreign import ccall "libusb_ref_device" libusb_ref_device- :: Ptr Libusb_device -> IO (Ptr Libusb_device)--foreign import ccall "libusb_unref_device" libusb_unref_device- :: Ptr Libusb_device -> IO ()--foreign import ccall "&libusb_unref_device" ptr_libusb_unref_device- :: FunPtr (Ptr Libusb_device -> IO ())--foreign import ccall "libusb_open" libusb_open- :: Ptr Libusb_device -> Ptr (Ptr Libusb_device_handle) -> IO CInt--foreign import ccall "libusb_open_device_with_vid_pid"- libusb_open_device_with_vid_pid- :: Ptr Libusb_context -> Word16 -> Word16 ->- IO (Ptr Libusb_device_handle)--foreign import ccall "libusb_close" libusb_close- :: Ptr Libusb_device_handle -> IO ()--foreign import ccall "libusb_get_device" libusb_get_device- :: Ptr Libusb_device_handle -> IO (Ptr Libusb_device)--foreign import ccall "libusb_get_configuration"- libusb_get_configuration- :: Ptr Libusb_device_handle -> Ptr CInt -> IO CInt--foreign import ccall "libusb_set_configuration"- libusb_set_configuration- :: Ptr Libusb_device_handle -> CInt -> IO CInt--foreign import ccall "libusb_claim_interface" libusb_claim_interface- :: Ptr Libusb_device_handle -> CInt -> IO CInt--foreign import ccall "libusb_release_interface"- libusb_release_interface- :: Ptr Libusb_device_handle -> CInt -> IO CInt--foreign import ccall "libusb_set_interface_alt_setting"- libusb_set_interface_alt_setting- :: Ptr Libusb_device_handle -> CInt -> CInt -> IO CInt--foreign import ccall "libusb_clear_halt" libusb_clear_halt- :: Ptr Libusb_device_handle -> CUChar -> IO CInt--foreign import ccall "libusb_reset_device" libusb_reset_device- :: Ptr Libusb_device_handle -> IO CInt--foreign import ccall "libusb_kernel_driver_active"- libusb_kernel_driver_active- :: Ptr Libusb_device_handle -> CInt -> IO CInt--foreign import ccall "libusb_detach_kernel_driver"- libusb_detach_kernel_driver- :: Ptr Libusb_device_handle -> CInt -> IO CInt--foreign import ccall "libusb_attach_kernel_driver"- libusb_attach_kernel_driver- :: Ptr Libusb_device_handle -> CInt -> IO CInt--foreign import ccall "_libusb_cpu_to_le16" libusb_cpu_to_le16- :: Word16 -> Word16--foreign import ccall "_libusb_le16_to_cpu" libusb_le16_to_cpu- :: Word16 -> Word16--foreign import ccall "libusb_get_device_descriptor"- libusb_get_device_descriptor- :: Ptr Libusb_device -> Ptr Libusb_device_descriptor -> IO CInt--foreign import ccall "libusb_get_active_config_descriptor"- libusb_get_active_config_descriptor- :: Ptr Libusb_device -> Ptr- (Ptr Libusb_config_descriptor) -> IO CInt--foreign import ccall "libusb_get_config_descriptor"- libusb_get_config_descriptor- :: Ptr Libusb_device -> Word8 -> Ptr- (Ptr Libusb_config_descriptor) -> IO CInt--foreign import ccall "libusb_get_config_descriptor_by_value"- libusb_get_config_descriptor_by_value- :: Ptr Libusb_device -> Word8 -> Ptr (Ptr Libusb_config_descriptor) ->- IO CInt--foreign import ccall "libusb_free_config_descriptor"- libusb_free_config_descriptor- :: Ptr Libusb_config_descriptor -> IO ()--foreign import ccall "libusb_get_string_descriptor_ascii"- libusb_get_string_descriptor_ascii- :: Ptr Libusb_device_handle -> Word8 -> Ptr CUChar -> CInt -> IO CInt--foreign import ccall "libusb_get_descriptor2" libusb_get_descriptor- :: Ptr Libusb_device_handle -> Word8 -> Word8 -> Ptr CUChar ->- CInt -> IO CInt--foreign import ccall "libusb_get_string_descriptor2"- libusb_get_string_descriptor- :: Ptr Libusb_device_handle -> Word8 ->- Word16 -> Ptr CUChar -> CInt -> IO CInt--foreign import ccall "libusb_alloc_transfer" libusb_alloc_transfer- :: CInt -> IO (Ptr (Libusb_transfer a))--foreign import ccall "libusb_free_transfer" libusb_free_transfer- :: Ptr (Libusb_transfer a)--foreign import ccall "libusb_submit_transfer" libusb_submit_transfer- :: Ptr (Libusb_transfer a) -> IO CInt--foreign import ccall "libusb_cancel_transfer" libusb_cancel_transfer- :: Ptr (Libusb_transfer a) -> IO CInt--foreign import ccall "libusb_control_transfer_get_data2"- libusb_control_transfer_get_data- :: Ptr (Libusb_transfer a) -> IO (Ptr CUChar)--foreign import ccall "libusb_control_transfer_get_setup2"- libusb_control_transfer_get_setup- :: Ptr (Libusb_transfer a) -> IO (Ptr Libusb_control_setup)--foreign import ccall "libusb_fill_control_setup2"- libusb_fill_control_setup- :: Ptr CUChar -> Word8 -> Word8 ->- Word16 -> Word16 -> Word16 -> IO ()--foreign import ccall "libusb_fill_control_transfer2"- libusb_fill_control_transfer- :: Ptr (Libusb_transfer a) -> Ptr Libusb_device_handle ->- Ptr CUChar -> FunPtr (Libusb_transfer_cb_fn a) ->- Ptr a -> CUInt -> IO ()--foreign import ccall "libusb_fill_bulk_transfer2"- libusb_fill_bulk_transfer- :: Ptr (Libusb_transfer a) -> Ptr Libusb_device_handle -> CUChar ->- Ptr CUChar -> CInt -> FunPtr (Libusb_transfer_cb_fn a) ->- Ptr a -> CUInt -> IO ()--foreign import ccall "libusb_fill_interrupt_transfer2"- libusb_fill_interrupt_transfer- :: Ptr (Libusb_transfer a) -> Ptr Libusb_device_handle -> CUChar ->- Ptr CUChar -> CInt -> FunPtr (Libusb_transfer_cb_fn a) ->- Ptr a -> CUInt -> IO ()--foreign import ccall "libusb_fill_iso_transfer2"- libusb_fill_iso_transfer- :: Ptr (Libusb_transfer a) -> Ptr Libusb_device_handle -> CUChar ->- Ptr CUChar -> CInt -> CInt -> FunPtr (Libusb_transfer_cb_fn a) ->- Ptr a -> CUInt -> IO ()--foreign import ccall "libusb_set_iso_packet_lengths2"- libusb_set_iso_packet_lengths- :: Ptr (Libusb_transfer a) -> CUInt -> IO ()--foreign import ccall "libusb_get_iso_packet_buffer2"- libusb_get_iso_packet_buffer- :: Ptr (Libusb_transfer a) -> CUInt -> IO (Ptr CUChar)--foreign import ccall "libusb_get_iso_packet_buffer_simple2"- libusb_get_iso_packet_buffer_simple- :: Ptr (Libusb_transfer a) -> CUInt -> IO (Ptr CUChar)--foreign import ccall "libusb_try_lock_events" libusb_try_lock_events- :: Ptr Libusb_context -> IO CInt--foreign import ccall "libusb_lock_events" libusb_lock_events- :: Ptr Libusb_context -> IO ()--foreign import ccall "libusb_unlock_events" libusb_unlock_events- :: Ptr Libusb_context -> IO ()--foreign import ccall "libusb_event_handling_ok"- libusb_event_handling_ok- :: Ptr Libusb_context -> IO CInt--foreign import ccall "libusb_event_handler_active"- libusb_event_handler_active- :: Ptr Libusb_context -> IO CInt--foreign import ccall "libusb_lock_event_waiters"- libusb_lock_event_waiters- :: Ptr Libusb_context -> IO ()--foreign import ccall "libusb_unlock_event_waiters"- libusb_unlock_event_waiters- :: Ptr Libusb_context -> IO ()--foreign import ccall "libusb_wait_for_event" libusb_wait_for_event- :: Ptr Libusb_context -> Ptr Timeval -> IO CInt--foreign import ccall "libusb_handle_events_timeout"- libusb_handle_events_timeout- :: Ptr Libusb_context -> Ptr Timeval -> IO CInt--foreign import ccall "libusb_handle_events" libusb_handle_events- :: Ptr Libusb_context -> IO CInt--foreign import ccall "libusb_handle_events_locked"- libusb_handle_events_locked- :: Ptr Libusb_context -> Ptr Timeval -> IO CInt--foreign import ccall "libusb_get_next_timeout" libusb_get_next_timeout- :: Ptr Libusb_context -> Ptr Timeval -> IO CInt--foreign import ccall "libusb_set_pollfd_notifiers"- libusb_set_pollfd_notifiers- :: Ptr Libusb_context -> Libusb_pollfd_added_cb a ->- Libusb_pollfd_removed_cb a -> Ptr a -> IO ()--foreign import ccall "libusb_get_pollfds" libusb_get_pollfds- :: Ptr Libusb_context -> IO (Ptr (Ptr Libusb_pollfd)) ;--foreign import ccall "libusb_interrupt_transfer"- libusb_interrupt_transfer- :: Ptr Libusb_device_handle -> CUChar -> Ptr CUChar ->- CInt -> Ptr CInt -> CUInt -> IO CInt--foreign import ccall "libusb_bulk_transfer" libusb_bulk_transfer- :: Ptr Libusb_device_handle -> CUChar -> Ptr CUChar -> CInt ->- Ptr CInt -> CUInt -> IO CInt--foreign import ccall "libusb_control_transfer" libusb_control_transfer- :: Ptr Libusb_device_handle -> Word8 -> Word8 -> Word16 -> Word16 ->- Ptr CUChar -> Word16 -> CUInt -> IO CInt-
− src/LibusbTypes.hs
@@ -1,651 +0,0 @@-module LibusbTypes where-import Bindings.Utilities-import Foreign-import Foreign.C--data Libusb_context--data Libusb_device--data Libusb_device_handle--type Libusb_standard_request = Word8--type Libusb_request_type = Word8--type Libusb_request_recipient = Word8--type Libusb_error = CInt--type Libusb_descriptor_type = Word8--data Libusb_device_descriptor = Libusb_device_descriptor {- libusb_device_descriptor'bLength,- libusb_device_descriptor'bDescriptorType :: Word8,- libusb_device_descriptor'bcdUSB :: Word16,- libusb_device_descriptor'bDeviceClass,- libusb_device_descriptor'bDeviceSubClass,- libusb_device_descriptor'bDeviceProtocol,- libusb_device_descriptor'bMaxPacketSize0 :: Word8,- libusb_device_descriptor'idVendor,- libusb_device_descriptor'idProduct,- libusb_device_descriptor'bcdDevice :: Word16,- libusb_device_descriptor'iManufacturer,- libusb_device_descriptor'iProduct,- libusb_device_descriptor'iSerialNumber,- libusb_device_descriptor'bNumConfigurations :: Word8 }--instance Storable Libusb_device_descriptor where- sizeOf _ = fromIntegral size_of_libusb_device_descriptor-- alignment = sizeOf-- peek p =- with 0 $ \p1 ->- with 0 $ \p2 ->- with 0 $ \p3 ->- with 0 $ \p4 ->- with 0 $ \p5 ->- with 0 $ \p6 ->- with 0 $ \p7 ->- with 0 $ \p8 ->- with 0 $ \p9 ->- with 0 $ \p10 ->- with 0 $ \p11 ->- with 0 $ \p12 ->- with 0 $ \p13 ->- with 0 $ \p14 ->-- c2hs_libusb_device_descriptor p p1 p2 p3 p4 p5 p6 p7 p8- p9 p10 p11 p12 p13 p14 >>-- peek p1 >>= \v1 ->- peek p2 >>= \v2 ->- peek p3 >>= \v3 ->- peek p4 >>= \v4 ->- peek p5 >>= \v5 ->- peek p6 >>= \v6 ->- peek p7 >>= \v7 ->- peek p8 >>= \v8 ->- peek p9 >>= \v9 ->- peek p10 >>= \v10 ->- peek p11 >>= \v11 ->- peek p12 >>= \v12 ->- peek p13 >>= \v13 ->- peek p14 >>= \v14 ->-- return $ Libusb_device_descriptor v1 v2 v3 v4 v5 v6 v7 v8- v9 v10 v11 v12 v13 v14-- poke p v = hs2c_libusb_device_descriptor p- (libusb_device_descriptor'bLength v)- (libusb_device_descriptor'bDescriptorType v)- (libusb_device_descriptor'bcdUSB v)- (libusb_device_descriptor'bDeviceClass v)- (libusb_device_descriptor'bDeviceSubClass v)- (libusb_device_descriptor'bDeviceProtocol v)- (libusb_device_descriptor'bMaxPacketSize0 v)- (libusb_device_descriptor'idVendor v)- (libusb_device_descriptor'idProduct v)- (libusb_device_descriptor'bcdDevice v)- (libusb_device_descriptor'iManufacturer v)- (libusb_device_descriptor'iProduct v)- (libusb_device_descriptor'iSerialNumber v)- (libusb_device_descriptor'bNumConfigurations v)--data Libusb_endpoint_descriptor = Libusb_endpoint_descriptor {- libusb_endpoint_descriptor'bLength ,- libusb_endpoint_descriptor'bDescriptorType ,- libusb_endpoint_descriptor'bEndpointAddress ,- libusb_endpoint_descriptor'bmAttributes :: Word8 ,- libusb_endpoint_descriptor'wMaxPacketSize :: Word16 ,- libusb_endpoint_descriptor'bInterval ,- libusb_endpoint_descriptor'bRefresh ,- libusb_endpoint_descriptor'bSynchAddress :: Word8 ,- libusb_endpoint_descriptor'extra :: Ptr CUChar ,- libusb_endpoint_descriptor'extra_length :: CInt }--instance Storable Libusb_endpoint_descriptor where- sizeOf _ = fromIntegral size_of_libusb_endpoint_descriptor-- alignment = sizeOf-- peek p =- with 0 $ \p1 ->- with 0 $ \p2 ->- with 0 $ \p3 ->- with 0 $ \p4 ->- with 0 $ \p5 ->- with 0 $ \p6 ->- with 0 $ \p7 ->- with 0 $ \p8 ->- with nullPtr $ \p9 ->- with 0 $ \p10 ->-- c2hs_libusb_endpoint_descriptor p p1 p2 p3 p4 p5 p6- p7 p8 p9 p10 >>-- peek p1 >>= \v1 ->- peek p2 >>= \v2 ->- peek p3 >>= \v3 ->- peek p4 >>= \v4 ->- peek p5 >>= \v5 ->- peek p6 >>= \v6 ->- peek p7 >>= \v7 ->- peek p8 >>= \v8 ->- peek p9 >>= \v9 ->- peek p10 >>= \v10 ->-- return $ Libusb_endpoint_descriptor- v1 v2 v3 v4 v5 v6 v7 v8 v9 v10-- poke p v = hs2c_libusb_endpoint_descriptor p- (libusb_endpoint_descriptor'bLength v)- (libusb_endpoint_descriptor'bDescriptorType v)- (libusb_endpoint_descriptor'bEndpointAddress v)- (libusb_endpoint_descriptor'bmAttributes v)- (libusb_endpoint_descriptor'wMaxPacketSize v)- (libusb_endpoint_descriptor'bInterval v)- (libusb_endpoint_descriptor'bRefresh v)- (libusb_endpoint_descriptor'bSynchAddress v)- (libusb_endpoint_descriptor'extra v)- (libusb_endpoint_descriptor'extra_length v)--data Libusb_interface_descriptor = Libusb_interface_descriptor {- libusb_interface_descriptor'bLength,- libusb_interface_descriptor'bDescriptorType,- libusb_interface_descriptor'bInterfaceNumber,- libusb_interface_descriptor'bAlternateSetting,- libusb_interface_descriptor'bNumEndpoints,- libusb_interface_descriptor'bInterfaceClass,- libusb_interface_descriptor'bInterfaceSubClass,- libusb_interface_descriptor'bInterfaceProtocol,- libusb_interface_descriptor'iInterface- :: Word8,- libusb_interface_descriptor'endpoint- :: Ptr Libusb_endpoint_descriptor,- libusb_interface_descriptor'extra- :: Ptr CUChar,- libusb_interface_descriptor'extra_length- :: CInt }--instance Storable Libusb_interface_descriptor where- sizeOf _ = fromIntegral size_of_libusb_interface_descriptor-- alignment = sizeOf-- peek p =- with 0 $ \p1 ->- with 0 $ \p2 ->- with 0 $ \p3 ->- with 0 $ \p4 ->- with 0 $ \p5 ->- with 0 $ \p6 ->- with 0 $ \p7 ->- with 0 $ \p8 ->- with 0 $ \p9 ->- with nullPtr $ \p10 ->- with nullPtr $ \p11 ->- with 0 $ \p12 ->-- c2hs_libusb_interface_descriptor p p1 p2 p3 p4 p5- p6 p7 p8 p9 p10 p11 p12 >>-- peek p1 >>= \v1 ->- peek p2 >>= \v2 ->- peek p3 >>= \v3 ->- peek p4 >>= \v4 ->- peek p5 >>= \v5 ->- peek p6 >>= \v6 ->- peek p7 >>= \v7 ->- peek p8 >>= \v8 ->- peek p9 >>= \v9 ->- peek p10 >>= \v10 ->- peek p11 >>= \v11 ->- peek p12 >>= \v12 ->-- return $ Libusb_interface_descriptor- v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12-- poke p v = hs2c_libusb_interface_descriptor p - (libusb_interface_descriptor'bLength v)- (libusb_interface_descriptor'bDescriptorType v)- (libusb_interface_descriptor'bInterfaceNumber v)- (libusb_interface_descriptor'bAlternateSetting v)- (libusb_interface_descriptor'bNumEndpoints v)- (libusb_interface_descriptor'bInterfaceClass v)- (libusb_interface_descriptor'bInterfaceSubClass v)- (libusb_interface_descriptor'bInterfaceProtocol v)- (libusb_interface_descriptor'iInterface v)- (libusb_interface_descriptor'endpoint v)- (libusb_interface_descriptor'extra v)- (libusb_interface_descriptor'extra_length v)- -data Libusb_interface = Libusb_interface {- libusb_interface'altsetting :: Ptr Libusb_interface_descriptor,- libusb_interface'num_altsetting :: CInt }--instance Storable Libusb_interface where- sizeOf _ = fromIntegral size_of_libusb_interface-- alignment = sizeOf-- peek p =- with nullPtr $ \p1 -> - with 0 $ \p2 ->-- c2hs_libusb_interface p p1 p2 >>-- peek p1 >>= \v1 ->- peek p2 >>= \v2 ->-- return $ Libusb_interface v1 v2-- poke p v = hs2c_libusb_interface p- (libusb_interface'altsetting v)- (libusb_interface'num_altsetting v)--data Libusb_config_descriptor = Libusb_config_descriptor {- libusb_config_descriptor'bLength ,- libusb_config_descriptor'bDescriptorType :: Word8 ,- libusb_config_descriptor'wTotalLength :: Word16 ,- libusb_config_descriptor'bNumInterfaces ,- libusb_config_descriptor'bConfigurationValue ,- libusb_config_descriptor'iConfiguration ,- libusb_config_descriptor'bmAttributes ,- libusb_config_descriptor'maxPower :: Word8 ,- libusb_config_descriptor'interface :: Ptr Libusb_interface ,- libusb_config_descriptor'extra :: Ptr CUChar ,- libusb_config_descriptor'extra_length :: CInt }--instance Storable Libusb_config_descriptor where- sizeOf _ = fromIntegral size_of_libusb_config_descriptor-- alignment = sizeOf-- peek p =- with 0 $ \p1 ->- with 0 $ \p2 ->- with 0 $ \p3 ->- with 0 $ \p4 ->- with 0 $ \p5 ->- with 0 $ \p6 ->- with 0 $ \p7 ->- with 0 $ \p8 ->- with nullPtr $ \p9 ->- with nullPtr $ \p10 ->- with 0 $ \p11 ->-- c2hs_libusb_config_descriptor p p1 p2 p3 p4 p5 p6 p7- p8 p9 p10 p11 >>-- peek p1 >>= \v1 ->- peek p2 >>= \v2 ->- peek p3 >>= \v3 ->- peek p4 >>= \v4 ->- peek p5 >>= \v5 ->- peek p6 >>= \v6 ->- peek p7 >>= \v7 ->- peek p8 >>= \v8 ->- peek p9 >>= \v9 ->- peek p10 >>= \v10 ->- peek p11 >>= \v11 ->-- return $ Libusb_config_descriptor- v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11-- poke p v = hs2c_libusb_config_descriptor p- (libusb_config_descriptor'bLength v)- (libusb_config_descriptor'bDescriptorType v)- (libusb_config_descriptor'wTotalLength v)- (libusb_config_descriptor'bNumInterfaces v)- (libusb_config_descriptor'bConfigurationValue v)- (libusb_config_descriptor'iConfiguration v)- (libusb_config_descriptor'bmAttributes v)- (libusb_config_descriptor'maxPower v)- (libusb_config_descriptor'interface v)- (libusb_config_descriptor'extra v)- (libusb_config_descriptor'extra_length v)--type Libusb_class_code = Word8--type Libusb_endpoint_direction = Word8--type Libusb_transfer_type = Word8--type Libusb_iso_sync_type = Word8--type Libusb_iso_usage_type = Word8--data Libusb_control_setup = Libusb_control_setup {- libusb_control_setup'bmRequestType ,- libusb_control_setup'bRequest :: Word8 ,- libusb_control_setup'wValue ,- libusb_control_setup'wIndex ,- libusb_control_setup'wLength :: Word16 }--instance Storable Libusb_control_setup where- sizeOf _ = fromIntegral size_of_libusb_control_setup-- alignment = sizeOf-- peek p =- with 0 $ \p1 ->- with 0 $ \p2 ->- with 0 $ \p3 ->- with 0 $ \p4 ->- with 0 $ \p5 ->-- c2hs_libusb_control_setup p p1 p2 p3 p4 p5 >>-- peek p1 >>= \v1 ->- peek p2 >>= \v2 ->- peek p3 >>= \v3 ->- peek p4 >>= \v4 ->- peek p5 >>= \v5 ->-- return $ Libusb_control_setup v1 v2 v3 v4 v5-- poke p v = hs2c_libusb_control_setup p- (libusb_control_setup'bmRequestType v)- (libusb_control_setup'bRequest v)- (libusb_control_setup'wValue v)- (libusb_control_setup'wIndex v)- (libusb_control_setup'wLength v)--data Libusb_iso_packet_descriptor = Libusb_iso_packet_descriptor {- libusb_iso_packet_descriptor'length ,- libusb_iso_packet_descriptor'actual_length :: CUInt ,- libusb_iso_packet_descriptor'status :: Libusb_transfer_status }--instance Storable Libusb_iso_packet_descriptor where- sizeOf _ = fromIntegral size_of_libusb_iso_packet_descriptor- alignment = sizeOf- peek p =- with 0 $ \p1 ->- with 0 $ \p2 ->- with 0 $ \p3 ->-- c2hs_libusb_iso_packet_descriptor p p1 p2 p3 >>-- peek p1 >>= \v1 ->- peek p2 >>= \v2 ->- peek p3 >>= \v3 ->-- return $ Libusb_iso_packet_descriptor v1 v2 v3-- poke p v = hs2c_libusb_iso_packet_descriptor p- (libusb_iso_packet_descriptor'length v)- (libusb_iso_packet_descriptor'actual_length v)- (libusb_iso_packet_descriptor'status v)--data Libusb_transfer a = Libusb_transfer {- libusb_transfer'dev_handle :: Ptr Libusb_device_handle ,- libusb_transfer'flags :: Word8 ,- libusb_transfer'endpoint ,- libusb_transfer'type :: CUChar ,- libusb_transfer'timeout :: CUInt ,- libusb_transfer'status :: Libusb_transfer_status ,- libusb_transfer'length ,- libusb_transfer'actual_length :: CInt ,- libusb_transfer'callback :: Libusb_transfer_cb_fn a,- libusb_transfer'user_data :: Ptr a ,- libusb_transfer'buffer :: Ptr CUChar ,- libusb_transfer'num_iso_packets :: CInt ,- libusb_transfer'iso_packet_desc :: () }--instance Storable (Libusb_transfer a) where- sizeOf _ = fromIntegral size_of_libusb_transfer-- alignment = sizeOf-- peek p =- with nullPtr $ \p1 ->- with 0 $ \p2 ->- with 0 $ \p3 ->- with 0 $ \p4 ->- with 0 $ \p5 ->- with 0 $ \p6 ->- with 0 $ \p7 ->- with 0 $ \p8 ->- with nullCallback $ \p9 ->- with nullPtr $ \p10 ->- with nullPtr $ \p11 ->- with 0 $ \p12 ->-- c2hs_libusb_transfer p p1 p2 p3 p4 p5 p6 p7 p8 p9- p10 p11 p12 >>-- peek p1 >>= \v1 ->- peek p2 >>= \v2 ->- peek p3 >>= \v3 ->- peek p4 >>= \v4 ->- peek p5 >>= \v5 ->- peek p6 >>= \v6 ->- peek p7 >>= \v7 ->- peek p8 >>= \v8 ->- peek p9 >>= \v9 ->- peek p10 >>= \v10 ->- peek p11 >>= \v11 ->- peek p12 >>= \v12 ->-- return $ Libusb_transfer- v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 ()-- poke p v = hs2c_libusb_transfer p- (libusb_transfer'dev_handle v)- (libusb_transfer'flags v)- (libusb_transfer'endpoint v)- (libusb_transfer'type v)- (libusb_transfer'timeout v)- (libusb_transfer'status v)- (libusb_transfer'length v)- (libusb_transfer'actual_length v)- (libusb_transfer'callback v)- (libusb_transfer'user_data v)- (libusb_transfer'buffer v)- (libusb_transfer'num_iso_packets v)--newtype Libusb_transfer_cb_fn a = Libusb_transfer_cb_fn- (FunPtr ((Ptr (Libusb_transfer a)) -> IO ()))--instance Storable (Libusb_transfer_cb_fn a) where- sizeOf _ = sizeOf (undefined :: FunPtr ())- alignment = sizeOf- peek p = (peek $ castPtr p) >>= (return . Libusb_transfer_cb_fn)- poke p (Libusb_transfer_cb_fn v) = poke (castPtr p) v--instance Callback (Libusb_transfer_cb_fn a) where- type F (Libusb_transfer_cb_fn a) = Ptr (Libusb_transfer a) -> IO ()- nullCallback = Libusb_transfer_cb_fn nullFunPtr- makeCallback f = mkCbTransfer f >>= (return . Libusb_transfer_cb_fn)- freeCallback (Libusb_transfer_cb_fn f) = freeHaskellFunPtr f--type Libusb_transfer_status = CInt--type Libusb_transfer_flags = Word8--data Libusb_pollfd = Libusb_pollfd {- pollfd'fd :: CInt ,- pollfd'events :: CShort }--instance Storable Libusb_pollfd where- sizeOf _ = fromIntegral size_of_libusb_pollfd- alignment = sizeOf-- peek p = with 0 $ \p1 -> with 0 $ \p2 ->- c2hs_libusb_pollfd p p1 p2 >>- peek p1 >>= \v1 -> peek p2 >>= \v2 ->- return Libusb_pollfd {pollfd'fd = v1, pollfd'events = v2}-- poke p v = hs2c_libusb_pollfd p- (pollfd'fd v)- (pollfd'events v)--newtype Libusb_pollfd_added_cb a = Libusb_pollfd_added_cb (FunPtr (CInt ->- CShort -> Ptr a -> IO ()))--instance Storable (Libusb_pollfd_added_cb a) where- sizeOf _ = sizeOf (undefined :: FunPtr ())- alignment = sizeOf- peek p = (peek $ castPtr p) >>= (return . Libusb_pollfd_added_cb)- poke p (Libusb_pollfd_added_cb v) = poke (castPtr p) v--instance Callback (Libusb_pollfd_added_cb a) where- type F (Libusb_pollfd_added_cb a) = CInt -> CShort -> Ptr a -> IO ()- nullCallback = Libusb_pollfd_added_cb nullFunPtr- makeCallback f = mkCbAdded f >>= (return . Libusb_pollfd_added_cb)- freeCallback (Libusb_pollfd_added_cb f) = freeHaskellFunPtr f--newtype Libusb_pollfd_removed_cb a = Libusb_pollfd_removed_cb (FunPtr- (CInt -> Ptr a -> IO ()))--instance Storable (Libusb_pollfd_removed_cb a) where- sizeOf _ = sizeOf (undefined :: FunPtr ())- alignment = sizeOf- peek p = (peek $ castPtr p) >>= (return . Libusb_pollfd_removed_cb)- poke p (Libusb_pollfd_removed_cb v) = poke (castPtr p) v--instance Callback (Libusb_pollfd_removed_cb a) where- type F (Libusb_pollfd_removed_cb a) = CInt -> Ptr a -> IO ()- nullCallback = Libusb_pollfd_removed_cb nullFunPtr- makeCallback f = mkCbRemoved f >>= (return . Libusb_pollfd_removed_cb)- freeCallback (Libusb_pollfd_removed_cb f) = freeHaskellFunPtr f--type Cb1 a = Ptr a -> IO ()-type Cb2 a = CInt -> CShort -> Ptr a -> IO ()-type Cb3 a = CInt -> Ptr a -> IO ()--foreign import ccall "wrapper" mkCbTransfer- :: Cb1 a -> IO (FunPtr (Cb1 a))--foreign import ccall "wrapper" mkCbAdded- :: Cb2 a -> IO (FunPtr (Cb2 a))--foreign import ccall "wrapper" mkCbRemoved- :: Cb3 a -> IO (FunPtr (Cb3 a))--foreign import ccall "size_of_libusb_device_descriptor"- size_of_libusb_device_descriptor- :: CInt--foreign import ccall "size_of_libusb_endpoint_descriptor"- size_of_libusb_endpoint_descriptor- :: CInt--foreign import ccall "size_of_libusb_interface_descriptor"- size_of_libusb_interface_descriptor- :: CInt--foreign import ccall "size_of_libusb_interface"- size_of_libusb_interface- :: CInt--foreign import ccall "size_of_libusb_config_descriptor"- size_of_libusb_config_descriptor- :: CInt--foreign import ccall "size_of_libusb_control_setup"- size_of_libusb_control_setup- :: CInt--foreign import ccall "size_of_libusb_iso_packet_descriptor"- size_of_libusb_iso_packet_descriptor- :: CInt--foreign import ccall "size_of_libusb_transfer"- size_of_libusb_transfer- :: CInt--foreign import ccall "size_of_libusb_pollfd"- size_of_libusb_pollfd- :: CInt--foreign import ccall "hs2c_libusb_device_descriptor"- hs2c_libusb_device_descriptor- :: Ptr a -> Word8 -> Word8 -> Word16 -> Word8 -> Word8 ->- Word8 -> Word8 -> Word16 -> Word16 -> Word16 -> Word8 ->- Word8 -> Word8 -> Word8 -> IO ()--foreign import ccall "hs2c_libusb_endpoint_descriptor"- hs2c_libusb_endpoint_descriptor- :: Ptr a -> Word8 -> Word8 -> Word8 -> Word8 -> Word16 -> Word8 ->- Word8 -> Word8 -> Ptr CUChar -> CInt -> IO ()--foreign import ccall "hs2c_libusb_interface_descriptor"- hs2c_libusb_interface_descriptor- :: Ptr a -> Word8 -> Word8 -> Word8 -> Word8 -> Word8 ->- Word8 -> Word8 -> Word8 -> Word8 -> Ptr b ->- Ptr CUChar -> CInt -> IO ()--foreign import ccall "hs2c_libusb_interface" hs2c_libusb_interface- :: Ptr a -> Ptr b -> CInt -> IO ()--foreign import ccall "hs2c_libusb_config_descriptor"- hs2c_libusb_config_descriptor- :: Ptr a -> Word8 -> Word8 -> Word16 -> Word8 -> Word8 -> Word8 ->- Word8 -> Word8 -> Ptr b -> Ptr CUChar -> CInt -> IO ()--foreign import ccall "hs2c_libusb_control_setup"- hs2c_libusb_control_setup- :: Ptr a -> Word8 -> Word8 -> Word16 -> Word16 -> Word16 -> IO ()--foreign import ccall "hs2c_libusb_iso_packet_descriptor"- hs2c_libusb_iso_packet_descriptor- :: Ptr a -> CUInt -> CUInt -> CInt -> IO ()--foreign import ccall "hs2c_libusb_transfer" hs2c_libusb_transfer- :: Ptr a -> Ptr b -> Word8 -> CUChar -> CUChar -> CUInt ->- CInt -> CInt -> CInt -> Libusb_transfer_cb_fn c ->- Ptr d -> Ptr CUChar -> CInt -> IO ()--foreign import ccall "hs2c_libusb_pollfd" hs2c_libusb_pollfd- :: Ptr a -> CInt -> CShort -> IO ()--foreign import ccall "c2hs_libusb_device_descriptor"- c2hs_libusb_device_descriptor- :: Ptr a -> Ptr Word8 -> Ptr Word8 -> Ptr Word16 -> Ptr Word8 ->- Ptr Word8 -> Ptr Word8 -> Ptr Word8 -> Ptr Word16 ->- Ptr Word16 -> Ptr Word16 -> Ptr Word8 -> Ptr Word8 ->- Ptr Word8 -> Ptr Word8 -> IO ()--foreign import ccall "c2hs_libusb_endpoint_descriptor"- c2hs_libusb_endpoint_descriptor- :: Ptr a -> Ptr Word8 -> Ptr Word8 -> Ptr Word8 -> Ptr Word8 ->- Ptr Word16 -> Ptr Word8 -> Ptr Word8 -> Ptr Word8 ->- Ptr (Ptr CUChar) -> Ptr CInt -> IO ()--foreign import ccall "c2hs_libusb_interface_descriptor"- c2hs_libusb_interface_descriptor- :: Ptr a -> Ptr Word8 -> Ptr Word8 -> Ptr Word8 -> Ptr Word8 ->- Ptr Word8 -> Ptr Word8 -> Ptr Word8 -> Ptr Word8 -> Ptr Word8 ->- Ptr (Ptr b) -> Ptr (Ptr CUChar) -> Ptr CInt -> IO ()--foreign import ccall "c2hs_libusb_interface" c2hs_libusb_interface- ::- Ptr a -> Ptr (Ptr b) -> Ptr CInt -> IO ()--foreign import ccall "c2hs_libusb_config_descriptor"- c2hs_libusb_config_descriptor- :: Ptr a -> Ptr Word8 -> Ptr Word8 -> Ptr Word16 ->- Ptr Word8 -> Ptr Word8 -> Ptr Word8 -> Ptr Word8 ->- Ptr Word8 -> Ptr (Ptr b) -> Ptr (Ptr CUChar) ->- Ptr CInt -> IO ()--foreign import ccall "c2hs_libusb_control_setup"- c2hs_libusb_control_setup- :: Ptr a -> Ptr Word8 -> Ptr Word8 -> Ptr Word16 ->- Ptr Word16 -> Ptr Word16 -> IO ()--foreign import ccall "c2hs_libusb_iso_packet_descriptor"- c2hs_libusb_iso_packet_descriptor- :: Ptr a -> Ptr CUInt -> Ptr CUInt -> Ptr CInt -> IO ()--foreign import ccall "c2hs_libusb_transfer" c2hs_libusb_transfer- :: Ptr a -> Ptr (Ptr b) -> Ptr Word8 -> Ptr CUChar ->- Ptr CUChar -> Ptr CUInt -> Ptr CInt -> Ptr CInt -> Ptr CInt ->- Ptr (Libusb_transfer_cb_fn c) -> Ptr (Ptr d) ->- Ptr (Ptr CUChar) -> Ptr CInt -> IO ()--foreign import ccall "c2hs_libusb_pollfd" c2hs_libusb_pollfd- :: Ptr a -> Ptr CInt -> Ptr CShort -> IO ()
− src/constants.c
@@ -1,377 +0,0 @@-#include <libusb.h>--uint8_t _LIBUSB_REQUEST_GET_STATUS (void)-{- return LIBUSB_REQUEST_GET_STATUS;-}--uint8_t _LIBUSB_REQUEST_CLEAR_FEATURE (void)-{- return LIBUSB_REQUEST_CLEAR_FEATURE;-}--uint8_t _LIBUSB_REQUEST_SET_FEATURE (void)-{- return LIBUSB_REQUEST_SET_FEATURE;-}--uint8_t _LIBUSB_REQUEST_SET_ADDRESS (void)-{- return LIBUSB_REQUEST_SET_ADDRESS;-}--uint8_t _LIBUSB_REQUEST_GET_DESCRIPTOR (void)-{- return LIBUSB_REQUEST_GET_DESCRIPTOR;-}--uint8_t _LIBUSB_REQUEST_SET_DESCRIPTOR (void)-{- return LIBUSB_REQUEST_SET_DESCRIPTOR;-}--uint8_t _LIBUSB_REQUEST_GET_CONFIGURATION (void)-{- return LIBUSB_REQUEST_GET_CONFIGURATION;-}--uint8_t _LIBUSB_REQUEST_SET_CONFIGURATION (void)-{- return LIBUSB_REQUEST_SET_CONFIGURATION;-}--uint8_t _LIBUSB_REQUEST_GET_INTERFACE (void)-{- return LIBUSB_REQUEST_GET_INTERFACE;-}--uint8_t _LIBUSB_REQUEST_SET_INTERFACE (void)-{- return LIBUSB_REQUEST_SET_INTERFACE;-}--uint8_t _LIBUSB_REQUEST_SYNCH_FRAME (void)-{- return LIBUSB_REQUEST_SYNCH_FRAME;-}--uint8_t _LIBUSB_REQUEST_TYPE_STANDARD (void)-{- return LIBUSB_REQUEST_TYPE_STANDARD;-}--uint8_t _LIBUSB_REQUEST_TYPE_CLASS (void)-{- return LIBUSB_REQUEST_TYPE_CLASS;-}--uint8_t _LIBUSB_REQUEST_TYPE_VENDOR (void)-{- return LIBUSB_REQUEST_TYPE_VENDOR;-}--uint8_t _LIBUSB_REQUEST_TYPE_RESERVED (void)-{- return LIBUSB_REQUEST_TYPE_RESERVED;-}--uint8_t _LIBUSB_RECIPIENT_DEVICE (void)-{- return LIBUSB_RECIPIENT_DEVICE;-}--uint8_t _LIBUSB_RECIPIENT_INTERFACE (void)-{- return LIBUSB_RECIPIENT_INTERFACE;-}--uint8_t _LIBUSB_RECIPIENT_ENDPOINT (void)-{- return LIBUSB_RECIPIENT_ENDPOINT;-}--uint8_t _LIBUSB_RECIPIENT_OTHER (void)-{- return LIBUSB_RECIPIENT_OTHER;-}--int _LIBUSB_SUCCESS (void)-{- return LIBUSB_SUCCESS;-}--int _LIBUSB_ERROR_IO (void)-{- return LIBUSB_ERROR_IO;-}--int _LIBUSB_ERROR_INVALID_PARAM (void)-{- return LIBUSB_ERROR_INVALID_PARAM;-}--int _LIBUSB_ERROR_ACCESS (void)-{- return LIBUSB_ERROR_ACCESS;-}--int _LIBUSB_ERROR_NO_DEVICE (void)-{- return LIBUSB_ERROR_NO_DEVICE;-}--int _LIBUSB_ERROR_NOT_FOUND (void)-{- return LIBUSB_ERROR_NOT_FOUND;-}--int _LIBUSB_ERROR_BUSY (void)-{- return LIBUSB_ERROR_BUSY;-}--int _LIBUSB_ERROR_TIMEOUT (void)-{- return LIBUSB_ERROR_TIMEOUT;-}--int _LIBUSB_ERROR_OVERFLOW (void)-{- return LIBUSB_ERROR_OVERFLOW;-}--int _LIBUSB_ERROR_PIPE (void)-{- return LIBUSB_ERROR_PIPE;-}--int _LIBUSB_ERROR_INTERRUPTED (void)-{- return LIBUSB_ERROR_INTERRUPTED;-}--int _LIBUSB_ERROR_NO_MEM (void)-{- return LIBUSB_ERROR_NO_MEM;-}--int _LIBUSB_ERROR_NOT_SUPPORTED (void)-{- return LIBUSB_ERROR_NOT_SUPPORTED;-}--int _LIBUSB_ERROR_OTHER (void)-{- return LIBUSB_ERROR_OTHER;-}--uint8_t _LIBUSB_CLASS_PER_INTERFACE (void)-{- return LIBUSB_CLASS_PER_INTERFACE;-}--uint8_t _LIBUSB_CLASS_AUDIO (void)-{- return LIBUSB_CLASS_AUDIO;-}--uint8_t _LIBUSB_CLASS_COMM (void)-{- return LIBUSB_CLASS_COMM;-}--uint8_t _LIBUSB_CLASS_HID (void)-{- return LIBUSB_CLASS_HID;-}--uint8_t _LIBUSB_CLASS_PRINTER (void)-{- return LIBUSB_CLASS_PRINTER;-}--uint8_t _LIBUSB_CLASS_PTP (void)-{- return LIBUSB_CLASS_PTP;-}--uint8_t _LIBUSB_CLASS_MASS_STORAGE (void)-{- return LIBUSB_CLASS_MASS_STORAGE;-}--uint8_t _LIBUSB_CLASS_HUB (void)-{- return LIBUSB_CLASS_HUB;-}--uint8_t _LIBUSB_CLASS_DATA (void)-{- return LIBUSB_CLASS_DATA;-}--uint8_t _LIBUSB_CLASS_VENDOR_SPEC (void)-{- return LIBUSB_CLASS_VENDOR_SPEC;-}--uint8_t _LIBUSB_DT_DEVICE (void)-{- return LIBUSB_DT_DEVICE;-}--uint8_t _LIBUSB_DT_CONFIG (void)-{- return LIBUSB_DT_CONFIG;-}--uint8_t _LIBUSB_DT_STRING (void)-{- return LIBUSB_DT_STRING;-}--uint8_t _LIBUSB_DT_INTERFACE (void)-{- return LIBUSB_DT_INTERFACE;-}--uint8_t _LIBUSB_DT_ENDPOINT (void)-{- return LIBUSB_DT_ENDPOINT;-}--uint8_t _LIBUSB_DT_HID (void)-{- return LIBUSB_DT_HID;-}--uint8_t _LIBUSB_DT_REPORT (void)-{- return LIBUSB_DT_REPORT;-}--uint8_t _LIBUSB_DT_PHYSICAL (void)-{- return LIBUSB_DT_PHYSICAL;-}--uint8_t _LIBUSB_DT_HUB (void)-{- return LIBUSB_DT_HUB;-}--uint8_t _LIBUSB_ENDPOINT_IN (void)-{- return LIBUSB_ENDPOINT_IN;-}--uint8_t _LIBUSB_ENDPOINT_OUT (void)-{- return LIBUSB_ENDPOINT_OUT;-}--uint8_t _LIBUSB_TRANSFER_TYPE_CONTROL (void)-{- return LIBUSB_TRANSFER_TYPE_CONTROL;-}--uint8_t _LIBUSB_TRANSFER_TYPE_ISOCHRONOUS (void)-{- return LIBUSB_TRANSFER_TYPE_ISOCHRONOUS;-}--uint8_t _LIBUSB_TRANSFER_TYPE_BULK (void)-{- return LIBUSB_TRANSFER_TYPE_BULK;-}--uint8_t _LIBUSB_TRANSFER_TYPE_INTERRUPT (void)-{- return LIBUSB_TRANSFER_TYPE_INTERRUPT;-}--uint8_t _LIBUSB_ISO_SYNC_TYPE_NONE (void)-{- return LIBUSB_ISO_SYNC_TYPE_NONE;-}--uint8_t _LIBUSB_ISO_SYNC_TYPE_ASYNC (void)-{- return LIBUSB_ISO_SYNC_TYPE_ASYNC;-}--uint8_t _LIBUSB_ISO_SYNC_TYPE_ADAPTIVE (void)-{- return LIBUSB_ISO_SYNC_TYPE_ADAPTIVE;-}--uint8_t _LIBUSB_ISO_SYNC_TYPE_SYNC (void)-{- return LIBUSB_ISO_SYNC_TYPE_SYNC;-}--uint8_t _LIBUSB_ISO_USAGE_TYPE_DATA (void)-{- return LIBUSB_ISO_USAGE_TYPE_DATA;-}--uint8_t _LIBUSB_ISO_USAGE_TYPE_FEEDBACK (void)-{- return LIBUSB_ISO_USAGE_TYPE_FEEDBACK;-}--uint8_t _LIBUSB_ISO_USAGE_TYPE_IMPLICIT (void)-{- return LIBUSB_ISO_USAGE_TYPE_IMPLICIT;-}--int _LIBUSB_TRANSFER_COMPLETED (void)-{- return LIBUSB_TRANSFER_COMPLETED;-}--int _LIBUSB_TRANSFER_ERROR (void)-{- return LIBUSB_TRANSFER_ERROR;-}--int _LIBUSB_TRANSFER_TIMED_OUT (void)-{- return LIBUSB_TRANSFER_TIMED_OUT;-}--int _LIBUSB_TRANSFER_CANCELLED (void)-{- return LIBUSB_TRANSFER_CANCELLED;-}--int _LIBUSB_TRANSFER_STALL (void)-{- return LIBUSB_TRANSFER_STALL;-}--int _LIBUSB_TRANSFER_NO_DEVICE (void)-{- return LIBUSB_TRANSFER_NO_DEVICE;-}--int _LIBUSB_TRANSFER_OVERFLOW (void)-{- return LIBUSB_TRANSFER_OVERFLOW;-}--uint8_t _LIBUSB_TRANSFER_SHORT_NOT_OK (void)-{- return LIBUSB_TRANSFER_SHORT_NOT_OK;-}--uint8_t _LIBUSB_TRANSFER_FREE_BUFFER (void)-{- return LIBUSB_TRANSFER_FREE_BUFFER;-}--uint8_t _LIBUSB_TRANSFER_FREE_TRANSFER (void)-{- return LIBUSB_TRANSFER_FREE_TRANSFER;-}-
− src/functions.c
@@ -1,129 +0,0 @@-#include <libusb.h>--uint16_t _libusb_cpu_to_le16 (uint16_t x)-{- return libusb_cpu_to_le16 (x);-}--uint16_t _libusb_le16_to_cpu (uint16_t x)-{- return libusb_le16_to_cpu (x);-}---int libusb_get_descriptor2 ( libusb_device_handle * dev,- uint8_t desc_type,- uint8_t desc_index,- unsigned char * data,- int length - )-{- libusb_get_descriptor (dev,desc_type,desc_index,data,length);-}- --int libusb_get_string_descriptor2 ( libusb_device_handle * dev,- uint8_t desc_index,- uint16_t langid,- unsigned char * data,- int length - )-{- libusb_get_string_descriptor(dev,desc_index,langid,data,length);-}--unsigned char* libusb_control_transfer_get_data2 ( struct libusb_transfer * transfer )-{- libusb_control_transfer_get_data(transfer);-}--struct libusb_control_setup* libusb_control_transfer_get_setup2 ( struct libusb_transfer * transfer )-{- libusb_control_transfer_get_setup (transfer);-}--void libusb_fill_control_setup2 ( unsigned char * buffer,- uint8_t bmRequestType,- uint8_t bRequest,- uint16_t wValue,- uint16_t wIndex,- uint16_t wLength - )-{- libusb_fill_control_setup(buffer,bmRequestType,bRequest,wValue,wIndex,wLength);-}--void libusb_fill_control_transfer2 ( struct libusb_transfer * transfer,- libusb_device_handle * dev_handle,- unsigned char * buffer,- libusb_transfer_cb_fn callback,- void * user_data,- unsigned int timeout - )-{- libusb_fill_control_transfer(transfer,dev_handle,buffer,callback,user_data,timeout);-}--void libusb_fill_bulk_transfer2 ( struct libusb_transfer * transfer,- libusb_device_handle * dev_handle,- unsigned char endpoint,- unsigned char * buffer,- int length,- libusb_transfer_cb_fn callback,- void * user_data,- unsigned int timeout - )-{- libusb_fill_bulk_transfer(transfer,dev_handle,endpoint,buffer,length,callback,user_data,timeout);-}- -void libusb_fill_interrupt_transfer2 ( struct libusb_transfer * transfer,- libusb_device_handle * dev_handle,- unsigned char endpoint,- unsigned char * buffer,- int length,- libusb_transfer_cb_fn callback,- void * user_data,- unsigned int timeout - )-{- libusb_fill_interrupt_transfer(transfer,dev_handle,endpoint,buffer,length,callback,user_data,timeout);-}- -void libusb_fill_iso_transfer2 ( struct libusb_transfer * transfer,- libusb_device_handle * dev_handle,- unsigned char endpoint,- unsigned char * buffer,- int length,- int num_iso_packets,- libusb_transfer_cb_fn callback,- void * user_data,- unsigned int timeout - )-{- libusb_fill_iso_transfer(transfer,dev_handle,endpoint,buffer,length,num_iso_packets,callback,user_data,timeout);-}- -void libusb_set_iso_packet_lengths2 ( struct libusb_transfer * transfer,- unsigned int length - )-{- libusb_set_iso_packet_lengths(transfer,length);-}- -unsigned char* libusb_get_iso_packet_buffer2 ( struct libusb_transfer * transfer,- unsigned int packet - ) -{- libusb_get_iso_packet_buffer(transfer,packet);-}--unsigned char* libusb_get_iso_packet_buffer_simple2 ( struct libusb_transfer * transfer,-- unsigned int packet - )-{- libusb_get_iso_packet_buffer_simple(transfer,packet);-}--
+ src/include/libusb.h view
@@ -0,0 +1,1201 @@+/*+ * Public libusb header file+ * Copyright (C) 2007-2008 Daniel Drake <dsd@gentoo.org>+ * Copyright (c) 2001 Johannes Erdfelt <johannes@erdfelt.com>+ *+ * This library is free software; you can redistribute it and/or+ * modify it under the terms of the GNU Lesser General Public+ * License as published by the Free Software Foundation; either+ * version 2.1 of the License, or (at your option) any later version.+ *+ * This library is distributed in the hope that it will be useful,+ * but WITHOUT ANY WARRANTY; without even the implied warranty of+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU+ * Lesser General Public License for more details.+ *+ * You should have received a copy of the GNU Lesser General Public+ * License along with this library; if not, write to the Free Software+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA+ */++#ifndef __LIBUSB_H__+#define __LIBUSB_H__++#include <endian.h>+#include <stdint.h>+#include <sys/time.h>+#include <sys/types.h>+#include <time.h>++#define bswap16(x) (((x & 0xff) << 8) | (x >> 8))+#if __BYTE_ORDER == __LITTLE_ENDIAN+#define libusb_cpu_to_le16(x) (x)+#define libusb_le16_to_cpu(x) (x)+#elif __BYTE_ORDER == __BIG_ENDIAN+#define libusb_le16_to_cpu(x) bswap16(x)+#define libusb_cpu_to_le16(x) bswap16(x)+#else+#error "Unrecognized endianness"+#endif++/** \def libusb_cpu_to_le16+ * \ingroup misc+ * Convert a 16-bit value from host-endian to little-endian format. On+ * little endian systems, this function does nothing. On big endian systems,+ * the bytes are swapped.+ * \param x the host-endian value to convert+ * \returns the value in little-endian byte order+ */++/** \def libusb_le16_to_cpu+ * \ingroup misc+ * Convert a 16-bit value from little-endian to host-endian format. On+ * little endian systems, this function does nothing. On big endian systems,+ * the bytes are swapped.+ * \param x the little-endian value to convert+ * \returns the value in host-endian byte order+ */++#ifdef __cplusplus+extern "C" {+#endif++/* standard USB stuff */++/** \ingroup desc+ * Device and/or Interface Class codes */+enum libusb_class_code {+ /** In the context of a \ref libusb_device_descriptor "device descriptor",+ * this bDeviceClass value indicates that each interface specifies its+ * own class information and all interfaces operate independently.+ */+ LIBUSB_CLASS_PER_INTERFACE = 0,++ /** Audio class */+ LIBUSB_CLASS_AUDIO = 1,++ /** Communications class */+ LIBUSB_CLASS_COMM = 2,++ /** Human Interface Device class */+ LIBUSB_CLASS_HID = 3,++ /** Printer dclass */+ LIBUSB_CLASS_PRINTER = 7,++ /** Picture transfer protocol class */+ LIBUSB_CLASS_PTP = 6,++ /** Mass storage class */+ LIBUSB_CLASS_MASS_STORAGE = 8,++ /** Hub class */+ LIBUSB_CLASS_HUB = 9,++ /** Data class */+ LIBUSB_CLASS_DATA = 10,++ /** Class is vendor-specific */+ LIBUSB_CLASS_VENDOR_SPEC = 0xff,+};++/** \ingroup desc+ * Descriptor types as defined by the USB specification. */+enum libusb_descriptor_type {+ /** Device descriptor. See libusb_device_descriptor. */+ LIBUSB_DT_DEVICE = 0x01,++ /** Configuration descriptor. See libusb_config_descriptor. */+ LIBUSB_DT_CONFIG = 0x02,++ /** String descriptor */+ LIBUSB_DT_STRING = 0x03,++ /** Interface descriptor. See libusb_interface_descriptor. */+ LIBUSB_DT_INTERFACE = 0x04,++ /** Endpoint descriptor. See libusb_endpoint_descriptor. */+ LIBUSB_DT_ENDPOINT = 0x05,++ /** HID descriptor */+ LIBUSB_DT_HID = 0x21,++ /** HID report descriptor */+ LIBUSB_DT_REPORT = 0x22,++ /** Physical descriptor */+ LIBUSB_DT_PHYSICAL = 0x23,++ /** Hub descriptor */+ LIBUSB_DT_HUB = 0x29,+};++/* Descriptor sizes per descriptor type */+#define LIBUSB_DT_DEVICE_SIZE 18+#define LIBUSB_DT_CONFIG_SIZE 9+#define LIBUSB_DT_INTERFACE_SIZE 9+#define LIBUSB_DT_ENDPOINT_SIZE 7+#define LIBUSB_DT_ENDPOINT_AUDIO_SIZE 9 /* Audio extension */+#define LIBUSB_DT_HUB_NONVAR_SIZE 7++#define LIBUSB_ENDPOINT_ADDRESS_MASK 0x0f /* in bEndpointAddress */+#define LIBUSB_ENDPOINT_DIR_MASK 0x80++/** \ingroup desc+ * Endpoint direction. Values for bit 7 of the+ * \ref libusb_endpoint_descriptor::bEndpointAddress "endpoint address" scheme.+ */+enum libusb_endpoint_direction {+ /** In: device-to-host */+ LIBUSB_ENDPOINT_IN = 0x80,++ /** Out: host-to-device */+ LIBUSB_ENDPOINT_OUT = 0x00,+};++#define LIBUSB_TRANSFER_TYPE_MASK 0x03 /* in bmAttributes */++/** \ingroup desc+ * Endpoint transfer type. Values for bits 0:1 of the+ * \ref libusb_endpoint_descriptor::bmAttributes "endpoint attributes" field.+ */+enum libusb_transfer_type {+ /** Control endpoint */+ LIBUSB_TRANSFER_TYPE_CONTROL = 0,++ /** Isochronous endpoint */+ LIBUSB_TRANSFER_TYPE_ISOCHRONOUS = 1,++ /** Bulk endpoint */+ LIBUSB_TRANSFER_TYPE_BULK = 2,++ /** Interrupt endpoint */+ LIBUSB_TRANSFER_TYPE_INTERRUPT = 3,+};++/** \ingroup misc+ * Standard requests, as defined in table 9-3 of the USB2 specifications */+enum libusb_standard_request {+ /** Request status of the specific recipient */+ LIBUSB_REQUEST_GET_STATUS = 0x00,++ /** Clear or disable a specific feature */+ LIBUSB_REQUEST_CLEAR_FEATURE = 0x01,++ /* 0x02 is reserved */++ /** Set or enable a specific feature */+ LIBUSB_REQUEST_SET_FEATURE = 0x03,++ /* 0x04 is reserved */++ /** Set device address for all future accesses */+ LIBUSB_REQUEST_SET_ADDRESS = 0x05,++ /** Get the specified descriptor */+ LIBUSB_REQUEST_GET_DESCRIPTOR = 0x06,++ /** Used to update existing descriptors or add new descriptors */+ LIBUSB_REQUEST_SET_DESCRIPTOR = 0x07,++ /** Get the current device configuration value */+ LIBUSB_REQUEST_GET_CONFIGURATION = 0x08,++ /** Set device configuration */+ LIBUSB_REQUEST_SET_CONFIGURATION = 0x09,++ /** Return the selected alternate setting for the specified interface */+ LIBUSB_REQUEST_GET_INTERFACE = 0x0A,++ /** Select an alternate interface for the specified interface */+ LIBUSB_REQUEST_SET_INTERFACE = 0x0B,++ /** Set then report an endpoint's synchronization frame */+ LIBUSB_REQUEST_SYNCH_FRAME = 0x0C,+};++/** \ingroup misc+ * Request type bits of the+ * \ref libusb_control_setup::bmRequestType "bmRequestType" field in control+ * transfers. */+enum libusb_request_type {+ /** Standard */+ LIBUSB_REQUEST_TYPE_STANDARD = (0x00 << 5),++ /** Class */+ LIBUSB_REQUEST_TYPE_CLASS = (0x01 << 5),++ /** Vendor */+ LIBUSB_REQUEST_TYPE_VENDOR = (0x02 << 5),++ /** Reserved */+ LIBUSB_REQUEST_TYPE_RESERVED = (0x03 << 5),+};++/** \ingroup misc+ * Recipient bits of the+ * \ref libusb_control_setup::bmRequestType "bmRequestType" field in control+ * transfers. Values 4 through 31 are reserved. */+enum libusb_request_recipient {+ /** Device */+ LIBUSB_RECIPIENT_DEVICE = 0x00,++ /** Interface */+ LIBUSB_RECIPIENT_INTERFACE = 0x01,++ /** Endpoint */+ LIBUSB_RECIPIENT_ENDPOINT = 0x02,++ /** Other */+ LIBUSB_RECIPIENT_OTHER = 0x03,+};++#define LIBUSB_ISO_SYNC_TYPE_MASK 0x0C++/** \ingroup desc+ * Synchronization type for isochronous endpoints. Values for bits 2:3 of the+ * \ref libusb_endpoint_descriptor::bmAttributes "bmAttributes" field in+ * libusb_endpoint_descriptor.+ */+enum libusb_iso_sync_type {+ /** No synchronization */+ LIBUSB_ISO_SYNC_TYPE_NONE = 0,++ /** Asynchronous */+ LIBUSB_ISO_SYNC_TYPE_ASYNC = 1,++ /** Adaptive */+ LIBUSB_ISO_SYNC_TYPE_ADAPTIVE = 2,++ /** Synchronous */+ LIBUSB_ISO_SYNC_TYPE_SYNC = 3,+};++#define LIBUSB_ISO_USAGE_TYPE_MASK 0x30++/** \ingroup desc+ * Usage type for isochronous endpoints. Values for bits 4:5 of the+ * \ref libusb_endpoint_descriptor::bmAttributes "bmAttributes" field in+ * libusb_endpoint_descriptor.+ */+enum libusb_iso_usage_type {+ /** Data endpoint */+ LIBUSB_ISO_USAGE_TYPE_DATA = 0,++ /** Feedback endpoint */+ LIBUSB_ISO_USAGE_TYPE_FEEDBACK = 1,++ /** Implicit feedback Data endpoint */+ LIBUSB_ISO_USAGE_TYPE_IMPLICIT = 2,+};++/** \ingroup desc+ * A structure representing the standard USB device descriptor. This+ * descriptor is documented in section 9.6.1 of the USB 2.0 specification.+ * All multiple-byte fields are represented in host-endian format.+ */+struct libusb_device_descriptor {+ /** Size of this descriptor (in bytes) */+ uint8_t bLength;++ /** Descriptor type. Will have value+ * \ref libusb_descriptor_type::LIBUSB_DT_DEVICE LIBUSB_DT_DEVICE in this+ * context. */+ uint8_t bDescriptorType;++ /** USB specification release number in binary-coded decimal. A value of+ * 0x0200 indicates USB 2.0, 0x0110 indicates USB 1.1, etc. */+ uint16_t bcdUSB;++ /** USB-IF class code for the device. See \ref libusb_class_code. */+ uint8_t bDeviceClass;++ /** USB-IF subclass code for the device, qualified by the bDeviceClass+ * value */+ uint8_t bDeviceSubClass;++ /** USB-IF protocol code for the device, qualified by the bDeviceClass and+ * bDeviceSubClass values */+ uint8_t bDeviceProtocol;++ /** Maximum packet size for endpoint 0 */+ uint8_t bMaxPacketSize0;++ /** USB-IF vendor ID */+ uint16_t idVendor;++ /** USB-IF product ID */+ uint16_t idProduct;++ /** Device release number in binary-coded decimal */+ uint16_t bcdDevice;++ /** Index of string descriptor describing manufacturer */+ uint8_t iManufacturer;++ /** Index of string descriptor describing product */+ uint8_t iProduct;++ /** Index of string descriptor containing device serial number */+ uint8_t iSerialNumber;++ /** Number of possible configurations */+ uint8_t bNumConfigurations;+};++/** \ingroup desc+ * A structure representing the standard USB endpoint descriptor. This+ * descriptor is documented in section 9.6.3 of the USB 2.0 specification.+ * All multiple-byte fields are represented in host-endian format.+ */+struct libusb_endpoint_descriptor {+ /** Size of this descriptor (in bytes) */+ uint8_t bLength;++ /** Descriptor type. Will have value+ * \ref libusb_descriptor_type::LIBUSB_DT_ENDPOINT LIBUSB_DT_ENDPOINT in+ * this context. */+ uint8_t bDescriptorType;++ /** The address of the endpoint described by this descriptor. Bits 0:3 are+ * the endpoint number. Bits 4:6 are reserved. Bit 7 indicates direction,+ * see \ref libusb_endpoint_direction.+ */+ uint8_t bEndpointAddress;++ /** Attributes which apply to the endpoint when it is configured using+ * the bConfigurationValue. Bits 0:1 determine the transfer type and+ * correspond to \ref libusb_transfer_type. Bits 2:3 are only used for+ * isochronous endpoints and correspond to \ref libusb_iso_sync_type.+ * Bits 4:5 are also only used for isochronous endpoints and correspond to+ * \ref libusb_iso_usage_type. Bits 6:7 are reserved.+ */+ uint8_t bmAttributes;++ /** Maximum packet size this endpoint is capable of sending/receiving. */+ uint16_t wMaxPacketSize;++ /** Interval for polling endpoint for data transfers. */+ uint8_t bInterval;++ /** For audio devices only: the rate at which synchronization feedback+ * is provided. */+ uint8_t bRefresh;++ /** For audio devices only: the address if the synch endpoint */+ uint8_t bSynchAddress;++ /** Extra descriptors. If libusb encounters unknown endpoint descriptors,+ * it will store them here, should you wish to parse them. */+ const unsigned char *extra;++ /** Length of the extra descriptors, in bytes. */+ int extra_length;+};++/** \ingroup desc+ * A structure representing the standard USB interface descriptor. This+ * descriptor is documented in section 9.6.5 of the USB 2.0 specification.+ * All multiple-byte fields are represented in host-endian format.+ */+struct libusb_interface_descriptor {+ /** Size of this descriptor (in bytes) */+ uint8_t bLength;++ /** Descriptor type. Will have value+ * \ref libusb_descriptor_type::LIBUSB_DT_INTERFACE LIBUSB_DT_INTERFACE+ * in this context. */+ uint8_t bDescriptorType;++ /** Number of this interface */+ uint8_t bInterfaceNumber;++ /** Value used to select this alternate setting for this interface */+ uint8_t bAlternateSetting;++ /** Number of endpoints used by this interface (excluding the control+ * endpoint). */+ uint8_t bNumEndpoints;++ /** USB-IF class code for this interface. See \ref libusb_class_code. */+ uint8_t bInterfaceClass;++ /** USB-IF subclass code for this interface, qualified by the+ * bInterfaceClass value */+ uint8_t bInterfaceSubClass;++ /** USB-IF protocol code for this interface, qualified by the+ * bInterfaceClass and bInterfaceSubClass values */+ uint8_t bInterfaceProtocol;++ /** Index of string descriptor describing this interface */+ uint8_t iInterface;++ /** Array of endpoint descriptors. This length of this array is determined+ * by the bNumEndpoints field. */+ const struct libusb_endpoint_descriptor *endpoint;++ /** Extra descriptors. If libusb encounters unknown interface descriptors,+ * it will store them here, should you wish to parse them. */+ const unsigned char *extra;++ /** Length of the extra descriptors, in bytes. */+ int extra_length;+};++/** \ingroup desc+ * A collection of alternate settings for a particular USB interface.+ */+struct libusb_interface {+ /** Array of interface descriptors. The length of this array is determined+ * by the num_altsetting field. */+ const struct libusb_interface_descriptor *altsetting;++ /** The number of alternate settings that belong to this interface */+ int num_altsetting;+};++/** \ingroup desc+ * A structure representing the standard USB configuration descriptor. This+ * descriptor is documented in section 9.6.3 of the USB 2.0 specification.+ * All multiple-byte fields are represented in host-endian format.+ */+struct libusb_config_descriptor {+ /** Size of this descriptor (in bytes) */+ uint8_t bLength;++ /** Descriptor type. Will have value+ * \ref libusb_descriptor_type::LIBUSB_DT_CONFIG LIBUSB_DT_CONFIG+ * in this context. */+ uint8_t bDescriptorType;++ /** Total length of data returned for this configuration */+ uint16_t wTotalLength;++ /** Number of interfaces supported by this configuration */+ uint8_t bNumInterfaces;++ /** Identifier value for this configuration */+ uint8_t bConfigurationValue;++ /** Index of string descriptor describing this configuration */+ uint8_t iConfiguration;++ /** Configuration characteristics */+ uint8_t bmAttributes;++ /** Maximum power consumption of the USB device from this bus in this+ * configuration when the device is fully opreation. Expressed in units+ * of 2 mA. */+ uint8_t MaxPower;++ /** Array of interfaces supported by this configuration. The length of+ * this array is determined by the bNumInterfaces field. */+ const struct libusb_interface *interface;++ /** Extra descriptors. If libusb encounters unknown configuration+ * descriptors, it will store them here, should you wish to parse them. */+ const unsigned char *extra;++ /** Length of the extra descriptors, in bytes. */+ int extra_length;+};++/** \ingroup asyncio+ * Setup packet for control transfers. */+struct libusb_control_setup {+ /** Request type. Bits 0:4 determine recipient, see+ * \ref libusb_request_recipient. Bits 5:6 determine type, see+ * \ref libusb_request_type. Bit 7 determines data transfer direction, see+ * \ref libusb_endpoint_direction.+ */+ uint8_t bmRequestType;++ /** Request. If the type bits of bmRequestType are equal to+ * \ref libusb_request_type::LIBUSB_REQUEST_TYPE_STANDARD+ * "LIBUSB_REQUEST_TYPE_STANDARD" then this field refers to+ * \ref libusb_standard_request. For other cases, use of this field is+ * application-specific. */+ uint8_t bRequest;++ /** Value. Varies according to request */+ uint16_t wValue;++ /** Index. Varies according to request, typically used to pass an index+ * or offset */+ uint16_t wIndex;++ /** Number of bytes to transfer */+ uint16_t wLength;+};++#define LIBUSB_CONTROL_SETUP_SIZE (sizeof(struct libusb_control_setup))++/* libusb */++struct libusb_context;+struct libusb_device;+struct libusb_device_handle;++/** \ingroup lib+ * Structure representing a libusb session. The concept of individual libusb+ * sessions allows for your program to use two libraries (or dynamically+ * load two modules) which both independently use libusb. This will prevent+ * interference between the individual libusb users - for example+ * libusb_set_debug() will not affect the other user of the library, and+ * libusb_exit() will not destroy resources that the other user is still+ * using.+ *+ * Sessions are created by libusb_init() and destroyed through libusb_exit().+ * If your application is guaranteed to only ever include a single libusb+ * user (i.e. you), you do not have to worry about contexts: pass NULL in+ * every function call where a context is required. The default context+ * will be used.+ *+ * For more information, see \ref contexts.+ */+typedef struct libusb_context libusb_context;++/** \ingroup dev+ * Structure representing a USB device detected on the system. This is an+ * opaque type for which you are only ever provided with a pointer, usually+ * originating from libusb_get_device_list().+ *+ * Certain operations can be performed on a device, but in order to do any+ * I/O you will have to first obtain a device handle using libusb_open().+ *+ * Devices are reference counted with libusb_device_ref() and+ * libusb_device_unref(), and are freed when the reference count reaches 0.+ * New devices presented by libusb_get_device_list() have a reference count of+ * 1, and libusb_free_device_list() can optionally decrease the reference count+ * on all devices in the list. libusb_open() adds another reference which is+ * later destroyed by libusb_close().+ */+typedef struct libusb_device libusb_device;+++/** \ingroup dev+ * Structure representing a handle on a USB device. This is an opaque type for+ * which you are only ever provided with a pointer, usually originating from+ * libusb_open().+ *+ * A device handle is used to perform I/O and other operations. When finished+ * with a device handle, you should call libusb_close().+ */+typedef struct libusb_device_handle libusb_device_handle;++/** \ingroup misc+ * Error codes. Most libusb functions return 0 on success or one of these+ * codes on failure.+ */+enum libusb_error {+ /** Success (no error) */+ LIBUSB_SUCCESS = 0,++ /** Input/output error */+ LIBUSB_ERROR_IO = -1,++ /** Invalid parameter */+ LIBUSB_ERROR_INVALID_PARAM = -2,++ /** Access denied (insufficient permissions) */+ LIBUSB_ERROR_ACCESS = -3,++ /** No such device (it may have been disconnected) */+ LIBUSB_ERROR_NO_DEVICE = -4,++ /** Entity not found */+ LIBUSB_ERROR_NOT_FOUND = -5,++ /** Resource busy */+ LIBUSB_ERROR_BUSY = -6,++ /** Operation timed out */+ LIBUSB_ERROR_TIMEOUT = -7,++ /** Overflow */+ LIBUSB_ERROR_OVERFLOW = -8,++ /** Pipe error */+ LIBUSB_ERROR_PIPE = -9,++ /** System call interrupted (perhaps due to signal) */+ LIBUSB_ERROR_INTERRUPTED = -10,++ /** Insufficient memory */+ LIBUSB_ERROR_NO_MEM = -11,++ /** Operation not supported or unimplemented on this platform */+ LIBUSB_ERROR_NOT_SUPPORTED = -12,++ /** Other error */+ LIBUSB_ERROR_OTHER = -99,+};++/** \ingroup asyncio+ * Transfer status codes */+enum libusb_transfer_status {+ /** Transfer completed without error. Note that this does not indicate+ * that the entire amount of requested data was transferred. */+ LIBUSB_TRANSFER_COMPLETED,++ /** Transfer failed */+ LIBUSB_TRANSFER_ERROR,++ /** Transfer timed out */+ LIBUSB_TRANSFER_TIMED_OUT,++ /** Transfer was cancelled */+ LIBUSB_TRANSFER_CANCELLED,++ /** For bulk/interrupt endpoints: halt condition detected (endpoint+ * stalled). For control endpoints: control request not supported. */+ LIBUSB_TRANSFER_STALL,++ /** Device was disconnected */+ LIBUSB_TRANSFER_NO_DEVICE,++ /** Device sent more data than requested */+ LIBUSB_TRANSFER_OVERFLOW,+};++/** \ingroup asyncio+ * libusb_transfer.flags values */+enum libusb_transfer_flags {+ /** Report short frames as errors */+ LIBUSB_TRANSFER_SHORT_NOT_OK = 1<<0,++ /** Automatically free() transfer buffer during libusb_free_transfer() */+ LIBUSB_TRANSFER_FREE_BUFFER = 1<<1,++ /** Automatically call libusb_free_transfer() after callback returns.+ * If this flag is set, it is illegal to call libusb_free_transfer()+ * from your transfer callback, as this will result in a double-free+ * when this flag is acted upon. */+ LIBUSB_TRANSFER_FREE_TRANSFER = 1<<2,+};++/** \ingroup asyncio+ * Isochronous packet descriptor. */+struct libusb_iso_packet_descriptor {+ /** Length of data to request in this packet */+ unsigned int length;++ /** Amount of data that was actually transferred */+ unsigned int actual_length;++ /** Status code for this packet */+ enum libusb_transfer_status status;+};++struct libusb_transfer;++typedef void (*libusb_transfer_cb_fn)(struct libusb_transfer *transfer);++/** \ingroup asyncio+ * The generic USB transfer structure. The user populates this structure and+ * then submits it in order to request a transfer. After the transfer has+ * completed, the library populates the transfer with the results and passes+ * it back to the user.+ */+struct libusb_transfer {+ /** Handle of the device that this transfer will be submitted to */+ libusb_device_handle *dev_handle;++ /** A bitwise OR combination of \ref libusb_transfer_flags. */+ uint8_t flags;++ /** Address of the endpoint where this transfer will be sent. */+ unsigned char endpoint;++ /** Type of the endpoint from \ref libusb_transfer_type */+ unsigned char type;++ /** Timeout for this transfer in millseconds. A value of 0 indicates no+ * timeout. */+ unsigned int timeout;++ /** The status of the transfer. Read-only, and only for use within+ * transfer callback function.+ *+ * If this is an isochronous transfer, this field may read COMPLETED even+ * if there were errors in the frames. Use the+ * \ref libusb_iso_packet_descriptor::status "status" field in each packet+ * to determine if errors occurred. */+ enum libusb_transfer_status status;++ /** Length of the data buffer */+ int length;++ /** Actual length of data that was transferred. Read-only, and only for+ * use within transfer callback function. Not valid for isochronous+ * endpoint transfers. */+ int actual_length;++ /** Callback function. This will be invoked when the transfer completes,+ * fails, or is cancelled. */+ libusb_transfer_cb_fn callback;++ /** User context data to pass to the callback function. */+ void *user_data;++ /** Data buffer */+ unsigned char *buffer;++ /** Number of isochronous packets. Only used for I/O with isochronous+ * endpoints. */+ int num_iso_packets;++ /** Isochronous packet descriptors, for isochronous transfers only. */+ struct libusb_iso_packet_descriptor iso_packet_desc[0];+};++int libusb_init(libusb_context **ctx);+void libusb_exit(libusb_context *ctx);+void libusb_set_debug(libusb_context *ctx, int level);++ssize_t libusb_get_device_list(libusb_context *ctx,+ libusb_device ***list);+void libusb_free_device_list(libusb_device **list, int unref_devices);+libusb_device *libusb_ref_device(libusb_device *dev);+void libusb_unref_device(libusb_device *dev);++int libusb_get_configuration(libusb_device_handle *dev, int *config);+int libusb_get_device_descriptor(libusb_device *dev,+ struct libusb_device_descriptor *desc);+int libusb_get_active_config_descriptor(libusb_device *dev,+ struct libusb_config_descriptor **config);+int libusb_get_config_descriptor(libusb_device *dev, uint8_t config_index,+ struct libusb_config_descriptor **config);+int libusb_get_config_descriptor_by_value(libusb_device *dev,+ uint8_t bConfigurationValue, struct libusb_config_descriptor **config);+void libusb_free_config_descriptor(struct libusb_config_descriptor *config);+uint8_t libusb_get_bus_number(libusb_device *dev);+uint8_t libusb_get_device_address(libusb_device *dev);+int libusb_get_max_packet_size(libusb_device *dev, unsigned char endpoint);++int libusb_open(libusb_device *dev, libusb_device_handle **handle);+void libusb_close(libusb_device_handle *dev_handle);+libusb_device *libusb_get_device(libusb_device_handle *dev_handle);++int libusb_set_configuration(libusb_device_handle *dev, int configuration);+int libusb_claim_interface(libusb_device_handle *dev, int iface);+int libusb_release_interface(libusb_device_handle *dev, int iface);++libusb_device_handle *libusb_open_device_with_vid_pid(libusb_context *ctx,+ uint16_t vendor_id, uint16_t product_id);++int libusb_set_interface_alt_setting(libusb_device_handle *dev,+ int interface_number, int alternate_setting);+int libusb_clear_halt(libusb_device_handle *dev, unsigned char endpoint);+int libusb_reset_device(libusb_device_handle *dev);++int libusb_kernel_driver_active(libusb_device_handle *dev, int interface);+int libusb_detach_kernel_driver(libusb_device_handle *dev, int interface);+int libusb_attach_kernel_driver(libusb_device_handle *dev, int interface);++/* async I/O */++/** \ingroup asyncio+ * Get the data section of a control transfer. This convenience function is here+ * to remind you that the data does not start until 8 bytes into the actual+ * buffer, as the setup packet comes first.+ *+ * Calling this function only makes sense from a transfer callback function,+ * or situations where you have already allocated a suitably sized buffer at+ * transfer->buffer.+ *+ * \param transfer a transfer+ * \returns pointer to the first byte of the data section+ */+static inline unsigned char *libusb_control_transfer_get_data(+ struct libusb_transfer *transfer)+{+ return transfer->buffer + LIBUSB_CONTROL_SETUP_SIZE;+}++/** \ingroup asyncio+ * Get the control setup packet of a control transfer. This convenience+ * function is here to remind you that the control setup occupies the first+ * 8 bytes of the transfer data buffer.+ *+ * Calling this function only makes sense from a transfer callback function,+ * or situations where you have already allocated a suitably sized buffer at+ * transfer->buffer.+ *+ * \param transfer a transfer+ * \returns a casted pointer to the start of the transfer data buffer+ */+static inline struct libusb_control_setup *libusb_control_transfer_get_setup(+ struct libusb_transfer *transfer)+{+ return (struct libusb_control_setup *) transfer->buffer;+}++/** \ingroup asyncio+ * Helper function to populate the setup packet (first 8 bytes of the data+ * buffer) for a control transfer. The wIndex, wValue and wLength values should+ * be given in host-endian byte order.+ *+ * \param buffer buffer to output the setup packet into+ * \param bmRequestType see the+ * \ref libusb_control_setup::bmRequestType "bmRequestType" field of+ * \ref libusb_control_setup+ * \param bRequest see the+ * \ref libusb_control_setup::bRequest "bRequest" field of+ * \ref libusb_control_setup+ * \param wValue see the+ * \ref libusb_control_setup::wValue "wValue" field of+ * \ref libusb_control_setup+ * \param wIndex see the+ * \ref libusb_control_setup::wIndex "wIndex" field of+ * \ref libusb_control_setup+ * \param wLength see the+ * \ref libusb_control_setup::wLength "wLength" field of+ * \ref libusb_control_setup+ */+static inline void libusb_fill_control_setup(unsigned char *buffer,+ uint8_t bmRequestType, uint8_t bRequest, uint16_t wValue, uint16_t wIndex,+ uint16_t wLength)+{+ struct libusb_control_setup *setup = (struct libusb_control_setup *) buffer;+ setup->bmRequestType = bmRequestType;+ setup->bRequest = bRequest;+ setup->wValue = libusb_cpu_to_le16(wValue);+ setup->wIndex = libusb_cpu_to_le16(wIndex);+ setup->wLength = libusb_cpu_to_le16(wLength);+}++struct libusb_transfer *libusb_alloc_transfer(int iso_packets);+int libusb_submit_transfer(struct libusb_transfer *transfer);+int libusb_cancel_transfer(struct libusb_transfer *transfer);+void libusb_free_transfer(struct libusb_transfer *transfer);++/** \ingroup asyncio+ * Helper function to populate the required \ref libusb_transfer fields+ * for a control transfer.+ *+ * If you pass a transfer buffer to this function, the first 8 bytes will+ * be interpreted as a control setup packet, and the wLength field will be+ * used to automatically populate the \ref libusb_transfer::length "length"+ * field of the transfer. Therefore the recommended approach is:+ * -# Allocate a suitably sized data buffer (including space for control setup)+ * -# Call libusb_fill_control_setup()+ * -# If this is a host-to-device transfer with a data stage, put the data+ * in place after the setup packet+ * -# Call this function+ * -# Call libusb_submit_transfer()+ *+ * It is also legal to pass a NULL buffer to this function, in which case this+ * function will not attempt to populate the length field. Remember that you+ * must then populate the buffer and length fields later.+ *+ * \param transfer the transfer to populate+ * \param dev_handle handle of the device that will handle the transfer+ * \param buffer data buffer. If provided, this function will interpret the+ * first 8 bytes as a setup packet and infer the transfer length from that.+ * \param callback callback function to be invoked on transfer completion+ * \param user_data user data to pass to callback function+ * \param timeout timeout for the transfer in milliseconds+ */+static inline void libusb_fill_control_transfer(+ struct libusb_transfer *transfer, libusb_device_handle *dev_handle,+ unsigned char *buffer, libusb_transfer_cb_fn callback, void *user_data,+ unsigned int timeout)+{+ struct libusb_control_setup *setup = (struct libusb_control_setup *) buffer;+ transfer->dev_handle = dev_handle;+ transfer->endpoint = 0;+ transfer->type = LIBUSB_TRANSFER_TYPE_CONTROL;+ transfer->timeout = timeout;+ transfer->buffer = buffer;+ if (setup)+ transfer->length = LIBUSB_CONTROL_SETUP_SIZE+ + libusb_le16_to_cpu(setup->wLength);+ transfer->user_data = user_data;+ transfer->callback = callback;+}++/** \ingroup asyncio+ * Helper function to populate the required \ref libusb_transfer fields+ * for a bulk transfer.+ *+ * \param transfer the transfer to populate+ * \param dev_handle handle of the device that will handle the transfer+ * \param endpoint address of the endpoint where this transfer will be sent+ * \param buffer data buffer+ * \param length length of data buffer+ * \param callback callback function to be invoked on transfer completion+ * \param user_data user data to pass to callback function+ * \param timeout timeout for the transfer in milliseconds+ */+static inline void libusb_fill_bulk_transfer(struct libusb_transfer *transfer,+ libusb_device_handle *dev_handle, unsigned char endpoint,+ unsigned char *buffer, int length, libusb_transfer_cb_fn callback,+ void *user_data, unsigned int timeout)+{+ transfer->dev_handle = dev_handle;+ transfer->endpoint = endpoint;+ transfer->type = LIBUSB_TRANSFER_TYPE_BULK;+ transfer->timeout = timeout;+ transfer->buffer = buffer;+ transfer->length = length;+ transfer->user_data = user_data;+ transfer->callback = callback;+}++/** \ingroup asyncio+ * Helper function to populate the required \ref libusb_transfer fields+ * for an interrupt transfer.+ *+ * \param transfer the transfer to populate+ * \param dev_handle handle of the device that will handle the transfer+ * \param endpoint address of the endpoint where this transfer will be sent+ * \param buffer data buffer+ * \param length length of data buffer+ * \param callback callback function to be invoked on transfer completion+ * \param user_data user data to pass to callback function+ * \param timeout timeout for the transfer in milliseconds+ */+static inline void libusb_fill_interrupt_transfer(+ struct libusb_transfer *transfer, libusb_device_handle *dev_handle,+ unsigned char endpoint, unsigned char *buffer, int length,+ libusb_transfer_cb_fn callback, void *user_data, unsigned int timeout)+{+ transfer->dev_handle = dev_handle;+ transfer->endpoint = endpoint;+ transfer->type = LIBUSB_TRANSFER_TYPE_INTERRUPT;+ transfer->timeout = timeout;+ transfer->buffer = buffer;+ transfer->length = length;+ transfer->user_data = user_data;+ transfer->callback = callback;+}++/** \ingroup asyncio+ * Helper function to populate the required \ref libusb_transfer fields+ * for an isochronous transfer.+ *+ * \param transfer the transfer to populate+ * \param dev_handle handle of the device that will handle the transfer+ * \param endpoint address of the endpoint where this transfer will be sent+ * \param buffer data buffer+ * \param length length of data buffer+ * \param num_iso_packets the number of isochronous packets+ * \param callback callback function to be invoked on transfer completion+ * \param user_data user data to pass to callback function+ * \param timeout timeout for the transfer in milliseconds+ */+static inline void libusb_fill_iso_transfer(struct libusb_transfer *transfer,+ libusb_device_handle *dev_handle, unsigned char endpoint,+ unsigned char *buffer, int length, int num_iso_packets,+ libusb_transfer_cb_fn callback, void *user_data, unsigned int timeout)+{+ transfer->dev_handle = dev_handle;+ transfer->endpoint = endpoint;+ transfer->type = LIBUSB_TRANSFER_TYPE_ISOCHRONOUS;+ transfer->timeout = timeout;+ transfer->buffer = buffer;+ transfer->length = length;+ transfer->num_iso_packets = num_iso_packets;+ transfer->user_data = user_data;+ transfer->callback = callback;+}++/** \ingroup asyncio+ * Convenience function to set the length of all packets in an isochronous+ * transfer, based on the num_iso_packets field in the transfer structure.+ *+ * \param transfer a transfer+ * \param length the length to set in each isochronous packet descriptor+ * \see libusb_get_max_packet_size()+ */+static inline void libusb_set_iso_packet_lengths(+ struct libusb_transfer *transfer, unsigned int length)+{+ int i;+ for (i = 0; i < transfer->num_iso_packets; i++)+ transfer->iso_packet_desc[i].length = length;+}++/** \ingroup asyncio+ * Convenience function to locate the position of an isochronous packet+ * within the buffer of an isochronous transfer.+ *+ * This is a thorough function which loops through all preceding packets,+ * accumulating their lengths to find the position of the specified packet.+ * Typically you will assign equal lengths to each packet in the transfer,+ * and hence the above method is sub-optimal. You may wish to use+ * libusb_get_iso_packet_buffer_simple() instead.+ *+ * \param transfer a transfer+ * \param packet the packet to return the address of+ * \returns the base address of the packet buffer inside the transfer buffer,+ * or NULL if the packet does not exist.+ * \see libusb_get_iso_packet_buffer_simple()+ */+static inline unsigned char *libusb_get_iso_packet_buffer(+ struct libusb_transfer *transfer, unsigned int packet)+{+ int i;+ size_t offset = 0;++ if (packet >= transfer->num_iso_packets)+ return NULL;++ for (i = 0; i < packet; i++)+ offset += transfer->iso_packet_desc[i].length;++ return transfer->buffer + offset;+}++/** \ingroup asyncio+ * Convenience function to locate the position of an isochronous packet+ * within the buffer of an isochronous transfer, for transfers where each+ * packet is of identical size.+ *+ * This function relies on the assumption that every packet within the transfer+ * is of identical size to the first packet. Calculating the location of+ * the packet buffer is then just a simple calculation:+ * <tt>buffer + (packet_size * packet)</tt>+ *+ * Do not use this function on transfers other than those that have identical+ * packet lengths for each packet.+ *+ * \param transfer a transfer+ * \param packet the packet to return the address of+ * \returns the base address of the packet buffer inside the transfer buffer,+ * or NULL if the packet does not exist.+ * \see libusb_get_iso_packet_buffer()+ */+static inline unsigned char *libusb_get_iso_packet_buffer_simple(+ struct libusb_transfer *transfer, unsigned int packet)+{+ if (packet >= transfer->num_iso_packets)+ return NULL;++ return transfer->buffer + (transfer->iso_packet_desc[0].length * packet);+}++/* sync I/O */++int libusb_control_transfer(libusb_device_handle *dev_handle,+ uint8_t request_type, uint8_t request, uint16_t value, uint16_t index,+ unsigned char *data, uint16_t length, unsigned int timeout);++int libusb_bulk_transfer(libusb_device_handle *dev_handle,+ unsigned char endpoint, unsigned char *data, int length,+ int *actual_length, unsigned int timeout);++int libusb_interrupt_transfer(libusb_device_handle *dev_handle,+ unsigned char endpoint, unsigned char *data, int length,+ int *actual_length, unsigned int timeout);++/** \ingroup desc+ * Retrieve a descriptor from the default control pipe.+ * This is a convenience function which formulates the appropriate control+ * message to retrieve the descriptor.+ *+ * \param dev a device handle+ * \param desc_type the descriptor type, see \ref libusb_descriptor_type+ * \param desc_index the index of the descriptor to retrieve+ * \param data output buffer for descriptor+ * \param length size of data buffer+ * \returns number of bytes returned in data, or LIBUSB_ERROR code on failure+ */+static inline int libusb_get_descriptor(libusb_device_handle *dev,+ uint8_t desc_type, uint8_t desc_index, unsigned char *data, int length)+{+ return libusb_control_transfer(dev, LIBUSB_ENDPOINT_IN,+ LIBUSB_REQUEST_GET_DESCRIPTOR, (desc_type << 8) | desc_index, 0, data,+ length, 1000);+}++/** \ingroup desc+ * Retrieve a descriptor from a device.+ * This is a convenience function which formulates the appropriate control+ * message to retrieve the descriptor. The string returned is Unicode, as+ * detailed in the USB specifications.+ *+ * \param dev a device handle+ * \param desc_index the index of the descriptor to retrieve+ * \param langid the language ID for the string descriptor+ * \param data output buffer for descriptor+ * \param length size of data buffer+ * \returns number of bytes returned in data, or LIBUSB_ERROR code on failure+ * \see libusb_get_string_descriptor_ascii()+ */+static inline int libusb_get_string_descriptor(libusb_device_handle *dev,+ uint8_t desc_index, uint16_t langid, unsigned char *data, int length)+{+ return libusb_control_transfer(dev, LIBUSB_ENDPOINT_IN,+ LIBUSB_REQUEST_GET_DESCRIPTOR, (LIBUSB_DT_STRING << 8) | desc_index,+ langid, data, length, 1000);+}++int libusb_get_string_descriptor_ascii(libusb_device_handle *dev,+ uint8_t index, unsigned char *data, int length);++/* polling and timeouts */++int libusb_try_lock_events(libusb_context *ctx);+void libusb_lock_events(libusb_context *ctx);+void libusb_unlock_events(libusb_context *ctx);+int libusb_event_handling_ok(libusb_context *ctx);+int libusb_event_handler_active(libusb_context *ctx);+void libusb_lock_event_waiters(libusb_context *ctx);+void libusb_unlock_event_waiters(libusb_context *ctx);+int libusb_wait_for_event(libusb_context *ctx, struct timeval *tv);++int libusb_handle_events_timeout(libusb_context *ctx, struct timeval *tv);+int libusb_handle_events(libusb_context *ctx);+int libusb_handle_events_locked(libusb_context *ctx, struct timeval *tv);+int libusb_get_next_timeout(libusb_context *ctx, struct timeval *tv);++/** \ingroup poll+ * File descriptor for polling+ */+struct libusb_pollfd {+ /** Numeric file descriptor */+ int fd;++ /** Event flags to poll for from <poll.h>. POLLIN indicates that you+ * should monitor this file descriptor for becoming ready to read from,+ * and POLLOUT indicates that you should monitor this file descriptor for+ * nonblocking write readiness. */+ short events;+};++/** \ingroup poll+ * Callback function, invoked when a new file descriptor should be added+ * to the set of file descriptors monitored for events.+ * \param fd the new file descriptor+ * \param events events to monitor for, see \ref libusb_pollfd for a+ * description+ * \param user_data User data pointer specified in+ * libusb_set_pollfd_notifiers() call+ * \see libusb_set_pollfd_notifiers()+ */+typedef void (*libusb_pollfd_added_cb)(int fd, short events, void *user_data);++/** \ingroup poll+ * Callback function, invoked when a file descriptor should be removed from+ * the set of file descriptors being monitored for events. After returning+ * from this callback, do not use that file descriptor again.+ * \param fd the file descriptor to stop monitoring+ * \param user_data User data pointer specified in+ * libusb_set_pollfd_notifiers() call+ * \see libusb_set_pollfd_notifiers()+ */+typedef void (*libusb_pollfd_removed_cb)(int fd, void *user_data);++const struct libusb_pollfd **libusb_get_pollfds(libusb_context *ctx);+void libusb_set_pollfd_notifiers(libusb_context *ctx,+ libusb_pollfd_added_cb added_cb, libusb_pollfd_removed_cb removed_cb,+ void *user_data);++#ifdef __cplusplus+}+#endif++#endif
+ src/inlines.c view
@@ -0,0 +1,116 @@+#include <libusb.h>++unsigned char*+inline_libusb_control_transfer_get_data (+ struct libusb_transfer * transfer )+{+ return libusb_control_transfer_get_data (transfer);+}++struct libusb_control_setup*+inline_libusb_control_transfer_get_setup (+ struct libusb_transfer * transfer )+{+ return libusb_control_transfer_get_setup (transfer);+}++void+inline_libusb_fill_control_setup (unsigned char *buffer,+ uint8_t bmRequestType, uint8_t bRequest, uint16_t wValue,+ uint16_t wIndex, uint16_t wLength)+{+ libusb_fill_control_setup(buffer,bmRequestType,bRequest,+ wValue,wIndex,wLength);+}++void+inline_libusb_fill_control_transfer (struct libusb_transfer *transfer,+ libusb_device_handle *dev_handle, unsigned char *buffer,+ libusb_transfer_cb_fn callback, void *user_data, unsigned int timeout)+{+ libusb_fill_control_transfer(transfer,dev_handle,buffer,+ callback,user_data,timeout);+}++void+inline_libusb_fill_bulk_transfer (struct libusb_transfer *transfer,+ libusb_device_handle *dev_handle, unsigned char endpoint,+ unsigned char *buffer, int length, libusb_transfer_cb_fn callback,+ void *user_data, unsigned int timeout)+{+ libusb_fill_bulk_transfer(transfer,dev_handle,endpoint,buffer,+ length,callback,user_data,timeout);+}++void+inline_libusb_fill_interrupt_transfer (struct libusb_transfer *transfer,+ libusb_device_handle *dev_handle, unsigned char endpoint,+ unsigned char *buffer, int length, libusb_transfer_cb_fn callback,+ void *user_data, unsigned int timeout)+{+ libusb_fill_interrupt_transfer(transfer,dev_handle,endpoint,+ buffer,length,callback,user_data,timeout);+}++void+inline_libusb_fill_iso_transfer (struct libusb_transfer *transfer,+ libusb_device_handle *dev_handle, unsigned char endpoint,+ unsigned char *buffer, int length,+ int num_iso_packets, libusb_transfer_cb_fn callback,+ void *user_data, unsigned int timeout)+{+ libusb_fill_iso_transfer(transfer,dev_handle,endpoint,+ buffer,length,num_iso_packets,callback,user_data,timeout);+}++void+inline_libusb_set_iso_packet_lengths (struct libusb_transfer *transfer,+ unsigned int length)+{+ libusb_set_iso_packet_lengths(transfer,length);+}++unsigned char *+inline_libusb_get_iso_packet_buffer (+ struct libusb_transfer *transfer, unsigned int packet)+{+ return libusb_get_iso_packet_buffer(transfer,packet);+}++unsigned char *+inline_libusb_get_iso_packet_buffer_simple (+ struct libusb_transfer *transfer, unsigned int packet)+{+ return libusb_get_iso_packet_buffer_simple(transfer,packet);+}++int +inline_libusb_get_descriptor (libusb_device_handle *dev,+ uint8_t desc_type, uint8_t desc_index, unsigned char *data,+ int length)+{+ return libusb_get_descriptor(dev,desc_type,desc_index,+ data,length);+}++int +inline_libusb_get_string_descriptor (libusb_device_handle *dev,+ uint8_t desc_index, uint16_t langid, unsigned char *data,+ int length)+{+ return libusb_get_string_descriptor(dev,desc_index,langid,+ data,length);+}++uint16_t+inline_libusb_cpu_to_le16 (uint16_t x)+{+ return libusb_cpu_to_le16(x);+}++uint16_t+inline_libusb_le16_to_cpu (uint16_t x)+{+ return libusb_le16_to_cpu(x);+}+
− src/types.c
@@ -1,427 +0,0 @@-#include <libusb.h>--/*- Sizes of structs we are going to- use in 'sizeOf' method of Storable instances.-*/--int size_of_libusb_device_descriptor (void)-{- return sizeof (struct libusb_device_descriptor);-}--int size_of_libusb_endpoint_descriptor (void)-{- return sizeof (struct libusb_endpoint_descriptor);-}--int size_of_libusb_interface_descriptor (void)-{- return sizeof (struct libusb_interface_descriptor);-}--int size_of_libusb_interface (void)-{- return sizeof (struct libusb_interface);-}--int size_of_libusb_config_descriptor (void)-{- return sizeof (struct libusb_config_descriptor);-}--int size_of_libusb_control_setup (void)-{- return sizeof (struct libusb_control_setup);-}--int size_of_libusb_iso_packet_descriptor (void)-{- return sizeof (struct libusb_iso_packet_descriptor);-}--int size_of_libusb_transfer (void)-{- return sizeof (struct libusb_transfer);-}--int size_of_libusb_pollfd (void)-{- return sizeof (struct libusb_pollfd);-}--/*- Functions that fill a C struct- after received parameters. They will- be used in 'poke' method of Storable- instances.-*/--void hs2c_libusb_device_descriptor (struct libusb_device_descriptor *p,- uint8_t p1,- uint8_t p2,- uint16_t p3,- uint8_t p4,- uint8_t p5,- uint8_t p6,- uint8_t p7,- uint16_t p8,- uint16_t p9,- uint16_t p10,- uint8_t p11,- uint8_t p12,- uint8_t p13,- uint8_t p14)-{- p->bLength = p1;- p->bDescriptorType = p2;- p->bcdUSB = p3;- p->bDeviceClass = p4;- p->bDeviceSubClass = p5;- p->bDeviceProtocol = p6;- p->bMaxPacketSize0 = p7;- p->idVendor = p8;- p->idProduct = p9;- p->bcdDevice = p10;- p->iManufacturer = p11;- p->iProduct = p12;- p->iSerialNumber = p13;- p->bNumConfigurations = p14;-}--void hs2c_libusb_endpoint_descriptor (struct libusb_endpoint_descriptor *p,- uint8_t p1,- uint8_t p2,- uint8_t p3,- uint8_t p4,- uint16_t p5,- uint8_t p6,- uint8_t p7,- uint8_t p8,- const unsigned char *p9,- int p10)-{- p->bLength = p1;- p->bDescriptorType = p2;- p->bEndpointAddress = p3;- p->bmAttributes = p4;- p->wMaxPacketSize = p5;- p->bInterval = p6;- p->bRefresh = p7;- p->bSynchAddress = p8;- p->extra = p9;- p->extra_length = p10;-}--void hs2c_libusb_interface_descriptor (struct libusb_interface_descriptor *p,- uint8_t p1,- uint8_t p2,- uint8_t p3,- uint8_t p4,- uint8_t p5,- uint8_t p6,- uint8_t p7,- uint8_t p8,- uint8_t p9,- struct libusb_endpoint_descriptor *p10,- const unsigned char *p11,- int p12)-{- p->bLength = p1;- p->bDescriptorType = p2;- p->bInterfaceNumber = p3;- p->bAlternateSetting = p4;- p->bNumEndpoints = p5;- p->bInterfaceClass = p6;- p->bInterfaceSubClass = p7;- p->bInterfaceProtocol = p8;- p->iInterface = p9;- p->endpoint = p10;- p->extra = p11;- p->extra_length = p12;-}--void hs2c_libusb_interface (struct libusb_interface *p,- struct libusb_interface_descriptor *p1,- int p2)-{- p->altsetting = p1;- p->num_altsetting = p2;-}--void hs2c_libusb_config_descriptor (struct libusb_config_descriptor *p,- uint8_t p1,- uint8_t p2,- uint16_t p3,- uint8_t p4,- uint8_t p5,- uint8_t p6,- uint8_t p7,- uint8_t p8,- struct libusb_interface *p9,- const unsigned char *p10,- int p11)-{- p->bLength = p1;- p->bDescriptorType = p2;- p->wTotalLength = p3;- p->bNumInterfaces = p4;- p->bConfigurationValue = p5;- p->iConfiguration = p6;- p->bmAttributes = p7;- p->MaxPower = p8;- p->interface = p9;- p->extra = p10;- p->extra_length = p11;-}--void hs2c_libusb_control_setup (-struct libusb_control_setup *p,- uint8_t p1,- uint8_t p2,- uint16_t p3,- uint16_t p4,- uint16_t p5)-{- p->bmRequestType = p1;- p->bRequest = p2;- p->wValue = p3;- p->wIndex = p4;- p->wLength = p5;-}--void hs2c_libusb_iso_packet_descriptor (-struct libusb_iso_packet_descriptor *p,- unsigned int p1,- unsigned int p2,- enum libusb_transfer_status p3)-{- p->length = p1;- p->actual_length = p2;- p->status = p3;-}--void hs2c_libusb_transfer (struct libusb_transfer *p,- libusb_device_handle *p1,- uint8_t p2,- unsigned char p3,- unsigned char p4,- unsigned int p5,- enum libusb_transfer_status p6,- int p7,- int p8,- libusb_transfer_cb_fn p9,- void *p10,- unsigned char *p11,- int p12)-{- p->dev_handle = p1;- p->flags = p2;- p->endpoint = p3;- p->type = p4;- p->timeout = p5;- p->status = p6;- p->length = p7;- p->actual_length = p8;- p->callback = p9;- p->user_data = p10;- p->buffer = p11;- p->num_iso_packets = p12;-}--void hs2c_libusb_pollfd (struct libusb_pollfd *p,- int p1,- short p2)-{- p->fd = p1;- p->events = p2;-}--/*- Functions that read the values of- a C struct into pointers. They will- be used at 'peek' method of Storable- instances.-*/--void c2hs_libusb_device_descriptor (struct libusb_device_descriptor *p,- uint8_t *p1,- uint8_t *p2,- uint16_t *p3,- uint8_t *p4,- uint8_t *p5,- uint8_t *p6,- uint8_t *p7,- uint16_t *p8,- uint16_t *p9,- uint16_t *p10,- uint8_t *p11,- uint8_t *p12,- uint8_t *p13,- uint8_t *p14)-{- *p1 = p->bLength;- *p2 = p->bDescriptorType;- *p3 = p->bcdUSB;- *p4 = p->bDeviceClass;- *p5 = p->bDeviceSubClass;- *p6 = p->bDeviceProtocol;- *p7 = p->bMaxPacketSize0;- *p8 = p->idVendor;- *p9 = p->idProduct;- *p10 = p->bcdDevice;- *p11 = p->iManufacturer;- *p12 = p->iProduct;- *p13 = p->iSerialNumber;- *p14 = p->bNumConfigurations;-}--void c2hs_libusb_endpoint_descriptor (-struct libusb_endpoint_descriptor *p,- uint8_t *p1,- uint8_t *p2,- uint8_t *p3,- uint8_t *p4,- uint16_t *p5,- uint8_t *p6,- uint8_t *p7,- uint8_t *p8,- const unsigned char **p9,- int *p10)-{- *p1 = p->bLength;- *p2 = p->bDescriptorType;- *p3 = p->bEndpointAddress;- *p4 = p->bmAttributes;- *p5 = p->wMaxPacketSize;- *p6 = p->bInterval;- *p7 = p->bRefresh;- *p8 = p->bSynchAddress;- *p9 = p->extra;- *p10 = p->extra_length;-}--void c2hs_libusb_interface_descriptor (-struct libusb_interface_descriptor *p,- uint8_t *p1,- uint8_t *p2,- uint8_t *p3,- uint8_t *p4,- uint8_t *p5,- uint8_t *p6,- uint8_t *p7,- uint8_t *p8,- uint8_t *p9,- const struct libusb_endpoint_descriptor **p10,- const unsigned char **p11,- int *p12)-{- *p1 = p->bLength;- *p2 = p->bDescriptorType;- *p3 = p->bInterfaceNumber;- *p4 = p->bAlternateSetting;- *p5 = p->bNumEndpoints;- *p6 = p->bInterfaceClass;- *p7 = p->bInterfaceSubClass;- *p8 = p->bInterfaceProtocol;- *p9 = p->iInterface;- *p10 = p->endpoint;- *p11 = p->extra;- *p12 = p->extra_length;-}--void c2hs_libusb_interface (struct libusb_interface *p,- const struct libusb_interface_descriptor **p1,- int *p2)-{- *p1 = p->altsetting;- *p2 = p->num_altsetting;-}--void c2hs_libusb_config_descriptor (struct libusb_config_descriptor *p,- uint8_t *p1,- uint8_t *p2,- uint16_t *p3,- uint8_t *p4,- uint8_t *p5,- uint8_t *p6,- uint8_t *p7,- uint8_t *p8,- const struct libusb_interface **p9,- const unsigned char **p10,- int *p11)-{- *p1 = p->bLength;- *p2 = p->bDescriptorType;- *p3 = p->wTotalLength;- *p4 = p->bNumInterfaces;- *p5 = p->bConfigurationValue;- *p6 = p->iConfiguration;- *p7 = p->bmAttributes;- *p8 = p->MaxPower;- *p9 = p->interface;- *p10 = p->extra;- *p11 = p->extra_length;-}--void c2hs_libusb_control_setup (struct libusb_control_setup *p,- uint8_t *p1,- uint8_t *p2,- uint16_t *p3,- uint16_t *p4,- uint16_t *p5)-{- *p1 = p->bmRequestType;- *p2 = p->bRequest;- *p3 = p->wValue;- *p4 = p->wIndex;- *p5 = p->wLength;-}--void c2hs_libusb_iso_packet_descriptor (-struct libusb_iso_packet_descriptor *p,- unsigned int *p1,- unsigned int *p2,- enum libusb_transfer_status *p3)-{- *p1 = p->length;- *p2 = p->actual_length;- *p3 = p->status;-}--void c2hs_libusb_transfer (struct libusb_transfer *p,- libusb_device_handle **p1,- uint8_t *p2,- unsigned char *p3,- unsigned char *p4,- unsigned int *p5,- enum libusb_transfer_status *p6,- int *p7,- int *p8,- libusb_transfer_cb_fn *p9,- void **p10,- unsigned char **p11,- int *p12)-{- *p1 = p->dev_handle;- *p2 = p->flags;- *p3 = p->endpoint;- *p4 = p->type;- *p5 = p->timeout;- *p6 = p->status;- *p7 = p->length;- *p8 = p->actual_length;- *p9 = p->callback;- *p10 = p->user_data;- *p11 = p->buffer;- *p12 = p->num_iso_packets;-}--void c2hs_libusb_pollfd (struct libusb_pollfd *p,- int *p1,- short *p2)-{- *p1 = p->fd;- *p2 = p->events;-}-