/** * @file XNEngine.h * @author jinchao * @brief 引擎类 * @version 1.0 * @date 2025-02-14 * * @copyright Copyright (c) 2025 COMAC * */ #include "../XNCore/XNFramework.h" #include #include #include "../XNCore/XNIDL/XNSimStatusPubSubTypes.hpp" /** * @brief 引擎类 */ class XNEngine : public QObject { Q_OBJECT public: /** * @brief 构造函数 * @param parent 父对象 */ explicit XNEngine(QObject *parent = nullptr); /** * @brief 析构函数 */ ~XNEngine(); /** * @brief 仿真控制监听器 * @param cmd 仿真控制命令 */ void SimControlListener(const XNSim::XNSimControl::XNRuntimeControl &cmd); signals: /** * @brief 初始化成功信号 * @param isSuccess 是否成功 */ void InitializeSignal(); /** * @brief 分析场景XML信号 * @param XmlPath 场景XML路径 */ void AnalysisScenarioXmlSignal(const QString &XmlPath); /** * @brief 准备执行信号 */ void PrepareforExecuteSignal(); /** * @brief 仿真控制信号 * @param objectID 对象ID * @param cmd 仿真控制命令 */ void SimControlSignal(quint32 objectID, SimControlCmd cmd); /** * @brief 停止定时器信号 */ void StopTimer(); public slots: /** * @brief 初始化成功槽函数 * @param isSuccess 是否成功 */ void OnInitializeSuccess(bool isSuccess); /** * @brief 准备执行成功槽函数 * @param isSuccess 是否成功 */ void OnPrepareforExecuteSuccess(bool isSuccess); /** * @brief 运行引擎 * @param XmlPath 场景XML路径 * @return 是否成功 */ bool Run(const QString &XmlPath); /** * @brief 设置测试模式 * @param isTestMode 是否为测试模式 */ void SetTestMode(bool isTestMode); private: /** * @brief 设置日志级别 * @param XmlPath 场景XML路径 * @return 是否成功 */ bool SetLogLevel(const QString &XmlPath); /** * @brief 发布引擎状态 */ void PublishEngineStatus(); /** * @brief 是否为测试模式 */ bool isTestMode; /** * @brief 主框架 */ XNFramework *framework; /** * @brief 主框架状态 */ XNFrameObjectStatus frameworkStatus; /** * @brief 引擎状态写入器 */ eprosima::fastdds::dds::DataWriter *engineStatusWriter; /** * @brief CPU亲和性 */ quint32 CPUAffinity; };