• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2024-2025 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 #include <iostream>
16 #include <vector>
17 
18 #include "hdf_log.h"
19 #include "usbd_device_test.h"
20 #include "v1_0/iusb_interface.h"
21 #include "v1_0/usb_types.h"
22 
23 using namespace testing::ext;
24 using namespace OHOS;
25 using namespace OHOS::USB;
26 using namespace std;
27 using namespace OHOS::HDI::Usb::V1_0;
28 
29 const int SLEEP_TIME = 3;
30 sptr<UsbSubscriberTest> UsbdDeviceTestAdditional::subscriber_ = nullptr;
31 
32 namespace {
33 sptr<IUsbInterface> g_usbInterface = nullptr;
34 
35 struct UsbDev UsbdDeviceTestAdditional::dev_ = {0, 0};
36 
SetUpTestCase(void)37 void UsbdDeviceTestAdditional::SetUpTestCase(void)
38 {
39     g_usbInterface = IUsbInterface::Get();
40     if (g_usbInterface == nullptr) {
41         HDF_LOGE("%{public}s:IUsbInterface::Get() failed.", __func__);
42         exit(0);
43     }
44     auto ret = g_usbInterface->SetPortRole(1, 1, 1);
45     sleep(SLEEP_TIME);
46     HDF_LOGI("UsbdDeviceTestAdditional::[Device] %{public}d SetPortRole=%{public}d", __LINE__, ret);
47     if (ret != 0) {
48         ASSERT_EQ(HDF_ERR_NOT_SUPPORT, ret);
49     } else {
50         ASSERT_EQ(0, ret);
51     }
52 
53     subscriber_ = new UsbSubscriberTest();
54     if (g_usbInterface->BindUsbdSubscriber(subscriber_) != HDF_SUCCESS) {
55         HDF_LOGE("%{public}s: bind usbd subscriber_ failed\n", __func__);
56         exit(0);
57     }
58     dev_ = {subscriber_->busNum_, subscriber_->devAddr_};
59 
60     std::cout << "please connect device, press enter to continue" << std::endl;
61     int c;
62     while ((c = getchar()) != '\n' && c != EOF) {
63     }
64 }
65 
TearDownTestCase(void)66 void UsbdDeviceTestAdditional::TearDownTestCase(void) { g_usbInterface->UnbindUsbdSubscriber(subscriber_); }
67 
SetUp(void)68 void UsbdDeviceTestAdditional::SetUp(void) {}
69 
TearDown(void)70 void UsbdDeviceTestAdditional::TearDown(void) {}
71 
72 /**
73  * @tc.number: SUB_USB_DeviceManager_HDI_CompatDeviceTest_0100
74  * @tc.name: testHdiUsbDeviceTestOpenDevice001
75  * @tc.desc: Opens a USB device to set up a connection. dev ={1, 255}.
76  */
77 HWTEST_F(UsbdDeviceTestAdditional, testHdiUsbDeviceTestOpenDevice001, Function | MediumTest | Level2)
78 {
79     struct UsbDev dev = {1, 255};
80     auto ret = g_usbInterface->OpenDevice(dev);
81     ASSERT_NE(ret, 0);
82 }
83 
84 /**
85  * @tc.number: SUB_USB_DeviceManager_HDI_CompatDeviceTest_0200
86  * @tc.name: testHdiUsbDeviceTestOpenDevice002
87  * @tc.desc: Opens a USB device to set up a connection. dev ={255, 1}.
88  */
89 HWTEST_F(UsbdDeviceTestAdditional, testHdiUsbDeviceTestOpenDevice002, Function | MediumTest | Level2)
90 {
91     struct UsbDev dev = {255, 1};
92     auto ret = g_usbInterface->OpenDevice(dev);
93     ASSERT_NE(ret, 0);
94 }
95 
96 /**
97  * @tc.number: SUB_USB_DeviceManager_HDI_CompatDeviceTest_0300
98  * @tc.name: testHdiUsbDeviceTestOpenDevice003
99  * @tc.desc: Opens a USB device to set up a connection. dev ={255, 100}.
100  */
101 HWTEST_F(UsbdDeviceTestAdditional, testHdiUsbDeviceTestOpenDevice003, Function | MediumTest | Level2)
102 {
103     struct UsbDev dev = {255, 100};
104     auto ret = g_usbInterface->OpenDevice(dev);
105     ASSERT_NE(ret, 0);
106 }
107 
108 /**
109  * @tc.number: SUB_USB_DeviceManager_HDI_CompatDeviceTest_0400
110  * @tc.name: testHdiUsbDeviceTestOpenDevice004
111  * @tc.desc: Opens a USB device to set up a connection. dev ={100, 255}.
112  */
113 HWTEST_F(UsbdDeviceTestAdditional, testHdiUsbDeviceTestOpenDevice004, Function | MediumTest | Level2)
114 {
115     struct UsbDev dev = {100, 255};
116     auto ret = g_usbInterface->OpenDevice(dev);
117     ASSERT_NE(ret, 0);
118 }
119 
120 /**
121  * @tc.number: SUB_USB_DeviceManager_HDI_CompatDeviceTest_0500
122  * @tc.name: testHdiUsbDeviceTestCloseDevice001
123  * @tc.desc: Closes a USB device to release all system resources related to the device. dev ={1, 255}.
124  */
125 HWTEST_F(UsbdDeviceTestAdditional, testHdiUsbDeviceTestCloseDevice001, Function | MediumTest | Level2)
126 {
127     struct UsbDev dev = dev_;
128     auto ret = g_usbInterface->OpenDevice(dev);
129     ASSERT_EQ(0, ret);
130     dev = {1, 255};
131     ret = g_usbInterface->CloseDevice(dev);
132     ASSERT_NE(ret, 0);
133     dev = dev_;
134     ret = g_usbInterface->CloseDevice(dev);
135     ASSERT_EQ(ret, 0);
136 }
137 
138 /**
139  * @tc.number: SUB_USB_DeviceManager_HDI_CompatDeviceTest_0600
140  * @tc.name: testHdiUsbDeviceTestCloseDevice002
141  * @tc.desc: Closes a USB device to release all system resources related to the device. dev ={255, 1}.
142  */
143 HWTEST_F(UsbdDeviceTestAdditional, testHdiUsbDeviceTestCloseDevice002, Function | MediumTest | Level2)
144 {
145     struct UsbDev dev = dev_;
146     auto ret = g_usbInterface->OpenDevice(dev);
147     ASSERT_EQ(0, ret);
148     dev = {255, 1};
149     ret = g_usbInterface->CloseDevice(dev);
150     ASSERT_NE(ret, 0);
151     dev = dev_;
152     ret = g_usbInterface->CloseDevice(dev);
153     ASSERT_EQ(ret, 0);
154 }
155 
156 /**
157  * @tc.number: SUB_USB_DeviceManager_HDI_CompatDeviceTest_0700
158  * @tc.name: testHdiUsbDeviceTestCloseDevice003
159  * @tc.desc: Closes a USB device to release all system resources related to the device. dev ={255, 100}.
160  */
161 HWTEST_F(UsbdDeviceTestAdditional, testHdiUsbDeviceTestCloseDevice003, Function | MediumTest | Level2)
162 {
163     struct UsbDev dev = dev_;
164     auto ret = g_usbInterface->OpenDevice(dev);
165     ASSERT_EQ(0, ret);
166     dev = {255, 100};
167     ret = g_usbInterface->CloseDevice(dev);
168     ASSERT_NE(ret, 0);
169     dev = dev_;
170     ret = g_usbInterface->CloseDevice(dev);
171     ASSERT_EQ(ret, 0);
172 }
173 
174 /**
175  * @tc.number: SUB_USB_DeviceManager_HDI_CompatDeviceTest_0800
176  * @tc.name: testHdiUsbDeviceTestCloseDevice004
177  * @tc.desc: Closes a USB device to release all system resources related to the device. dev ={100, 255}.
178  */
179 HWTEST_F(UsbdDeviceTestAdditional, testHdiUsbDeviceTestCloseDevice004, Function | MediumTest | Level2)
180 {
181     struct UsbDev dev = dev_;
182     auto ret = g_usbInterface->OpenDevice(dev);
183     ASSERT_EQ(0, ret);
184     dev = {100, 255};
185     ret = g_usbInterface->CloseDevice(dev);
186     ASSERT_NE(ret, 0);
187     dev = dev_;
188     ret = g_usbInterface->CloseDevice(dev);
189     ASSERT_EQ(ret, 0);
190 }
191 } // namespace