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