diff --git a/Release/include/XNCore/XNModelObject.h b/Release/include/XNCore/XNModelObject.h index eb1a203..f6b6467 100644 --- a/Release/include/XNCore/XNModelObject.h +++ b/Release/include/XNCore/XNModelObject.h @@ -194,14 +194,14 @@ public: void class ::RegisterDDSParticipant() \ { \ XNModelObject::RegisterDDSParticipant(); \ - Q_D(class); \ + T_D(); \ auto framework = GetFramework(); \ if (!framework) \ return; \ XNDDSManagerPtr ddsManager = framework->GetDDSManager(); \ if (!ddsManager) \ return; \ - quint32 MyID = getUniqueId(); + uint32_t MyID = GetUniqueId(); #define XN_PUBLISHTOPIC(topic) \ d->_dataWriters[#topic] = ddsManager->RegisterPublisher(#topic, MyID); @@ -215,6 +215,6 @@ public: #define XN_MODEL_INITIALIZE(ClassName) \ extern "C" XNModelObjectPtr Initial##ClassName() \ { \ - ClassNamePtr obj = std::make_shared(); \ + ClassName##Ptr obj = std::make_shared(); \ return obj; \ } diff --git a/XNCore/XNModelObject.h b/XNCore/XNModelObject.h index eb1a203..f6b6467 100755 --- a/XNCore/XNModelObject.h +++ b/XNCore/XNModelObject.h @@ -194,14 +194,14 @@ public: void class ::RegisterDDSParticipant() \ { \ XNModelObject::RegisterDDSParticipant(); \ - Q_D(class); \ + T_D(); \ auto framework = GetFramework(); \ if (!framework) \ return; \ XNDDSManagerPtr ddsManager = framework->GetDDSManager(); \ if (!ddsManager) \ return; \ - quint32 MyID = getUniqueId(); + uint32_t MyID = GetUniqueId(); #define XN_PUBLISHTOPIC(topic) \ d->_dataWriters[#topic] = ddsManager->RegisterPublisher(#topic, MyID); @@ -215,6 +215,6 @@ public: #define XN_MODEL_INITIALIZE(ClassName) \ extern "C" XNModelObjectPtr Initial##ClassName() \ { \ - ClassNamePtr obj = std::make_shared(); \ + ClassName##Ptr obj = std::make_shared(); \ return obj; \ } diff --git a/XNModels/XNAerodynamics/.vscode/settings.json b/XNModels/XNAerodynamics/.vscode/settings.json index 03b482d..69ee91c 100755 --- a/XNModels/XNAerodynamics/.vscode/settings.json +++ b/XNModels/XNAerodynamics/.vscode/settings.json @@ -3,6 +3,10 @@ "*.cpp": "cpp", "functional": "cpp", "qhash": "cpp", - "qstringlist": "cpp" + "qstringlist": "cpp", + "*.ipp": "cpp", + "*.tcc": "cpp", + "optional": "cpp", + "type_traits": "cpp" } } \ No newline at end of file diff --git a/XNModels/XNAerodynamics/XNAerodynamics/XNAerodynamics.cpp b/XNModels/XNAerodynamics/XNAerodynamics/XNAerodynamics.cpp index aea4d50..0b24859 100755 --- a/XNModels/XNAerodynamics/XNAerodynamics/XNAerodynamics.cpp +++ b/XNModels/XNAerodynamics/XNAerodynamics/XNAerodynamics.cpp @@ -2,17 +2,16 @@ #include "XNAerodynamics_p.h" #include #include -#include +#include -XN_DLL_INITIALIZE(XNAerodynamics) +XN_MODEL_INITIALIZE(XNAerodynamics) XN_REGISTER_PARTICIPANT_BEGIN(XNAerodynamics) XN_PUBLISHTOPIC(XNSim::ATA04::Aerodynamics_output) XN_PUBLISHTOPIC(XNSim::ATA04::Aerodynamics_heartbeat) XN_SUBSCRIBETOPIC(XNSim::ATA04::Aerodynamics_input, &XNAerodynamics::OnInput) XN_REGISTER_PARTICIPANT_END(XNAerodynamics) -XNAerodynamics::XNAerodynamics(QObject *parent) - : XNModelObject(*new XNAerodynamicsPrivate(this), parent) +XNAerodynamics::XNAerodynamics() : XNModelObject(new XNAerodynamicsPrivate()) { } @@ -20,28 +19,26 @@ XNAerodynamics::~XNAerodynamics() { } -XNAerodynamics::XNAerodynamics(XNAerodynamicsPrivate &dd, QObject *parent) - : XNModelObject(dd, parent) +XNAerodynamics::XNAerodynamics(PrivateType *p) : XNModelObject(p) { } -void XNAerodynamics::OnInitialize() +void XNAerodynamics::Initialize(uint32_t initialType, uint32_t threadID) { - Q_D(XNAerodynamics); - XNModelObject::OnInitialize(); + T_D(); + XNModelObject::Initialize(initialType, threadID); if (d->_dynamicLib) { - d->_fun = reinterpret_cast( - d->_dynamicLib->resolve("_Z27SACSCAerodynamicsEntryPointP20ComacDataStructure_S")); + d->_fun = (FunctionType)dlsym(d->_dynamicLib, d->_entryPointName.c_str()); if (!d->_fun) { LOG_WARNING("Failed to resolve SACSCAerodynamicsEntryPoint"); } } } -void XNAerodynamics::OnPrepareForExecute() +void XNAerodynamics::PrepareForExecute() { - Q_D(XNAerodynamics); - XNModelObject::OnPrepareForExecute(); + T_D(); + XNModelObject::PrepareForExecute(); d->_data.aero_model_heartbeat = 0; d->_data.input_aero = new input_aero_S; d->_data.input_aero->l_04_i_aerocomac_ail_f8 = (double *)calloc(2, sizeof(double)); @@ -58,10 +55,10 @@ void XNAerodynamics::OnPrepareForExecute() void XNAerodynamics::StepUpdate() { - Q_D(XNAerodynamics); + T_D(); XNModelObject::StepUpdate(); if (d->_fun) { - QMutexLocker locker(&d->_mutex); + std::lock_guard locker(d->_mutex); d->_fun(&d->_data); } OnOutput(); @@ -69,7 +66,7 @@ void XNAerodynamics::StepUpdate() void XNAerodynamics::OnOutput() { - Q_D(XNAerodynamics); + T_D(); //DDS心跳发布 XNSim::ATA04::Aerodynamics_heartbeat heartbeat; heartbeat.aero_model_heartbeat(d->_data.aero_model_heartbeat); @@ -94,8 +91,8 @@ void XNAerodynamics::OnOutput() void XNAerodynamics::OnInput(const XNSim::ATA04::Aerodynamics_input &input) { - Q_D(XNAerodynamics); - QMutexLocker locker(&d->_mutex); + T_D(); + std::lock_guard locker(d->_mutex); if (input.l_04_i_aerocomac_alpha_f8()) { d->_data.input_aero->l_04_i_aerocomac_alpha_f8 = input.l_04_i_aerocomac_alpha_f8().value(); } diff --git a/XNModels/XNAerodynamics/XNAerodynamics/XNAerodynamics.h b/XNModels/XNAerodynamics/XNAerodynamics/XNAerodynamics.h index 61aa01d..f60f62a 100755 --- a/XNModels/XNAerodynamics/XNAerodynamics/XNAerodynamics.h +++ b/XNModels/XNAerodynamics/XNAerodynamics/XNAerodynamics.h @@ -7,20 +7,19 @@ class XNAerodynamicsPrivate; class XNAERODYNAMICS_EXPORT XNAerodynamics : public XNModelObject { - Q_OBJECT - Q_DISABLE_COPY(XNAerodynamics) - Q_DECLARE_PRIVATE(XNAerodynamics) + XN_METATYPE(XNAerodynamics, XNModelObject) + XN_DECLARE_PRIVATE(XNAerodynamics) XN_DECLARE_DDS() public: - explicit XNAerodynamics(QObject *parent = nullptr); + XNAerodynamics(); virtual ~XNAerodynamics(); protected: - XNAerodynamics(XNAerodynamicsPrivate &dd, QObject *parent = nullptr); + XNAerodynamics(PrivateType *p); -public slots: - virtual void OnInitialize() override; - virtual void OnPrepareForExecute() override; +public: + virtual void Initialize(uint32_t initialType, uint32_t threadID) override; + virtual void PrepareForExecute() override; public: virtual void StepUpdate() override; @@ -30,4 +29,4 @@ private: void OnInput(const XNSim::ATA04::Aerodynamics_input &input); }; -Q_DECLARE_METATYPE(XNAerodynamics) +XNCLASS_PTR_DECLARE(XNAerodynamics) diff --git a/XNModels/XNAerodynamics/XNAerodynamics/XNAerodynamics_global.h b/XNModels/XNAerodynamics/XNAerodynamics/XNAerodynamics_global.h index b860a9d..d5c5a5e 100755 --- a/XNModels/XNAerodynamics/XNAerodynamics/XNAerodynamics_global.h +++ b/XNModels/XNAerodynamics/XNAerodynamics/XNAerodynamics_global.h @@ -1,12 +1,10 @@ #ifndef XNAERODYNAMICS_GLOBAL_H #define XNAERODYNAMICS_GLOBAL_H -#include - #if defined(XNAERODYNAMICS_LIBRARY) -#define XNAERODYNAMICS_EXPORT Q_DECL_EXPORT +# define XNAERODYNAMICS_EXPORT __attribute__((visibility("default"))) #else -#define XNAERODYNAMICS_EXPORT Q_DECL_IMPORT +# define XNAERODYNAMICS_EXPORT __attribute__((visibility("default"))) #endif #endif // XNAERODYNAMICS_GLOBAL_H diff --git a/XNModels/XNAerodynamics/XNAerodynamics/XNAerodynamics_p.h b/XNModels/XNAerodynamics/XNAerodynamics/XNAerodynamics_p.h index c0c2a8b..8c4644c 100755 --- a/XNModels/XNAerodynamics/XNAerodynamics/XNAerodynamics_p.h +++ b/XNModels/XNAerodynamics/XNAerodynamics/XNAerodynamics_p.h @@ -1,20 +1,15 @@ #pragma once #include #include -#include typedef void (*FunctionType)(ComacDataStructure_S *); -class XNAerodynamicsPrivate : public XNModelObjectPrivate -{ -public: - Q_DECLARE_PUBLIC(XNAerodynamics) - - XNAerodynamicsPrivate(XNAerodynamics *q) : XNModelObjectPrivate(q) {} - +struct XNAerodynamicsPrivate : public XNModelObjectPrivate { FunctionType _fun = nullptr; ComacDataStructure_S _data; - QMutex _mutex; + std::string _entryPointName = "_Z27SACSCAerodynamicsEntryPointP20ComacDataStructure_S"; + + std::mutex _mutex; };