增加设备发现过滤配置,以灵活支持T013以及后续型号。
This commit is contained in:
parent
4234c17137
commit
6810dbd801
@ -248,7 +248,10 @@ void Application::startSearchDevice() {
|
||||
}
|
||||
|
||||
void Application::upgradeDevice(const QString &file) {
|
||||
constexpr auto versionPrefix = "RD_T009";
|
||||
if (m_device.expired()) return;
|
||||
auto device = m_device.lock();
|
||||
auto infomation = device->infomation();
|
||||
auto versionPrefix = infomation.softwareVersion.left(7);
|
||||
constexpr auto version = "RD_T009_V21R003B013";
|
||||
QFileInfo fileInfo(file);
|
||||
QString baseName = fileInfo.baseName();
|
||||
@ -258,13 +261,10 @@ void Application::upgradeDevice(const QString &file) {
|
||||
return;
|
||||
}
|
||||
QString firmware = baseName.mid(position, std::strlen(version));
|
||||
if (!m_device.expired()) {
|
||||
auto device = m_device.lock();
|
||||
if (device->isConnected()) {
|
||||
device->requestOta(firmware, file);
|
||||
} else {
|
||||
emit newMessage(2, "OTA升级", "设备已离线,请重新连接设备!");
|
||||
}
|
||||
if (device->isConnected()) {
|
||||
device->requestOta(firmware, file);
|
||||
} else {
|
||||
emit newMessage(2, "OTA升级", "设备已离线,请重新连接设备!");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -29,7 +29,7 @@ else()
|
||||
endif()
|
||||
option(Boost_USE_STATIC_LIBS OFF)
|
||||
|
||||
set(FFmpeg_ROOT ${Libraries_ROOT}/ffmpeg-6.1.1-full_build-shared)
|
||||
set(FFmpeg_ROOT ${Libraries_ROOT}/ffmpeg-7.0.2-full_build-shared)
|
||||
set(FFmpeg_INCLUDE_DIR ${FFmpeg_ROOT}/include)
|
||||
set(FFmpeg_LIB_DIR ${FFmpeg_ROOT}/lib)
|
||||
|
||||
|
@ -407,18 +407,6 @@ void DeviceConnection::transferBinContent() {
|
||||
} else if (m_sendedSize >= m_uploadBuffer.size()) {
|
||||
LOG(info) << "transfer ota file finished, wait " << WaitMd5CheckTime
|
||||
<< " ms for send check, total sended size: " << m_sendedSize;
|
||||
// QTimer::singleShot(WaitMd5CheckTime, this, [this]() {
|
||||
// boost::json::object request;
|
||||
// request["func"] = "a22devicefirmware_setdata";
|
||||
// request["deviceid"] = "0";
|
||||
// boost::json::object data;
|
||||
// data["target_linux04_firmware"] = "RD_T009_V21R003B001";
|
||||
// request["data"] = std::move(data);
|
||||
// auto text = boost::json::serialize(request);
|
||||
// m_commandSocket->write(text.data(), text.size());
|
||||
// LOG(info) << "request md5 check result: " << text;
|
||||
// });
|
||||
|
||||
if (m_otaTimer == nullptr) {
|
||||
m_otaTimer = new QTimer(this);
|
||||
m_otaTimer->setSingleShot(true);
|
||||
|
@ -1,6 +1,7 @@
|
||||
#include "DeviceListModel.h"
|
||||
#include "BoostLog.h"
|
||||
#include "DeviceConnection.h"
|
||||
#include "Settings.h"
|
||||
#include <QNetworkDatagram>
|
||||
#include <QNetworkInterface>
|
||||
#include <QTimer>
|
||||
@ -186,6 +187,7 @@ void DeviceListModel::onDeviceDisconnected() {
|
||||
}
|
||||
|
||||
void DeviceListModel::onDeviceReplyReadyRead() {
|
||||
using namespace Amass;
|
||||
auto udp = dynamic_cast<QUdpSocket *>(sender());
|
||||
while (udp->hasPendingDatagrams()) {
|
||||
QNetworkDatagram datagram = udp->receiveDatagram();
|
||||
@ -202,7 +204,12 @@ void DeviceListModel::onDeviceReplyReadyRead() {
|
||||
if (reply.contains("sw_ver")) {
|
||||
device.softwareVersion = QString::fromStdString(std::string(reply.at("sw_ver").as_string()));
|
||||
}
|
||||
if (!device.softwareVersion.startsWith("RD_T009")) continue; // 其它设备不予显示
|
||||
auto settings = Singleton<Settings>::instance();
|
||||
auto supportedDevices = settings->supportedDevices();
|
||||
auto item = std::find_if(supportedDevices.cbegin(), supportedDevices.cend(), [&device](const std::string &model) {
|
||||
return device.softwareVersion.startsWith(QString::fromStdString(model));
|
||||
});
|
||||
if (item == supportedDevices.cend()) continue; // 其它设备不予显示
|
||||
device.ip = datagram.senderAddress().toString();
|
||||
|
||||
auto iterator = std::find_if(m_devices.cbegin(), m_devices.cend(),
|
||||
|
22
Settings.cpp
22
Settings.cpp
@ -25,20 +25,36 @@ void Settings::save() {
|
||||
ptree.put("Application.DataCollection.ImageQuality", m_imageQuality);
|
||||
ptree.put("Application.DataCollection.ImageQuality.<xmlcomment>", "0-100,仅对jpg有效");
|
||||
|
||||
for (auto &device : m_supportedDevices) {
|
||||
ptree.add("Application.SupportedDevices.Model", device);
|
||||
}
|
||||
|
||||
boost::property_tree::xml_writer_settings<std::string> settings('\t', 1);
|
||||
boost::property_tree::write_xml(SettingsFilePath, ptree, std::locale(), settings);
|
||||
}
|
||||
|
||||
void Settings::load() {
|
||||
boost::property_tree::ptree ptree;
|
||||
m_supportedDevices.clear();
|
||||
try {
|
||||
boost::property_tree::read_xml(SettingsFilePath, ptree);
|
||||
m_imageFormat = static_cast<ImageFormat>(ptree.get<int>("Application.DataCollection.ImageFormat"));
|
||||
m_imageQuality = ptree.get<int>("Application.DataCollection.ImageQuality");
|
||||
for (auto &child : ptree.get_child("Application.SupportedDevices")) {
|
||||
if (child.first != "Model") continue;
|
||||
m_supportedDevices.push_back(child.second.get<std::string>(""));
|
||||
}
|
||||
} catch (...) {
|
||||
LOG(error) << "parse " << SettingsFilePath << " failed.";
|
||||
}
|
||||
LOG(info) << "image format: " << m_imageFormat << ", quality: " << m_imageQuality;
|
||||
std::ostringstream oss;
|
||||
oss << "[";
|
||||
for (auto &device : m_supportedDevices) {
|
||||
oss << device << ", ";
|
||||
}
|
||||
oss << "]";
|
||||
LOG(info) << "image format: " << m_imageFormat << ", quality: " << m_imageQuality
|
||||
<< ", supported devices: " << oss.str();
|
||||
}
|
||||
|
||||
ImageFormat Settings::imageFormat() const {
|
||||
@ -48,3 +64,7 @@ ImageFormat Settings::imageFormat() const {
|
||||
int Settings::imageQuality() const {
|
||||
return m_imageQuality;
|
||||
}
|
||||
|
||||
std::list<std::string> Settings::supportedDevices() const {
|
||||
return m_supportedDevices;
|
||||
}
|
||||
|
@ -12,6 +12,7 @@ public:
|
||||
void load();
|
||||
ImageFormat imageFormat() const;
|
||||
int imageQuality() const;
|
||||
std::list<std::string> supportedDevices() const;
|
||||
|
||||
protected:
|
||||
Settings();
|
||||
@ -19,6 +20,7 @@ protected:
|
||||
private:
|
||||
ImageFormat m_imageFormat = ImageFormat::Jpeg; // 0: jpg 1: yuv
|
||||
int m_imageQuality = 100;
|
||||
std::list<std::string> m_supportedDevices{"RD_T009", "RD_T013"};
|
||||
};
|
||||
|
||||
#endif // SETTINGS_H
|
||||
|
@ -80,7 +80,7 @@ ApplicationWindow {
|
||||
deviceList.currentIndex = index
|
||||
}
|
||||
onDoubleClicked: {
|
||||
if (!softwareVersion.includes("R003")) {
|
||||
if (softwareVersion.includes("T009") && !softwareVersion.includes("R003")) {
|
||||
showMessageDialog(2, "网络设置", "当前设备不支持有线网络设置!")
|
||||
} else if (onlineStatus) {
|
||||
networkPopup.open()
|
||||
|
Loading…
Reference in New Issue
Block a user