diff --git a/deepin-devicemanager/src/DeviceManager/DeviceInfo.cpp b/deepin-devicemanager/src/DeviceManager/DeviceInfo.cpp index 995a9aa6..67be41cb 100644 --- a/deepin-devicemanager/src/DeviceManager/DeviceInfo.cpp +++ b/deepin-devicemanager/src/DeviceManager/DeviceInfo.cpp @@ -785,6 +785,28 @@ const QString DeviceBaseInfo::getVendorOrModelId(const QString &sysPath, bool fl return vendor.trimmed(); } +void DeviceBaseInfo::setVendorNameBylsusbLspci(const QString &vidpid, const QString &modalias) +{ + if (!vidpid.isEmpty() && modalias.contains("usb")) { + QProcess process; + QString vendorId = vidpid.toLower().remove("0x").trimmed().left(4); + QString deviceId = vidpid.toLower().remove("0x").trimmed().right(4); + process.start("lsusb -v -d " + vendorId + ":" + deviceId); + process.waitForFinished(-1); + + QString output = process.readAllStandardOutput(); + + foreach (QString out, output.split("\n")) { + // 从USB设备获取制造商和设备名称 + if (out.contains("idVendor", Qt::CaseSensitive)) { + m_Vendor = out.remove(0, out.indexOf(vendorId) + 4).trimmed(); + } else if (out.contains("idProduct", Qt::CaseSensitive)) { + m_Name = out.remove(0, out.indexOf(deviceId) + 4).trimmed(); + } + } + } +} + const QString DeviceBaseInfo::getDriverVersion() { qCDebug(appLog) << "DeviceBaseInfo::getDriverVersion called."; @@ -1464,4 +1486,4 @@ void DeviceBaseInfo::generatorTranslate() << tr("Type") \ << tr("Vendor") \ << tr("Processor"); -} \ No newline at end of file +} diff --git a/deepin-devicemanager/src/DeviceManager/DeviceInfo.h b/deepin-devicemanager/src/DeviceManager/DeviceInfo.h index a1cc20a3..bd975caa 100644 --- a/deepin-devicemanager/src/DeviceManager/DeviceInfo.h +++ b/deepin-devicemanager/src/DeviceManager/DeviceInfo.h @@ -224,6 +224,14 @@ class DeviceBaseInfo : public QObject */ const QString getVendorOrModelId(const QString &sysPath, bool flag = true); + /** + * @brief setVendorNameBylsusbLspci:获取Vendor 和 Name + * @param vidpid 属性vidpid + * @param modalias + * @return + */ + void setVendorNameBylsusbLspci(const QString &vidpid, const QString &modalias); + /** * @brief get_string:读取文件内信息 * @param path:文件绝对路径+名称 diff --git a/deepin-devicemanager/src/DeviceManager/DeviceMonitor.cpp b/deepin-devicemanager/src/DeviceManager/DeviceMonitor.cpp index 52d02007..42edf72d 100644 --- a/deepin-devicemanager/src/DeviceManager/DeviceMonitor.cpp +++ b/deepin-devicemanager/src/DeviceManager/DeviceMonitor.cpp @@ -6,6 +6,7 @@ #include "DeviceMonitor.h" #include "EDIDParser.h" #include "commonfunction.h" +#include "commondefine.h" #include "DDLog.h" #include @@ -175,7 +176,8 @@ void DeviceMonitor::setInfoFromHwinfo(const QMap &mapInfo) TomlFixMethod DeviceMonitor::setInfoFromTomlOneByOne(const QMap &mapInfo) { qCDebug(appLog) << "Setting monitor info from TOML configuration"; - m_IsTomlSet = true; + if (Common::specialComType == 2) + m_IsTomlSet = true; TomlFixMethod ret = TOML_None; // 添加基本信息 ret = setTomlAttribute(mapInfo, "Type", m_Model); @@ -427,7 +429,11 @@ bool DeviceMonitor::setMainInfoFromXrandr(const QString &info, const QString &ra qCDebug(appLog) << "Adjusting rate for board vendor type"; curRate = QString::number(ceil(curRate.left(pos).toDouble())) + curRate.right(curRate.size() - pos); } - m_CurrentResolution = QString("%1@%2").arg(match.captured(1)).arg(curRate); + if (Common::specialComType == 5) { + m_CurrentResolution = QString("%1").arg(QT_REGEXP_CAPTURE(reScreenSize, 1, info)); + } else { + m_CurrentResolution = QString("%1@%2").arg(QT_REGEXP_CAPTURE(reScreenSize, 1, info)).arg(curRate); + } } else { qCDebug(appLog) << "Rate is empty, setting current resolution without rate"; m_CurrentResolution = QString("%1").arg(match.captured(1)); diff --git a/deepin-devicemanager/src/DeviceManager/DeviceNetwork.cpp b/deepin-devicemanager/src/DeviceManager/DeviceNetwork.cpp index 4df63873..520868c8 100644 --- a/deepin-devicemanager/src/DeviceManager/DeviceNetwork.cpp +++ b/deepin-devicemanager/src/DeviceManager/DeviceNetwork.cpp @@ -55,30 +55,9 @@ void DeviceNetwork::setInfoFromLshw(const QMap &mapInfo) setAttribute(mapInfo, "description", m_Model); setAttribute(mapInfo, "product", m_Name); setAttribute(mapInfo, "vendor", m_Vendor); - if (m_SysPath.contains("usb")) { - qCDebug(appLog) << "DeviceNetwork::setInfoFromLshw, sysPath contains usb"; - QProcess process; - QString vendorId = getVendorOrModelId(m_SysPath, true).trimmed(); - QString deviceId = getVendorOrModelId(m_SysPath, false).trimmed(); - process.start("lsusb -v -d " + vendorId + ":" + deviceId); - process.waitForFinished(-1); - - QString output = process.readAllStandardOutput(); - - foreach (QString out, output.split("\n")) { - if (!m_Vendor.isEmpty() && !m_Name.isEmpty()) - break; - // 从USB设备获取制造商和设备名称 - if (m_Vendor.isEmpty() && out.contains("idVendor", Qt::CaseSensitive)) { - m_Vendor = out.remove(0, out.indexOf(vendorId) + 4).trimmed(); - } else if (m_Name.isEmpty() && out.contains("idProduct", Qt::CaseSensitive)) { - m_Name = out.remove(0, out.indexOf(deviceId) + 4).trimmed(); - } - } - } else { - qCDebug(appLog) << "DeviceNetwork::setInfoFromLshw, sysPath not contains usb"; - setAttribute(mapInfo, "description", m_Name, false); - } + if (m_Name.isEmpty()) + setAttribute(mapInfo, "description", m_Name); + setAttribute(mapInfo, "version", m_Version); setAttribute(mapInfo, "bus info", m_BusInfo); setAttribute(mapInfo, "logical name", m_LogicalName); @@ -169,6 +148,7 @@ bool DeviceNetwork::setInfoFromHwinfo(const QMap &mapInfo) } qCDebug(appLog) << "DeviceNetwork::setInfoFromHwinfo, mapInfo not contains path"; setAttribute(mapInfo, "Device", m_Name); + setAttribute(mapInfo, "Vendor", m_Vendor); setAttribute(mapInfo, "Device File", m_LogicalName); setAttribute(mapInfo, "HW Address", m_MACAddress); setAttribute(mapInfo, "Permanent HW Address", m_UniqueID); @@ -178,6 +158,9 @@ bool DeviceNetwork::setInfoFromHwinfo(const QMap &mapInfo) setAttribute(mapInfo, "Module Alias", m_Modalias); setAttribute(mapInfo, "VID_PID", m_VID_PID); m_PhysID = m_VID_PID; + if (!m_VID_PID.isEmpty() && m_Modalias.contains("usb")) { + setVendorNameBylsusbLspci(m_VID_PID, m_Modalias); + } if (driverIsKernelIn(m_DriverModules) || driverIsKernelIn(m_Driver)) { qCDebug(appLog) << "DeviceNetwork::setInfoFromHwinfo, driver is kernel in"; @@ -193,8 +176,6 @@ bool DeviceNetwork::setInfoFromHwinfo(const QMap &mapInfo) // 判断是否是无线网卡 setIsWireless(mapInfo["SysFS ID"]); - setHwinfoLshwKey(mapInfo); - return true; } diff --git a/deepin-devicemanager/src/GenerateDevice/CmdTool.cpp b/deepin-devicemanager/src/GenerateDevice/CmdTool.cpp index b5558a41..c1af015c 100644 --- a/deepin-devicemanager/src/GenerateDevice/CmdTool.cpp +++ b/deepin-devicemanager/src/GenerateDevice/CmdTool.cpp @@ -383,7 +383,7 @@ void CmdTool::loadLshwInfo(const QString &debugFile) qCDebug(appLog) << "Parsing lshw multimedia info."; getMapInfoFromLshw(item, mapInfo); addMapInfo("lshw_multimedia", mapInfo); - } else if (item.startsWith("network")) { // 网卡信息 + } else if (item.startsWith("network") || item.startsWith("communication")) { // 网卡信息 qCDebug(appLog) << "Parsing lshw network info."; getMapInfoFromLshw(item, mapInfo); addMapInfo("lshw_network", mapInfo); diff --git a/deepin-devicemanager/src/GenerateDevice/DeviceGenerator.cpp b/deepin-devicemanager/src/GenerateDevice/DeviceGenerator.cpp index b9132679..9ee81c72 100644 --- a/deepin-devicemanager/src/GenerateDevice/DeviceGenerator.cpp +++ b/deepin-devicemanager/src/GenerateDevice/DeviceGenerator.cpp @@ -296,7 +296,7 @@ void DeviceGenerator::generatorMonitorDevice() bool isValidLogicalName(const QString& logicalName) { - if (logicalName.contains("p2p", Qt::CaseInsensitive)) + if (logicalName.contains("p2p", Qt::CaseInsensitive) || logicalName.isEmpty()) return false; QString addressFilePath = "/sys/class/net/" + logicalName;