#pragma once #include "messagebasic_global.h" #include "simsbasic.h" #include "standardglobe.h" #define NAME(v) #v #define DOUBLE_SAVE(u) obj[NAME(u)] = u #define DOUOBLE_PEAK(u) u = obj[NAME(u)].toDouble() /// /// 推演请求 /// class MESSAGEBASIC_EXPORT DeduceRequest : public WsMessage { private: uint64_t _from_id = 0, _to_id = 0; public: DeduceRequest(); 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; }; /// /// 默认的无返回消息的处理过程通用返回消息 /// class MESSAGEBASIC_EXPORT RespondDefault : public WsMessage { private: uint64_t _from_id = 0, _to_id = 0; double _time_consume; public: RespondDefault(); void reset(uint64_t from, uint64_t to, double consume); double consume() const; // 通过 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; }; /// /// 时间同步消息 /// class MESSAGEBASIC_EXPORT SyncRequest : public WsMessage { private: uint64_t _from_id = 0, _to_id = 0; double _time_current; public: SyncRequest(); void reset(uint64_t from, uint64_t to, double timepoint); // 通过 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; }; // 体积盒可视化插件定义消息 ======================================================= /// /// 获取体积盒详细数据 /// class MESSAGEBASIC_EXPORT Get3DBox : public WsMessage { private: uint64_t _from_id = 0, _to_id = 0; public: Get3DBox(); 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 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; }; /// /// 体积盒详细数据定义 /// class MESSAGEBASIC_EXPORT Box3DDesc : public WsMessage { private: uint64_t _from_id = 0, _to_id = 0; D3Data _d3_data; Posture _posture_d3; LLAPos _lla_pos; public: Box3DDesc(); void setTarget(uint64_t from, uint64_t to); void setVolume(const D3Data &d); D3Data volume() const; void setPosture(const Posture &p); Posture posture() const; void setPosition(const LLAPos &lla); LLAPos position() const; // 通过 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; };