diff --git a/MessageBasic/MessageLoader.cpp b/MessageBasic/MessageLoader.cpp index 5363b4a..0d1dfcf 100644 --- a/MessageBasic/MessageLoader.cpp +++ b/MessageBasic/MessageLoader.cpp @@ -46,7 +46,25 @@ MessageLoader::MessageLoader() _message_types << std::make_shared(); } -QList> MessageLoader::allType() const +#include +QList MessageLoader::allType() const { - return _message_types; + QMutexLocker o(&const_cast(this)->_type_mutex); + + QList keys; + std::transform(_message_types.begin(), _message_types.end(), std::back_inserter(keys), + [](std::shared_ptr ins) { return ins->topicString(); }); + + return keys; +} + +std::shared_ptr MessageLoader::makeDefault(const QString& topic) const +{ + QMutexLocker o(&const_cast(this)->_type_mutex); + + for(auto it : this->_message_types) + if(it->topicString() == topic) + return std::dynamic_pointer_cast(it->newDefault()); + + return nullptr; } diff --git a/MessageBasic/MessageLoader.h b/MessageBasic/MessageLoader.h index ceee94d..2b9c6fa 100644 --- a/MessageBasic/MessageLoader.h +++ b/MessageBasic/MessageLoader.h @@ -1,14 +1,17 @@ #pragma once #include "messagebasic.h" +#include class MESSAGEBASIC_EXPORT MessageLoader { private: QList> _message_types; + QMutex _type_mutex; public: MessageLoader(); - QList> allType() const; + QList allType() const; + std::shared_ptr makeDefault(const QString &topic) const; }; diff --git a/MessageBasic/messagebasic.cpp b/MessageBasic/messagebasic.cpp index 940a9db..c3d7246 100644 --- a/MessageBasic/messagebasic.cpp +++ b/MessageBasic/messagebasic.cpp @@ -29,7 +29,7 @@ SyncRequest::SyncRequest() std::shared_ptr SyncRequest::newDefault() const { -return std::make_shared(); + return std::make_shared(); } void SyncRequest::recoveryFrom(const QJsonObject& obj) @@ -51,7 +51,7 @@ RespondDefault::RespondDefault() std::shared_ptr RespondDefault::newDefault() const { -return std::make_shared(); + return std::make_shared(); } void RespondDefault::recoveryFrom(const QJsonObject& obj) @@ -404,3 +404,21 @@ void Set3DBoxLLAPos::saveTo(QJsonObject& obj) const DOUBLE_SAVE(_lla_pos._lat_deg); DOUBLE_SAVE(_lla_pos._alt_m); } + +EntityInitialRequest::EntityInitialRequest() + :AbstractMessage(NAME(EntityInitialRequest)) { +} + +std::shared_ptr EntityInitialRequest::newDefault() const +{ + return std::make_shared(); +} + +EntityPreparedRequest::EntityPreparedRequest() + :AbstractMessage(NAME(EntityPreparedRequest)) { +} + +std::shared_ptr EntityPreparedRequest::newDefault() const +{ + return std::make_shared(); +} diff --git a/MessageBasic/messagebasic.h b/MessageBasic/messagebasic.h index e5ad3fd..4c9df50 100644 --- a/MessageBasic/messagebasic.h +++ b/MessageBasic/messagebasic.h @@ -6,7 +6,7 @@ #include #include -#define NAME(v) #v +#define NAME(v) QString(#v).replace(".","_").replace("->","_") #define DOUBLE_SAVE(u) obj[NAME(u)] = u #define DOUBLE_PEAK(u) u = obj[NAME(u)].toDouble() @@ -76,3 +76,19 @@ struct MESSAGEBASIC_EXPORT RespondDefault : public AbstractMessage { void recoveryFrom(const QJsonObject& obj) override; void saveTo(QJsonObject& obj) const override; }; + +/// +/// 实体初始化消息 +/// +struct MESSAGEBASIC_EXPORT EntityInitialRequest : public AbstractMessage { + EntityInitialRequest(); + std::shared_ptr newDefault() const override; +}; + +/// +/// 实体仿真准备消息 +/// +struct MESSAGEBASIC_EXPORT EntityPreparedRequest : public AbstractMessage{ + EntityPreparedRequest(); + std::shared_ptr newDefault() const override; +}; \ No newline at end of file diff --git a/MessageBasic/motion_access.cpp b/MessageBasic/motion_access.cpp index 9ca2683..5cea00c 100644 --- a/MessageBasic/motion_access.cpp +++ b/MessageBasic/motion_access.cpp @@ -63,10 +63,6 @@ void PlatformMotionSequence::saveTo(QJsonObject& obj) const } #include - -#define PI 3.14159265354 -auto deg2a = [](double v) { return v / 180.0 * PI; }; -auto rad2d = [](double v) { return v / PI * 180.0; }; #include #include StrightLineMotion::StrightLineMotion()