[vala] Add libusb-1.0 bindings



commit 6723b2640726bd3936d4c1825412a41c2c7b5cd5
Author: Evan Nemerson <evan polussystems com>
Date:   Mon Jul 27 10:56:52 2009 -0700

    Add libusb-1.0 bindings
    
    Fixes bug 589913.

 vapi/Makefile.am     |    2 +
 vapi/libusb-1.0.deps |    3 +
 vapi/libusb-1.0.vapi |  357 ++++++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 362 insertions(+), 0 deletions(-)
---
diff --git a/vapi/Makefile.am b/vapi/Makefile.am
index d02ba45..191b633 100644
--- a/vapi/Makefile.am
+++ b/vapi/Makefile.am
@@ -115,6 +115,8 @@ dist_vapi_DATA = \
 	libsoup-2.4.deps \
 	libsoup-2.4.vapi \
 	libusb.vapi \
+	libusb-1.0.deps \
+	libusb-1.0.vapi \
 	libwnck-1.0.deps \
 	libwnck-1.0.vapi \
 	libxml-2.0.vapi \
diff --git a/vapi/libusb-1.0.deps b/vapi/libusb-1.0.deps
new file mode 100644
index 0000000..37e3098
--- /dev/null
+++ b/vapi/libusb-1.0.deps
@@ -0,0 +1,3 @@
+glib-2.0
+posix
+
diff --git a/vapi/libusb-1.0.vapi b/vapi/libusb-1.0.vapi
new file mode 100644
index 0000000..f9a553f
--- /dev/null
+++ b/vapi/libusb-1.0.vapi
@@ -0,0 +1,357 @@
+[CCode (cprefix = "libusb_", cheader_filename = "libusb.h")]
+namespace LibUSB {
+	[CCode (cname = "enum libusb_class_code", cprefix = "LIBUSB_CLASS_")]
+	public enum ClassCode {
+		PER_INTERFACE,
+		AUDIO,
+		COMM,
+		HID,
+		PRINTER,
+		PTP,
+		MASS_STORAGE,
+		HUB,
+		DATA,
+		VENDOR_SPEC
+	}
+
+	[CCode (cname = "enum libusb_descriptor_type", cprefix = "LIBUSB_DT_")]
+	public enum DescriptorType {
+		DEVICE,
+		CONFIG,
+		STRING,
+		INTERFACE,
+		ENDPOINT,
+		HID,
+		REPORT,
+		PHYSICAL,
+		HUB
+	}
+
+	[CCode (cprefix = "LIBUSB_DT_")]
+	namespace DescriptorTypeSize {
+		public const int DEVICE_SIZE;
+		public const int CONFIG_SIZE;
+		public const int INTERFACE_SIZE;
+		public const int ENDPOINT_SIZE;
+		public const int ENDPOINT_AUDIO_SIZE;
+		public const int HUB_NONVAR_SIZE;
+	}
+
+	namespace EndpointMask {
+		[CCode (cname = "LIBUSB_ENDPOINT_ADDRESS_MASK")]
+		public const int ADDRESS;
+		[CCode (cname = "LIBUSB_ENDPOINT_DIR_MASK")]
+		public const int DIR;
+		[CCode (cname = "LIBUSB_ENDPOINT_DIR_MASK")]
+		public const int DIRECTION;
+	}
+
+	[CCode (cname = "enum libusb_endpoint_direction", cprefix = "LIBUSB_ENDPOINT_")]
+	public enum EndpointDirection {
+		IN,
+		OUT,
+		[CCode (cname = "LIBUSB_ENDPOINT_DIR_MASK")]
+		MASK
+	}
+
+	[CCode (cname = "enum libusb_transfer_type", cprefix = "LIBUSB_TRANSFER_TYPE_")]
+	public enum TransferType {
+		CONTROL,
+		ISOCHRONOUS,
+		BULK,
+		INTERRUPT
+	}
+
+	[CCode (cname = "enum libusb_standard_request", cprefix = "LIBUSB_REQUEST_")]
+	public enum StandardRequest {
+		GET_STATUS,
+		CLEAR_FEATURE,
+		SET_FEATURE,
+		SET_ADDRESS,
+		GET_DESCRIPTOR,
+		SET_DESCRIPTOR,
+		GET_CONFIGURATION,
+		GET_INTERFACE,
+		SET_INTERFACE,
+		SYNCH_FRAME
+	}
+
+	[CCode (cname = "enum libusb_request_type", cprefix = "LIBUSB_REQUEST_TYPE_")]
+	public enum RequestType {
+		STANDARD,
+		CLASS,
+		VENDOR,
+		RESERVED
+	}
+
+	[CCode (cname = "enum libusb_request_recipient", cprefix = "LIBUSB_RECIPIENT_")]
+	public enum RequestRecipient {
+		DEVICE,
+		INTERFACE,
+		ENDPOINT,
+		OTHER
+	}
+
+	[CCode (cname =	"enum libusb_iso_sync_type", cprefix = "LIBUSB_ISO_SYNC_TYPE_")]
+	public enum IsoSyncType {
+		NONE,
+		ASYNC,
+		ADAPTIVE,
+		SYNC,
+		MASK
+	}
+
+	[CCode (cname = "enum libusb_iso_usage_type", cprefix = "LIBUSB_ISO_USAGE_TYPE_")]
+	public enum IsoUsageType {
+		DATA,
+		FEEDBACK,
+		IMPLICIT,
+		MASK
+	}
+
+	[CCode (cname = "enum libusb_error", cprefix = "LIBUSB_ERROR_")]
+	public enum Error {
+		[CCode (cname = "LIBUSB_SUCCESS")]
+		SUCCESS,
+		IO,
+		INVALID_PARAM,
+		ACCESS,
+		NO_DEVICE,
+		NOT_FOUND,
+		BUSY,
+		TIMEOUT,
+		OVERFLOW,
+		PIPE,
+		INTERRUPTED,
+		NO_MEM,
+		NOT_SUPPORTED,
+		OTHER
+	}
+
+	[CCode (cname = "struct libusb_device_descriptor")]
+	public struct DeviceDescriptor {
+		public uint8 bLength;
+		public uint8 bDescriptorType;
+		public uint16 bcdUSB;
+		public uint8 bDeviceClass;
+		public uint8 bDeviceSubClass;
+		public uint8 bDeviceProtocol;
+		public uint8 bMaxPacketSize0;
+		public uint16 idVendor;
+		public uint16 idProduct;
+		public uint16 bcdDevice;
+		public uint8 iManufacturer;
+		public uint8 iProduct;
+		public uint8 iSerialNumber;
+		public uint8 bNumConfigurations;
+
+		[CCode (cname = "libusb_get_device_descriptor", instance_pos = -1)]
+		public DeviceDescriptor (Device device);
+	}
+
+	[CCode (cname = "struct libusb_endpoint_descriptor", cprefix = "libusb_")]
+	public struct EndpointDescriptor {
+		public uint8 bLength;
+		public uint8 bDescriptorType;
+		public uint8 bEndpointAddress;
+		public uint8 bmAttributes;
+		public uint16 wMaxPacketSize;
+		public uint8 bInterval;
+		public uint8 bRefresh;
+		public uint8 bSynchAddress;
+		[CCode (array_length_cname = "extra_length")]
+		uchar[] extra;
+	}
+
+	[CCode (cname = "struct libusb_interface_descriptor")]
+	public struct InterfaceDescriptor {
+		public uint8 bLength;
+		public uint8 bDescriptorType;
+		public uint8 bInterfaceNumber;
+		public uint8 bAlternateSetting;
+		public uint8 bNumEndpoints;
+		public uint8 bInterfaceClass;
+		public uint8 bInterfaceSubClass;
+		public uint8 bInterfaceProtocol;
+		public uint8 iInterface;
+		[CCode (array_length_cname = "bNumEndpoints", array_length_type = "uint8_t")]
+		public EndpointDescriptor[] endpoint;
+		[CCode (array_length_cname = "extra_length")]
+		uchar[] extra;
+	}
+
+	[CCode (cname = "struct libusb_interface")]
+	public struct Interface {
+		[CCode (array_length_cname = "num_altsetting")]
+		public InterfaceDescriptor[] altsetting;
+	}
+
+	[Compact, CCode (cname = "struct libusb_config_descriptor", free_function = "libusb_free_config_descriptor")]
+	public class ConfigDescriptor {
+		public uint8 bLength;
+		public uint8 bDescriptorType;
+		public uint16 wTotalLength;
+		public uint8 bNumInterfaces;
+		public uint8 bConfigurationValue;
+		public uint8 iConfiguration;
+		public uint8 bmAttributes;
+		public uint8 MaxPower;
+		[CCode (array_length_cname = "bNumInterfaces")]
+		public Interface[] @interface;
+		[CCode (array_length_cname = "extra_length")]
+		uchar[] extra;
+	}
+
+
+	[Compact, CCode (cname = "libusb_device_handle", cprefix = "libusb_", free_function = "libusb_close")]
+	public class DeviceHandle {
+		public DeviceHandle (Device device) {
+			DeviceHandle handle;
+			device.open(out handle);
+		}
+
+		[CCode (cname = "libusb_open_device_with_vid_pid")]
+		public DeviceHandle.from_vid_pid (Context context, uint16 vendor_id, uint16 product_id);
+		public unowned Device get_device ();
+		public int get_configuration (out int config);
+		public int set_configuration (int configuration);
+		public int claim_interface (int interface_number);
+		public int release_interface (int interface_number);
+		public int set_interface_alt_setting (int interface_number, int alternate_setting);
+		public int clear_halt (uchar endpoint);
+		[CCode (cname = "libusb_reset_device")]
+		public int reset ();
+		public int kernel_driver_active (int @interface);
+		public int detach_kernel_driver (int @interface);
+		public int attach_kernel_driver (int @interface);
+
+		public int get_string_descriptor_ascii (uint8 desc_index, uchar[] data);
+		public int get_descriptor (uint8 desc_type, uint8 desc_index, uchar[] data);
+		public int get_string_descriptor (uint desc_index, uint16 langid, uchar[] data);
+
+		public int control_transfer (uint8 bmRequestType, uint8 bRequest, uint16 wValue, uint16 wIndex, [CCode (array_length = false)] uchar[] data, uint16 wLength, uint timeout);
+		public int bulk_transfer (uchar endpoint, uchar[] data, out int transferred, uint timeout);
+		public int interrupt_transfer (uchar endpoint, uchar[] data, out int transferred, uint timeout);
+	}
+
+	[CCode (cname = "libusb_device", cprefix = "libusb_", ref_function = "libusb_ref_device", unref_function = "libusb_unref_device")]
+	public class Device {
+		public uint8 get_bus_number ();
+		public uint8 get_device_address ();
+		public int get_max_packet_size (uchar endpoint);
+		public int open (out DeviceHandle handle);
+
+		public int get_active_config_descriptor (out ConfigDescriptor config);
+		public int get_config_descriptor (uint8 config_index, out ConfigDescriptor config);
+		public int get_config_descriptor_by_value (uint8 ConfigurationValue, out ConfigDescriptor config);
+		public int get_device_descriptor (out DeviceDescriptor desc);
+	}
+
+	[Compact, CCode (cname = "libusb_context", cprefix = "libusb_", free_function = "libusb_exit")]
+	public class Context {
+		public static int init (out Context context);
+		public void set_debug (int level);
+		public ssize_t get_device_list ([CCode (array_length = false)] out Device[] list);
+		public DeviceHandle open_device_with_vid_pid (uint16 vendor_id, uint16 product_id);
+
+		public int try_lock_events ();
+		public void lock_events ();
+		public void unlock_events ();
+		public int event_handling_ok ();
+		public int event_handler_active ();
+		public void lock_event_waiters ();
+		public void unlock_event_waiters ();
+		public int wait_for_event (GLib.TimeVal tv);
+		public int handle_events_timeout (GLib.TimeVal tv);
+		public int handle_events ();
+		public int handle_events_locked (GLib.TimeVal tv);
+		public int get_next_timeout (out Posix.timeval tv);
+		public void set_pollfd_notifiers (pollfd_added_cb added_cb, pollfd_removed_cb removed_cb, void* user_data);
+		[CCode (array_length = false)]
+		public unowned PollFD[] get_pollfds ();
+	}
+
+	public static uint16 le16_to_cpu (uint16 n);
+	public static uint16 cpu_to_le16 (uint16 n);
+	[CCode (cname = "malloc", cheader_filename = "stdlib.h")]
+	private static void* malloc (ulong n_bytes);
+
+	[Compact, CCode (cname = "struct libusb_control_setup")]
+	public class ControlSetup {
+		public uint8 bmRequestType;
+		public int8 bRequest;
+		public uint16 wValue;
+		public uint16 wIndex;
+		public uint16 wLength;
+	}
+
+	[CCode (cname = "enum libusb_transfer_status", cprefix = "LIBUSB_TRANSFER_")]
+	public enum TransferStatus {
+		COMPLETED,
+		ERROR,
+		TIMED_OUT,
+		CANCELLED,
+		STALL,
+		NO_DEVICE,
+		OVERFLOW
+	}
+
+	[CCode (cname = "struct libusb_iso_packet_descriptor")]
+	public struct IsoPacketDescriptor {
+		public uint length;
+		public uint actual_length;
+		public TransferStatus status;
+	}
+
+	public static delegate void transfer_cb_fn (Transfer transfer);
+
+	[Compact, CCode (cname = "struct libusb_transfer", cprefix = "libusb_", free_function = "libusb_free_transfer")]
+	public class Transfer {
+		public DeviceHandle dev_handle;
+		public uint8 flags;
+		public uchar endpoint;
+		public uchar type;
+		public uint timeout;
+		public TransferStatus status;
+		public int length;
+		public int actual_length;
+		public transfer_cb_fn @callback;
+		public void* user_data;
+		[CCode (array_length_cname = "length")]
+		public uchar[] buffer;
+		public int num_iso_packets;
+		[CCode (array_length = false)]
+		public IsoPacketDescriptor[] iso_packet_desc;
+
+		[CCode (cname = "libusb_alloc_transfer")]
+		public Transfer (int iso_packets = 0);
+		[CCode (cname = "libusb_submit_transfer")]
+		public int submit ();
+		[CCode (cname = "libusb_cancel_transfer")]
+		public int cancel ();
+		[CCode (cname = "libusb_contrel_transfer_get_data", array_length = false)]
+		public unowned char[] control_get_data ();
+		[CCode (cname = "libusb_control_transfer_get_setup")]
+		public unowned ControlSetup control_get_setup ();
+
+		public static void fill_control_setup ([CCode (array_length = false)] uchar[] buffer, uint8 bmRequestType, uint8 bRequest, uint16 wValue, uint16 wIndex, uint16 wLength);
+		public void fill_control_transfer (DeviceHandle dev_handle, [CCode (array_length = false)] uchar[] buffer, transfer_cb_fn @callback, void* user_data, uint timeout);
+		public void fill_bulk_transfer (DeviceHandle dev_handle, uchar endpoint, uchar[] buffer, transfer_cb_fn @callback, void* user_data, uint timeout);
+		public void fill_interrupt_transfer (DeviceHandle dev_handle, uchar endpoint, uchar[] buffer, transfer_cb_fn @callback, void* user_data, uint timeout);
+		public void fill_iso_transfer (DeviceHandle dev_handle, uchar endpoint, uchar[] buffer, int num_iso_packets, transfer_cb_fn @callback, void* user_data, uint timeout);
+		public void set_packet_lengths (uint length);
+		[CCode (array_length = false)]
+		public unowned uchar[] get_iso_packet_buffer (uint packet);
+		[CCode (array_length = false)]
+		public unowned uchar[] get_iso_packet_buffer_simple (int packet);
+	}
+
+	public static delegate void pollfd_added_cb (int fd, short events, void* user_data);
+	public static delegate void pollfd_removed_cb (int fd, void* user_data);
+
+	[Compact, CCode (cname = "struct libusb_pollfd")]
+	public class PollFD {
+		public int fd;
+		public short events;
+	}
+}



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]