From 84f8004da2f106cb9141269672917d33d5980a1f Mon Sep 17 00:00:00 2001 From: Adema Date: Thu, 3 Feb 2022 13:53:17 +0100 Subject: [PATCH] Delete 'libusb-1.0.bi' --- libusb-1.0.bi | 1363 ------------------------------------------------- 1 file changed, 1363 deletions(-) delete mode 100644 libusb-1.0.bi diff --git a/libusb-1.0.bi b/libusb-1.0.bi deleted file mode 100644 index 82d8034..0000000 --- a/libusb-1.0.bi +++ /dev/null @@ -1,1363 +0,0 @@ -#Ifndef LIBUSB_H - #define LIBUSB_H - - #Inclib "usb-1.0" - - #Include Once "crt/stdint.bi" - #Include Once "crt/sys/types.bi" - #If Defined(__FB_LINUX__ ) Or Defined(__FB_CYGWIN__) - Type timeval - tv_sec As Long - tv_usec As Long - End Type - #EndIf - - #Include Once "crt/limits.bi" - - #If Defined(__FB_WIN32__) Or Defined(__FB_CYGWIN__) - #Include Once "windows.bi" - #If Defined(interface) - #Undef interface - #EndIf - #If Not Defined(__FB_CYGWIN__) - #Include Once "win/winsock.bi" - #EndIf - #EndIf - - #If Defined(__FB_LINUX__) - #Include Once "crt/sys/socket.bi" - #EndIf - -Dim As ULong libusb_device = 0 - -#define LIBUSB_API_VERSION &h01000105 - -/'' The following is kept for compatibility, but will be deprecated in the future ''/ -#define LIBUSBX_API_VERSION LIBUSB_API_VERSION - -#If Defined(__FB_WIN32__) - #Define LIBUSB_CALL WINAPI - Extern "Windows-MS" -#Else - #Define LIBUSB_CALL - Extern "C" -#EndIf - -Function libusb_cpu_to_le16(x As Const uint16_t) As uint16_t - - Union _tmp - As uint8_t b8(1) - As uint16_t b16 - End Union - Dim _tmp As _tmp - - _tmp.b8(1) = Cast(uint8_t, (x Shr 8)) - _tmp.b8(0) = Cast(uint8_t, (x And &hff)) - Return _tmp.b16 -End Function - -#define libusb_le16_to_cpu libusb_cpu_to_le16 - -Enum libusb_class_code - 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 - - /''* Physical ''/ - LIBUSB_CLASS_PHYSICAL = 5 - - /''* Printer class ''/ - LIBUSB_CLASS_PRINTER = 7 - - /''* Image class ''/ - LIBUSB_CLASS_PTP = 6, /'' legacy name from libusb-0.1 usb.h ''/ - LIBUSB_CLASS_IMAGE = 6 - - /''* Mass storage class ''/ - LIBUSB_CLASS_MASS_STORAGE = 8 - - /''* Hub class ''/ - LIBUSB_CLASS_HUB = 9 - - /''* Data class ''/ - LIBUSB_CLASS_DATA = 10 - - /''* Smart Card ''/ - LIBUSB_CLASS_SMART_CARD = &h0b - - /''* Content Security ''/ - LIBUSB_CLASS_CONTENT_SECURITY = &h0d - - /''* Video ''/ - LIBUSB_CLASS_VIDEO = &h0e, - - /''* Personal Healthcare ''/ - LIBUSB_CLASS_PERSONAL_HEALTHCARE = &h0f - - /''* Diagnostic Device ''/ - LIBUSB_CLASS_DIAGNOSTIC_DEVICE = &hdc - - /''* Wireless class ''/ - LIBUSB_CLASS_WIRELESS = &he0 - - /''* Application class ''/ - LIBUSB_CLASS_APPLICATION = &hfe - - /''* Class is vendor-specific ''/ - LIBUSB_CLASS_VENDOR_SPEC = &hff -End Enum - -/''* \ingroup libusb_desc - * Descriptor types as defined by the USB specification. ''/ -Enum libusb_descriptor_type - /''* Device descriptor. See libusb_device_descriptor. ''/ - LIBUSB_DT_DEVICE = &h01 - - /''* Configuration descriptor. See libusb_config_descriptor. ''/ - LIBUSB_DT_CONFIG = &h02 - - /''* String descriptor ''/ - LIBUSB_DT_STRING = &h03 - - /''* Interface descriptor. See libusb_interface_descriptor. ''/ - LIBUSB_DT_INTERFACE = &h04 - - /''* Endpoint descriptor. See libusb_endpoint_descriptor. ''/ - LIBUSB_DT_ENDPOINT = &h05 - - /''* BOS descriptor ''/ - LIBUSB_DT_BOS = &h0f - - /''* Device Capability descriptor ''/ - LIBUSB_DT_DEVICE_CAPABILITY = &h10 - - /''* HID descriptor ''/ - LIBUSB_DT_HID = &h21 - - /''* HID report descriptor ''/ - LIBUSB_DT_REPORT = &h22 - - /''* Physical descriptor ''/ - LIBUSB_DT_PHYSICAL = &h23 - - /''* Hub descriptor ''/ - LIBUSB_DT_HUB = &h29 - - /''* SuperSpeed Hub descriptor ''/ - LIBUSB_DT_SUPERSPEED_HUB = &h2a - - /''* SuperSpeed Endpoint Companion descriptor ''/ - LIBUSB_DT_SS_ENDPOINT_COMPANION = &h30 -End Enum - -/'' 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_DT_SS_ENDPOINT_COMPANION_SIZE 6 -#define LIBUSB_DT_BOS_SIZE 5 -#define LIBUSB_DT_DEVICE_CAPABILITY_SIZE 3 - -/'' BOS descriptor sizes ''/ -#define LIBUSB_BT_USB_2_0_EXTENSION_SIZE 7 -#define LIBUSB_BT_SS_USB_DEVICE_CAPABILITY_SIZE 10 -#define LIBUSB_BT_CONTAINER_ID_SIZE 20 - -/'' We unwrap the BOS => define its max size ''/ -#define LIBUSB_DT_BOS_MAX_SIZE ((LIBUSB_DT_BOS_SIZE) + _ - (LIBUSB_BT_USB_2_0_EXTENSION_SIZE) + _ - (LIBUSB_BT_SS_USB_DEVICE_CAPABILITY_SIZE) + _ - (LIBUSB_BT_CONTAINER_ID_SIZE)) - -#define LIBUSB_ENDPOINT_ADDRESS_MASK &h0f /'' in bEndpointAddress ''/ -#define LIBUSB_ENDPOINT_DIR_MASK &h80 - -Enum libusb_endpoint_direction - /''* In: device-to-host ''/ - LIBUSB_ENDPOINT_IN = &h80 - - /''* Out: host-to-device ''/ - LIBUSB_ENDPOINT_OUT = &h00 -End Enum - -#define LIBUSB_TRANSFER_TYPE_MASK &h03 /'' in bmAttributes ''/ - -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 - - /''* Stream endpoint ''/ - LIBUSB_TRANSFER_TYPE_BULK_STREAM = 4 -End Enum - -/''* \ingroup libusb_misc - * Standard requests, as defined in table 9-5 of the USB 3.0 specifications ''/ -Enum libusb_standard_request - /''* Request status of the specific recipient ''/ - LIBUSB_REQUEST_GET_STATUS = &h00 - - /''* Clear or disable a specific feature ''/ - LIBUSB_REQUEST_CLEAR_FEATURE = &h01 - - /'' &h02 is reserved ''/ - - /''* Set or enable a specific feature ''/ - LIBUSB_REQUEST_SET_FEATURE = &h03 - - /'' &h04 is reserved ''/ - - /''* Set device address for all future accesses ''/ - LIBUSB_REQUEST_SET_ADDRESS = &h05 - - /''* Get the specified descriptor ''/ - LIBUSB_REQUEST_GET_DESCRIPTOR = &h06 - - /''* Used to update existing descriptors or add new descriptors ''/ - LIBUSB_REQUEST_SET_DESCRIPTOR = &h07 - - /''* Get the current device configuration value ''/ - LIBUSB_REQUEST_GET_CONFIGURATION = &h08 - - /''* Set device configuration ''/ - LIBUSB_REQUEST_SET_CONFIGURATION = &h09 - - /''* Return the selected alternate setting for the specified interface ''/ - LIBUSB_REQUEST_GET_INTERFACE = &h0A - - /''* Select an alternate interface for the specified interface ''/ - LIBUSB_REQUEST_SET_INTERFACE = &h0B - - '' Set then report an endpoint''s synchronization frame ''/ - LIBUSB_REQUEST_SYNCH_FRAME = &h0C - - /''* Sets both the U1 and U2 Exit Latency ''/ - LIBUSB_REQUEST_SET_SEL = &h30 - - /''* Delay from the time a host transmits a packet to the time it is - * received by the device. ''/ - LIBUSB_SET_ISOCH_DELAY = &h31 -End Enum - -Enum libusb_request_type - /''* Standard ''/ - LIBUSB_REQUEST_TYPE_STANDARD = (&h00 Shl 5) - - /''* Class ''/ - LIBUSB_REQUEST_TYPE_CLASS = (&h01 Shl 5) - - /''* Vendor ''/ - LIBUSB_REQUEST_TYPE_VENDOR = (&h02 Shl 5) - - /''* Reserved ''/ - LIBUSB_REQUEST_TYPE_RESERVED = (&h03 Shl 5) -End Enum - -Enum libusb_request_recipient - /''* Device ''/ - LIBUSB_RECIPIENT_DEVICE = &h00 - - /''* Interface ''/ - LIBUSB_RECIPIENT_INTERFACE = &h01 - - /''* Endpoint ''/ - LIBUSB_RECIPIENT_ENDPOINT = &h02 - - /''* Other ''/ - LIBUSB_RECIPIENT_OTHER = &h03 -End Enum - -#define LIBUSB_ISO_SYNC_TYPE_MASK &h0C - -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 -End Enum - -#define LIBUSB_ISO_USAGE_TYPE_MASK &h30 - -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 -End Enum - -Type libusb_device_descriptor - /''* Size of this descriptor (in bytes) ''/ - As uint8_t bLength - - As uint8_t bDescriptorType - - As uint16_t bcdUSB - - /''* USB-IF class code for the device. See \ref libusb_class_code. ''/ - As uint8_t bDeviceClass - - /''* USB-IF subclass code for the device, qualified by the bDeviceClass - * value ''/ - As uint8_t bDeviceSubClass - - /''* USB-IF protocol code for the device, qualified by the bDeviceClass and - * bDeviceSubClass values ''/ - As uint8_t bDeviceProtocol - - /''* Maximum packet size for endpoint 0 ''/ - As uint8_t bMaxPacketSize0 - - /''* USB-IF vendor ID ''/ - As uint16_t idVendor - - /''* USB-IF product ID ''/ - As uint16_t idProduct - - /''* Device release number in binary-coded decimal ''/ - As uint16_t bcdDevice - - /''* Index of string descriptor describing manufacturer ''/ - As uint8_t iManufacturer - - /''* Index of string descriptor describing product ''/ - As uint8_t iProduct - - /''* Index of string descriptor containing device serial number ''/ - As uint8_t iSerialNumber - - /''* Number of possible configurations ''/ - As uint8_t bNumConfigurations -End Type - -Type libusb_endpoint_descriptor - /''* Size of this descriptor (in bytes) ''/ - As uint8_t bLength - - As uint8_t bDescriptorType - - As uint8_t bEndpointAddress - - As uint8_t bmAttributes - - /''* Maximum packet size this endpoint is capable of sending/receiving. ''/ - As uint16_t wMaxPacketSize - - /''* Interval for polling endpoint for data transfers. ''/ - As uint8_t bInterval - - /''* For audio devices only: the rate at which synchronization feedback - * is provided. ''/ - As uint8_t bRefresh - - /''* For audio devices only: the address if the synch endpoint ''/ - As uint8_t bSynchAddress - - /''* Extra descriptors. If libusb encounters unknown endpoint descriptors, - * it will store them here, should you wish to parse them. ''/ - As UByte Ptr extra - - /''* Length of the extra descriptors, in bytes. ''/ - As Long extra_length -End Type - -Type libusb_interface_descriptor - /''* Size of this descriptor (in bytes) ''/ - As uint8_t bLength - - As uint8_t bDescriptorType - - /''* Number of this interface ''/ - As uint8_t bInterfaceNumber - - /''* Value used to select this alternate setting for this interface ''/ - As uint8_t bAlternateSetting - - /''* Number of endpoints used by this interface (excluding the control - * endpoint). ''/ - As uint8_t bNumEndpoints - - /''* USB-IF class code for this interface. See \ref libusb_class_code. ''/ - As uint8_t bInterfaceClass - - /''* USB-IF subclass code for this interface, qualified by the - * bInterfaceClass value ''/ - As uint8_t bInterfaceSubClass - - /''* USB-IF protocol code for this interface, qualified by the - * bInterfaceClass and bInterfaceSubClass values ''/ - As uint8_t bInterfaceProtocol - - /''* Index of string descriptor describing this interface ''/ - As uint8_t iInterface - - As libusb_endpoint_descriptor Ptr endpoint - - As UByte Ptr extra - - /''* Length of the extra descriptors, in bytes. ''/ - As Long extra_length -End Type - -Type libusb_interface - As Const libusb_interface_descriptor Ptr altsetting - - As Long num_altsetting -End Type - -Type libusb_config_descriptor - /''* Size of this descriptor (in bytes) ''/ - As uint8_t bLength - - As uint8_t bDescriptorType - - /''* Total length of data returned for this configuration ''/ - As uint16_t wTotalLength - - /''* Number of interfaces supported by this configuration ''/ - As uint8_t bNumInterfaces - - /''* Identifier value for this configuration ''/ - As uint8_t bConfigurationValue - - /''* Index of string descriptor describing this configuration ''/ - As uint8_t iConfiguration - - /''* Configuration characteristics ''/ - As uint8_t bmAttributes - - As uint8_t MaxPower - - As Const libusb_interface Ptr interface - As UByte Ptr extra - - /''* Length of the extra descriptors, in bytes. ''/ - As Long extra_length -End Type - -Type libusb_ss_endpoint_companion_descriptor - As uint8_t bLength - - As uint8_t bDescriptorType - - As uint8_t bMaxBurst - - As uint8_t bmAttributes - - As uint16_t wBytesPerInterval -End Type - -#If Defined(__STDC_VERSION__) - #If (__STDC_VERSION__ >= 199901) - #Define __STDC_VERSION_DEF__ - #EndIf -#EndIf - -Type libusb_bos_dev_capability_descriptor - /''* Size of this descriptor (in bytes) ''/ - As uint8_t bLength - As uint8_t bDescriptorType - /''* Device Capability type ''/ - As uint8_t bDevCapabilityType - /''* Device Capability data (bLength - 3 bytes) ''/ - #If Defined(__STDC_VERSION_DEF__) - As uint8_t dev_capability_data(Any) /'' valid C99 code ''/ - #Else - As uint8_t dev_capability_data(0) /'' non-standard, but usually working code ''/ - #EndIf -End Type - -Type libusb_bos_descriptor - /''* Size of this descriptor (in bytes) ''/ - As uint8_t bLength - - As uint8_t bDescriptorType - - /''* Length of this descriptor and all of its sub descriptors ''/ - As uint16_t wTotalLength - - /''* The number of separate device capability descriptors in - * the BOS ''/ - As uint8_t bNumDeviceCaps - - /''* bNumDeviceCap Device Capability Descriptors ''/ - #If Defined(__STDC_VERSION_DEF__) - As libusb_bos_dev_capability_descriptor Ptr dev_capability(Any) /'' valid C99 code ''/ - #Else - As libusb_bos_dev_capability_descriptor Ptr dev_capability(0) /'' non-standard, but usually working code ''/ - #EndIf -End Type - -Type libusb_usb_2_0_extension_descriptor - /''* Size of this descriptor (in bytes) ''/ - As uint8_t bLength - - As uint8_t bDescriptorType - - As uint8_t bDevCapabilityType - - As uint32_t bmAttributes -End Type - -Type libusb_ss_usb_device_capability_descriptor - /''* Size of this descriptor (in bytes) ''/ - As uint8_t bLength - - As uint8_t bDescriptorType - - As uint8_t bDevCapabilityType - - As uint8_t bmAttributes - - As uint16_t wSpeedSupported - - As uint8_t bFunctionalitySupport - - /''* U1 Device Exit Latency. ''/ - As uint8_t bU1DevExitLat - - /''* U2 Device Exit Latency. ''/ - As uint16_t bU2DevExitLat -End Type - -Type libusb_container_id_descriptor - /''* Size of this descriptor (in bytes) ''/ - As uint8_t bLength - - As uint8_t bDescriptorType - - As uint8_t bDevCapabilityType - - /''* Reserved field ''/ - As uint8_t bReserved - - /''* 128 bit UUID ''/ - As uint8_t ContainerID(16) -End Type - -Type libusb_control_setup - As uint8_t bmRequestType - - As uint8_t bRequest - - /''* Value. Varies according to request ''/ - As uint16_t wValue - - /''* Index. Varies according to request, typically used to pass an index - * or offset ''/ - As uint16_t wIndex - - /''* Number of bytes to transfer ''/ - As uint16_t wLength -End Type -Dim Shared libusb_control_setup As libusb_control_setup - -#define LIBUSB_CONTROL_SETUP_SIZE (SizeOf(libusb_control_setup)) - -/'' libusb ''/ -Type libusb_context As libusb_context -Type libusb_device As libusb_device -Type libusb_device_handle As libusb_device_handle - -/''* \ingroup libusb_lib - * Structure providing the version of the libusb runtime - ''/ -Type libusb_version - /''* Library major version. ''/ - As uint16_t major - - /''* Library minor version. ''/ - ''As Const uint16_t minor - As uint16_t minor - - /''* Library micro version. ''/ - ''As Const uint16_t micro - As uint16_t micro - - /''* Library nano version. ''/ - ''As Const uint16_t nano - As uint16_t nano - - /''* Library release candidate suffix string, e.g. "-rc4". ''/ - ''As Const UByte Ptr rc - As UByte Ptr rc - - /''* For ABI compatibility only. ''/ - As UByte Ptr describe -End Type - -Type libusb_context As libusb_context - -Type libusb_device As libusb_device - - -Type libusb_device_handle As libusb_device_handle - -Enum libusb_speed - ''* The OS doesn''t report or know the device speed. ''/ - LIBUSB_SPEED_UNKNOWN = 0 - - /''* The device is operating at low speed (1.5MBit/s). ''/ - LIBUSB_SPEED_LOW = 1 - - /''* The device is operating at full speed (12MBit/s). ''/ - LIBUSB_SPEED_FULL = 2 - - /''* The device is operating at high speed (480MBit/s). ''/ - LIBUSB_SPEED_HIGH = 3 - - /''* The device is operating at super speed (5000MBit/s). ''/ - LIBUSB_SPEED_SUPER = 4 -End Enum - -Enum libusb_supported_speed - /''* Low speed operation supported (1.5MBit/s). ''/ - LIBUSB_LOW_SPEED_OPERATION = 1 - - /''* Full speed operation supported (12MBit/s). ''/ - LIBUSB_FULL_SPEED_OPERATION = 2 - - /''* High speed operation supported (480MBit/s). ''/ - LIBUSB_HIGH_SPEED_OPERATION = 4 - - /''* Superspeed operation supported (5000MBit/s). ''/ - LIBUSB_SUPER_SPEED_OPERATION = 8 -End Enum - -Enum libusb_usb_2_0_extension_attributes - /''* Supports Link Power Management (LPM) ''/ - LIBUSB_BM_LPM_SUPPORT = 2 -End Enum - -Enum libusb_ss_usb_device_capability_attributes - /''* Supports Latency Tolerance Messages (LTM) ''/ - LIBUSB_BM_LTM_SUPPORT = 2 -End Enum - -/''* \ingroup libusb_dev - * USB capability types - ''/ -Enum libusb_bos_type - /''* Wireless USB device capability ''/ - LIBUSB_BT_WIRELESS_USB_DEVICE_CAPABILITY = 1 - - /''* USB 2.0 extensions ''/ - LIBUSB_BT_USB_2_0_EXTENSION = 2 - - /''* SuperSpeed USB device capability ''/ - LIBUSB_BT_SS_USB_DEVICE_CAPABILITY = 3 - - /''* Container ID type ''/ - LIBUSB_BT_CONTAINER_ID = 4 -End Enum - -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 - - /'' NB: Remember to update LIBUSB_ERROR_COUNT below as well as the - message strings in strerror.c when adding new error codes here. ''/ - - /''* Other error ''/ - LIBUSB_ERROR_OTHER = -99 -End Enum - -/'' Total number of error codes in enum libusb_error ''/ -#define LIBUSB_ERROR_COUNT 14 - -/''* \ingroup libusb_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 - - /'' NB! Remember to update libusb_error_name() - when adding new status codes here. ''/ -End Enum - -/''* \ingroup libusb_asyncio - * libusb_transfer.flags values ''/ -Enum libusb_transfer_flags - /''* Report short frames as errors ''/ - LIBUSB_TRANSFER_SHORT_NOT_OK = 1 Shl 0 - - LIBUSB_TRANSFER_FREE_BUFFER = 1 Shl 1 - - LIBUSB_TRANSFER_FREE_TRANSFER = 1 Shl 2 - - LIBUSB_TRANSFER_ADD_ZERO_PACKET = 1 Shl 3, -End Enum - -/''* \ingroup libusb_asyncio - * Isochronous packet descriptor. ''/ -Type libusb_iso_packet_descriptor - /''* Length of data to request in this packet ''/ - As ULong length - - /''* Amount of data that was actually transferred ''/ - As ULong actual_length - - /''* Status code for this packet ''/ - As libusb_transfer_status status -End Type - -Type fw_libusb_transfer As libusb_transfer - -Type libusb_transfer_cb_fn As Sub(transfer As fw_libusb_transfer Ptr) - -Type libusb_transfer - /''* Handle of the device that this transfer will be submitted to ''/ - As libusb_device_handle Ptr dev_handle - - /''* A bitwise OR combination of \ref libusb_transfer_flags. ''/ - As uint8_t flags - - /''* Address of the endpoint where this transfer will be sent. ''/ - As UByte endpoint - - /''* Type of the endpoint from \ref libusb_transfer_type ''/ - As UByte Type - - /''* Timeout for this transfer in millseconds. A value of 0 indicates no - * timeout. ''/ - As ULong timeout - - As libusb_transfer_status status - - /''* Length of the data buffer ''/ - As Long length - - As Long actual_length - - As libusb_transfer_cb_fn callback - - /''* User context data to pass to the callback function. ''/ - As Any Ptr user_data - - /''* Data buffer ''/ - As UByte Ptr buffer - - /''* Number of isochronous packets. Only used for I/O with isochronous - * endpoints. ''/ - As Long num_iso_packets - - /''* Isochronous packet descriptors, for isochronous transfers only. ''/ - #If Defined(__STDC_VERSION_DEF__) - As libusb_iso_packet_descriptor iso_packet_desc(Any) /'' valid C99 code ''/ - #Else - As libusb_iso_packet_descriptor iso_packet_desc(0) /'' non-standard, but usually working code ''/ - #EndIf -End Type - -Enum libusb_capability - /''* The libusb_has_capability() API is available. ''/ - LIBUSB_CAP_HAS_CAPABILITY = &h0000 - /''* Hotplug support is available on this platform. ''/ - LIBUSB_CAP_HAS_HOTPLUG = &h0001 - /''* The library can access HID devices without requiring user intervention. - * Note that before being able to actually access an HID device, you may - * still have to call additional libusb functions such as - * \ref libusb_detach_kernel_driver(). ''/ - LIBUSB_CAP_HAS_HID_ACCESS = &h0100 - /''* The library supports detaching of the default USB driver, using - * \ref libusb_detach_kernel_driver(), if one is set by the OS kernel ''/ - LIBUSB_CAP_SUPPORTS_DETACH_KERNEL_DRIVER = &h0101 -End Enum - -Enum libusb_log_level - LIBUSB_LOG_LEVEL_NONE = 0 - LIBUSB_LOG_LEVEL_ERROR - LIBUSB_LOG_LEVEL_WARNING - LIBUSB_LOG_LEVEL_INFO - LIBUSB_LOG_LEVEL_DEBUG -End Enum - -Declare Function libusb_init(ctx As libusb_context Ptr Ptr) As Long -Declare Sub libusb_exit(ctx As libusb_context Ptr) -Declare Sub libusb_set_debug(ctx As libusb_context Ptr, level As Long) -Declare Function libusb_get_version() As Const libusb_version Ptr -Declare Function libusb_has_capability(capability As uint32_t) As Long -Declare Function libusb_error_name(errcode As Long) As Const ZString Ptr -Declare Function libusb_setlocale(locale As UByte Ptr) As Long -Declare Function libusb_strerror(errcode As Long) As Const ZString Ptr - -Declare Function libusb_get_device_list(ctx As libusb_context Ptr, list As libusb_device Ptr Ptr Ptr) As ssize_t -Declare Sub libusb_free_device_list(list As libusb_device Ptr Ptr, unref_devices As Long) -Declare Function libusb_ref_device(dev As libusb_device Ptr) As libusb_device Ptr -Declare Sub libusb_unref_device(dev As libusb_device Ptr) - -Declare Function libusb_get_configuration( _ - dev As libusb_device_handle Ptr, _ - config As Long Ptr) As Long -Declare Function libusb_get_device_descriptor( _ - dev As libusb_device Ptr, _ - desc As libusb_device_descriptor Ptr) As Long -Declare Function libusb_get_active_config_descriptor( _ - dev As libusb_device Ptr, _ - config As libusb_config_descriptor Ptr Ptr) As Long -Declare Function libusb_get_config_descriptor( _ - dev As libusb_device Ptr, _ - config_index As uint8_t, _ - config As libusb_config_descriptor Ptr Ptr) As Long -Declare Function libusb_get_config_descriptor_by_value( _ - dev As libusb_device Ptr, _ - bConfigurationValue As uint8_t, _ - config As libusb_config_descriptor Ptr Ptr) As Long -Declare Sub libusb_free_config_descriptor(config As libusb_config_descriptor Ptr) -Declare Function libusb_get_ss_endpoint_companion_descriptor( _ - ctx As libusb_context Ptr, _ - endpoint As Const libusb_endpoint_descriptor Ptr, _ - ep_comp As libusb_ss_endpoint_companion_descriptor Ptr Ptr) As Long -Declare Sub libusb_free_ss_endpoint_companion_descriptor( _ - ep_comp As libusb_ss_endpoint_companion_descriptor Ptr) - -Declare Function libusb_get_bos_descriptor( _ - dev_handle As libusb_device_handle Ptr, _ - bos As libusb_bos_descriptor Ptr Ptr) As Long -Declare Sub libusb_free_bos_descriptor(bos As libusb_bos_descriptor Ptr) -Declare Function libusb_get_usb_2_0_extension_descriptor( _ - ctx As libusb_context Ptr, _ - dev_cap As libusb_bos_dev_capability_descriptor Ptr, _ - usb_2_0_extension As libusb_usb_2_0_extension_descriptor Ptr Ptr) As Long -Declare Sub libusb_free_usb_2_0_extension_descriptor(usb_2_0_extension As libusb_usb_2_0_extension_descriptor Ptr) -Declare Function libusb_get_ss_usb_device_capability_descriptor( _ - ctx As libusb_context Ptr, _ - dev_cap As libusb_bos_dev_capability_descriptor Ptr, _ - ss_usb_device_cap As libusb_ss_usb_device_capability_descriptor Ptr Ptr) As Long -Declare Sub libusb_free_ss_usb_device_capability_descriptor(ss_usb_device_cap As libusb_ss_usb_device_capability_descriptor Ptr) -Declare Function libusb_get_container_id_descriptor( _ - ctx As libusb_context Ptr, _ - dev_cap As libusb_bos_dev_capability_descriptor Ptr, _ - container_id As libusb_container_id_descriptor Ptr Ptr) As Long -Declare Sub libusb_free_container_id_descriptor( _ - container_id As libusb_container_id_descriptor Ptr) -Declare Function libusb_get_bus_number(dev As libusb_device Ptr) As uint8_t -Declare Function libusb_get_port_number(dev As libusb_device Ptr) As uint8_t -Declare Function libusb_get_port_numbers( _ - dev As libusb_device Ptr, _ - port_numbers As uint8_t Ptr, _ - port_numbers_len As Long) As Long -''LIBUSB_DEPRECATED_FOR(libusb_get_port_numbers) -Declare Function libusb_get_port_path( _ - ctx As libusb_context Ptr, _ - dev As libusb_device Ptr, _ - path As ZString Ptr, _ - path_length As uint8_t) As Long -Declare Function libusb_get_parent(dev As libusb_device Ptr) As libusb_device Ptr -Declare Function libusb_get_device_address(dev As libusb_device Ptr) As uint8_t -Declare Function libusb_get_device_speed(dev As libusb_device Ptr) As Long -Declare Function libusb_get_max_packet_size( _ - dev As libusb_device Ptr, _ - endpoint As UByte) As Long -Declare Function libusb_get_max_iso_packet_size(dev As libusb_device Ptr, endpoint As UByte) As Long - -Declare Function libusb_open(dev As libusb_device Ptr, dev_handle As libusb_device_handle Ptr Ptr) As Long -Declare Sub libusb_close(dev_handle As libusb_device_handle Ptr) -Declare Function libusb_get_device(dev_handle As libusb_device_handle Ptr) As libusb_device Ptr - -Declare Function libusb_set_configuration( _ - dev_handle As libusb_device_handle Ptr, _ - configuration As Long) As Long -Declare Function libusb_claim_interface( _ - dev_handle As libusb_device_handle Ptr, _ - interface_number As Long) As Long -Declare Function libusb_release_interface( _ - dev_handle As libusb_device_handle Ptr, _ - interface_number As Long) As Long - -Declare Function libusb_open_device_with_vid_pid( _ - ctx As libusb_context Ptr, _ - vendor_id As uint16_t, _ - product_id As uint16_t) As libusb_device_handle Ptr - -Declare Function libusb_set_interface_alt_setting( _ - dev_handle As libusb_device_handle Ptr, _ - interface_number As Long, _ - alternate_setting As Long) As Long -Declare Function libusb_clear_halt( _ - dev_handle As libusb_device_handle Ptr, _ - endpoint As UByte) As Long -Declare Function libusb_reset_device(dev_handle As libusb_device_handle Ptr)As Long - -Declare Function libusb_alloc_streams( _ - dev_handle As libusb_device_handle Ptr, _ - num_streams As uint32_t, _ - endpoints As UByte Ptr, _ - num_endpoints As Long) As Long -Declare Function libusb_free_streams( _ - dev_handle As libusb_device_handle Ptr, _ - endpoints As UByte Ptr, _ - num_endpoints As Long) As Long - -Declare Function libusb_dev_mem_alloc( _ - dev_handle As libusb_device_handle Ptr, _ - length As size_t) As UByte Ptr -Declare Function libusb_dev_mem_free( _ - dev_handle As libusb_device_handle Ptr, _ - buffer As UByte Ptr, _ - length As size_t) As Long - -Declare Function libusb_kernel_driver_active( _ - dev_handle As libusb_device_handle Ptr, _ - interface_number As Long) As Long -Declare Function libusb_detach_kernel_driver( _ - dev_handle As libusb_device_handle Ptr, _ - interface_number As Long) As Long -Declare Function libusb_attach_kernel_driver( _ - dev_handle As libusb_device_handle Ptr, _ - interface_number As Long) As Long -Declare Function libusb_set_auto_detach_kernel_driver( _ - dev_handle As libusb_device_handle Ptr, _ - enable As Long) As Long - -Function libusb_control_transfer_get_data(transfer As libusb_transfer Ptr) As ZString Ptr - Return transfer->buffer + LIBUSB_CONTROL_SETUP_SIZE -End Function - -Function libusb_control_transfer_get_setup(transfer As libusb_transfer Ptr) As libusb_control_setup Ptr - Return Cast(libusb_control_setup Ptr, transfer->buffer) -End Function - -Sub libusb_fill_control_setup( _ - buffer As UByte Ptr, _ - bmRequestType As uint8_t, _ - bRequest As uint8_t, _ - wValue As uint16_t, _ - wIndex As uint16_t, _ - wLength As uint16_t) - Dim As libusb_control_setup Ptr setup - setup = Cast(libusb_control_setup Ptr, 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) -End Sub - -Declare Function libusb_alloc_transfer(iso_packets As Long) As libusb_transfer Ptr -Declare Function libusb_submit_transfer(transfer As libusb_transfer Ptr) As Long -Declare Function libusb_cancel_transfer(transfer As libusb_transfer Ptr) As Long -Declare Sub libusb_free_transfer(transfer As libusb_transfer Ptr) -Declare Sub libusb_transfer_set_stream_id( _ - transfer As libusb_transfer Ptr, _ - stream_id As uint32_t) -Declare Function libusb_transfer_get_stream_id(transfer As libusb_transfer Ptr) As uint32_t - -Sub libusb_fill_control_transfer( _ - transfer As libusb_transfer Ptr, _ - dev_handle As libusb_device_handle Ptr, _ - buffer As UByte Ptr, _ - callback As libusb_transfer_cb_fn, _ - user_data As Any Ptr, _ - timeout As ULong) - - Dim As libusb_control_setup Ptr setup - setup = Cast(libusb_control_setup Ptr, buffer) - transfer->dev_handle = dev_handle - transfer->endpoint = 0 - transfer->Type = LIBUSB_TRANSFER_TYPE_CONTROL - transfer->timeout = timeout - transfer->buffer = buffer - If setup Then - transfer->length = Cast(Long, LIBUSB_CONTROL_SETUP_SIZE + libusb_le16_to_cpu(setup->wLength)) - EndIf - transfer->user_data = user_data - transfer->callback = callback -End Sub - -Sub libusb_fill_bulk_transfer( _ - transfer As libusb_transfer Ptr, _ - dev_handle As libusb_device_handle Ptr, _ - endpoint As UByte, _ - buffer As UByte Ptr, _ - length As Long, _ - callback As libusb_transfer_cb_fn, _ - user_data As Any Ptr, _ - timeout As ULong) - - 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 -End Sub - -Sub libusb_fill_bulk_stream_transfer( _ - transfer As libusb_transfer Ptr, _ - dev_handle As libusb_device_handle Ptr, _ - endpoint As UByte, _ - stream_id As uint32_t, _ - buffer As UByte Ptr, _ - length As Long, _ - callback As libusb_transfer_cb_fn, _ - user_data As Any Ptr, _ - timeout As ULong) - - libusb_fill_bulk_transfer(transfer, dev_handle, endpoint, buffer, _ - length, callback, user_data, timeout) - transfer->Type = LIBUSB_TRANSFER_TYPE_BULK_STREAM - libusb_transfer_set_stream_id(transfer, stream_id) -End Sub - -Sub libusb_fill_interrupt_transfer( _ - transfer As libusb_transfer Ptr, _ - dev_handle As libusb_device_handle Ptr, _ - endpoint As UByte, _ - buffer As UByte Ptr, _ - length As Long, _ - callback As libusb_transfer_cb_fn, _ - user_data As Any Ptr, _ - timeout As ULong) - - 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 -End Sub - -Sub libusb_fill_iso_transfer( _ - transfer As libusb_transfer Ptr, _ - dev_handle As libusb_device_handle Ptr, _ - endpoint As UByte, _ - buffer As UByte Ptr, _ - length As Long, _ - num_iso_packets As Long, _ - callback As libusb_transfer_cb_fn, _ - user_data As Any Ptr, _ - timeout As ULong) - - 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 -End Sub - -Sub libusb_set_iso_packet_lengths( _ - transfer As libusb_transfer Ptr, _ - length As ULong) - Dim As Long i - For i = 0 To transfer->num_iso_packets - transfer->iso_packet_desc(i).length = length - Next - -End Sub - -Function libusb_get_iso_packet_buffer( _ - transfer As libusb_transfer Ptr, _ - packet As ULong) As UByte Ptr - - Dim As Long i - Dim As size_t offset = 0 - Dim As Long _packet - - /'' oops..slight bug in the API. packet is an unsigned int, but we use - * signed integers almost everywhere else. range-check and convert to - * signed to avoid compiler warnings. FIXME for libusb-2. ''/ - If (packet > INT_MAX) Then - Return NULL - EndIf - _packet = Cast(Long, packet) - - If _packet >= transfer->num_iso_packets Then - Return NULL - EndIf - - For i = 0 To _packet - offset += transfer->iso_packet_desc(i).length - Next - - Return transfer->buffer + offset -End Function - -Function libusb_get_iso_packet_buffer_simple( _ - transfer As libusb_transfer Ptr, _ - packet As Long) As UByte Ptr - - Dim As Long _packet - - /'' oops..slight bug in the API. packet is an unsigned int, but we use - * signed integers almost everywhere else. range-check and convert to - * signed to avoid compiler warnings. FIXME for libusb-2. ''/ - If (packet > INT_MAX) Then - Return NULL - EndIf - _packet = Cast(Long, packet) - - If _packet >= transfer->num_iso_packets Then - Return NULL - EndIf - - Return transfer->buffer + (Cast(Long, transfer->iso_packet_desc(0).length) * _packet) -End Function - -/'' sync I/O ''/ - -Declare Function libusb_control_transfer( _ - dev_handle As libusb_device_handle Ptr, _ - request_type As uint8_t, _ - bRequest As uint8_t, _ - wValue As uint16_t, _ - wIndex As uint16_t, _ - _Data As UByte Ptr, _ - wLength As uint16_t, _ - timeout As ULong) As Long - -Declare Function libusb_bulk_transfer( _ - dev_handle As libusb_device_handle Ptr, _ - endpoint As UByte, _ - _Data As UByte Ptr, _ - length As Long, _ - actual_length As Long Ptr, _ - timeout As ULong) As Long - -Declare Function libusb_interrupt_transfer( _ - dev_handle As libusb_device_handle Ptr, _ - endpoint As UByte, _ - _Data As UByte Ptr, _ - length As Long, _ - actual_length As Long Ptr, _ - timeout As ULong) As Long - -Function libusb_get_descriptor( _ - dev_handle As libusb_device_handle Ptr, _ - desc_type As uint8_t, _ - desc_index As uint8_t, _ - _Data As UByte Ptr, _ - length As Long) As Long - - Return libusb_control_transfer(dev_handle, _ - LIBUSB_ENDPOINT_IN, _ - LIBUSB_REQUEST_GET_DESCRIPTOR, _ - Cast(uint16_t, ((desc_type Shl 8) Or desc_index)), _ - 0, _ - _Data, _ - Cast(uint16_t, length), _ - 1000) -End Function - -Function libusb_get_string_descriptor( _ - dev_handle As libusb_device_handle Ptr, _ - desc_index As uint8_t, _ - langid As uint16_t, _ - _Data As UByte Ptr, _ - length As Long) As Long - - Return libusb_control_transfer(dev_handle, _ - LIBUSB_ENDPOINT_IN, _ - LIBUSB_REQUEST_GET_DESCRIPTOR, _ - Cast(uint16_t,((LIBUSB_DT_STRING Shl 8) Or desc_index)), _ - langid, _ - _Data, _ - Cast(uint16_t, length), _ - 1000) -End Function - -Declare Function libusb_get_string_descriptor_ascii( _ - dev_handle As libusb_device_handle Ptr, _ - desc_index As uint8_t, _ - _Data As UByte Ptr, _ - length As Long) As Long - -/'' polling and timeouts ''/ - -Declare Function libusb_try_lock_events(ctx As libusb_context Ptr) As Long -Declare Sub libusb_lock_events(ctx As libusb_context Ptr) -Declare Sub libusb_unlock_events(ctx As libusb_context Ptr) -Declare Function libusb_event_handling_ok(ctx As libusb_context Ptr) As Long -Declare Function libusb_event_handler_active(ctx As libusb_context Ptr) As Long -Declare Sub libusb_interrupt_event_handler(ctx As libusb_context Ptr) -Declare Sub libusb_lock_event_waiters(ctx As libusb_context Ptr) -Declare Sub libusb_unlock_event_waiters(ctx As libusb_context Ptr) -Declare Function libusb_wait_for_event(ctx As libusb_context Ptr, tv As timeval Ptr) As Long - -Declare Function libusb_handle_events_timeout(ctx As libusb_context Ptr, tv As timeval Ptr) As Long -Declare Function libusb_handle_events_timeout_completed( _ - ctx As libusb_context Ptr, _ - tv As timeval Ptr, _ - completed As Long Ptr) As Long -Declare Function libusb_handle_events(ctx As libusb_context Ptr) As Long -Declare Function libusb_handle_events_completed(ctx As libusb_context Ptr, completed As Long Ptr) As Long -Declare Function libusb_handle_events_locked(ctx As libusb_context Ptr, tv As timeval Ptr) As Long -Declare Function libusb_pollfds_handle_timeouts(ctx As libusb_context Ptr) As Long -Declare Function libusb_get_next_timeout(ctx As libusb_context Ptr, tv As timeval Ptr) As Long - -/''* \ingroup libusb_poll - * File descriptor for polling - ''/ -Type libusb_pollfd - /''* Numeric file descriptor ''/ - As Long fd - - As Short events -End Type - -Type libusb_pollfd_added_cb As Sub(fd As Long, events As Short, user_data As Any Ptr) - -Type libusb_pollfd_removed_cb As Sub(fd As Long, user_data As Any Ptr) - -Declare Function libusb_get_pollfds(ctx As libusb_context Ptr) As Const libusb_pollfd Ptr Ptr -Declare Sub libusb_free_pollfds(pollfds As Const libusb_pollfd Ptr Ptr) -Declare Sub libusb_set_pollfd_notifiers( _ - ctx As libusb_context Ptr, _ - added_cb As libusb_pollfd_added_cb, _ - removed_cb As libusb_pollfd_removed_cb, _ - user_data As Any Ptr) - -Type libusb_hotplug_callback_handle As Long - -/''* \ingroup libusb_hotplug - * - * Since version 1.0.16, \ref LIBUSB_API_VERSION >= &h01000102 - * - * Flags for hotplug events ''/ - -Enum lusb_hpf - /''* Default value when not using any flags. ''/ - LIBUSB_HOTPLUG_NO_FLAGS = 0 - - /''* Arm the callback and fire it for all matching currently attached devices. ''/ - LIBUSB_HOTPLUG_ENUMERATE = 1 Shl 0 -End Enum - -Type libusb_hotplug_flag As lusb_hpf - -/''* \ingroup libusb_hotplug - * - * Since version 1.0.16, \ref LIBUSB_API_VERSION >= &h01000102 - * - * Hotplug events ''/ -Enum lusb_hpe - /''* A device has been plugged in and is ready to use ''/ - LIBUSB_HOTPLUG_EVENT_DEVICE_ARRIVED = &h01 - - /''* A device has left and is no longer available. - * It is the user''s responsibility to call libusb_close on any handle associated with a disconnected device. - * It is safe to call libusb_get_device_descriptor on a device that has left ''/ - LIBUSB_HOTPLUG_EVENT_DEVICE_LEFT = &h02 -End Enum - -Type libusb_hotplug_event As lusb_hpe - -/''* \ingroup libusb_hotplug - * Wildcard matching for hotplug events ''/ -#define LIBUSB_HOTPLUG_MATCH_ANY -1 - -Type libusb_hotplug_callback_fn As Function( _ - ctx As libusb_context Ptr, _ - device As libusb_device Ptr, _ - event As libusb_hotplug_event, _ - user_data As Any Ptr) As Long - -Declare Function libusb_hotplug_register_callback( _ - ctx As libusb_context Ptr, _ - events As libusb_hotplug_event, _ - flags As libusb_hotplug_flag, _ - vendor_id As Long, _ - product_id As Long, _ - dev_class As Long, _ - cb_fn As libusb_hotplug_callback_fn, _ - user_data As Any Ptr, _ - callback_handle As libusb_hotplug_callback_handle Ptr) As Long - -Declare Sub libusb_hotplug_deregister_callback( _ - ctx As libusb_context Ptr, _ - callback_handle As libusb_hotplug_callback_handle) - -End Extern -#EndIf \ No newline at end of file