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