1 /*
2 * Copyright (c) 2024 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #include <iostream>
17 #include <vector>
18
19 #include "hdf_log.h"
20 #include "usbd_request_test.h"
21 #include "v1_0/iusb_interface.h"
22 #include "v1_0/usb_types.h"
23
24 const int SLEEP_TIME = 3;
25 const uint8_t INTERFACEID_OK = 1;
26 const uint32_t MAX_BUFFER_LENGTH = 255;
27 const uint8_t POINTID_DIR_IN = USB_ENDPOINT_DIR_IN | 2;
28 const uint8_t POINTID_DIR_OUT = USB_ENDPOINT_DIR_OUT | 1;
29
30 using namespace testing::ext;
31 using namespace OHOS;
32 using namespace OHOS::USB;
33 using namespace std;
34 using namespace OHOS::HDI::Usb::V1_0;
35
36 UsbDev UsbdRequestTestAdditional::dev_ = {0, 0};
37 sptr<UsbSubscriberTest> UsbdRequestTestAdditional::subscriber_ = nullptr;
38
39 namespace {
40 sptr<IUsbInterface> g_usbInterface = nullptr;
41
SwitchErrCode(int32_t ret)42 int32_t SwitchErrCode(int32_t ret)
43 {
44 return ret == HDF_ERR_NOT_SUPPORT ? HDF_SUCCESS : ret;
45 }
46
SetUpTestCase(void)47 void UsbdRequestTestAdditional::SetUpTestCase(void)
48 {
49 g_usbInterface = IUsbInterface::Get();
50 if (g_usbInterface == nullptr) {
51 HDF_LOGE("%{public}s:IUsbInterface::Get() failed.", __func__);
52 exit(0);
53 }
54 auto ret = g_usbInterface->SetPortRole(1, 1, 1);
55 sleep(SLEEP_TIME);
56 HDF_LOGI("UsbdRequestTestAdditional::[Device] %{public}d SetPortRole=%{public}d", __LINE__, ret);
57 ret = SwitchErrCode(ret);
58 ASSERT_EQ(0, ret);
59 if (ret != 0) {
60 exit(0);
61 }
62
63 subscriber_ = new UsbSubscriberTest();
64 if (g_usbInterface->BindUsbdSubscriber(subscriber_) != HDF_SUCCESS) {
65 HDF_LOGE("%{public}s: bind usbd subscriber_ failed", __func__);
66 exit(0);
67 }
68
69 std::cout << "please connect device, press enter to continue" << std::endl;
70 int c;
71 while ((c = getchar()) != '\n' && c != EOF) {
72 }
73 dev_ = {subscriber_->busNum_, subscriber_->devAddr_};
74
75 ret = g_usbInterface->OpenDevice(dev_);
76 HDF_LOGI("UsbdRequestTestAdditional:: %{public}d OpenDevice=%{public}d", __LINE__, ret);
77 ASSERT_EQ(0, ret);
78 }
79
TearDownTestCase(void)80 void UsbdRequestTestAdditional::TearDownTestCase(void)
81 {
82 g_usbInterface->UnbindUsbdSubscriber(subscriber_);
83 dev_ = {subscriber_->busNum_, subscriber_->devAddr_};
84 auto ret = g_usbInterface->CloseDevice(dev_);
85 HDF_LOGI("UsbdRequestTestAdditional:: %{public}d Close=%{public}d", __LINE__, ret);
86 ASSERT_EQ(0, ret);
87 }
88
SetUp(void)89 void UsbdRequestTestAdditional::SetUp(void) {}
90
TearDown(void)91 void UsbdRequestTestAdditional::TearDown(void) {}
92
93 /**
94 * @tc.number: SUB_USB_HostManager_HDI_CompatibilityRequestAddTest_0100
95 * @tc.name: testHdiUsbRequestTestRequestWait001
96 * @tc.desc: Waits for the operation result of the isochronous transfer request in <b>RequestQueue</b>.
97 * (dev, waitData, bufferData, 1000).
98 */
HWTEST_F(UsbdRequestTestAdditional, testHdiUsbRequestTestRequestWait001, TestSize.Level1)99 HWTEST_F(UsbdRequestTestAdditional, testHdiUsbRequestTestRequestWait001, TestSize.Level1)
100 {
101 struct UsbDev dev = dev_;
102 uint8_t pointId = POINTID_DIR_IN;
103 uint8_t interfaceId = INTERFACEID_OK;
104 auto ret = g_usbInterface->ClaimInterface(dev, interfaceId, 1);
105 ASSERT_EQ(0, ret);
106 struct UsbPipe pipe = {interfaceId, pointId};
107 std::vector<uint8_t> clientData = {'q', 'u', 'e', 'u', 'e', 'r', 'e', 'a', 'd'};
108 std::vector<uint8_t> bufferData(MAX_BUFFER_LENGTH);
109 ret = g_usbInterface->RequestQueue(dev, pipe, clientData, bufferData);
110 ASSERT_EQ(0, ret);
111 std::vector<uint8_t> waitData(10);
112 ret = g_usbInterface->RequestWait(dev, waitData, bufferData, 1000);
113 ASSERT_EQ(0, ret);
114 }
115
116 /**
117 * @tc.number: SUB_USB_HostManager_HDI_CompatibilityRequestAddTest_0200
118 * @tc.name: testHdiUsbRequestTestRequestWait002
119 * @tc.desc: Waits for the operation result of the isochronous transfer request in <b>RequestQueue</b>.
120 * ({1, 255}, waitData, bufferData, 1000).
121 */
HWTEST_F(UsbdRequestTestAdditional, testHdiUsbRequestTestRequestWait002, TestSize.Level2)122 HWTEST_F(UsbdRequestTestAdditional, testHdiUsbRequestTestRequestWait002, TestSize.Level2)
123 {
124 struct UsbDev dev = dev_;
125 uint8_t pointId = POINTID_DIR_IN;
126 uint8_t interfaceId = INTERFACEID_OK;
127 auto ret = g_usbInterface->ClaimInterface(dev, interfaceId, 1);
128 ASSERT_EQ(0, ret);
129 struct UsbPipe pipe = {interfaceId, pointId};
130 std::vector<uint8_t> clientData = {'q', 'u', 'e', 'u', 'e', 'r', 'e', 'a', 'd'};
131 std::vector<uint8_t> bufferData(MAX_BUFFER_LENGTH);
132 ret = g_usbInterface->RequestQueue(dev, pipe, clientData, bufferData);
133 ASSERT_EQ(0, ret);
134 std::vector<uint8_t> waitData(10);
135 dev.busNum = 1;
136 dev.devAddr = 255;
137 ret = g_usbInterface->RequestWait(dev, waitData, bufferData, 1000);
138 ASSERT_NE(0, ret);
139 }
140
141 /**
142 * @tc.number: SUB_USB_HostManager_HDI_CompatibilityRequestAddTest_0300
143 * @tc.name: testHdiUsbRequestTestRequestWait003
144 * @tc.desc: Waits for the operation result of the isochronous transfer request in <b>RequestQueue</b>.
145 * ({255, 1}, waitData, bufferData, 1000).
146 */
HWTEST_F(UsbdRequestTestAdditional, testHdiUsbRequestTestRequestWait003, TestSize.Level2)147 HWTEST_F(UsbdRequestTestAdditional, testHdiUsbRequestTestRequestWait003, TestSize.Level2)
148 {
149 struct UsbDev dev = dev_;
150 uint8_t pointId = POINTID_DIR_IN;
151 uint8_t interfaceId = INTERFACEID_OK;
152 auto ret = g_usbInterface->ClaimInterface(dev, interfaceId, 1);
153 ASSERT_EQ(0, ret);
154 struct UsbPipe pipe = {interfaceId, pointId};
155 std::vector<uint8_t> clientData = {'q', 'u', 'e', 'u', 'e', 'r', 'e', 'a', 'd'};
156 std::vector<uint8_t> bufferData(MAX_BUFFER_LENGTH);
157 ret = g_usbInterface->RequestQueue(dev, pipe, clientData, bufferData);
158 ASSERT_EQ(0, ret);
159 std::vector<uint8_t> waitData(10);
160 dev.busNum = 255;
161 dev.devAddr = 1;
162 ret = g_usbInterface->RequestWait(dev, waitData, bufferData, 1000);
163 ASSERT_NE(0, ret);
164 }
165
166 /**
167 * @tc.number: SUB_USB_HostManager_HDI_CompatibilityRequestAddTest_0400
168 * @tc.name: testHdiUsbRequestTestRequestQueue001
169 * @tc.desc: Sends or receives requests for isochronous transfer on a specified endpoint.
170 * clientData = {'q', 'u', 'e', 'u', 'e', 'r', 'e', 'a', 'd', ','}.
171 */
HWTEST_F(UsbdRequestTestAdditional, testHdiUsbRequestTestRequestQueue001, TestSize.Level1)172 HWTEST_F(UsbdRequestTestAdditional, testHdiUsbRequestTestRequestQueue001, TestSize.Level1)
173 {
174 struct UsbDev dev = dev_;
175 uint8_t interfaceId = INTERFACEID_OK;
176 uint8_t pointId = POINTID_DIR_IN;
177 auto ret = g_usbInterface->ClaimInterface(dev, interfaceId, 1);
178 ASSERT_EQ(0, ret);
179 struct UsbPipe pipe = {interfaceId, pointId};
180 std::vector<uint8_t> clientData = {'q', 'u', 'e', 'u', 'e', 'r', 'e', 'a', 'd', ','};
181 std::vector<uint8_t> bufferData(MAX_BUFFER_LENGTH);
182 ret = g_usbInterface->RequestQueue(dev, pipe, clientData, bufferData);
183 ASSERT_EQ(0, ret);
184 }
185
186 /**
187 * @tc.number: SUB_USB_HostManager_HDI_CompatibilityRequestAddTest_0500
188 * @tc.name: testHdiUsbRequestTestRequestQueue002
189 * @tc.desc: Sends or receives requests for isochronous transfer on a specified endpoint.
190 * clientData = {'q', 'u', 'e', 'u', 'e', 'r', 'e', 'a', 'd', '!'}.
191 */
HWTEST_F(UsbdRequestTestAdditional, testHdiUsbRequestTestRequestQueue002, TestSize.Level1)192 HWTEST_F(UsbdRequestTestAdditional, testHdiUsbRequestTestRequestQueue002, TestSize.Level1)
193 {
194 struct UsbDev dev = dev_;
195 uint8_t interfaceId = INTERFACEID_OK;
196 uint8_t pointId = POINTID_DIR_IN;
197 auto ret = g_usbInterface->ClaimInterface(dev, interfaceId, 1);
198 ASSERT_EQ(0, ret);
199 struct UsbPipe pipe = {interfaceId, pointId};
200 std::vector<uint8_t> clientData = {'q', 'u', 'e', 'u', 'e', 'r', 'e', 'a', 'd', '!'};
201 std::vector<uint8_t> bufferData(MAX_BUFFER_LENGTH);
202 ret = g_usbInterface->RequestQueue(dev, pipe, clientData, bufferData);
203 ASSERT_EQ(0, ret);
204 }
205
206 /**
207 * @tc.number: SUB_USB_HostManager_HDI_CompatibilityRequestAddTest_0600
208 * @tc.name: testHdiUsbRequestTestRequestQueue003
209 * @tc.desc: Sends or receives requests for isochronous transfer on a specified endpoint.
210 * clientData = {'q', 'u', 'e', 'u', 'e', 'r', 'e', 'a', 'd', '~'}.
211 */
HWTEST_F(UsbdRequestTestAdditional, testHdiUsbRequestTestRequestQueue003, TestSize.Level1)212 HWTEST_F(UsbdRequestTestAdditional, testHdiUsbRequestTestRequestQueue003, TestSize.Level1)
213 {
214 struct UsbDev dev = dev_;
215 uint8_t interfaceId = INTERFACEID_OK;
216 uint8_t pointId = POINTID_DIR_IN;
217 auto ret = g_usbInterface->ClaimInterface(dev, interfaceId, 1);
218 ASSERT_EQ(0, ret);
219 struct UsbPipe pipe = {interfaceId, pointId};
220 std::vector<uint8_t> clientData = {'q', 'u', 'e', 'u', 'e', 'r', 'e', 'a', 'd', '~'};
221 std::vector<uint8_t> bufferData(MAX_BUFFER_LENGTH);
222 ret = g_usbInterface->RequestQueue(dev, pipe, clientData, bufferData);
223 ASSERT_EQ(0, ret);
224 }
225
226 /**
227 * @tc.number: SUB_USB_HostManager_HDI_CompatibilityRequestAddTest_0700
228 * @tc.name: testHdiUsbRequestTestRequestQueue004
229 * @tc.desc: Sends or receives requests for isochronous transfer on a specified endpoint.
230 * dev = {1, 255}.
231 */
HWTEST_F(UsbdRequestTestAdditional, testHdiUsbRequestTestRequestQueue004, TestSize.Level2)232 HWTEST_F(UsbdRequestTestAdditional, testHdiUsbRequestTestRequestQueue004, TestSize.Level2)
233 {
234 struct UsbDev dev = dev_;
235 uint8_t interfaceId = INTERFACEID_OK;
236 uint8_t pointId = POINTID_DIR_IN;
237 auto ret = g_usbInterface->ClaimInterface(dev, interfaceId, 1);
238 ASSERT_EQ(0, ret);
239 struct UsbPipe pipe = {interfaceId, pointId};
240 std::vector<uint8_t> clientData = {'q', 'u', 'e', 'u', 'e', 'r', 'e', 'a', 'd'};
241 std::vector<uint8_t> bufferData(MAX_BUFFER_LENGTH);
242 dev.busNum = 1;
243 dev.devAddr = 255;
244 ret = g_usbInterface->RequestQueue(dev, pipe, clientData, bufferData);
245 ASSERT_NE(0, ret);
246 }
247
248 /**
249 * @tc.number: SUB_USB_HostManager_HDI_CompatibilityRequestAddTest_0800
250 * @tc.name: testHdiUsbRequestTestRequestQueue005
251 * @tc.desc: Sends or receives requests for isochronous transfer on a specified endpoint.
252 * dev = {255, 1}.
253 */
HWTEST_F(UsbdRequestTestAdditional, testHdiUsbRequestTestRequestQueue005, TestSize.Level2)254 HWTEST_F(UsbdRequestTestAdditional, testHdiUsbRequestTestRequestQueue005, TestSize.Level2)
255 {
256 struct UsbDev dev = dev_;
257 uint8_t interfaceId = INTERFACEID_OK;
258 uint8_t pointId = POINTID_DIR_IN;
259 auto ret = g_usbInterface->ClaimInterface(dev, interfaceId, 1);
260 ASSERT_EQ(0, ret);
261 struct UsbPipe pipe = {interfaceId, pointId};
262 std::vector<uint8_t> clientData = {'q', 'u', 'e', 'u', 'e', 'r', 'e', 'a', 'd'};
263 std::vector<uint8_t> bufferData(MAX_BUFFER_LENGTH);
264 dev.busNum = 255;
265 dev.devAddr = 1;
266 ret = g_usbInterface->RequestQueue(dev, pipe, clientData, bufferData);
267 ASSERT_NE(0, ret);
268 }
269
270 /**
271 * @tc.number: SUB_USB_HostManager_HDI_CompatibilityRequestAddTest_0900
272 * @tc.name: testHdiUsbRequestTestRequestCancel001
273 * @tc.desc: Cancels the data transfer requests to be processed.
274 * pipe = {1, 255}.
275 */
HWTEST_F(UsbdRequestTestAdditional, testHdiUsbRequestTestRequestCancel001, TestSize.Level1)276 HWTEST_F(UsbdRequestTestAdditional, testHdiUsbRequestTestRequestCancel001, TestSize.Level1)
277 {
278 struct UsbDev dev = dev_;
279 uint8_t pointId = POINTID_DIR_OUT;
280 uint8_t interfaceId = INTERFACEID_OK;
281 auto ret = g_usbInterface->ClaimInterface(dev, interfaceId, 1);
282 ASSERT_EQ(0, ret);
283 struct UsbPipe pipe = {interfaceId, pointId};
284 std::vector<uint8_t> clientData = {'q', 'u', 'e', 'u', 'e', 'r', 'e', 'a', 'd'};
285 std::vector<uint8_t> bufferData(MAX_BUFFER_LENGTH);
286 ret = g_usbInterface->RequestQueue(dev, pipe, clientData, bufferData);
287 ASSERT_EQ(0, ret);
288 pipe.intfId = 1;
289 pipe.endpointId = 255;
290 ret = g_usbInterface->RequestCancel(dev, pipe);
291 ASSERT_EQ(0, ret);
292 pipe = {interfaceId, pointId};
293 ret = g_usbInterface->RequestCancel(dev, pipe);
294 ASSERT_EQ(0, ret);
295 }
296
297 /**
298 * @tc.number: SUB_USB_HostManager_HDI_CompatibilityRequestAddTest_1000
299 * @tc.name: testHdiUsbRequestTestRequestCancel002
300 * @tc.desc: Cancels the data transfer requests to be processed.
301 * pipe = {255, 1}.
302 */
HWTEST_F(UsbdRequestTestAdditional, testHdiUsbRequestTestRequestCancel002, TestSize.Level1)303 HWTEST_F(UsbdRequestTestAdditional, testHdiUsbRequestTestRequestCancel002, TestSize.Level1)
304 {
305 struct UsbDev dev = dev_;
306 uint8_t pointId = POINTID_DIR_OUT;
307 uint8_t interfaceId = INTERFACEID_OK;
308 auto ret = g_usbInterface->ClaimInterface(dev, interfaceId, 1);
309 ASSERT_EQ(0, ret);
310 struct UsbPipe pipe = {interfaceId, pointId};
311 std::vector<uint8_t> clientData = {'q', 'u', 'e', 'u', 'e', 'r', 'e', 'a', 'd'};
312 std::vector<uint8_t> bufferData(MAX_BUFFER_LENGTH);
313 ret = g_usbInterface->RequestQueue(dev, pipe, clientData, bufferData);
314 ASSERT_EQ(0, ret);
315 pipe.intfId = 255;
316 pipe.endpointId = 1;
317 ret = g_usbInterface->RequestCancel(dev, pipe);
318 ASSERT_EQ(0, ret);
319 pipe = {interfaceId, pointId};
320 ret = g_usbInterface->RequestCancel(dev, pipe);
321 ASSERT_EQ(0, ret);
322 }
323
324 /**
325 * @tc.number: SUB_USB_HostManager_HDI_CompatibilityRequestAddTest_1100
326 * @tc.name: testHdiUsbRequestTestRequestCancel003
327 * @tc.desc: Cancels the data transfer requests to be processed.
328 * dev = {255, 1}.
329 */
HWTEST_F(UsbdRequestTestAdditional, testHdiUsbRequestTestRequestCancel003, TestSize.Level2)330 HWTEST_F(UsbdRequestTestAdditional, testHdiUsbRequestTestRequestCancel003, TestSize.Level2)
331 {
332 struct UsbDev dev = dev_;
333 uint8_t pointId = POINTID_DIR_OUT;
334 uint8_t interfaceId = INTERFACEID_OK;
335 auto ret = g_usbInterface->ClaimInterface(dev, interfaceId, 1);
336 ASSERT_EQ(0, ret);
337 struct UsbPipe pipe = {interfaceId, pointId};
338 std::vector<uint8_t> clientData = {'q', 'u', 'e', 'u', 'e', 'r', 'e', 'a', 'd'};
339 std::vector<uint8_t> bufferData(MAX_BUFFER_LENGTH);
340 ret = g_usbInterface->RequestQueue(dev, pipe, clientData, bufferData);
341 ASSERT_EQ(0, ret);
342 dev.busNum = 255;
343 dev.devAddr = 1;
344 ret = g_usbInterface->RequestCancel(dev, pipe);
345 ASSERT_NE(0, ret);
346 dev = dev_;
347 ret = g_usbInterface->RequestCancel(dev, pipe);
348 ASSERT_EQ(0, ret);
349 }
350
351 /**
352 * @tc.number: SUB_USB_HostManager_HDI_CompatibilityRequestAddTest_1200
353 * @tc.name: testHdiUsbRequestTestRequestCancel004
354 * @tc.desc: Cancels the data transfer requests to be processed.
355 * dev = {1, 255}.
356 */
HWTEST_F(UsbdRequestTestAdditional, testHdiUsbRequestTestRequestCancel004, TestSize.Level2)357 HWTEST_F(UsbdRequestTestAdditional, testHdiUsbRequestTestRequestCancel004, TestSize.Level2)
358 {
359 struct UsbDev dev = dev_;
360 uint8_t pointId = POINTID_DIR_OUT;
361 uint8_t interfaceId = INTERFACEID_OK;
362 auto ret = g_usbInterface->ClaimInterface(dev, interfaceId, 1);
363 ASSERT_EQ(0, ret);
364 struct UsbPipe pipe = {interfaceId, pointId};
365 std::vector<uint8_t> clientData = {'q', 'u', 'e', 'u', 'e', 'r', 'e', 'a', 'd'};
366 std::vector<uint8_t> bufferData(MAX_BUFFER_LENGTH);
367 ret = g_usbInterface->RequestQueue(dev, pipe, clientData, bufferData);
368 ASSERT_EQ(0, ret);
369 dev.busNum = 1;
370 dev.devAddr = 255;
371 ret = g_usbInterface->RequestCancel(dev, pipe);
372 ASSERT_NE(0, ret);
373 dev = dev_;
374 ret = g_usbInterface->RequestCancel(dev, pipe);
375 ASSERT_EQ(0, ret);
376 }
377
378 /**
379 * @tc.number: SUB_USB_HostManager_HDI_CompatibilityRequestAddTest_1300
380 * @tc.name: testHdiUsbRequestTestRequestCancel005
381 * @tc.desc: Cancels the data transfer requests to be processed.
382 * dev = {1, 255}. pipe = {1, 255}.
383 */
HWTEST_F(UsbdRequestTestAdditional, testHdiUsbRequestTestRequestCancel005, TestSize.Level2)384 HWTEST_F(UsbdRequestTestAdditional, testHdiUsbRequestTestRequestCancel005, TestSize.Level2)
385 {
386 struct UsbDev dev = dev_;
387 uint8_t pointId = POINTID_DIR_OUT;
388 uint8_t interfaceId = INTERFACEID_OK;
389 auto ret = g_usbInterface->ClaimInterface(dev, interfaceId, 1);
390 ASSERT_EQ(0, ret);
391 struct UsbPipe pipe = {interfaceId, pointId};
392 std::vector<uint8_t> clientData = {'q', 'u', 'e', 'u', 'e', 'r', 'e', 'a', 'd'};
393 std::vector<uint8_t> bufferData(MAX_BUFFER_LENGTH);
394 ret = g_usbInterface->RequestQueue(dev, pipe, clientData, bufferData);
395 ASSERT_EQ(0, ret);
396 dev.busNum = 1;
397 dev.devAddr = 255;
398 pipe.intfId = 1;
399 pipe.endpointId = 255;
400 ret = g_usbInterface->RequestCancel(dev, pipe);
401 ASSERT_NE(0, ret);
402 dev = dev_;
403 pipe = {interfaceId, pointId};
404 ret = g_usbInterface->RequestCancel(dev, pipe);
405 ASSERT_EQ(0, ret);
406 }
407
408 /**
409 * @tc.number: SUB_USB_HostManager_HDI_CompatibilityRequestAddTest_1400
410 * @tc.name: testHdiUsbRequestTestRequestCancel006
411 * @tc.desc: Cancels the data transfer requests to be processed.
412 * dev = {255, 1}. pipe = {255, 1}.
413 */
HWTEST_F(UsbdRequestTestAdditional, testHdiUsbRequestTestRequestCancel006, TestSize.Level2)414 HWTEST_F(UsbdRequestTestAdditional, testHdiUsbRequestTestRequestCancel006, TestSize.Level2)
415 {
416 struct UsbDev dev = dev_;
417 uint8_t pointId = POINTID_DIR_OUT;
418 uint8_t interfaceId = INTERFACEID_OK;
419 auto ret = g_usbInterface->ClaimInterface(dev, interfaceId, 1);
420 ASSERT_EQ(0, ret);
421 struct UsbPipe pipe = {interfaceId, pointId};
422 std::vector<uint8_t> clientData = {'q', 'u', 'e', 'u', 'e', 'r', 'e', 'a', 'd'};
423 std::vector<uint8_t> bufferData(MAX_BUFFER_LENGTH);
424 ret = g_usbInterface->RequestQueue(dev, pipe, clientData, bufferData);
425 ASSERT_EQ(0, ret);
426 dev.busNum = 255;
427 dev.devAddr = 1;
428 pipe.intfId = 255;
429 pipe.endpointId = 1;
430 ret = g_usbInterface->RequestCancel(dev, pipe);
431 ASSERT_NE(0, ret);
432 dev = dev_;
433 pipe = {interfaceId, pointId};
434 ret = g_usbInterface->RequestCancel(dev, pipe);
435 ASSERT_EQ(0, ret);
436 }
437
438 /**
439 * @tc.number: SUB_USB_HostManager_HDI_CompatibilityRequestAddTest_1500
440 * @tc.name: testHdiUsbRequestTestRequestCancel007
441 * @tc.desc: Cancels the data transfer requests to be processed.
442 * dev = {255, 255}. pipe = {255, 255}.
443 */
HWTEST_F(UsbdRequestTestAdditional, testHdiUsbRequestTestRequestCancel007, TestSize.Level2)444 HWTEST_F(UsbdRequestTestAdditional, testHdiUsbRequestTestRequestCancel007, TestSize.Level2)
445 {
446 struct UsbDev dev = dev_;
447 uint8_t pointId = POINTID_DIR_OUT;
448 uint8_t interfaceId = INTERFACEID_OK;
449 auto ret = g_usbInterface->ClaimInterface(dev, interfaceId, 1);
450 ASSERT_EQ(0, ret);
451 struct UsbPipe pipe = {interfaceId, pointId};
452 std::vector<uint8_t> clientData = {'q', 'u', 'e', 'u', 'e', 'r', 'e', 'a', 'd'};
453 std::vector<uint8_t> bufferData(MAX_BUFFER_LENGTH);
454 ret = g_usbInterface->RequestQueue(dev, pipe, clientData, bufferData);
455 ASSERT_EQ(0, ret);
456 dev.busNum = 255;
457 dev.devAddr = 255;
458 pipe.intfId = 255;
459 pipe.endpointId = 255;
460 ret = g_usbInterface->RequestCancel(dev, pipe);
461 ASSERT_NE(0, ret);
462 dev = dev_;
463 pipe = {interfaceId, pointId};
464 ret = g_usbInterface->RequestCancel(dev, pipe);
465 ASSERT_EQ(0, ret);
466 }
467
468 /**
469 * @tc.number: SUB_USB_HostManager_HDI_CompatibilityRequestAddTest_1600
470 * @tc.name: testHdiUsbRequestTestBulkCancel001
471 * @tc.desc: Cancels the isochronous bulk transfer. dev ={1, 255}.
472 */
HWTEST_F(UsbdRequestTestAdditional, testHdiUsbRequestTestBulkCancel001, TestSize.Level2)473 HWTEST_F(UsbdRequestTestAdditional, testHdiUsbRequestTestBulkCancel001, TestSize.Level2)
474 {
475 struct UsbDev dev = dev_;
476 uint8_t interfaceId = INTERFACEID_OK;
477 uint8_t pointId = POINTID_DIR_IN;
478 struct UsbPipe pipe = {interfaceId, pointId};
479 sptr<UsbdBulkCallbackTest> usbdBulkCallback = new UsbdBulkCallbackTest();
480 auto ret = g_usbInterface->RegBulkCallback(dev, pipe, usbdBulkCallback);
481 ASSERT_EQ(ret, 0);
482 dev = {1, 255};
483 ret = g_usbInterface->BulkCancel(dev, pipe);
484 ASSERT_NE(0, ret);
485 dev = dev_;
486 ret = g_usbInterface->UnRegBulkCallback(dev, pipe);
487 ASSERT_EQ(ret, 0);
488 }
489
490 /**
491 * @tc.number: SUB_USB_HostManager_HDI_CompatibilityRequestAddTest_1700
492 * @tc.name: testHdiUsbRequestTestBulkCancel002
493 * @tc.desc: Cancels the isochronous bulk transfer. dev ={255, 1}.
494 */
HWTEST_F(UsbdRequestTestAdditional, testHdiUsbRequestTestBulkCancel002, TestSize.Level2)495 HWTEST_F(UsbdRequestTestAdditional, testHdiUsbRequestTestBulkCancel002, TestSize.Level2)
496 {
497 struct UsbDev dev = dev_;
498 uint8_t interfaceId = INTERFACEID_OK;
499 uint8_t pointId = POINTID_DIR_IN;
500 struct UsbPipe pipe = {interfaceId, pointId};
501 sptr<UsbdBulkCallbackTest> usbdBulkCallback = new UsbdBulkCallbackTest();
502 auto ret = g_usbInterface->RegBulkCallback(dev, pipe, usbdBulkCallback);
503 ASSERT_EQ(ret, 0);
504 dev = {255, 1};
505 ret = g_usbInterface->BulkCancel(dev, pipe);
506 ASSERT_NE(0, ret);
507 dev = dev_;
508 ret = g_usbInterface->UnRegBulkCallback(dev, pipe);
509 ASSERT_EQ(ret, 0);
510 }
511
512 /**
513 * @tc.number: SUB_USB_HostManager_HDI_CompatibilityRequestAddTest_1800
514 * @tc.name: testHdiUsbRequestTestBulkCancel003
515 * @tc.desc: Cancels the isochronous bulk transfer. dev ={255, 100}.
516 */
HWTEST_F(UsbdRequestTestAdditional, testHdiUsbRequestTestBulkCancel003, TestSize.Level2)517 HWTEST_F(UsbdRequestTestAdditional, testHdiUsbRequestTestBulkCancel003, TestSize.Level2)
518 {
519 struct UsbDev dev = dev_;
520 uint8_t interfaceId = INTERFACEID_OK;
521 uint8_t pointId = POINTID_DIR_IN;
522 struct UsbPipe pipe = {interfaceId, pointId};
523 sptr<UsbdBulkCallbackTest> usbdBulkCallback = new UsbdBulkCallbackTest();
524 auto ret = g_usbInterface->RegBulkCallback(dev, pipe, usbdBulkCallback);
525 ASSERT_EQ(ret, 0);
526 dev = {255, 100};
527 ret = g_usbInterface->BulkCancel(dev, pipe);
528 ASSERT_NE(0, ret);
529 dev = dev_;
530 ret = g_usbInterface->UnRegBulkCallback(dev, pipe);
531 ASSERT_EQ(ret, 0);
532 }
533
534 /**
535 * @tc.number: SUB_USB_HostManager_HDI_CompatibilityRequestAddTest_1900
536 * @tc.name: testHdiUsbRequestTestBulkCancel004
537 * @tc.desc: Cancels the isochronous bulk transfer. dev ={100, 255}.
538 */
HWTEST_F(UsbdRequestTestAdditional, testHdiUsbRequestTestBulkCancel004, TestSize.Level2)539 HWTEST_F(UsbdRequestTestAdditional, testHdiUsbRequestTestBulkCancel004, TestSize.Level2)
540 {
541 struct UsbDev dev = dev_;
542 uint8_t interfaceId = INTERFACEID_OK;
543 uint8_t pointId = POINTID_DIR_IN;
544 struct UsbPipe pipe = {interfaceId, pointId};
545 sptr<UsbdBulkCallbackTest> usbdBulkCallback = new UsbdBulkCallbackTest();
546 auto ret = g_usbInterface->RegBulkCallback(dev, pipe, usbdBulkCallback);
547 ASSERT_EQ(ret, 0);
548 dev = {100, 255};
549 ret = g_usbInterface->BulkCancel(dev, pipe);
550 ASSERT_NE(0, ret);
551 dev = dev_;
552 ret = g_usbInterface->UnRegBulkCallback(dev, pipe);
553 ASSERT_EQ(ret, 0);
554 }
555 } // namespace
556