19762338dSopenharmony_ci/*
29762338dSopenharmony_ci * Copyright (c) 2021-2024 Huawei Device Co., Ltd.
39762338dSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
49762338dSopenharmony_ci * you may not use this file except in compliance with the License.
59762338dSopenharmony_ci * You may obtain a copy of the License at
69762338dSopenharmony_ci *
79762338dSopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
89762338dSopenharmony_ci *
99762338dSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
109762338dSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
119762338dSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
129762338dSopenharmony_ci * See the License for the specific language governing permissions and
139762338dSopenharmony_ci * limitations under the License.
149762338dSopenharmony_ci */
159762338dSopenharmony_ci#include <iostream>
169762338dSopenharmony_ci#include <vector>
179762338dSopenharmony_ci
189762338dSopenharmony_ci#include "hdf_log.h"
199762338dSopenharmony_ci#include "usbd_device_test.h"
209762338dSopenharmony_ci#include "v1_1/iusb_interface.h"
219762338dSopenharmony_ci#include "v1_1/usb_types.h"
229762338dSopenharmony_ci
239762338dSopenharmony_ciusing namespace testing::ext;
249762338dSopenharmony_ciusing namespace OHOS;
259762338dSopenharmony_ciusing namespace OHOS::USB;
269762338dSopenharmony_ciusing namespace std;
279762338dSopenharmony_ciusing namespace OHOS::HDI::Usb::V1_0;
289762338dSopenharmony_ciusing namespace OHOS::HDI::Usb::V1_1;
299762338dSopenharmony_ci
309762338dSopenharmony_ciconst int SLEEP_TIME = 3;
319762338dSopenharmony_ciconst uint8_t BUS_NUM_INVALID = 255;
329762338dSopenharmony_ciconst uint8_t DEV_ADDR_INVALID = 255;
339762338dSopenharmony_cisptr<UsbSubscriberTest> UsbdDeviceTest::subscriber_ = nullptr;
349762338dSopenharmony_ci
359762338dSopenharmony_cinamespace {
369762338dSopenharmony_cisptr<OHOS::HDI::Usb::V1_1::IUsbInterface> g_usbInterface = nullptr;
379762338dSopenharmony_ci
389762338dSopenharmony_cistruct UsbDev UsbdDeviceTest::dev_ = { 0, 0 };
399762338dSopenharmony_ci
409762338dSopenharmony_ciint32_t SwitchErrCode(int32_t ret)
419762338dSopenharmony_ci{
429762338dSopenharmony_ci    return ret == HDF_ERR_NOT_SUPPORT ? HDF_SUCCESS : ret;
439762338dSopenharmony_ci}
449762338dSopenharmony_ci
459762338dSopenharmony_civoid UsbdDeviceTest::SetUpTestCase(void)
469762338dSopenharmony_ci{
479762338dSopenharmony_ci    g_usbInterface = OHOS::HDI::Usb::V1_1::IUsbInterface::Get();
489762338dSopenharmony_ci    if (g_usbInterface == nullptr) {
499762338dSopenharmony_ci        HDF_LOGE("%{public}s:IUsbInterface::Get() failed.", __func__);
509762338dSopenharmony_ci        exit(0);
519762338dSopenharmony_ci    }
529762338dSopenharmony_ci    auto ret = g_usbInterface->SetPortRole(1, 1, 1);
539762338dSopenharmony_ci    sleep(SLEEP_TIME);
549762338dSopenharmony_ci    HDF_LOGI("UsbdDeviceTest::[Device] %{public}d SetPortRole=%{public}d", __LINE__, ret);
559762338dSopenharmony_ci    ret = SwitchErrCode(ret);
569762338dSopenharmony_ci    ASSERT_EQ(0, ret);
579762338dSopenharmony_ci    if (ret != 0) {
589762338dSopenharmony_ci        exit(0);
599762338dSopenharmony_ci    }
609762338dSopenharmony_ci
619762338dSopenharmony_ci    subscriber_ = new UsbSubscriberTest();
629762338dSopenharmony_ci    if (g_usbInterface->BindUsbdSubscriber(subscriber_) != HDF_SUCCESS) {
639762338dSopenharmony_ci        HDF_LOGE("%{public}s: bind usbd subscriber_ failed\n", __func__);
649762338dSopenharmony_ci        exit(0);
659762338dSopenharmony_ci    }
669762338dSopenharmony_ci    dev_ = { subscriber_->busNum_, subscriber_->devAddr_ };
679762338dSopenharmony_ci
689762338dSopenharmony_ci    std::cout << "please connect device, press enter to continue" << std::endl;
699762338dSopenharmony_ci    int c;
709762338dSopenharmony_ci    while ((c = getchar()) != '\n' && c != EOF) {
719762338dSopenharmony_ci    }
729762338dSopenharmony_ci}
739762338dSopenharmony_ci
749762338dSopenharmony_civoid UsbdDeviceTest::TearDownTestCase(void)
759762338dSopenharmony_ci{
769762338dSopenharmony_ci    g_usbInterface->UnbindUsbdSubscriber(subscriber_);
779762338dSopenharmony_ci}
789762338dSopenharmony_ci
799762338dSopenharmony_civoid UsbdDeviceTest::SetUp(void) {}
809762338dSopenharmony_ci
819762338dSopenharmony_civoid UsbdDeviceTest::TearDown(void) {}
829762338dSopenharmony_ci
839762338dSopenharmony_ci/**
849762338dSopenharmony_ci * @tc.name: SUB_USB_HostManager_HDI_Func_0100
859762338dSopenharmony_ci * @tc.desc: Test functions to OpenDevice
869762338dSopenharmony_ci * @tc.desc: int32_t OpenDevice(const UsbDev &dev);
879762338dSopenharmony_ci * @tc.desc: Positive test: parameters correctly
889762338dSopenharmony_ci * @tc.type: FUNC
899762338dSopenharmony_ci */
909762338dSopenharmony_ciHWTEST_F(UsbdDeviceTest, SUB_USB_HostManager_HDI_Func_0100, Function | MediumTest | Level1)
919762338dSopenharmony_ci{
929762338dSopenharmony_ci    struct UsbDev dev = dev_;
939762338dSopenharmony_ci    auto ret = g_usbInterface->OpenDevice(dev);
949762338dSopenharmony_ci    HDF_LOGI("UsbdDeviceTest:: Line:%{public}d OpenDevice result =%{public}d", __LINE__, ret);
959762338dSopenharmony_ci    ASSERT_EQ(0, ret);
969762338dSopenharmony_ci}
979762338dSopenharmony_ci
989762338dSopenharmony_ci/**
999762338dSopenharmony_ci * @tc.name: SUB_USB_HostManager_HDI_Compatibility_0100
1009762338dSopenharmony_ci * @tc.desc: Test functions to OpenDevice
1019762338dSopenharmony_ci * @tc.desc: int32_t OpenDevice(const UsbDev &dev);
1029762338dSopenharmony_ci * @tc.desc: Negative test: parameters exception, busNum error
1039762338dSopenharmony_ci * @tc.type: FUNC
1049762338dSopenharmony_ci */
1059762338dSopenharmony_ciHWTEST_F(UsbdDeviceTest, SUB_USB_HostManager_HDI_Compatibility_0100, Function | MediumTest | Level1)
1069762338dSopenharmony_ci{
1079762338dSopenharmony_ci    struct UsbDev dev = { BUS_NUM_INVALID, dev_.devAddr };
1089762338dSopenharmony_ci    auto ret = g_usbInterface->OpenDevice(dev);
1099762338dSopenharmony_ci    HDF_LOGI("UsbdDeviceTest:: Line:%{public}d OpenDevice result=%{public}d", __LINE__, ret);
1109762338dSopenharmony_ci    ASSERT_NE(ret, 0);
1119762338dSopenharmony_ci}
1129762338dSopenharmony_ci
1139762338dSopenharmony_ci/**
1149762338dSopenharmony_ci * @tc.name: SUB_USB_HostManager_HDI_Compatibility_0200
1159762338dSopenharmony_ci * @tc.desc: Test functions to OpenDevice
1169762338dSopenharmony_ci * @tc.desc: int32_t OpenDevice(const UsbDev &dev);
1179762338dSopenharmony_ci * @tc.desc: Negative test: parameters exception, devAddr error
1189762338dSopenharmony_ci * @tc.type: FUNC
1199762338dSopenharmony_ci */
1209762338dSopenharmony_ciHWTEST_F(UsbdDeviceTest, SUB_USB_HostManager_HDI_Compatibility_0200, Function | MediumTest | Level1)
1219762338dSopenharmony_ci{
1229762338dSopenharmony_ci    struct UsbDev dev = { dev_.busNum, DEV_ADDR_INVALID };
1239762338dSopenharmony_ci    auto ret = g_usbInterface->OpenDevice(dev);
1249762338dSopenharmony_ci    HDF_LOGI("UsbdDeviceTest:: Line:%{public}d OpenDevice result=%{public}d", __LINE__, ret);
1259762338dSopenharmony_ci    ASSERT_NE(ret, 0);
1269762338dSopenharmony_ci}
1279762338dSopenharmony_ci
1289762338dSopenharmony_ci/**
1299762338dSopenharmony_ci * @tc.name: SUB_USB_HostManager_HDI_Compatibility_0300
1309762338dSopenharmony_ci * @tc.desc: Test functions to OpenDevice
1319762338dSopenharmony_ci * @tc.desc: int32_t OpenDevice(const UsbDev &dev);
1329762338dSopenharmony_ci * @tc.desc: Negative test: parameters exception, busNum && devAddr error
1339762338dSopenharmony_ci * @tc.type: FUNC
1349762338dSopenharmony_ci */
1359762338dSopenharmony_ciHWTEST_F(UsbdDeviceTest, SUB_USB_HostManager_HDI_Compatibility_0300, Function | MediumTest | Level1)
1369762338dSopenharmony_ci{
1379762338dSopenharmony_ci    struct UsbDev dev = { BUS_NUM_INVALID, DEV_ADDR_INVALID };
1389762338dSopenharmony_ci    auto ret = g_usbInterface->OpenDevice(dev);
1399762338dSopenharmony_ci    HDF_LOGI("UsbdDeviceTest:: Line:%{public}d OpenDevice result=%{public}d", __LINE__, ret);
1409762338dSopenharmony_ci    ASSERT_NE(ret, 0);
1419762338dSopenharmony_ci}
1429762338dSopenharmony_ci
1439762338dSopenharmony_ci/**********************************************************************************************************/
1449762338dSopenharmony_ci
1459762338dSopenharmony_ci/**
1469762338dSopenharmony_ci * @tc.name: SUB_USB_HostManager_HDI_Func_1400
1479762338dSopenharmony_ci * @tc.desc: Test functions to CloseDevice
1489762338dSopenharmony_ci * @tc.desc: int32_t CloseDevice(const UsbDev &dev);
1499762338dSopenharmony_ci * @tc.desc: Positive test: parameters correctly
1509762338dSopenharmony_ci * @tc.type: FUNC
1519762338dSopenharmony_ci */
1529762338dSopenharmony_ciHWTEST_F(UsbdDeviceTest, SUB_USB_HostManager_HDI_Func_1400, Function | MediumTest | Level1)
1539762338dSopenharmony_ci{
1549762338dSopenharmony_ci    struct UsbDev dev = dev_;
1559762338dSopenharmony_ci    auto ret = g_usbInterface->OpenDevice(dev);
1569762338dSopenharmony_ci    HDF_LOGI("UsbdDeviceTest:: Line:%{public}d OpenDevice result=%{public}d", __LINE__, ret);
1579762338dSopenharmony_ci    ASSERT_EQ(0, ret);
1589762338dSopenharmony_ci    ret = g_usbInterface->CloseDevice(dev);
1599762338dSopenharmony_ci    HDF_LOGI("UsbdDeviceTest:: Line:%{public}d Close result=%{public}d", __LINE__, ret);
1609762338dSopenharmony_ci    ASSERT_EQ(0, ret);
1619762338dSopenharmony_ci}
1629762338dSopenharmony_ci
1639762338dSopenharmony_ci/**
1649762338dSopenharmony_ci * @tc.name: SUB_USB_HostManager_HDI_Compatibility_7000
1659762338dSopenharmony_ci * @tc.desc: Test functions to CloseDevice
1669762338dSopenharmony_ci * @tc.desc: int32_t CloseDevice(const UsbDev &dev);
1679762338dSopenharmony_ci * @tc.desc: Negative test: parameters exception, busNum error
1689762338dSopenharmony_ci * @tc.type: FUNC
1699762338dSopenharmony_ci */
1709762338dSopenharmony_ciHWTEST_F(UsbdDeviceTest, SUB_USB_HostManager_HDI_Compatibility_7000, Function | MediumTest | Level1)
1719762338dSopenharmony_ci{
1729762338dSopenharmony_ci    struct UsbDev dev = dev_;
1739762338dSopenharmony_ci    auto ret = g_usbInterface->OpenDevice(dev);
1749762338dSopenharmony_ci    HDF_LOGI("UsbdDeviceTest:: Line:%{public}d OpenDevice result=%{public}d", __LINE__, ret);
1759762338dSopenharmony_ci    ASSERT_EQ(0, ret);
1769762338dSopenharmony_ci    dev.busNum = BUS_NUM_INVALID;
1779762338dSopenharmony_ci    ret = g_usbInterface->CloseDevice(dev);
1789762338dSopenharmony_ci    HDF_LOGI("UsbdDeviceTest:: Line:%{public}d Close result=%{public}d", __LINE__, ret);
1799762338dSopenharmony_ci    ASSERT_NE(ret, 0);
1809762338dSopenharmony_ci    dev = dev_;
1819762338dSopenharmony_ci    g_usbInterface->CloseDevice(dev);
1829762338dSopenharmony_ci}
1839762338dSopenharmony_ci
1849762338dSopenharmony_ci/**
1859762338dSopenharmony_ci * @tc.name: SUB_USB_HostManager_HDI_Compatibility_7100
1869762338dSopenharmony_ci * @tc.desc: Test functions to CloseDevice
1879762338dSopenharmony_ci * @tc.desc: int32_t CloseDevice(const UsbDev &dev);
1889762338dSopenharmony_ci * @tc.desc: Negative test: parameters exception, devAddr error
1899762338dSopenharmony_ci * @tc.type: FUNC
1909762338dSopenharmony_ci */
1919762338dSopenharmony_ciHWTEST_F(UsbdDeviceTest, SUB_USB_HostManager_HDI_Compatibility_7100, Function | MediumTest | Level1)
1929762338dSopenharmony_ci{
1939762338dSopenharmony_ci    struct UsbDev dev = dev_;
1949762338dSopenharmony_ci    auto ret = g_usbInterface->OpenDevice(dev);
1959762338dSopenharmony_ci    HDF_LOGI("UsbdDeviceTest:: Line:%{public}d OpenDevice result=%{public}d", __LINE__, ret);
1969762338dSopenharmony_ci    ASSERT_EQ(0, ret);
1979762338dSopenharmony_ci    dev.devAddr = DEV_ADDR_INVALID;
1989762338dSopenharmony_ci    ret = g_usbInterface->CloseDevice(dev);
1999762338dSopenharmony_ci    HDF_LOGI("UsbdDeviceTest:: Line:%{public}d Close result=%{public}d", __LINE__, ret);
2009762338dSopenharmony_ci    ASSERT_NE(ret, 0);
2019762338dSopenharmony_ci    dev = dev_;
2029762338dSopenharmony_ci    g_usbInterface->CloseDevice(dev);
2039762338dSopenharmony_ci}
2049762338dSopenharmony_ci
2059762338dSopenharmony_ci/**
2069762338dSopenharmony_ci * @tc.name: SUB_USB_HostManager_HDI_Compatibility_7200
2079762338dSopenharmony_ci * @tc.desc: Test functions to CloseDevice
2089762338dSopenharmony_ci * @tc.desc: int32_t CloseDevice(const UsbDev &dev);
2099762338dSopenharmony_ci * @tc.desc: Negative test: parameters exception, busNum && devAddr error
2109762338dSopenharmony_ci * @tc.type: FUNC
2119762338dSopenharmony_ci */
2129762338dSopenharmony_ciHWTEST_F(UsbdDeviceTest, SUB_USB_HostManager_HDI_Compatibility_7200, Function | MediumTest | Level1)
2139762338dSopenharmony_ci{
2149762338dSopenharmony_ci    struct UsbDev dev = dev_;
2159762338dSopenharmony_ci    auto ret = g_usbInterface->OpenDevice(dev);
2169762338dSopenharmony_ci    HDF_LOGI("UsbdDeviceTest:: Line:%{public}d OpenDevice result=%{public}d", __LINE__, ret);
2179762338dSopenharmony_ci    ASSERT_EQ(0, ret);
2189762338dSopenharmony_ci    dev.busNum = BUS_NUM_INVALID;
2199762338dSopenharmony_ci    dev.devAddr = DEV_ADDR_INVALID;
2209762338dSopenharmony_ci    ret = g_usbInterface->CloseDevice(dev);
2219762338dSopenharmony_ci    HDF_LOGI("UsbdDeviceTest:: Line:%{public}d Close result=%{public}d", __LINE__, ret);
2229762338dSopenharmony_ci    ASSERT_NE(ret, 0);
2239762338dSopenharmony_ci    dev = dev_;
2249762338dSopenharmony_ci    g_usbInterface->CloseDevice(dev);
2259762338dSopenharmony_ci}
2269762338dSopenharmony_ci
2279762338dSopenharmony_ci/**
2289762338dSopenharmony_ci * @tc.number   : SUB_USB_HostManager_HDI_Func_1900
2299762338dSopenharmony_ci * @tc.name     : UsbdResetDevice001
2309762338dSopenharmony_ci * @tc.desc     : int32_t ResetDevice(const UsbDev &dev)
2319762338dSopenharmony_ci * @tc.desc     : Positive test: parameters correctly
2329762338dSopenharmony_ci * @tc.size     : MediumTest
2339762338dSopenharmony_ci * @tc.type     : Function
2349762338dSopenharmony_ci * @tc.level    : Level 3
2359762338dSopenharmony_ci */
2369762338dSopenharmony_ciHWTEST_F(UsbdDeviceTest, UsbdResetDevice001, Function | MediumTest | Level1)
2379762338dSopenharmony_ci{
2389762338dSopenharmony_ci    struct UsbDev dev = dev_;
2399762338dSopenharmony_ci    auto ret = g_usbInterface->OpenDevice(dev);
2409762338dSopenharmony_ci    HDF_LOGI("UsbdDeviceTest:: Line:%{public}d OpenDevice result=%{public}d", __LINE__, ret);
2419762338dSopenharmony_ci    ASSERT_EQ(0, ret);
2429762338dSopenharmony_ci    ret = g_usbInterface->ResetDevice(dev);
2439762338dSopenharmony_ci    HDF_LOGI("UsbdDeviceTest:: Line:%{public}d UsbdResetDevice001 result=%{public}d", __LINE__, ret);
2449762338dSopenharmony_ci    ASSERT_EQ(0, ret);
2459762338dSopenharmony_ci    ret = g_usbInterface->CloseDevice(dev);
2469762338dSopenharmony_ci    HDF_LOGI("UsbdDeviceTest:: Line:%{public}d Close result=%{public}d", __LINE__, ret);
2479762338dSopenharmony_ci    ASSERT_EQ(0, ret);
2489762338dSopenharmony_ci}
2499762338dSopenharmony_ci
2509762338dSopenharmony_ci/**
2519762338dSopenharmony_ci * @tc.number   : SUB_USB_HostManager_HDI_Compatibility_9000
2529762338dSopenharmony_ci * @tc.name     : UsbdResetDevice002
2539762338dSopenharmony_ci * @tc.desc     : int32_t ResetDevice(const UsbDev &dev)
2549762338dSopenharmony_ci * @tc.desc     : Negative test
2559762338dSopenharmony_ci * @tc.size     : MediumTest
2569762338dSopenharmony_ci * @tc.type     : Function
2579762338dSopenharmony_ci * @tc.level    : Level 3
2589762338dSopenharmony_ci */
2599762338dSopenharmony_ciHWTEST_F(UsbdDeviceTest, UsbdResetDevice002, Function | MediumTest | Level1)
2609762338dSopenharmony_ci{
2619762338dSopenharmony_ci    struct UsbDev dev = dev_;
2629762338dSopenharmony_ci    auto ret = g_usbInterface->OpenDevice(dev);
2639762338dSopenharmony_ci    HDF_LOGI("UsbdDeviceTest:: Line:%{public}d OpenDevice result=%{public}d", __LINE__, ret);
2649762338dSopenharmony_ci    ASSERT_EQ(0, ret);
2659762338dSopenharmony_ci    dev.busNum = BUS_NUM_INVALID;
2669762338dSopenharmony_ci    ret = g_usbInterface->ResetDevice(dev);
2679762338dSopenharmony_ci    HDF_LOGI("UsbdDeviceTest:: Line:%{public}d UsbdResetDevice002 result=%{public}d", __LINE__, ret);
2689762338dSopenharmony_ci    ASSERT_NE(0, ret);
2699762338dSopenharmony_ci    ret = g_usbInterface->CloseDevice(dev);
2709762338dSopenharmony_ci    HDF_LOGI("UsbdDeviceTest:: Line:%{public}d Close result=%{public}d", __LINE__, ret);
2719762338dSopenharmony_ci    ASSERT_NE(ret, 0);
2729762338dSopenharmony_ci    dev = dev_;
2739762338dSopenharmony_ci    g_usbInterface->CloseDevice(dev);
2749762338dSopenharmony_ci}
2759762338dSopenharmony_ci
2769762338dSopenharmony_ci/**
2779762338dSopenharmony_ci * @tc.number   : SUB_USB_HostManager_HDI_Compatibility_9100
2789762338dSopenharmony_ci * @tc.name     : UsbdResetDevice003
2799762338dSopenharmony_ci * @tc.desc     : int32_t ResetDevice(const UsbDev &dev)
2809762338dSopenharmony_ci * @tc.desc     : Negative test
2819762338dSopenharmony_ci * @tc.size     : MediumTest
2829762338dSopenharmony_ci * @tc.type     : Function
2839762338dSopenharmony_ci * @tc.level    : Level 3
2849762338dSopenharmony_ci */
2859762338dSopenharmony_ciHWTEST_F(UsbdDeviceTest, UsbdResetDevice003, Function | MediumTest | Level1)
2869762338dSopenharmony_ci{
2879762338dSopenharmony_ci    struct UsbDev dev = dev_;
2889762338dSopenharmony_ci    auto ret = g_usbInterface->OpenDevice(dev);
2899762338dSopenharmony_ci    HDF_LOGI("UsbdDeviceTest:: Line:%{public}d OpenDevice result=%{public}d", __LINE__, ret);
2909762338dSopenharmony_ci    ASSERT_EQ(0, ret);
2919762338dSopenharmony_ci    dev.devAddr = DEV_ADDR_INVALID;
2929762338dSopenharmony_ci    ret = g_usbInterface->ResetDevice(dev);
2939762338dSopenharmony_ci    HDF_LOGI("UsbdDeviceTest:: Line:%{public}d UsbdResetDevice003 result=%{public}d", __LINE__, ret);
2949762338dSopenharmony_ci    ASSERT_NE(0, ret);
2959762338dSopenharmony_ci    ret = g_usbInterface->CloseDevice(dev);
2969762338dSopenharmony_ci    HDF_LOGI("UsbdDeviceTest:: Line:%{public}d Close result=%{public}d", __LINE__, ret);
2979762338dSopenharmony_ci    ASSERT_NE(ret, 0);
2989762338dSopenharmony_ci    dev = dev_;
2999762338dSopenharmony_ci    g_usbInterface->CloseDevice(dev);
3009762338dSopenharmony_ci}
3019762338dSopenharmony_ci
3029762338dSopenharmony_ci/**
3039762338dSopenharmony_ci * @tc.number   : SUB_USB_HostManager_HDI_Compatibility_9200
3049762338dSopenharmony_ci * @tc.name     : UsbdResetDevice004
3059762338dSopenharmony_ci * @tc.desc     : int32_t ResetDevice(const UsbDev &dev)
3069762338dSopenharmony_ci * @tc.desc     : Negative test
3079762338dSopenharmony_ci * @tc.size     : MediumTest
3089762338dSopenharmony_ci * @tc.type     : Function
3099762338dSopenharmony_ci * @tc.level    : Level 3
3109762338dSopenharmony_ci */
3119762338dSopenharmony_ciHWTEST_F(UsbdDeviceTest, UsbdResetDevice004, Function | MediumTest | Level1)
3129762338dSopenharmony_ci{
3139762338dSopenharmony_ci    struct UsbDev dev = dev_;
3149762338dSopenharmony_ci    auto ret = g_usbInterface->OpenDevice(dev);
3159762338dSopenharmony_ci    HDF_LOGI("UsbdDeviceTest:: Line:%{public}d OpenDevice result=%{public}d", __LINE__, ret);
3169762338dSopenharmony_ci    ASSERT_EQ(0, ret);
3179762338dSopenharmony_ci    dev.busNum = BUS_NUM_INVALID;
3189762338dSopenharmony_ci    dev.devAddr = DEV_ADDR_INVALID;
3199762338dSopenharmony_ci    ret = g_usbInterface->ResetDevice(dev);
3209762338dSopenharmony_ci    HDF_LOGI("UsbdDeviceTest:: Line:%{public}d UsbdResetDevice004 result=%{public}d", __LINE__, ret);
3219762338dSopenharmony_ci    ASSERT_NE(0, ret);
3229762338dSopenharmony_ci    ret = g_usbInterface->CloseDevice(dev);
3239762338dSopenharmony_ci    HDF_LOGI("UsbdDeviceTest:: Line:%{public}d Close result=%{public}d", __LINE__, ret);
3249762338dSopenharmony_ci    ASSERT_NE(ret, 0);
3259762338dSopenharmony_ci    dev = dev_;
3269762338dSopenharmony_ci    g_usbInterface->CloseDevice(dev);
3279762338dSopenharmony_ci}
3289762338dSopenharmony_ci} // namespace