1094332d3Sopenharmony_ci/*
2094332d3Sopenharmony_ci * Copyright (c) 2021-2023 Huawei Device Co., Ltd.
3094332d3Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4094332d3Sopenharmony_ci * you may not use this file except in compliance with the License.
5094332d3Sopenharmony_ci * You may obtain a copy of the License at
6094332d3Sopenharmony_ci *
7094332d3Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8094332d3Sopenharmony_ci *
9094332d3Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10094332d3Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11094332d3Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12094332d3Sopenharmony_ci * See the License for the specific language governing permissions and
13094332d3Sopenharmony_ci * limitations under the License.
14094332d3Sopenharmony_ci */
15094332d3Sopenharmony_ci
16094332d3Sopenharmony_ci#include "usbd_device_test.h"
17094332d3Sopenharmony_ci
18094332d3Sopenharmony_ci#include <iostream>
19094332d3Sopenharmony_ci#include <vector>
20094332d3Sopenharmony_ci
21094332d3Sopenharmony_ci#include "UsbSubscriberTest.h"
22094332d3Sopenharmony_ci#include "hdf_log.h"
23094332d3Sopenharmony_ci#include "v1_1/iusb_interface.h"
24094332d3Sopenharmony_ci#include "v1_1/usb_types.h"
25094332d3Sopenharmony_ci
26094332d3Sopenharmony_ciusing namespace testing::ext;
27094332d3Sopenharmony_ciusing namespace OHOS;
28094332d3Sopenharmony_ciusing namespace OHOS::USB;
29094332d3Sopenharmony_ciusing namespace std;
30094332d3Sopenharmony_ciusing namespace OHOS::HDI::Usb::V1_0;
31094332d3Sopenharmony_ciusing namespace OHOS::HDI::Usb::V1_1;
32094332d3Sopenharmony_ci
33094332d3Sopenharmony_ciconst int SLEEP_TIME = 3;
34094332d3Sopenharmony_ciconst uint8_t BUS_NUM_INVALID = 255;
35094332d3Sopenharmony_ciconst uint8_t DEV_ADDR_INVALID = 255;
36094332d3Sopenharmony_ciUsbDev UsbdDeviceTest::dev_ = {0, 0};
37094332d3Sopenharmony_cisptr<UsbSubscriberTest> UsbdDeviceTest::subscriber_ = nullptr;
38094332d3Sopenharmony_ci
39094332d3Sopenharmony_cinamespace {
40094332d3Sopenharmony_cisptr<OHOS::HDI::Usb::V1_1::IUsbInterface> g_usbInterface = nullptr;
41094332d3Sopenharmony_ci
42094332d3Sopenharmony_ciint32_t SwitchErrCode(int32_t ret)
43094332d3Sopenharmony_ci{
44094332d3Sopenharmony_ci    return ret == HDF_ERR_NOT_SUPPORT ? HDF_SUCCESS : ret;
45094332d3Sopenharmony_ci}
46094332d3Sopenharmony_ci
47094332d3Sopenharmony_civoid UsbdDeviceTest::SetUpTestCase(void)
48094332d3Sopenharmony_ci{
49094332d3Sopenharmony_ci    g_usbInterface = OHOS::HDI::Usb::V1_1::IUsbInterface::Get();
50094332d3Sopenharmony_ci    if (g_usbInterface == nullptr) {
51094332d3Sopenharmony_ci        HDF_LOGE("%{public}s:IUsbInterface::Get() failed.", __func__);
52094332d3Sopenharmony_ci        exit(0);
53094332d3Sopenharmony_ci    }
54094332d3Sopenharmony_ci    auto ret = g_usbInterface->SetPortRole(1, 1, 1);
55094332d3Sopenharmony_ci    sleep(SLEEP_TIME);
56094332d3Sopenharmony_ci    HDF_LOGI("UsbdDeviceTest::[Device] %{public}d SetPortRole=%{public}d", __LINE__, ret);
57094332d3Sopenharmony_ci    ret = SwitchErrCode(ret);
58094332d3Sopenharmony_ci    ASSERT_EQ(0, ret);
59094332d3Sopenharmony_ci    if (ret != 0) {
60094332d3Sopenharmony_ci        exit(0);
61094332d3Sopenharmony_ci    }
62094332d3Sopenharmony_ci
63094332d3Sopenharmony_ci    subscriber_ = new UsbSubscriberTest();
64094332d3Sopenharmony_ci    if (g_usbInterface->BindUsbdSubscriber(subscriber_) != HDF_SUCCESS) {
65094332d3Sopenharmony_ci        HDF_LOGE("%{public}s: bind usbd subscriber_ failed", __func__);
66094332d3Sopenharmony_ci        exit(0);
67094332d3Sopenharmony_ci    }
68094332d3Sopenharmony_ci    dev_ = {subscriber_->busNum_, subscriber_->devAddr_};
69094332d3Sopenharmony_ci
70094332d3Sopenharmony_ci    std::cout << "please connect device, press enter to continue" << std::endl;
71094332d3Sopenharmony_ci    int c;
72094332d3Sopenharmony_ci    while ((c = getchar()) != '\n' && c != EOF) {}
73094332d3Sopenharmony_ci}
74094332d3Sopenharmony_ci
75094332d3Sopenharmony_civoid UsbdDeviceTest::TearDownTestCase(void)
76094332d3Sopenharmony_ci{
77094332d3Sopenharmony_ci    g_usbInterface->UnbindUsbdSubscriber(subscriber_);
78094332d3Sopenharmony_ci}
79094332d3Sopenharmony_ci
80094332d3Sopenharmony_civoid UsbdDeviceTest::SetUp(void) {}
81094332d3Sopenharmony_ci
82094332d3Sopenharmony_civoid UsbdDeviceTest::TearDown(void) {}
83094332d3Sopenharmony_ci
84094332d3Sopenharmony_ci/**
85094332d3Sopenharmony_ci * @tc.name: UsbdDevice001
86094332d3Sopenharmony_ci * @tc.desc: Test functions to OpenDevice
87094332d3Sopenharmony_ci * @tc.desc: int32_t OpenDevice(const UsbDev &dev);
88094332d3Sopenharmony_ci * @tc.desc: 正向测试:参数正确
89094332d3Sopenharmony_ci * @tc.type: FUNC
90094332d3Sopenharmony_ci */
91094332d3Sopenharmony_ciHWTEST_F(UsbdDeviceTest, UsbdOpenDevice001, TestSize.Level1)
92094332d3Sopenharmony_ci{
93094332d3Sopenharmony_ci    struct UsbDev dev = dev_;
94094332d3Sopenharmony_ci    auto ret = g_usbInterface->OpenDevice(dev);
95094332d3Sopenharmony_ci    HDF_LOGI("UsbdDeviceTest:: Line:%{public}d OpenDevice result =%{public}d", __LINE__, ret);
96094332d3Sopenharmony_ci    EXPECT_EQ(0, ret);
97094332d3Sopenharmony_ci}
98094332d3Sopenharmony_ci
99094332d3Sopenharmony_ci/**
100094332d3Sopenharmony_ci * @tc.name: UsbdDevice002
101094332d3Sopenharmony_ci * @tc.desc: Test functions to OpenDevice
102094332d3Sopenharmony_ci * @tc.desc: int32_t OpenDevice(const UsbDev &dev);
103094332d3Sopenharmony_ci * @tc.desc:
104094332d3Sopenharmony_ci * @tc.type: FUNC
105094332d3Sopenharmony_ci */
106094332d3Sopenharmony_ciHWTEST_F(UsbdDeviceTest, UsbdOpenDevice002, TestSize.Level1)
107094332d3Sopenharmony_ci{
108094332d3Sopenharmony_ci    struct UsbDev dev = {BUS_NUM_INVALID, dev_.devAddr};
109094332d3Sopenharmony_ci    auto ret = g_usbInterface->OpenDevice(dev);
110094332d3Sopenharmony_ci    HDF_LOGI("UsbdDeviceTest:: Line:%{public}d OpenDevice result=%{public}d", __LINE__, ret);
111094332d3Sopenharmony_ci    EXPECT_NE(ret, 0);
112094332d3Sopenharmony_ci}
113094332d3Sopenharmony_ci
114094332d3Sopenharmony_ci/**
115094332d3Sopenharmony_ci * @tc.name: UsbdDevice003
116094332d3Sopenharmony_ci * @tc.desc: Test functions to OpenDevice
117094332d3Sopenharmony_ci * @tc.desc: int32_t OpenDevice(const UsbDev &dev);
118094332d3Sopenharmony_ci * @tc.desc:
119094332d3Sopenharmony_ci * @tc.type: FUNC
120094332d3Sopenharmony_ci */
121094332d3Sopenharmony_ciHWTEST_F(UsbdDeviceTest, UsbdOpenDevice003, TestSize.Level1)
122094332d3Sopenharmony_ci{
123094332d3Sopenharmony_ci    struct UsbDev dev = {dev_.busNum, DEV_ADDR_INVALID};
124094332d3Sopenharmony_ci    auto ret = g_usbInterface->OpenDevice(dev);
125094332d3Sopenharmony_ci    HDF_LOGI("UsbdDeviceTest:: Line:%{public}d OpenDevice result=%{public}d", __LINE__, ret);
126094332d3Sopenharmony_ci    EXPECT_NE(ret, 0);
127094332d3Sopenharmony_ci}
128094332d3Sopenharmony_ci
129094332d3Sopenharmony_ci/**
130094332d3Sopenharmony_ci * @tc.name: UsbdDevice004
131094332d3Sopenharmony_ci * @tc.desc: Test functions to OpenDevice
132094332d3Sopenharmony_ci * @tc.desc: int32_t OpenDevice(const UsbDev &dev);
133094332d3Sopenharmony_ci * @tc.desc:
134094332d3Sopenharmony_ci * @tc.type: FUNC
135094332d3Sopenharmony_ci */
136094332d3Sopenharmony_ciHWTEST_F(UsbdDeviceTest, UsbdOpenDevice004, TestSize.Level1)
137094332d3Sopenharmony_ci{
138094332d3Sopenharmony_ci    struct UsbDev dev = {BUS_NUM_INVALID, DEV_ADDR_INVALID};
139094332d3Sopenharmony_ci    auto ret = g_usbInterface->OpenDevice(dev);
140094332d3Sopenharmony_ci    HDF_LOGI("UsbdDeviceTest:: Line:%{public}d OpenDevice result=%{public}d", __LINE__, ret);
141094332d3Sopenharmony_ci    EXPECT_NE(ret, 0);
142094332d3Sopenharmony_ci}
143094332d3Sopenharmony_ci
144094332d3Sopenharmony_ci/**********************************************************************************************************/
145094332d3Sopenharmony_ci
146094332d3Sopenharmony_ci/**
147094332d3Sopenharmony_ci * @tc.name: UsbdDevice011
148094332d3Sopenharmony_ci * @tc.desc: Test functions to CloseDevice
149094332d3Sopenharmony_ci * @tc.desc: int32_t CloseDevice(const UsbDev &dev);
150094332d3Sopenharmony_ci * @tc.desc: 正向测试:参数正确
151094332d3Sopenharmony_ci * @tc.type: FUNC
152094332d3Sopenharmony_ci */
153094332d3Sopenharmony_ciHWTEST_F(UsbdDeviceTest, UsbdCloseDevice001, TestSize.Level1)
154094332d3Sopenharmony_ci{
155094332d3Sopenharmony_ci    struct UsbDev dev = dev_;
156094332d3Sopenharmony_ci    auto ret = g_usbInterface->OpenDevice(dev);
157094332d3Sopenharmony_ci    HDF_LOGI("UsbdDeviceTest:: Line:%{public}d OpenDevice result=%{public}d", __LINE__, ret);
158094332d3Sopenharmony_ci    ASSERT_EQ(0, ret);
159094332d3Sopenharmony_ci    ret = g_usbInterface->CloseDevice(dev);
160094332d3Sopenharmony_ci    HDF_LOGI("UsbdDeviceTest:: Line:%{public}d Close result=%{public}d", __LINE__, ret);
161094332d3Sopenharmony_ci    EXPECT_EQ(0, ret);
162094332d3Sopenharmony_ci}
163094332d3Sopenharmony_ci
164094332d3Sopenharmony_ci/**
165094332d3Sopenharmony_ci * @tc.name: UsbdDevice012
166094332d3Sopenharmony_ci * @tc.desc: Test functions to CloseDevice
167094332d3Sopenharmony_ci * @tc.desc: int32_t CloseDevice(const UsbDev &dev);
168094332d3Sopenharmony_ci * @tc.desc:
169094332d3Sopenharmony_ci * @tc.type: FUNC
170094332d3Sopenharmony_ci */
171094332d3Sopenharmony_ciHWTEST_F(UsbdDeviceTest, UsbdCloseDevice002, TestSize.Level1)
172094332d3Sopenharmony_ci{
173094332d3Sopenharmony_ci    struct UsbDev dev = dev_;
174094332d3Sopenharmony_ci    auto ret = g_usbInterface->OpenDevice(dev);
175094332d3Sopenharmony_ci    HDF_LOGI("UsbdDeviceTest:: Line:%{public}d OpenDevice result=%{public}d", __LINE__, ret);
176094332d3Sopenharmony_ci    ASSERT_EQ(0, ret);
177094332d3Sopenharmony_ci    dev.busNum = BUS_NUM_INVALID;
178094332d3Sopenharmony_ci    ret = g_usbInterface->CloseDevice(dev);
179094332d3Sopenharmony_ci    HDF_LOGI("UsbdDeviceTest:: Line:%{public}d Close result=%{public}d", __LINE__, ret);
180094332d3Sopenharmony_ci    EXPECT_NE(ret, 0);
181094332d3Sopenharmony_ci    dev = dev_;
182094332d3Sopenharmony_ci    g_usbInterface->CloseDevice(dev);
183094332d3Sopenharmony_ci}
184094332d3Sopenharmony_ci
185094332d3Sopenharmony_ci/**
186094332d3Sopenharmony_ci * @tc.name: UsbdDevice013
187094332d3Sopenharmony_ci * @tc.desc: Test functions to CloseDevice
188094332d3Sopenharmony_ci * @tc.desc: int32_t CloseDevice(const UsbDev &dev);
189094332d3Sopenharmony_ci * @tc.desc:
190094332d3Sopenharmony_ci * @tc.type: FUNC
191094332d3Sopenharmony_ci */
192094332d3Sopenharmony_ciHWTEST_F(UsbdDeviceTest, UsbdCloseDevice003, TestSize.Level1)
193094332d3Sopenharmony_ci{
194094332d3Sopenharmony_ci    struct UsbDev dev = dev_;
195094332d3Sopenharmony_ci    auto ret = g_usbInterface->OpenDevice(dev);
196094332d3Sopenharmony_ci    HDF_LOGI("UsbdDeviceTest:: Line:%{public}d OpenDevice result=%{public}d", __LINE__, ret);
197094332d3Sopenharmony_ci    ASSERT_EQ(0, ret);
198094332d3Sopenharmony_ci    dev.devAddr = DEV_ADDR_INVALID;
199094332d3Sopenharmony_ci    ret = g_usbInterface->CloseDevice(dev);
200094332d3Sopenharmony_ci    HDF_LOGI("UsbdDeviceTest:: Line:%{public}d Close result=%{public}d", __LINE__, ret);
201094332d3Sopenharmony_ci    EXPECT_NE(ret, 0);
202094332d3Sopenharmony_ci    dev = dev_;
203094332d3Sopenharmony_ci    g_usbInterface->CloseDevice(dev);
204094332d3Sopenharmony_ci}
205094332d3Sopenharmony_ci
206094332d3Sopenharmony_ci/**
207094332d3Sopenharmony_ci * @tc.name: UsbdDevice014
208094332d3Sopenharmony_ci * @tc.desc: Test functions to CloseDevice
209094332d3Sopenharmony_ci * @tc.desc: int32_t CloseDevice(const UsbDev &dev);
210094332d3Sopenharmony_ci * @tc.desc:
211094332d3Sopenharmony_ci * @tc.type: FUNC
212094332d3Sopenharmony_ci */
213094332d3Sopenharmony_ciHWTEST_F(UsbdDeviceTest, UsbdCloseDevice004, TestSize.Level1)
214094332d3Sopenharmony_ci{
215094332d3Sopenharmony_ci    struct UsbDev dev = dev_;
216094332d3Sopenharmony_ci    auto ret = g_usbInterface->OpenDevice(dev);
217094332d3Sopenharmony_ci    HDF_LOGI("UsbdDeviceTest:: Line:%{public}d OpenDevice result=%{public}d", __LINE__, ret);
218094332d3Sopenharmony_ci    ASSERT_EQ(0, ret);
219094332d3Sopenharmony_ci    dev.busNum = BUS_NUM_INVALID;
220094332d3Sopenharmony_ci    dev.devAddr = DEV_ADDR_INVALID;
221094332d3Sopenharmony_ci    ret = g_usbInterface->CloseDevice(dev);
222094332d3Sopenharmony_ci    HDF_LOGI("UsbdDeviceTest:: Line:%{public}d Close result=%{public}d", __LINE__, ret);
223094332d3Sopenharmony_ci    EXPECT_NE(ret, 0);
224094332d3Sopenharmony_ci    dev = dev_;
225094332d3Sopenharmony_ci    g_usbInterface->CloseDevice(dev);
226094332d3Sopenharmony_ci}
227094332d3Sopenharmony_ci
228094332d3Sopenharmony_ci/**
229094332d3Sopenharmony_ci * @tc.name: UsbdResetDevice001
230094332d3Sopenharmony_ci * @tc.desc: Test functions to ResetDevice
231094332d3Sopenharmony_ci * @tc.desc: int32_t ResetDevice(const UsbDev &dev);
232094332d3Sopenharmony_ci * @tc.desc: 正向测试:参数正确
233094332d3Sopenharmony_ci * @tc.type: FUNC
234094332d3Sopenharmony_ci */
235094332d3Sopenharmony_ciHWTEST_F(UsbdDeviceTest, UsbdResetDevice001, TestSize.Level1)
236094332d3Sopenharmony_ci{
237094332d3Sopenharmony_ci    struct UsbDev dev = dev_;
238094332d3Sopenharmony_ci    auto ret = g_usbInterface->OpenDevice(dev);
239094332d3Sopenharmony_ci    HDF_LOGI("UsbdDeviceTest:: Line:%{public}d OpenDevice result=%{public}d", __LINE__, ret);
240094332d3Sopenharmony_ci    ASSERT_EQ(0, ret);
241094332d3Sopenharmony_ci    ret = g_usbInterface->ResetDevice(dev);
242094332d3Sopenharmony_ci    HDF_LOGI("UsbdDeviceTest:: Line:%{public}d ResetDevice result=%{public}d", __LINE__, ret);
243094332d3Sopenharmony_ci    EXPECT_EQ(0, ret);
244094332d3Sopenharmony_ci    ret = g_usbInterface->CloseDevice(dev);
245094332d3Sopenharmony_ci    HDF_LOGI("UsbdDeviceTest:: Line:%{public}d Close result=%{public}d", __LINE__, ret);
246094332d3Sopenharmony_ci    EXPECT_EQ(0, ret);
247094332d3Sopenharmony_ci}
248094332d3Sopenharmony_ci
249094332d3Sopenharmony_ci/**
250094332d3Sopenharmony_ci * @tc.name: UsbdResetDevice002
251094332d3Sopenharmony_ci * @tc.desc: Test functions to ResetDevice
252094332d3Sopenharmony_ci * @tc.desc: int32_t ResetDevice(const UsbDev &dev);
253094332d3Sopenharmony_ci * @tc.desc:
254094332d3Sopenharmony_ci * @tc.type: FUNC
255094332d3Sopenharmony_ci */
256094332d3Sopenharmony_ciHWTEST_F(UsbdDeviceTest, UsbdResetDevice002, TestSize.Level1)
257094332d3Sopenharmony_ci{
258094332d3Sopenharmony_ci    struct UsbDev dev = dev_;
259094332d3Sopenharmony_ci    auto ret = g_usbInterface->OpenDevice(dev);
260094332d3Sopenharmony_ci    HDF_LOGI("UsbdDeviceTest:: Line:%{public}d OpenDevice result=%{public}d", __LINE__, ret);
261094332d3Sopenharmony_ci    ASSERT_EQ(0, ret);
262094332d3Sopenharmony_ci    dev.busNum = BUS_NUM_INVALID;
263094332d3Sopenharmony_ci    ret = g_usbInterface->ResetDevice(dev);
264094332d3Sopenharmony_ci    HDF_LOGI("UsbdDeviceTest:: Line:%{public}d ResetDevice result=%{public}d", __LINE__, ret);
265094332d3Sopenharmony_ci    EXPECT_NE(0, ret);
266094332d3Sopenharmony_ci    ret = g_usbInterface->CloseDevice(dev);
267094332d3Sopenharmony_ci    HDF_LOGI("UsbdDeviceTest:: Line:%{public}d Close result=%{public}d", __LINE__, ret);
268094332d3Sopenharmony_ci    EXPECT_NE(ret, 0);
269094332d3Sopenharmony_ci    dev = dev_;
270094332d3Sopenharmony_ci    g_usbInterface->CloseDevice(dev);
271094332d3Sopenharmony_ci}
272094332d3Sopenharmony_ci
273094332d3Sopenharmony_ci/**
274094332d3Sopenharmony_ci * @tc.name: UsbdResetDevice003
275094332d3Sopenharmony_ci * @tc.desc: Test functions to ResetDevice
276094332d3Sopenharmony_ci * @tc.desc: int32_t ResetDevice(const UsbDev &dev);
277094332d3Sopenharmony_ci * @tc.desc:
278094332d3Sopenharmony_ci * @tc.type: FUNC
279094332d3Sopenharmony_ci */
280094332d3Sopenharmony_ciHWTEST_F(UsbdDeviceTest, UsbdResetDevice003, TestSize.Level1)
281094332d3Sopenharmony_ci{
282094332d3Sopenharmony_ci    struct UsbDev dev = dev_;
283094332d3Sopenharmony_ci    auto ret = g_usbInterface->OpenDevice(dev);
284094332d3Sopenharmony_ci    HDF_LOGI("UsbdDeviceTest:: Line:%{public}d OpenDevice result=%{public}d", __LINE__, ret);
285094332d3Sopenharmony_ci    ASSERT_EQ(0, ret);
286094332d3Sopenharmony_ci    dev.devAddr = DEV_ADDR_INVALID;
287094332d3Sopenharmony_ci    ret = g_usbInterface->ResetDevice(dev);
288094332d3Sopenharmony_ci    HDF_LOGI("UsbdDeviceTest:: Line:%{public}d ResetDevice result=%{public}d", __LINE__, ret);
289094332d3Sopenharmony_ci    EXPECT_NE(0, ret);
290094332d3Sopenharmony_ci    ret = g_usbInterface->CloseDevice(dev);
291094332d3Sopenharmony_ci    HDF_LOGI("UsbdDeviceTest:: Line:%{public}d Close result=%{public}d", __LINE__, ret);
292094332d3Sopenharmony_ci    EXPECT_NE(ret, 0);
293094332d3Sopenharmony_ci    dev = dev_;
294094332d3Sopenharmony_ci    g_usbInterface->CloseDevice(dev);
295094332d3Sopenharmony_ci}
296094332d3Sopenharmony_ci
297094332d3Sopenharmony_ci/**
298094332d3Sopenharmony_ci * @tc.name: UsbdResetDevice004
299094332d3Sopenharmony_ci * @tc.desc: Test functions to ResetDevice
300094332d3Sopenharmony_ci * @tc.desc: int32_t ResetDevice(const UsbDev &dev);
301094332d3Sopenharmony_ci * @tc.desc:
302094332d3Sopenharmony_ci * @tc.type: FUNC
303094332d3Sopenharmony_ci */
304094332d3Sopenharmony_ciHWTEST_F(UsbdDeviceTest, UsbdResetDevice004, TestSize.Level1)
305094332d3Sopenharmony_ci{
306094332d3Sopenharmony_ci    struct UsbDev dev = dev_;
307094332d3Sopenharmony_ci    auto ret = g_usbInterface->OpenDevice(dev);
308094332d3Sopenharmony_ci    HDF_LOGI("UsbdDeviceTest:: Line:%{public}d OpenDevice result=%{public}d", __LINE__, ret);
309094332d3Sopenharmony_ci    ASSERT_EQ(0, ret);
310094332d3Sopenharmony_ci    dev.busNum = BUS_NUM_INVALID;
311094332d3Sopenharmony_ci    dev.devAddr = DEV_ADDR_INVALID;
312094332d3Sopenharmony_ci    ret = g_usbInterface->ResetDevice(dev);
313094332d3Sopenharmony_ci    HDF_LOGI("UsbdDeviceTest:: Line:%{public}d ResetDevice result=%{public}d", __LINE__, ret);
314094332d3Sopenharmony_ci    EXPECT_NE(0, ret);
315094332d3Sopenharmony_ci    ret = g_usbInterface->CloseDevice(dev);
316094332d3Sopenharmony_ci    HDF_LOGI("UsbdDeviceTest:: Line:%{public}d Close result=%{public}d", __LINE__, ret);
317094332d3Sopenharmony_ci    EXPECT_NE(ret, 0);
318094332d3Sopenharmony_ci    dev = dev_;
319094332d3Sopenharmony_ci    g_usbInterface->CloseDevice(dev);
320094332d3Sopenharmony_ci}
321094332d3Sopenharmony_ci
322094332d3Sopenharmony_ci/**
323094332d3Sopenharmony_ci * @tc.number: SUB_USB_DeviceManager_HDI_CompatDeviceTest_0100
324094332d3Sopenharmony_ci * @tc.name: testHdiUsbDeviceTestOpenDevice001
325094332d3Sopenharmony_ci * @tc.desc: Opens a USB device to set up a connection. dev ={1, 255}.
326094332d3Sopenharmony_ci */
327094332d3Sopenharmony_ciHWTEST_F(UsbdDeviceTest, testHdiUsbDeviceTestOpenDevice001, Function | MediumTest | Level2)
328094332d3Sopenharmony_ci{
329094332d3Sopenharmony_ci    struct UsbDev dev = {1, 255};
330094332d3Sopenharmony_ci    auto ret = g_usbInterface->OpenDevice(dev);
331094332d3Sopenharmony_ci    EXPECT_NE(ret, 0);
332094332d3Sopenharmony_ci}
333094332d3Sopenharmony_ci
334094332d3Sopenharmony_ci/**
335094332d3Sopenharmony_ci * @tc.number: SUB_USB_DeviceManager_HDI_CompatDeviceTest_0200
336094332d3Sopenharmony_ci * @tc.name: testHdiUsbDeviceTestOpenDevice002
337094332d3Sopenharmony_ci * @tc.desc: Opens a USB device to set up a connection. dev ={255, 1}.
338094332d3Sopenharmony_ci */
339094332d3Sopenharmony_ciHWTEST_F(UsbdDeviceTest, testHdiUsbDeviceTestOpenDevice002, Function | MediumTest | Level2)
340094332d3Sopenharmony_ci{
341094332d3Sopenharmony_ci    struct UsbDev dev = {255, 1};
342094332d3Sopenharmony_ci    auto ret = g_usbInterface->OpenDevice(dev);
343094332d3Sopenharmony_ci    EXPECT_NE(ret, 0);
344094332d3Sopenharmony_ci}
345094332d3Sopenharmony_ci
346094332d3Sopenharmony_ci/**
347094332d3Sopenharmony_ci * @tc.number: SUB_USB_DeviceManager_HDI_CompatDeviceTest_0300
348094332d3Sopenharmony_ci * @tc.name: testHdiUsbDeviceTestOpenDevice003
349094332d3Sopenharmony_ci * @tc.desc: Opens a USB device to set up a connection. dev ={255, 100}.
350094332d3Sopenharmony_ci */
351094332d3Sopenharmony_ciHWTEST_F(UsbdDeviceTest, testHdiUsbDeviceTestOpenDevice003, Function | MediumTest | Level2)
352094332d3Sopenharmony_ci{
353094332d3Sopenharmony_ci    struct UsbDev dev = {255, 100};
354094332d3Sopenharmony_ci    auto ret = g_usbInterface->OpenDevice(dev);
355094332d3Sopenharmony_ci    EXPECT_NE(ret, 0);
356094332d3Sopenharmony_ci}
357094332d3Sopenharmony_ci
358094332d3Sopenharmony_ci/**
359094332d3Sopenharmony_ci * @tc.number: SUB_USB_DeviceManager_HDI_CompatDeviceTest_0400
360094332d3Sopenharmony_ci * @tc.name: testHdiUsbDeviceTestOpenDevice004
361094332d3Sopenharmony_ci * @tc.desc: Opens a USB device to set up a connection. dev ={100, 255}.
362094332d3Sopenharmony_ci */
363094332d3Sopenharmony_ciHWTEST_F(UsbdDeviceTest, testHdiUsbDeviceTestOpenDevice004, Function | MediumTest | Level2)
364094332d3Sopenharmony_ci{
365094332d3Sopenharmony_ci    struct UsbDev dev = {100, 255};
366094332d3Sopenharmony_ci    auto ret = g_usbInterface->OpenDevice(dev);
367094332d3Sopenharmony_ci    EXPECT_NE(ret, 0);
368094332d3Sopenharmony_ci}
369094332d3Sopenharmony_ci
370094332d3Sopenharmony_ci/**
371094332d3Sopenharmony_ci * @tc.number: SUB_USB_DeviceManager_HDI_CompatDeviceTest_0500
372094332d3Sopenharmony_ci * @tc.name: testHdiUsbDeviceTestCloseDevice001
373094332d3Sopenharmony_ci * @tc.desc: Closes a USB device to release all system resources related to the device. dev ={1, 255}.
374094332d3Sopenharmony_ci */
375094332d3Sopenharmony_ciHWTEST_F(UsbdDeviceTest, testHdiUsbDeviceTestCloseDevice001, Function | MediumTest | Level2)
376094332d3Sopenharmony_ci{
377094332d3Sopenharmony_ci    struct UsbDev dev = dev_;
378094332d3Sopenharmony_ci    auto ret = g_usbInterface->OpenDevice(dev);
379094332d3Sopenharmony_ci    ASSERT_EQ(0, ret);
380094332d3Sopenharmony_ci    dev = {1, 255};
381094332d3Sopenharmony_ci    ret = g_usbInterface->CloseDevice(dev);
382094332d3Sopenharmony_ci    EXPECT_NE(ret, 0);
383094332d3Sopenharmony_ci    dev = dev_;
384094332d3Sopenharmony_ci    ret = g_usbInterface->CloseDevice(dev);
385094332d3Sopenharmony_ci    EXPECT_EQ(ret, 0);
386094332d3Sopenharmony_ci}
387094332d3Sopenharmony_ci
388094332d3Sopenharmony_ci/**
389094332d3Sopenharmony_ci * @tc.number: SUB_USB_DeviceManager_HDI_CompatDeviceTest_0600
390094332d3Sopenharmony_ci * @tc.name: testHdiUsbDeviceTestCloseDevice002
391094332d3Sopenharmony_ci * @tc.desc: Closes a USB device to release all system resources related to the device. dev ={255, 1}.
392094332d3Sopenharmony_ci */
393094332d3Sopenharmony_ciHWTEST_F(UsbdDeviceTest, testHdiUsbDeviceTestCloseDevice002, Function | MediumTest | Level2)
394094332d3Sopenharmony_ci{
395094332d3Sopenharmony_ci    struct UsbDev dev = dev_;
396094332d3Sopenharmony_ci    auto ret = g_usbInterface->OpenDevice(dev);
397094332d3Sopenharmony_ci    ASSERT_EQ(0, ret);
398094332d3Sopenharmony_ci    dev = {255, 1};
399094332d3Sopenharmony_ci    ret = g_usbInterface->CloseDevice(dev);
400094332d3Sopenharmony_ci    EXPECT_NE(ret, 0);
401094332d3Sopenharmony_ci    dev = dev_;
402094332d3Sopenharmony_ci    ret = g_usbInterface->CloseDevice(dev);
403094332d3Sopenharmony_ci    EXPECT_EQ(ret, 0);
404094332d3Sopenharmony_ci}
405094332d3Sopenharmony_ci
406094332d3Sopenharmony_ci/**
407094332d3Sopenharmony_ci * @tc.number: SUB_USB_DeviceManager_HDI_CompatDeviceTest_0700
408094332d3Sopenharmony_ci * @tc.name: testHdiUsbDeviceTestCloseDevice003
409094332d3Sopenharmony_ci * @tc.desc: Closes a USB device to release all system resources related to the device. dev ={255, 100}.
410094332d3Sopenharmony_ci */
411094332d3Sopenharmony_ciHWTEST_F(UsbdDeviceTest, testHdiUsbDeviceTestCloseDevice003, Function | MediumTest | Level2)
412094332d3Sopenharmony_ci{
413094332d3Sopenharmony_ci    struct UsbDev dev = dev_;
414094332d3Sopenharmony_ci    auto ret = g_usbInterface->OpenDevice(dev);
415094332d3Sopenharmony_ci    ASSERT_EQ(0, ret);
416094332d3Sopenharmony_ci    dev = {255, 100};
417094332d3Sopenharmony_ci    ret = g_usbInterface->CloseDevice(dev);
418094332d3Sopenharmony_ci    EXPECT_NE(ret, 0);
419094332d3Sopenharmony_ci    dev = dev_;
420094332d3Sopenharmony_ci    ret = g_usbInterface->CloseDevice(dev);
421094332d3Sopenharmony_ci    EXPECT_EQ(ret, 0);
422094332d3Sopenharmony_ci}
423094332d3Sopenharmony_ci
424094332d3Sopenharmony_ci/**
425094332d3Sopenharmony_ci * @tc.number: SUB_USB_DeviceManager_HDI_CompatDeviceTest_0800
426094332d3Sopenharmony_ci * @tc.name: testHdiUsbDeviceTestCloseDevice004
427094332d3Sopenharmony_ci * @tc.desc: Closes a USB device to release all system resources related to the device. dev ={100, 255}.
428094332d3Sopenharmony_ci */
429094332d3Sopenharmony_ciHWTEST_F(UsbdDeviceTest, testHdiUsbDeviceTestCloseDevice004, Function | MediumTest | Level2)
430094332d3Sopenharmony_ci{
431094332d3Sopenharmony_ci    struct UsbDev dev = dev_;
432094332d3Sopenharmony_ci    auto ret = g_usbInterface->OpenDevice(dev);
433094332d3Sopenharmony_ci    ASSERT_EQ(0, ret);
434094332d3Sopenharmony_ci    dev = {100, 255};
435094332d3Sopenharmony_ci    ret = g_usbInterface->CloseDevice(dev);
436094332d3Sopenharmony_ci    EXPECT_NE(ret, 0);
437094332d3Sopenharmony_ci    dev = dev_;
438094332d3Sopenharmony_ci    ret = g_usbInterface->CloseDevice(dev);
439094332d3Sopenharmony_ci    EXPECT_EQ(ret, 0);
440094332d3Sopenharmony_ci}
441094332d3Sopenharmony_ci} // namespace
442