1# IUsbDdk
2
3
4## 概述
5
6声明USB主机用于访问USB设备的USB DDK API。
7
8上层USB服务调用相关功能接口,可以打开/关闭设备,获取设备描述符,批量读取/写入数据等。
9
10**起始版本:** 4.0
11
12**相关模块:**[HdiUsbDdk](_hdi_usb_ddk.md)
13
14
15## 汇总
16
17
18### Public 成员函数
19
20| 名称 | 描述 | 
21| -------- | -------- |
22| [Init](#init) () | 初始化DDK。  | 
23| [Release](#release) () | 在停止数据传输后关闭占用的USB设备接口,并释放相关资源。  | 
24| [GetDeviceDescriptor](#getdevicedescriptor) ([in] unsigned long deviceId, [out] struct [UsbDeviceDescriptor](_usb_device_descriptor.md) desc) | 获取USB设备描述符。  | 
25| [GetConfigDescriptor](#getconfigdescriptor) ([in] unsigned long deviceId, [in] unsigned char configIndex, [out] List< unsigned char > configDesc) | 获取配置描述符。  | 
26| [ClaimInterface](#claiminterface) ([in] unsigned long deviceId, [in] unsigned char interfaceIndex, [out] unsigned long interfaceHandle) | 声明USB接口。  | 
27| [ReleaseInterface](#releaseinterface) ([in] unsigned long interfaceHandle) | 在停止数据传输后关闭占用的USB设备接口,并释放相关资源。  | 
28| [SelectInterfaceSetting](#selectinterfacesetting) ([in] unsigned long interfaceHandle, [in] unsigned char settingIndex) | 激活USB接口的备用设置。  | 
29| [GetCurrentInterfaceSetting](#getcurrentinterfacesetting) ([in] unsigned long interfaceHandle, [out] unsigned char settingIndex) | 获取USB接口的激活备用设置。  | 
30| [SendControlReadRequest](#sendcontrolreadrequest) ([in] unsigned long interfaceHandle, [in] struct [UsbControlRequestSetup](_usb_control_request_setup.md) setup, [in] unsigned int timeout, [out] List< unsigned char > data) | 发送控制读取传输请求。此API以同步方式工作。  | 
31| [SendControlWriteRequest](#sendcontrolwriterequest) ([in] unsigned long interfaceHandle, [in] struct [UsbControlRequestSetup](_usb_control_request_setup.md) setup, [in] unsigned int timeout, [in] List< unsigned char > data) | 发送控制写入传输请求。此API以同步方式工作。  | 
32| [SendPipeRequest](#sendpiperequest) ([in] struct [UsbRequestPipe](_usb_request_pipe.md) pipe, [in] unsigned int size, [in] unsigned int offset, [in] unsigned int length, [out] unsigned int transferedLength) | 发送管道请求。此API以同步方式工作。此API适用于中断传输和批量传输。  | 
33| [GetDeviceMemMapFd](#getdevicememmapfd) ([in] unsigned long deviceId, [out] FileDescriptor fd) | 获取内存映射的文件描述符。  | 
34
35
36## 成员函数说明
37
38
39### ClaimInterface()
40
41```
42IUsbDdk::ClaimInterface ([in] unsigned long deviceId, [in] unsigned char interfaceIndex, [out] unsigned long interfaceHandle )
43```
44**描述**
45
46声明USB接口。
47
48**起始版本:** 4.0
49
50**参数:**
51
52| 名称 | 描述 | 
53| -------- | -------- |
54| deviceId | 要操作的设备的ID。  | 
55| interfaceIndex | 接口索引,对应于USB协议中的**b接口编号**。  | 
56| interfaceHandle | 接口操作处理。成功声明接口后,将为此参数分配一个值。 | 
57
58**返回:**
59
600 表示操作成功。
61
62非零值 表示操作失败。
63
64
65### GetConfigDescriptor()
66
67```
68IUsbDdk::GetConfigDescriptor ([in] unsigned long deviceId, [in] unsigned char configIndex, [out] List< unsigned char > configDesc )
69```
70**描述**
71
72获取配置描述符。
73
74**起始版本:** 4.0
75
76**参数:**
77
78| 名称 | 描述 | 
79| -------- | -------- |
80| deviceId | 要获取其描述符的设备的设备Id。  | 
81| configIndex | 配置索引,对应于USB协议中的**bConfigurationValue**。  | 
82| configDesc | 配置描述符,包括USB协议中定义的标准配置描述符以及相关的接口描述符和端点描述符。 | 
83
84**返回:**
85
860 表示操作成功。
87
88非零值 表示操作失败。
89
90
91### GetCurrentInterfaceSetting()
92
93```
94IUsbDdk::GetCurrentInterfaceSetting ([in] unsigned long interfaceHandle, [out] unsigned char settingIndex )
95```
96**描述**
97
98获取USB接口的激活备用设置。
99
100**起始版本:** 4.0
101
102**参数:**
103
104| 名称 | 描述 | 
105| -------- | -------- |
106| interfaceHandle | 接口操作处理。  | 
107| settingIndex | 备用设置的索引,对应于USB协议中的**bAlternateSetting**。 | 
108
109**返回:**
110
1110 表示操作成功。
112
113非零值 表示操作失败。
114
115
116### GetDeviceDescriptor()
117
118```
119IUsbDdk::GetDeviceDescriptor ([in] unsigned long deviceId, [out] struct UsbDeviceDescriptor desc )
120```
121**描述**
122
123获取USB设备描述符。
124
125**起始版本:** 4.0
126
127**参数:**
128
129| 名称 | 描述 | 
130| -------- | -------- |
131| deviceId | 要获取其描述符的设备的设备Id。  | 
132| desc | USB协议中定义的标准设备描述符。 | 
133
134**返回:**
135
1360 表示操作成功。
137
138非零值 表示操作失败。
139
140
141### GetDeviceMemMapFd()
142
143```
144IUsbDdk::GetDeviceMemMapFd ([in] unsigned long deviceId, [out] FileDescriptor fd )
145```
146**描述**
147
148获取内存映射的文件描述符。
149
150**起始版本:** 4.0
151
152**参数:**
153
154| 名称 | 描述 | 
155| -------- | -------- |
156| deviceId | 待操作设备的ID。  | 
157| fd | 为内存映射获取的文件描述符。 | 
158
159**返回:**
160
1610 表示操作成功。
162
163非零值 表示操作失败。
164
165
166### Init()
167
168```
169IUsbDdk::Init ()
170```
171**描述**
172
173初始化DDK。
174
175**起始版本:** 4.0
176
177**返回:**
178
1790 表示操作成功。
180
181非零值 表示操作失败。
182
183
184### Release()
185
186```
187IUsbDdk::Release ()
188```
189**描述**
190
191在停止数据传输后关闭占用的USB设备接口,并释放相关资源。
192
193**起始版本:** 4.0
194
195**返回:**
196
1970 表示操作成功。
198
199非零值 表示操作失败。
200
201
202### ReleaseInterface()
203
204```
205IUsbDdk::ReleaseInterface ([in] unsigned long interfaceHandle)
206```
207**描述**
208
209在停止数据传输后关闭占用的USB设备接口,并释放相关资源。
210
211**起始版本:** 4.0
212
213**参数:**
214
215| 名称 | 描述 | 
216| -------- | -------- |
217| interfaceHandle | 接口操作处理。 | 
218
219**返回:**
220
2210 表示操作成功。
222
223非零值 表示操作失败。
224
225
226### SelectInterfaceSetting()
227
228```
229IUsbDdk::SelectInterfaceSetting ([in] unsigned long interfaceHandle, [in] unsigned char settingIndex )
230```
231**描述**
232
233激活USB接口的备用设置。
234
235**起始版本:** 4.0
236
237**参数:**
238
239| 名称 | 描述 | 
240| -------- | -------- |
241| interfaceHandle | 接口操作处理。  | 
242| settingIndex | 备用设置的索引,对应于USB协议中的**bAlternateSetting**。 | 
243
244**返回:**
245
2460 表示操作成功。
247
248非零值 表示操作失败。
249
250
251### SendControlReadRequest()
252
253```
254IUsbDdk::SendControlReadRequest ([in] unsigned long interfaceHandle, [in] struct UsbControlRequestSetup setup, [in] unsigned int timeout, [out] List< unsigned char > data )
255```
256**描述**
257
258发送控制读取传输请求。此API以同步方式工作。
259
260**起始版本:** 4.0
261
262**参数:**
263
264| 名称 | 描述 | 
265| -------- | -------- |
266| interfaceHandle | 接口操作处理。  | 
267| setup | 请求数据,对应于USB协议中的**Setup Data**。  | 
268| timeout | 超时持续时间,以毫秒为单位。  | 
269| data | 要传输的数据。 | 
270
271**返回:**
272
2730 表示操作成功。
274
275非零值 表示操作失败。
276
277
278### SendControlWriteRequest()
279
280```
281IUsbDdk::SendControlWriteRequest ([in] unsigned long interfaceHandle, [in] struct UsbControlRequestSetup setup, [in] unsigned int timeout, [in] List< unsigned char > data )
282```
283**描述**
284
285发送控制写入传输请求。此API以同步方式工作。
286
287**起始版本:** 4.0
288
289**参数:**
290
291| 名称 | 描述 | 
292| -------- | -------- |
293| interfaceHandle | 接口操作处理。  | 
294| setup | 请求数据,对应于USB协议中的**Setup Data**。  | 
295| timeout | 超时持续时间,以毫秒为单位。  | 
296| data | 要传输的数据。 | 
297
298**返回:**
299
3000 表示操作成功。
301
302非零值 表示操作失败。
303
304
305### SendPipeRequest()
306
307```
308IUsbDdk::SendPipeRequest ([in] struct UsbRequestPipe pipe, [in] unsigned int size, [in] unsigned int offset, [in] unsigned int length, [out] unsigned int transferedLength )
309```
310**描述**
311
312发送管道请求。此API以同步方式工作。此API适用于中断传输和批量传输。
313
314**起始版本:** 4.0
315
316**参数:**
317
318| 名称 | 描述 | 
319| -------- | -------- |
320| 管道用于传输数据的管道。 |  | 
321| size | 缓冲区大小。  | 
322| offset | 所用缓冲区的偏移量。默认值为0,表示没有偏移,缓冲区从指定地址开始。  | 
323| length | 使用的缓冲区的长度。默认情况下,该值等于大小,表示使用了整个缓冲区。  | 
324| transferedLength | 传输数据的长度。 | 
325
326**返回:**
327
3280 表示操作成功。
329
330非零值 表示操作失败。
331