#pragma once #include "messagebasic_global.h" #include #include #define NAME(v) #v #define DOUBLE_SAVE(u) obj[NAME(u)] = u #define DOUOBLE_PEAK(u) u = obj[NAME(u)].toDouble() #define STRING_SAVE(u) obj[NAME(u)] = u #define STRING_PEAK(u) u = obj[NAME(u)].toString() #define STRLIST_SAVE(u) obj[NAME(u)] = u.join(",") #define STRLIST_PEAK(u) u = obj[NAME(u)].toString().split(",") class MESSAGEBASIC_EXPORT AbstractMessage : public WsMessage { private: uint64_t _from_id = 0, _to_id = 0; QString _topic_string; public: AbstractMessage(const QString& topic); virtual ~AbstractMessage() = default; void reset(uint64_t from, uint64_t to); // 通过 WsMessage 继承 void recoveryFrom(const QJsonObject& obj) override; void saveTo(QJsonObject& obj) const override; QString topicString() const override; uint64_t targetEntity() const override; uint64_t sourceEntity() const override; }; /// /// 推演请求 /// struct MESSAGEBASIC_EXPORT DeduceRequest : public AbstractMessage { DeduceRequest(); }; /// /// 默认的无返回消息的处理过程通用返回消息 /// struct MESSAGEBASIC_EXPORT RespondDefault : public AbstractMessage { double _time_consume; RespondDefault(); // 通过 WsMessage 继承 void recoveryFrom(const QJsonObject& obj) override; void saveTo(QJsonObject& obj) const override; }; /// /// 时间同步消息 /// struct MESSAGEBASIC_EXPORT SyncRequest : public AbstractMessage { double _time_current; SyncRequest(); // 通过 WsMessage 继承 void recoveryFrom(const QJsonObject& obj) override; void saveTo(QJsonObject& obj) const override; }; // 体积盒可视化插件定义消息 ======================================================= /// /// 获取体积盒详细数据 /// struct MESSAGEBASIC_EXPORT Get3DBox : public AbstractMessage { Get3DBox(); }; /// /// 姿态数据结构定义 /// struct Posture { double _azimuth_deg = 0; double _pitch_deg = 0; double _roll_deg = 0; }; /// /// 三维数据结构定义 /// struct D3Data { double _length_m = 0; double _width_m = 0; double _height_m = 0; }; /// /// 体积盒详细数据定义 /// struct MESSAGEBASIC_EXPORT Box3DDesc : public AbstractMessage { D3Data _d3_data; Posture _posture_d3; LLAPos _lla_pos; Box3DDesc(); // 通过 WsMessage 继承 void recoveryFrom(const QJsonObject& obj) override; void saveTo(QJsonObject& obj) const override; }; // 实体构造消息定义 ========================================== /// /// 实体构造 /// struct MESSAGEBASIC_EXPORT EntityAllocte : public AbstractMessage { QString _entity_templet = ""; EntityAllocte(); // 通过 WsMessage 继承 void recoveryFrom(const QJsonObject& obj) override; void saveTo(QJsonObject& obj) const override; }; struct MESSAGEBASIC_EXPORT EntityTotalGet : public AbstractMessage { EntityTotalGet(); }; struct MESSAGEBASIC_EXPORT EntityTotalList : public AbstractMessage { QList _entities_list; // 通过 WsMessage 继承 void recoveryFrom(const QJsonObject& obj) override; void saveTo(QJsonObject& obj) const override; };