1. 增加了嵌入式rpc的dto封装,负责中转来自嵌入式设备的信息,支持tcp,websocket,serial常见的通信方式。嵌入式rpc框架可见Yosuga_embedded.
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
//
|
||||
// Created by Yosuga on 2026/4/25.
|
||||
//
|
||||
|
||||
#include "DeviceDataTransferObject.h"
|
||||
|
||||
DeviceDataTransferObject::DeviceDataTransferObject(
|
||||
QString action,
|
||||
QString deviceId,
|
||||
QJsonObject payload
|
||||
) : m_action(std::move(action))
|
||||
, m_deviceId(std::move(deviceId))
|
||||
, m_payload(std::move(payload))
|
||||
{
|
||||
}
|
||||
|
||||
DeviceDataTransferObject DeviceDataTransferObject::fromJson(const QJsonObject& json)
|
||||
{
|
||||
DeviceDataTransferObject obj;
|
||||
obj.m_action = json.value("action").toString("device_command");
|
||||
obj.m_deviceId = json.value("device_id").toString("");
|
||||
QJsonValue payloadVal = json.value("payload");
|
||||
if (payloadVal.isString()) {
|
||||
obj.m_payload["rpc_call"] = payloadVal.toString();
|
||||
} else if (payloadVal.isObject()) {
|
||||
obj.m_payload = payloadVal.toObject();
|
||||
}
|
||||
return obj;
|
||||
}
|
||||
|
||||
QJsonObject DeviceDataTransferObject::toJson() const
|
||||
{
|
||||
QJsonObject json;
|
||||
json["action"] = m_action;
|
||||
if (!m_deviceId.isEmpty()) {
|
||||
json["device_id"] = m_deviceId;
|
||||
}
|
||||
json["payload"] = m_payload;
|
||||
return json;
|
||||
}
|
||||
|
||||
DeviceDataTransferObject& DeviceDataTransferObject::setData(const QString& key, const QJsonValue& value)
|
||||
{
|
||||
if (key == "action") m_action = value.toString();
|
||||
else if (key == "device_id") m_deviceId = value.toString();
|
||||
else if (key == "payload") m_payload = value.toObject();
|
||||
return *this;
|
||||
}
|
||||
Reference in New Issue
Block a user