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