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 EXPECT_EQ(dev.has_value(), true); 50 std::cout << "busNum:" << dev.value().busNum << " devNum:" << dev.value().devNum << std::endl; 51 DevInterfaceInfo devInfo; 52 devInfo.busNum = dev.value().busNum; 53 devInfo.devNum = dev.value().devNum; 54 devInfo.intfNum = 0; 55 char devNodePath[NAME_MAX] = { 0x00 }; 56 int32_t ret = DdkSysfsGetDevNodePath(&devInfo, "hidraw", devNodePath, sizeof(devNodePath)); 57 EXPECT_EQ(HDF_SUCCESS, ret); 58 EXPECT_EQ("/dev/hidraw0", std::string(devNodePath)); 59 } 60 61 /** 62 * @tc.number : DdkSysfsGetDevNameTestForHidraw002 63 * @tc.name : 64 * @tc.type : PERF 65 * @tc.level : Level 1 66 */ 67 HWTEST_F(DdkSysfsDeviceTest, DdkSysfsGetDevNameTestForHidraw002, TestSize.Level1) 68 { 69 UsbDeviceInfoParser parser; 70 std::optional<UsbDeviceInfo> dev = parser.Find("USB (Serial|UART)"); 71 EXPECT_EQ(dev.has_value(), true); 72 std::cout << "busNum:" << dev.value().busNum << " devNum:" << dev.value().devNum << std::endl; 73 DevInterfaceInfo devInfo; 74 devInfo.busNum = dev.value().busNum; 75 devInfo.devNum = dev.value().devNum; 76 devInfo.intfNum = 0; 77 char devNodePath[NAME_MAX] = { 0x00 }; 78 int32_t ret = DdkSysfsGetDevNodePath(&devInfo, "hidraw", devNodePath, sizeof(devNodePath)); 79 EXPECT_EQ(HDF_ERR_OUT_OF_RANGE, ret); 80 } 81 82 /** 83 * @tc.number : DdkSysfsGetDevNameTestForHidraw003 84 * @tc.name : 85 * @tc.type : PERF 86 * @tc.level : Level 1 87 */ 88 HWTEST_F(DdkSysfsDeviceTest, DdkSysfsGetDevNameTestForHidraw003, TestSize.Level1) 89 { 90 UsbDeviceInfoParser parser; 91 std::optional<UsbDeviceInfo> dev = parser.Find("USB Optical Mouse"); 92 EXPECT_EQ(dev.has_value(), true); 93 std::cout << "busNum:" << dev.value().busNum << " devNum:" << dev.value().devNum << std::endl; 94 DevInterfaceInfo devInfo; 95 devInfo.busNum = dev.value().busNum; 96 devInfo.devNum = dev.value().devNum; 97 devInfo.intfNum = 2; 98 char devNodePath[NAME_MAX] = { 0x00 }; 99 int32_t ret = DdkSysfsGetDevNodePath(&devInfo, "hidraw", devNodePath, sizeof(devNodePath)); 100 EXPECT_EQ(HDF_ERR_OUT_OF_RANGE, ret); 101 } 102 103 /** 104 * @tc.number : DdkSysfsGetDevNameTestForUsbSerial001 105 * @tc.name : 106 * @tc.type : PERF 107 * @tc.level : Level 1 108 */ 109 HWTEST_F(DdkSysfsDeviceTest, DdkSysfsGetDevNameTestForUsbSerial001, TestSize.Level1) 110 { 111 UsbDeviceInfoParser parser; 112 std::optional<UsbDeviceInfo> dev = parser.Find("USB Serial"); 113 EXPECT_EQ(dev.has_value(), true); 114 std::cout << "busNum:" << dev.value().busNum << " devNum:" << dev.value().devNum << std::endl; 115 DevInterfaceInfo devInfo; 116 devInfo.busNum = dev.value().busNum; 117 devInfo.devNum = dev.value().devNum; 118 devInfo.intfNum = 0; 119 char devNodePath[NAME_MAX] = { 0x00 }; 120 int32_t ret = DdkSysfsGetDevNodePath(&devInfo, "ttyUSB", devNodePath, sizeof(devNodePath)); 121 EXPECT_EQ(HDF_SUCCESS, ret); 122 EXPECT_EQ("/dev/ttyUSB0", std::string(devNodePath)); 123 } 124 125 /** 126 * @tc.number : DdkSysfsGetDevNameTestForUsbSerial002 127 * @tc.name : 128 * @tc.type : PERF 129 * @tc.level : Level 1 130 */ 131 HWTEST_F(DdkSysfsDeviceTest, DdkSysfsGetDevNameTestForUsbSerial002, TestSize.Level1) 132 { 133 UsbDeviceInfoParser parser; 134 std::optional<UsbDeviceInfo> dev = parser.Find("USB Optical Mouse"); 135 EXPECT_EQ(dev.has_value(), true); 136 std::cout << "busNum:" << dev.value().busNum << " devNum:" << dev.value().devNum << std::endl; 137 DevInterfaceInfo devInfo; 138 devInfo.busNum = dev.value().busNum; 139 devInfo.devNum = dev.value().devNum; 140 devInfo.intfNum = 0; 141 char devNodePath[NAME_MAX] = { 0x00 }; 142 int32_t ret = DdkSysfsGetDevNodePath(&devInfo, "ttyUSB", devNodePath, sizeof(devNodePath)); 143 EXPECT_EQ(HDF_ERR_OUT_OF_RANGE, ret); 144 } 145 146 /** 147 * @tc.number : DdkSysfsGetDevNameTestForUsbSerial003 148 * @tc.name : 149 * @tc.type : PERF 150 * @tc.level : Level 1 151 */ 152 HWTEST_F(DdkSysfsDeviceTest, DdkSysfsGetDevNameTestForUsbSerial003, TestSize.Level1) 153 { 154 UsbDeviceInfoParser parser; 155 std::optional<UsbDeviceInfo> dev = parser.Find("USB Serial"); 156 EXPECT_EQ(dev.has_value(), true); 157 std::cout << "busNum:" << dev.value().busNum << " devNum:" << dev.value().devNum << std::endl; 158 DevInterfaceInfo devInfo; 159 devInfo.busNum = dev.value().busNum; 160 devInfo.devNum = dev.value().devNum; 161 devInfo.intfNum = 2; 162 char devNodePath[NAME_MAX] = { 0x00 }; 163 int32_t ret = DdkSysfsGetDevNodePath(&devInfo, "ttyUSB", devNodePath, sizeof(devNodePath)); 164 EXPECT_EQ(HDF_ERR_OUT_OF_RANGE, ret); 165 } 166 167 } // namespace 168