log0.4
This commit is contained in:
@@ -40,26 +40,37 @@ bool CoreService::initialize()
|
||||
const QString configPath =
|
||||
QDir::homePath() + QStringLiteral("/softbus/config/daemon_config.json");
|
||||
|
||||
QFile f(configPath);
|
||||
if (!f.open(QIODevice::ReadOnly | QIODevice::Text)) {
|
||||
LOG_ERROR() << "CoreService: failed to open" << configPath;
|
||||
return false;
|
||||
auto& bus = softbus::device_bus::DeviceBus::instance();
|
||||
bus.setConfigPath(configPath);
|
||||
|
||||
QJsonObject root;
|
||||
const QFileInfo fi(configPath);
|
||||
if (!fi.exists()) {
|
||||
LOG_WARNING() << "CoreService: config not found, skip load:" << configPath;
|
||||
root.insert(QStringLiteral("device_tree"), QJsonArray{});
|
||||
bus.markDeviceTreeDirty(); // 首次启动:退出时至少会落一个最小配置文件
|
||||
} else {
|
||||
QFile f(configPath);
|
||||
if (!f.open(QIODevice::ReadOnly | QIODevice::Text)) {
|
||||
LOG_ERROR() << "CoreService: failed to open" << configPath;
|
||||
return false;
|
||||
}
|
||||
|
||||
const QByteArray data = f.readAll();
|
||||
f.close();
|
||||
|
||||
QJsonParseError pe;
|
||||
const QJsonDocument doc = QJsonDocument::fromJson(data, &pe);
|
||||
if (pe.error != QJsonParseError::NoError || !doc.isObject()) {
|
||||
LOG_ERROR() << "CoreService: invalid JSON in" << configPath << ":" << pe.errorString();
|
||||
return false;
|
||||
}
|
||||
|
||||
root = doc.object();
|
||||
}
|
||||
|
||||
const QByteArray data = f.readAll();
|
||||
f.close();
|
||||
|
||||
QJsonParseError pe;
|
||||
const QJsonDocument doc = QJsonDocument::fromJson(data, &pe);
|
||||
if (pe.error != QJsonParseError::NoError || !doc.isObject()) {
|
||||
LOG_ERROR() << "CoreService: invalid JSON in" << configPath << ":" << pe.errorString();
|
||||
return false;
|
||||
}
|
||||
|
||||
const QJsonObject root = doc.object();
|
||||
|
||||
// 2. 初始化 device_bus(交给 DeviceBus facade 处理具体设备)
|
||||
if (!softbus::device_bus::DeviceBus::instance().initialize(root)) {
|
||||
if (!bus.initialize(root)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,39 +0,0 @@
|
||||
#include "core/device/DeviceTypes.h"
|
||||
|
||||
namespace softbus::core::device
|
||||
{
|
||||
|
||||
DeviceKind kindFromType(const QString& typeStr)
|
||||
{
|
||||
const QString t = typeStr.trimmed().toLower();
|
||||
if (t == QStringLiteral("serial")) return DeviceKind::Serial;
|
||||
if (t == QStringLiteral("can")) return DeviceKind::Can;
|
||||
if (t == QStringLiteral("ethernet") || t == QStringLiteral("network")) return DeviceKind::Network;
|
||||
if (t == QStringLiteral("virtual")) return DeviceKind::Virtual;
|
||||
if (t == QStringLiteral("distributed")) return DeviceKind::Distributed;
|
||||
return DeviceKind::Unknown;
|
||||
}
|
||||
|
||||
DeviceKind inferDeviceKindFromEndpoint(const QString& endpoint)
|
||||
{
|
||||
const QString ep = endpoint.trimmed();
|
||||
if (ep.startsWith(QStringLiteral("/dev/tty"))) return DeviceKind::Serial;
|
||||
if (ep.startsWith(QStringLiteral("can"))) return DeviceKind::Can;
|
||||
if (ep.startsWith(QStringLiteral("tcp://")) || ep.startsWith(QStringLiteral("udp://"))) return DeviceKind::Network;
|
||||
return DeviceKind::Unknown;
|
||||
}
|
||||
|
||||
QString driverKeyFor(DeviceKind kind)
|
||||
{
|
||||
switch (kind) {
|
||||
case DeviceKind::Serial: return QStringLiteral("serial_qt");
|
||||
case DeviceKind::Can: return QStringLiteral("can_socketcan");
|
||||
case DeviceKind::Network: return QStringLiteral("tcp_qt");
|
||||
case DeviceKind::Virtual: return QStringLiteral("virtual_device");
|
||||
case DeviceKind::Distributed: return QStringLiteral("distributed_node");
|
||||
default: return QStringLiteral("unknown");
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace softbus::core::device
|
||||
|
||||
@@ -1,69 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
#include <QDateTime>
|
||||
#include <QJsonDocument>
|
||||
#include <QJsonObject>
|
||||
#include <QString>
|
||||
|
||||
namespace softbus::core::device
|
||||
{
|
||||
|
||||
enum class DeviceKind {
|
||||
Serial,
|
||||
Can,
|
||||
Network,
|
||||
Virtual,
|
||||
Distributed,
|
||||
Unknown,
|
||||
};
|
||||
|
||||
struct DeviceInfo
|
||||
{
|
||||
int id{0};
|
||||
QString endpoint;
|
||||
QString name;
|
||||
QString type; // "serial" / "can" / "network" / ...
|
||||
int address{0};
|
||||
QString protocol;
|
||||
QString protocolDetail;
|
||||
QJsonObject properties;
|
||||
QString status{QStringLiteral("online")};
|
||||
bool isActive{true};
|
||||
QDateTime lastSeen;
|
||||
|
||||
QString toJson() const
|
||||
{
|
||||
QJsonObject obj;
|
||||
obj[QStringLiteral("id")] = id;
|
||||
obj[QStringLiteral("endpoint")] = endpoint;
|
||||
obj[QStringLiteral("name")] = name;
|
||||
obj[QStringLiteral("type")] = type;
|
||||
obj[QStringLiteral("address")] = address;
|
||||
obj[QStringLiteral("protocol")] = protocol;
|
||||
obj[QStringLiteral("protocol_detail")] = protocolDetail;
|
||||
obj[QStringLiteral("properties")] = properties;
|
||||
obj[QStringLiteral("status")] = status;
|
||||
obj[QStringLiteral("isActive")] = isActive;
|
||||
if (lastSeen.isValid()) {
|
||||
obj[QStringLiteral("lastSeen")] = lastSeen.toString(Qt::ISODate);
|
||||
}
|
||||
const QJsonDocument doc(obj);
|
||||
return QString::fromUtf8(doc.toJson(QJsonDocument::Compact));
|
||||
}
|
||||
};
|
||||
|
||||
struct BusMessage
|
||||
{
|
||||
QString id;
|
||||
QString source;
|
||||
QString destination;
|
||||
QJsonObject payload;
|
||||
qint64 timestamp{0};
|
||||
};
|
||||
|
||||
DeviceKind kindFromType(const QString& typeStr);
|
||||
DeviceKind inferDeviceKindFromEndpoint(const QString& endpoint);
|
||||
QString driverKeyFor(DeviceKind kind);
|
||||
|
||||
} // namespace softbus::core::device
|
||||
|
||||
Reference in New Issue
Block a user