annotate USBLib/Communication/LibUsb1/libusb1.cs @ 99:be17dd3f6927

Small fixes in HTTP server and libusb1 backend
author Ivo Smits <Ivo@UCIS.nl>
date Sun, 17 Aug 2014 15:35:23 +0200
parents 053cc617af54
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
21
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
1 ???using System;
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
2 using System.Runtime.InteropServices;
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
3 using System.Text;
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
4 using Microsoft.Win32.SafeHandles;
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
5 using ssize_t = System.IntPtr;
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
6
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
7 namespace UCIS.USBLib.Communication.LibUsb1 {
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
8 class libusb_context : SafeHandleZeroOrMinusOneIsInvalid {
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
9 public libusb_context() : base(true) { }
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
10 protected override bool ReleaseHandle() {
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
11 libusb1.libusb_exit(handle);
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
12 return true;
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
13 }
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
14 }
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
15 class libusb_device : SafeHandleZeroOrMinusOneIsInvalid {
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
16 public libusb_device() : base(true) { }
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
17 public libusb_device(IntPtr handle, Boolean ownsHandle) : base(ownsHandle) { SetHandle(handle); }
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
18 protected override bool ReleaseHandle() {
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
19 libusb1.libusb_unref_device(handle);
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
20 return true;
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
21 }
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
22 }
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
23 class libusb_device_handle : SafeHandleZeroOrMinusOneIsInvalid {
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
24 public libusb_device_handle() : base(true) { }
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
25 protected override bool ReleaseHandle() {
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
26 libusb1.libusb_close(handle);
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
27 return true;
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
28 }
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
29 }
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
30 unsafe static class libusb1 {
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
31 const CallingConvention LIBUSB1_CC = CallingConvention.Winapi;
99
be17dd3f6927 Small fixes in HTTP server and libusb1 backend
Ivo Smits <Ivo@UCIS.nl>
parents: 46
diff changeset
32 const String LIBUSB1_DLL = "libusb-1.0";
21
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
33
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
34 [StructLayout(LayoutKind.Sequential, Pack = 1)]
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
35 public struct libusb_device_descriptor {
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
36 public Byte bLength;
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
37 public Byte bDescriptorType;
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
38 public UInt16 bcdUSB;
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
39 public Byte bDeviceClass;
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
40 public Byte bDeviceSubClass;
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
41 public Byte bDeviceProtocol;
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
42 public Byte bMaxPacketSize0;
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
43 public UInt16 idVendor;
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
44 public UInt16 idProduct;
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
45 public UInt16 bcdDevice;
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
46 public Byte iManufacturer;
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
47 public Byte iProduct;
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
48 public Byte iSerialNumber;
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
49 public Byte bNumConfigurations;
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
50 }
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
51
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
52 [StructLayout(LayoutKind.Sequential)]
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
53 struct libusb_endpoint_descriptor {
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
54 Byte bLength;
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
55 Byte bDescriptorType;
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
56 Byte bEndpointAddress;
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
57 Byte bmAttributes;
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
58 UInt16 wMaxPacketSize;
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
59 Byte bInterval;
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
60 Byte bRefresh;
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
61 Byte bSynchAddress;
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
62 byte* extra;
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
63 int extra_length;
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
64 }
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
65
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
66 [StructLayout(LayoutKind.Sequential)]
22
5b14fed54a89 USBLib: cleanup
Ivo Smits <Ivo@UCIS.nl>
parents: 21
diff changeset
67 struct libusb_interface_descriptor {
21
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
68 Byte bLength;
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
69 Byte bDescriptorType;
22
5b14fed54a89 USBLib: cleanup
Ivo Smits <Ivo@UCIS.nl>
parents: 21
diff changeset
70 Byte bInterfaceNumber;
5b14fed54a89 USBLib: cleanup
Ivo Smits <Ivo@UCIS.nl>
parents: 21
diff changeset
71 Byte bAlternateSetting;
5b14fed54a89 USBLib: cleanup
Ivo Smits <Ivo@UCIS.nl>
parents: 21
diff changeset
72 Byte bNumEndpoints;
5b14fed54a89 USBLib: cleanup
Ivo Smits <Ivo@UCIS.nl>
parents: 21
diff changeset
73 Byte bInterfaceClass;
5b14fed54a89 USBLib: cleanup
Ivo Smits <Ivo@UCIS.nl>
parents: 21
diff changeset
74 Byte bInterfaceSubClass;
5b14fed54a89 USBLib: cleanup
Ivo Smits <Ivo@UCIS.nl>
parents: 21
diff changeset
75 Byte bInterfaceProtocol;
5b14fed54a89 USBLib: cleanup
Ivo Smits <Ivo@UCIS.nl>
parents: 21
diff changeset
76 Byte iInterface;
5b14fed54a89 USBLib: cleanup
Ivo Smits <Ivo@UCIS.nl>
parents: 21
diff changeset
77 libusb_endpoint_descriptor* endpoint;
21
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
78 Byte* extra;
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
79 int extra_length;
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
80 }
22
5b14fed54a89 USBLib: cleanup
Ivo Smits <Ivo@UCIS.nl>
parents: 21
diff changeset
81 [StructLayout(LayoutKind.Sequential)]
5b14fed54a89 USBLib: cleanup
Ivo Smits <Ivo@UCIS.nl>
parents: 21
diff changeset
82 struct libusb_interface {
5b14fed54a89 USBLib: cleanup
Ivo Smits <Ivo@UCIS.nl>
parents: 21
diff changeset
83 libusb_interface_descriptor* altsetting;
5b14fed54a89 USBLib: cleanup
Ivo Smits <Ivo@UCIS.nl>
parents: 21
diff changeset
84 int num_altsetting;
21
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
85 }
22
5b14fed54a89 USBLib: cleanup
Ivo Smits <Ivo@UCIS.nl>
parents: 21
diff changeset
86 struct libusb_config_descriptor {
5b14fed54a89 USBLib: cleanup
Ivo Smits <Ivo@UCIS.nl>
parents: 21
diff changeset
87 Byte bLength;
5b14fed54a89 USBLib: cleanup
Ivo Smits <Ivo@UCIS.nl>
parents: 21
diff changeset
88 Byte bDescriptorType;
5b14fed54a89 USBLib: cleanup
Ivo Smits <Ivo@UCIS.nl>
parents: 21
diff changeset
89 Byte wTotalLength;
5b14fed54a89 USBLib: cleanup
Ivo Smits <Ivo@UCIS.nl>
parents: 21
diff changeset
90 Byte bNumInterfaces;
5b14fed54a89 USBLib: cleanup
Ivo Smits <Ivo@UCIS.nl>
parents: 21
diff changeset
91 Byte bConfigurationValue;
5b14fed54a89 USBLib: cleanup
Ivo Smits <Ivo@UCIS.nl>
parents: 21
diff changeset
92 Byte iConfiguration;
5b14fed54a89 USBLib: cleanup
Ivo Smits <Ivo@UCIS.nl>
parents: 21
diff changeset
93 Byte bmAttributes;
5b14fed54a89 USBLib: cleanup
Ivo Smits <Ivo@UCIS.nl>
parents: 21
diff changeset
94 Byte MaxPower;
5b14fed54a89 USBLib: cleanup
Ivo Smits <Ivo@UCIS.nl>
parents: 21
diff changeset
95 libusb_interface* @interface;
5b14fed54a89 USBLib: cleanup
Ivo Smits <Ivo@UCIS.nl>
parents: 21
diff changeset
96 Byte* extra;
5b14fed54a89 USBLib: cleanup
Ivo Smits <Ivo@UCIS.nl>
parents: 21
diff changeset
97 int extra_length;
21
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
98 }
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
99
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
100 [DllImport(LIBUSB1_DLL, CallingConvention = LIBUSB1_CC)]
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
101 public static extern int libusb_init(out libusb_context ctx);
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
102 [DllImport(LIBUSB1_DLL, CallingConvention = LIBUSB1_CC)]
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
103 public static extern void libusb_exit(IntPtr ctx);
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
104 [DllImport(LIBUSB1_DLL, CallingConvention = LIBUSB1_CC)]
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
105 static extern void libusb_set_debug(libusb_context ctx, int level);
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
106 [DllImport(LIBUSB1_DLL, CallingConvention = LIBUSB1_CC)]
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
107 static extern Byte* libusb_error_name(int errcode);
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
108
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
109 [DllImport(LIBUSB1_DLL, CallingConvention = LIBUSB1_CC)]
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
110 public static extern ssize_t libusb_get_device_list(libusb_context ctx, out IntPtr* list); //libusb_device** list
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
111 [DllImport(LIBUSB1_DLL, CallingConvention = LIBUSB1_CC)]
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
112 public static extern void libusb_free_device_list(IntPtr* list, int unref_devices);
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
113 [DllImport(LIBUSB1_DLL, CallingConvention = LIBUSB1_CC)]
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
114 static extern libusb_device libusb_ref_device(libusb_device dev);
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
115 [DllImport(LIBUSB1_DLL, CallingConvention = LIBUSB1_CC)]
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
116 public static extern void libusb_unref_device(IntPtr dev);
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
117
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
118 [DllImport(LIBUSB1_DLL, CallingConvention = LIBUSB1_CC)]
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
119 static extern int libusb_get_configuration(libusb_device_handle dev, out int config);
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
120 [DllImport(LIBUSB1_DLL, CallingConvention = LIBUSB1_CC)]
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
121 public static extern int libusb_get_device_descriptor(libusb_device dev, out libusb_device_descriptor desc);
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
122 [DllImport(LIBUSB1_DLL, CallingConvention = LIBUSB1_CC)]
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
123 static extern int libusb_get_active_config_descriptor(libusb_device dev, libusb_config_descriptor** config);
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
124 [DllImport(LIBUSB1_DLL, CallingConvention = LIBUSB1_CC)]
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
125 static extern int libusb_get_config_descriptor(libusb_device dev, Byte config_index, libusb_config_descriptor** config);
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
126 [DllImport(LIBUSB1_DLL, CallingConvention = LIBUSB1_CC)]
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
127 static extern int libusb_get_config_descriptor_by_value(libusb_device dev, Byte bConfigurationValue, libusb_config_descriptor** config);
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
128 [DllImport(LIBUSB1_DLL, CallingConvention = LIBUSB1_CC)]
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
129 static extern void libusb_free_config_descriptor(libusb_config_descriptor* config);
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
130 [DllImport(LIBUSB1_DLL, CallingConvention = LIBUSB1_CC)]
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
131 public static extern Byte libusb_get_bus_number(libusb_device dev);
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
132 [DllImport(LIBUSB1_DLL, CallingConvention = LIBUSB1_CC)]
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
133 public static extern Byte libusb_get_device_address(libusb_device dev);
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
134 [DllImport(LIBUSB1_DLL, CallingConvention = LIBUSB1_CC)]
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
135 static extern int libusb_get_device_speed(libusb_device dev);
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
136 [DllImport(LIBUSB1_DLL, CallingConvention = LIBUSB1_CC)]
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
137 static extern int libusb_get_max_packet_size(libusb_device dev, Byte endpoint);
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
138 [DllImport(LIBUSB1_DLL, CallingConvention = LIBUSB1_CC)]
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
139 static extern int libusb_get_max_iso_packet_size(libusb_device dev, Byte endpoint);
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
140
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
141 [DllImport(LIBUSB1_DLL, CallingConvention = LIBUSB1_CC)]
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
142 public static extern int libusb_open(libusb_device dev, out libusb_device_handle handle);
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
143 [DllImport(LIBUSB1_DLL, CallingConvention = LIBUSB1_CC)]
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
144 public static extern void libusb_close(IntPtr dev_handle);
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
145 [DllImport(LIBUSB1_DLL, CallingConvention = LIBUSB1_CC)]
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
146 static extern libusb_device libusb_get_device(libusb_device_handle dev_handle);
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
147
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
148 [DllImport(LIBUSB1_DLL, CallingConvention = LIBUSB1_CC)]
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
149 public static extern int libusb_set_configuration(libusb_device_handle dev, int configuration);
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
150 [DllImport(LIBUSB1_DLL, CallingConvention = LIBUSB1_CC)]
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
151 public static extern int libusb_claim_interface(libusb_device_handle dev, int interface_number);
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
152 [DllImport(LIBUSB1_DLL, CallingConvention = LIBUSB1_CC)]
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
153 public static extern int libusb_release_interface(libusb_device_handle dev, int interface_number);
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
154
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
155 [DllImport(LIBUSB1_DLL, CallingConvention = LIBUSB1_CC)]
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
156 static extern libusb_device_handle libusb_open_device_with_vid_pid(libusb_context ctx, UInt16 vendor_id, UInt16 product_id);
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
157
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
158 [DllImport(LIBUSB1_DLL, CallingConvention = LIBUSB1_CC)]
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
159 static extern int libusb_set_interface_alt_setting(libusb_device_handle dev, int interface_number, int alternate_setting);
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
160 [DllImport(LIBUSB1_DLL, CallingConvention = LIBUSB1_CC)]
46
053cc617af54 USBLib: added functions to clear USB endpoint halt state
Ivo Smits <Ivo@UCIS.nl>
parents: 22
diff changeset
161 public static extern int libusb_clear_halt(libusb_device_handle dev, Byte endpoint);
21
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
162 [DllImport(LIBUSB1_DLL, CallingConvention = LIBUSB1_CC)]
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
163 public static extern int libusb_reset_device(libusb_device_handle dev);
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
164
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
165 [DllImport(LIBUSB1_DLL, CallingConvention = LIBUSB1_CC)]
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
166 static extern int libusb_kernel_driver_active(libusb_device_handle dev, int interface_number);
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
167 [DllImport(LIBUSB1_DLL, CallingConvention = LIBUSB1_CC)]
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
168 public static extern int libusb_detach_kernel_driver(libusb_device_handle dev, int interface_number);
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
169 [DllImport(LIBUSB1_DLL, CallingConvention = LIBUSB1_CC)]
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
170 public static extern int libusb_attach_kernel_driver(libusb_device_handle dev, int interface_number);
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
171
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
172 [DllImport(LIBUSB1_DLL, CallingConvention = LIBUSB1_CC)]
22
5b14fed54a89 USBLib: cleanup
Ivo Smits <Ivo@UCIS.nl>
parents: 21
diff changeset
173 public static extern int libusb_control_transfer(libusb_device_handle dev_handle, Byte request_type, Byte bRequest, UInt16 wValue, UInt16 wIndex, Byte* data, UInt16 wLength, UInt32 timeout);
21
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
174
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
175 [DllImport(LIBUSB1_DLL, CallingConvention = LIBUSB1_CC)]
22
5b14fed54a89 USBLib: cleanup
Ivo Smits <Ivo@UCIS.nl>
parents: 21
diff changeset
176 public static extern int libusb_bulk_transfer(libusb_device_handle dev_handle, Byte endpoint, Byte* data, int length, out int actual_length, UInt32 timeout);
21
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
177
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
178 [DllImport(LIBUSB1_DLL, CallingConvention = LIBUSB1_CC)]
22
5b14fed54a89 USBLib: cleanup
Ivo Smits <Ivo@UCIS.nl>
parents: 21
diff changeset
179 public static extern int libusb_interrupt_transfer(libusb_device_handle dev_handle, Byte endpoint, Byte* data, int length, out int actual_length, UInt32 timeout);
21
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
180
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
181 [DllImport(LIBUSB1_DLL, CallingConvention = LIBUSB1_CC)]
22
5b14fed54a89 USBLib: cleanup
Ivo Smits <Ivo@UCIS.nl>
parents: 21
diff changeset
182 public static extern int libusb_get_string_descriptor_ascii(libusb_device_handle dev, Byte desc_index, [MarshalAs(UnmanagedType.LPStr)] StringBuilder data, int length);
21
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
183 }
dcfec2be27c9 Added USBLib
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
184 }