XNSim/XNMonitor/TypeDefine.h
2025-04-28 12:25:20 +08:00

268 lines
5.6 KiB
C
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* @file TypeDefine.h
* @brief 类型定义头文件
*/
#pragma once
#include <QString>
#include <QVector>
#include <QSharedPointer>
#include <fastdds/dds/domain/DomainParticipant.hpp>
#include <fastdds/dds/domain/DomainParticipantFactory.hpp>
#include <fastdds/dds/topic/TypeSupport.hpp>
#include <fastdds/dds/subscriber/DataReaderListener.hpp>
#include <fastdds/dds/subscriber/DataReader.hpp>
#include <fastdds/dds/subscriber/qos/DataReaderQos.hpp>
#include <fastdds/dds/subscriber/SampleInfo.hpp>
#include <fastdds/dds/subscriber/Subscriber.hpp>
#include <fastdds/dds/topic/TypeSupport.hpp>
#include <fastdds/dds/topic/Topic.hpp>
#include <fastdds/dds/topic/TopicDataType.hpp>
#include <fastdds/dds/publisher/Publisher.hpp>
#include <fastdds/dds/publisher/qos/PublisherQos.hpp>
#include <fastdds/dds/publisher/DataWriter.hpp>
#include <fastdds/dds/publisher/qos/DataWriterQos.hpp>
/**
* @brief 域参与者
*/
using XNParticipant = eprosima::fastdds::dds::DomainParticipant;
/**
* @brief 域参与者Qos
*/
using XNParticipantQos = eprosima::fastdds::dds::DomainParticipantQos;
/**
* @brief 域参与者工厂
*/
using XNParticipantFactory = eprosima::fastdds::dds::DomainParticipantFactory;
/**
* @brief 数据读取器监听器
*/
using XNDataReaderListener = eprosima::fastdds::dds::DataReaderListener;
/**
* @brief 数据读取器
*/
using XNDataReader = eprosima::fastdds::dds::DataReader;
/**
* @brief 数据读取器Qos
*/
using XNDataReaderQos = eprosima::fastdds::dds::DataReaderQos;
/**
* @brief 样本信息
*/
using XNSampleInfo = eprosima::fastdds::dds::SampleInfo;
/**
* @brief 订阅者
*/
using XNSubscriber = eprosima::fastdds::dds::Subscriber;
/**
* @brief 类型支持
*/
using XNTypeSupport = eprosima::fastdds::dds::TypeSupport;
/**
* @brief 数据写入器
*/
using XNDataWriter = eprosima::fastdds::dds::DataWriter;
/**
* @brief 数据写入器Qos
*/
using XNDataWriterQos = eprosima::fastdds::dds::DataWriterQos;
/**
* @brief 发布者
*/
using XNPublisher = eprosima::fastdds::dds::Publisher;
/**
* @brief 发布者Qos
*/
using XNPublisherQos = eprosima::fastdds::dds::PublisherQos;
/**
* @brief 主题
*/
using XNTopic = eprosima::fastdds::dds::Topic;
/**
* @brief 主题数据类型
*/
using XNTopicDataType = eprosima::fastdds::dds::TopicDataType;
/**
* @brief 主题信息
*/
struct TopicInfo {
/**
* @brief 主题
*/
XNTopic *topic;
/**
* @brief 发布者
*/
XNPublisher *publisher;
/**
* @brief 数据写入器
*/
XNDataWriter *dataWriter;
/**
* @brief 订阅者
*/
XNSubscriber *subscriber;
/**
* @brief 数据读取器
*/
XNDataReader *dataReader;
/**
* @brief 数据读取器监听器
*/
XNDataReaderListener *listener;
};
/**
* @brief 运行时数据
*/
struct XNRuntimeData {
/**
* @brief 名称
*/
QString m_name;
/**
* @brief 线程ID或模型ID
*/
unsigned int m_id;
/**
* @brief 运行状态
*/
unsigned int m_RunningState;
/**
* @brief CPU亲和性掩码
* @note 用作线程信息时存储CPU亲和性掩码从低位到高位依次为CPU 0~31 的亲和性掩码
* @note 用作模型信息时存储存储线程号
*/
unsigned int m_AffinityMask;
/**
* @brief 节点ID
* @note 用作模型信息时存储节点号
*/
unsigned int m_NodeID;
/**
* @brief 优先级
*/
unsigned int m_Priority;
/**
* @brief 设定频率
*/
double m_SetFrequency;
/**
* @brief 当前频率
*/
QVector<double> m_CurrentFrequency;
/**
* @brief 最大频率
*/
double m_MaxFrequency;
/**
* @brief 最小频率
*/
double m_MinFrequency;
/**
* @brief 平均频率
*/
double m_AvgFrequency;
/**
* @brief 周期计数
*/
double m_CycleCount;
/**
* @brief 设定周期
*/
double m_SetPeriod;
/**
* @brief 当前周期
*/
QVector<double> m_CurrentPeriod;
/**
* @brief 最大周期
*/
double m_MaxPeriod;
/**
* @brief 最小周期
*/
double m_MinPeriod;
/**
* @brief 平均周期
*/
double m_AvgPeriod;
};
/**
* @brief 成员变量定义结构体
* @note 成员变量包含数据类型、变量名、是否为数组、数组大小、描述
*/
struct MemberVariable {
/**
* @brief 数据类型
*/
QString dataType;
/**
* @brief 变量名
*/
QString variableName;
/**
* @brief 是否为数组
*/
bool isArray;
/**
* @brief 数组大小
*/
QVector<int> arraySizes;
/**
* @brief 描述
*/
QString description;
};
/**
* @brief 接口结构体定义结构体
* @note 接口结构体定义包含结构体名称、成员变量
*/
struct StructDefinition {
/**
* @brief 结构体名称
*/
QString structName;
/**
* @brief 成员变量
*/
QVector<QSharedPointer<MemberVariable>> memberVariables;
};
/**
* @brief 命名空间定义结构体
* @note 命名空间定义包含命名空间名称、接口结构体定义、子命名空间定义
*/
struct NamespaceDefinition {
/**
* @brief 命名空间名称
*/
QString namespaceName;
/**
* @brief 结构体定义
*/
QVector<QSharedPointer<StructDefinition>> structDefinitions;
/**
* @brief 子命名空间
*/
QVector<QSharedPointer<NamespaceDefinition>> childNamespaces;
};
/**
* @brief 模型接口定义
* @note 模型接口定义包含模型名称和接口命名空间定义
*/
struct ModelDefinition {
/**
* @brief 模型名称
*/
QString modelName;
/**
* @brief 命名空间定义
*/
QVector<QSharedPointer<NamespaceDefinition>> namespaceDefinitions;
};