1 /* 2 * Copyright (c) 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 16 #include <cstdio> 17 #include <cstring> 18 #include <gtest/gtest.h> 19 #include <unistd.h> 20 #include "usb_device_info_parser.h" 21 #include "accesstoken_kit.h" 22 #include "nativetoken_kit.h" 23 #include "token_setproc.h" 24 25 #include "hdf_base.h" 26 #include "hdf_log.h" 27 #include "osal_mem.h" 28 #include "osal_time.h" 29 #include "securec.h" 30 #include "usb_ddk_interface.h" 31 #include "ddk_sysfs_device.h" 32 33 using namespace std; 34 using namespace testing::ext; 35 namespace { 36 class DdkSysfsDeviceTest : public testing::Test { 37 }; 38 39 /** 40 * @tc.number : DdkSysfsGetDevNameTestForHidraw001 41 * @tc.name : 42 * @tc.type : PERF 43 * @tc.level : Level 1 44 */ 45 HWTEST_F(DdkSysfsDeviceTest, DdkSysfsGetDevNameTestForHidraw001, TestSize.Level1) 46 { 47 UsbDeviceInfoParser parser; 48 std::optional<UsbDeviceInfo> dev = parser.Find("USB Optical Mouse"); 49 if (!dev.has_value()) { 50 std::cout << "DdkGetDevInfos failed!" << std::endl; 51 return; 52 } 53 54 std::cout << "busNum:" << dev.value().busNum << " devNum:" << dev.value().devNum << std::endl; 55 DevInterfaceInfo devInfo; 56 devInfo.busNum = dev.value().busNum; 57 devInfo.devNum = dev.value().devNum; 58 devInfo.intfNum = 0; 59 char devNodePath[NAME_MAX] = { 0x00 }; 60 int32_t ret = DdkSysfsGetDevNodePath(&devInfo, "hidraw", devNodePath, sizeof(devNodePath)); 61 EXPECT_EQ(HDF_SUCCESS, ret); 62 EXPECT_EQ("/dev/hidraw0", std::string(devNodePath)); 63 } 64 65 /** 66 * @tc.number : DdkSysfsGetDevNameTestForHidraw002 67 * @tc.name : 68 * @tc.type : PERF 69 * @tc.level : Level 1 70 */ 71 HWTEST_F(DdkSysfsDeviceTest, DdkSysfsGetDevNameTestForHidraw002, TestSize.Level1) 72 { 73 UsbDeviceInfoParser parser; 74 std::optional<UsbDeviceInfo> dev = parser.Find("USB (Serial|UART)"); 75 if (!dev.has_value()) { 76 std::cout << "DdkGetDevInfos failed!" << std::endl; 77 return; 78 } 79 80 std::cout << "busNum:" << dev.value().busNum << " devNum:" << dev.value().devNum << std::endl; 81 DevInterfaceInfo devInfo; 82 devInfo.busNum = dev.value().busNum; 83 devInfo.devNum = dev.value().devNum; 84 devInfo.intfNum = 0; 85 char devNodePath[NAME_MAX] = { 0x00 }; 86 int32_t ret = DdkSysfsGetDevNodePath(&devInfo, "hidraw", devNodePath, sizeof(devNodePath)); 87 EXPECT_EQ(HDF_ERR_OUT_OF_RANGE, ret); 88 } 89 90 /** 91 * @tc.number : DdkSysfsGetDevNameTestForHidraw003 92 * @tc.name : 93 * @tc.type : PERF 94 * @tc.level : Level 1 95 */ 96 HWTEST_F(DdkSysfsDeviceTest, DdkSysfsGetDevNameTestForHidraw003, TestSize.Level1) 97 { 98 UsbDeviceInfoParser parser; 99 std::optional<UsbDeviceInfo> dev = parser.Find("USB Optical Mouse"); 100 if (!dev.has_value()) { 101 std::cout << "DdkGetDevInfos failed!" << std::endl; 102 return; 103 } 104 105 std::cout << "busNum:" << dev.value().busNum << " devNum:" << dev.value().devNum << std::endl; 106 DevInterfaceInfo devInfo; 107 devInfo.busNum = dev.value().busNum; 108 devInfo.devNum = dev.value().devNum; 109 devInfo.intfNum = 2; 110 char devNodePath[NAME_MAX] = { 0x00 }; 111 int32_t ret = DdkSysfsGetDevNodePath(&devInfo, "hidraw", devNodePath, sizeof(devNodePath)); 112 EXPECT_EQ(HDF_ERR_OUT_OF_RANGE, ret); 113 } 114 115 /** 116 * @tc.number : DdkSysfsGetDevNameTestForUsbSerial001 117 * @tc.name : 118 * @tc.type : PERF 119 * @tc.level : Level 1 120 */ 121 HWTEST_F(DdkSysfsDeviceTest, DdkSysfsGetDevNameTestForUsbSerial001, TestSize.Level1) 122 { 123 UsbDeviceInfoParser parser; 124 std::optional<UsbDeviceInfo> dev = parser.Find("USB Serial"); 125 if (!dev.has_value()) { 126 std::cout << "DdkGetDevInfos failed!" << std::endl; 127 return; 128 } 129 130 std::cout << "busNum:" << dev.value().busNum << " devNum:" << dev.value().devNum << std::endl; 131 DevInterfaceInfo devInfo; 132 devInfo.busNum = dev.value().busNum; 133 devInfo.devNum = dev.value().devNum; 134 devInfo.intfNum = 0; 135 char devNodePath[NAME_MAX] = { 0x00 }; 136 int32_t ret = DdkSysfsGetDevNodePath(&devInfo, "ttyUSB", devNodePath, sizeof(devNodePath)); 137 EXPECT_EQ(HDF_SUCCESS, ret); 138 EXPECT_EQ("/dev/ttyUSB0", std::string(devNodePath)); 139 } 140 141 /** 142 * @tc.number : DdkSysfsGetDevNameTestForUsbSerial002 143 * @tc.name : 144 * @tc.type : PERF 145 * @tc.level : Level 1 146 */ 147 HWTEST_F(DdkSysfsDeviceTest, DdkSysfsGetDevNameTestForUsbSerial002, TestSize.Level1) 148 { 149 UsbDeviceInfoParser parser; 150 std::optional<UsbDeviceInfo> dev = parser.Find("USB Optical Mouse"); 151 if (!dev.has_value()) { 152 std::cout << "DdkGetDevInfos failed!" << std::endl; 153 return; 154 } 155 156 std::cout << "busNum:" << dev.value().busNum << " devNum:" << dev.value().devNum << std::endl; 157 DevInterfaceInfo devInfo; 158 devInfo.busNum = dev.value().busNum; 159 devInfo.devNum = dev.value().devNum; 160 devInfo.intfNum = 0; 161 char devNodePath[NAME_MAX] = { 0x00 }; 162 int32_t ret = DdkSysfsGetDevNodePath(&devInfo, "ttyUSB", devNodePath, sizeof(devNodePath)); 163 EXPECT_EQ(HDF_ERR_OUT_OF_RANGE, ret); 164 } 165 166 /** 167 * @tc.number : DdkSysfsGetDevNameTestForUsbSerial003 168 * @tc.name : 169 * @tc.type : PERF 170 * @tc.level : Level 1 171 */ 172 HWTEST_F(DdkSysfsDeviceTest, DdkSysfsGetDevNameTestForUsbSerial003, TestSize.Level1) 173 { 174 UsbDeviceInfoParser parser; 175 std::optional<UsbDeviceInfo> dev = parser.Find("USB Serial"); 176 if (!dev.has_value()) { 177 std::cout << "DdkGetDevInfos failed!" << std::endl; 178 return; 179 } 180 181 std::cout << "busNum:" << dev.value().busNum << " devNum:" << dev.value().devNum << std::endl; 182 DevInterfaceInfo devInfo; 183 devInfo.busNum = dev.value().busNum; 184 devInfo.devNum = dev.value().devNum; 185 devInfo.intfNum = 2; 186 char devNodePath[NAME_MAX] = { 0x00 }; 187 int32_t ret = DdkSysfsGetDevNodePath(&devInfo, "ttyUSB", devNodePath, sizeof(devNodePath)); 188 EXPECT_EQ(HDF_ERR_OUT_OF_RANGE, ret); 189 } 190 191 } // namespace 192