Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 19 additions & 11 deletions deepin-devicemanager/src/GenerateDevice/CmdTool.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -552,8 +552,7 @@
// bug 目前服务端与直接执行命令获取结果不一致
QProcess process;
int msecs = 10000;
QString cmd = "hciconfig --all";
process.start(cmd);
process.start("hciconfig", QStringList() << "--all");

// 获取命令执行结果
bool res = process.waitForFinished(msecs);
Expand Down Expand Up @@ -593,7 +592,7 @@
return;
}
QProcess process;
process.start("bluetoothctl show " + mapInfo["BD Address"]);
process.start("bluetoothctl", QStringList() << "show" << mapInfo["BD Address"]);
process.waitForFinished(2000);
QString deviceInfo = process.readAllStandardOutput();
qCDebug(appLog) << "bluetoothctl output:" << deviceInfo;
Expand Down Expand Up @@ -736,10 +735,9 @@
return;
}

QString cmd = QString("nvidia-settings -q GPUMemoryInterface");
QString sInfo;
QProcess process;
process.start(cmd);
process.start("nvidia-settings", QStringList() << "-q" << "GPUMemoryInterface");
process.waitForFinished(-1);
sInfo = process.readAllStandardOutput();
QStringList lines = sInfo.split("\n");
Expand Down Expand Up @@ -1054,10 +1052,13 @@
// 加载nvidia-settings -q VideoRam 信息
// 命令与xrandr命令一样无法在后台运行,该从前台命令直接获取信息
QString deviceInfo;
if (getDeviceInfoFromCmd(deviceInfo, "nvidia-smi -L")) {
QString program { "nvidia-smi" };
QStringList arguments;
arguments << "-L";
if (getDeviceInfoFromCmd(deviceInfo, program, arguments)) {

Check warning on line 1058 in deepin-devicemanager/src/GenerateDevice/CmdTool.cpp

View workflow job for this annotation

GitHub Actions / cppcheck

Condition 'getDeviceInfoFromCmd(deviceInfo,program,arguments)' is always true

Check warning on line 1058 in deepin-devicemanager/src/GenerateDevice/CmdTool.cpp

View workflow job for this annotation

GitHub Actions / static-check / static-check

Condition 'getDeviceInfoFromCmd(deviceInfo,program,arguments)' is always true
qCDebug(appLog) << "nvidia-smi -L output:" << deviceInfo;
QStringList gpuList = deviceInfo.split("\n");
for (QString item : gpuList) {

Check warning on line 1061 in deepin-devicemanager/src/GenerateDevice/CmdTool.cpp

View workflow job for this annotation

GitHub Actions / cppcheck

Variable 'item' is used to iterate by value. It could be declared as a const reference which is usually faster and recommended in C++.

Check warning on line 1061 in deepin-devicemanager/src/GenerateDevice/CmdTool.cpp

View workflow job for this annotation

GitHub Actions / cppcheck

Local variable 'item' shadows outer variable

Check warning on line 1061 in deepin-devicemanager/src/GenerateDevice/CmdTool.cpp

View workflow job for this annotation

GitHub Actions / static-check / static-check

Variable 'item' is used to iterate by value. It could be declared as a const reference which is usually faster and recommended in C++.

Check warning on line 1061 in deepin-devicemanager/src/GenerateDevice/CmdTool.cpp

View workflow job for this annotation

GitHub Actions / static-check / static-check

Local variable 'item' shadows outer variable
int index = item.indexOf(":");
if (item.isEmpty() || index == -1)
continue;
Expand All @@ -1079,7 +1080,9 @@
}

QString memoryInfo;
if (!getDeviceInfoFromCmd(memoryInfo, QString("nvidia-smi -i %1 -q -d MEMORY").arg(gpuNumList[1])))
arguments.clear();
arguments << "-i" << gpuNumList[1] << "-q" << "-d" << "MEMORY";
if (!getDeviceInfoFromCmd(memoryInfo, program, arguments))

Check warning on line 1085 in deepin-devicemanager/src/GenerateDevice/CmdTool.cpp

View workflow job for this annotation

GitHub Actions / cppcheck

Condition '!getDeviceInfoFromCmd(memoryInfo,program,arguments)' is always false

Check warning on line 1085 in deepin-devicemanager/src/GenerateDevice/CmdTool.cpp

View workflow job for this annotation

GitHub Actions / static-check / static-check

Condition '!getDeviceInfoFromCmd(memoryInfo,program,arguments)' is always false
continue;
qCDebug(appLog) << "nvidia-smi memory info for GPU" << gpuNumList[1] << ":" << memoryInfo;

Expand Down Expand Up @@ -1142,7 +1145,10 @@


QMap<QString, QString> mapInfo;
if (getDeviceInfoFromCmd(deviceInfo, "nvidia-settings -q VideoRam")) {
program = "nvidia-settings";
arguments.clear();
arguments << "-q" << "VideoRam";
if (getDeviceInfoFromCmd(deviceInfo, program, arguments)) {

Check warning on line 1151 in deepin-devicemanager/src/GenerateDevice/CmdTool.cpp

View workflow job for this annotation

GitHub Actions / cppcheck

Condition 'getDeviceInfoFromCmd(deviceInfo,program,arguments)' is always true

Check warning on line 1151 in deepin-devicemanager/src/GenerateDevice/CmdTool.cpp

View workflow job for this annotation

GitHub Actions / static-check / static-check

Condition 'getDeviceInfoFromCmd(deviceInfo,program,arguments)' is always true
qCDebug(appLog) << "nvidia-settings -q VideoRam output:" << deviceInfo;
QRegularExpression reg("[\\s\\S]*VideoRam[\\s\\S]*([0-9]{4,})[\\s\\S]*");
QStringList list = deviceInfo.split("\n");
Expand Down Expand Up @@ -1736,11 +1742,13 @@
return true;
}

bool CmdTool::getDeviceInfoFromCmd(QString &deviceInfo, const QString &cmd)
bool CmdTool::getDeviceInfoFromCmd(QString &deviceInfo,
const QString &program,
const QStringList &arguments)
{
qCDebug(appLog) << "Getting device info from command:" << cmd;
qCDebug(appLog) << "Getting device info from command:" << program;
QProcess process;
process.start(cmd);
process.start(program, arguments);
process.waitForFinished(-1);
deviceInfo = process.readAllStandardOutput();
qCDebug(appLog) << "Command output:" << deviceInfo;
Expand Down
7 changes: 4 additions & 3 deletions deepin-devicemanager/src/GenerateDevice/CmdTool.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
// Copyright (C) 2019 ~ 2020 Uniontech Software Technology Co.,Ltd.
// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd.
// SPDX-FileCopyrightText: 2019 - 2026 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: GPL-3.0-or-later

Expand Down Expand Up @@ -353,7 +352,9 @@ class CmdTool
* @param cmd:调试文件名称
* @return true:获取信息成功;false:获取信息失败
*/
bool getDeviceInfoFromCmd(QString &deviceInfo, const QString &cmd);
bool getDeviceInfoFromCmd(QString &deviceInfo,
const QString &program,
const QStringList &arguments);

/**
* @brief getDeviceInfo:通过文件获取设备信息字符
Expand Down
Loading