先提交气动模型的暂时修改
This commit is contained in:
parent
73d8dd7eab
commit
efcc6597cb
@ -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##PubSubType>(#topic, MyID);
|
||||
@ -215,6 +215,6 @@ public:
|
||||
#define XN_MODEL_INITIALIZE(ClassName) \
|
||||
extern "C" XNModelObjectPtr Initial##ClassName() \
|
||||
{ \
|
||||
ClassNamePtr obj = std::make_shared<ClassName>(); \
|
||||
ClassName##Ptr obj = std::make_shared<ClassName>(); \
|
||||
return obj; \
|
||||
}
|
||||
|
@ -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##PubSubType>(#topic, MyID);
|
||||
@ -215,6 +215,6 @@ public:
|
||||
#define XN_MODEL_INITIALIZE(ClassName) \
|
||||
extern "C" XNModelObjectPtr Initial##ClassName() \
|
||||
{ \
|
||||
ClassNamePtr obj = std::make_shared<ClassName>(); \
|
||||
ClassName##Ptr obj = std::make_shared<ClassName>(); \
|
||||
return obj; \
|
||||
}
|
||||
|
@ -3,6 +3,10 @@
|
||||
"*.cpp": "cpp",
|
||||
"functional": "cpp",
|
||||
"qhash": "cpp",
|
||||
"qstringlist": "cpp"
|
||||
"qstringlist": "cpp",
|
||||
"*.ipp": "cpp",
|
||||
"*.tcc": "cpp",
|
||||
"optional": "cpp",
|
||||
"type_traits": "cpp"
|
||||
}
|
||||
}
|
@ -2,17 +2,16 @@
|
||||
#include "XNAerodynamics_p.h"
|
||||
#include <XNCore/XNModelManager.h>
|
||||
#include <XNCore/XNDDSManager.h>
|
||||
#include <QMutexLocker>
|
||||
#include <XNCore/XNFramework.h>
|
||||
|
||||
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<FunctionType>(
|
||||
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<std::mutex> 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<std::mutex> 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();
|
||||
}
|
||||
|
@ -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)
|
||||
|
@ -1,12 +1,10 @@
|
||||
#ifndef XNAERODYNAMICS_GLOBAL_H
|
||||
#define XNAERODYNAMICS_GLOBAL_H
|
||||
|
||||
#include <QtCore/qglobal.h>
|
||||
|
||||
#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
|
||||
|
@ -1,20 +1,15 @@
|
||||
#pragma once
|
||||
#include <XNCore/XNModelObject_p.h>
|
||||
#include <DataModels/libSACSCAerodynamics_V2.0.3.5H/std_04_dll.h>
|
||||
#include <QMutex>
|
||||
|
||||
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;
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user