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