XNSim/XNCore/XNCore_global.h

165 lines
2.7 KiB
C
Raw Normal View History

2025-04-28 12:25:20 +08:00
#ifndef XNCORE_GLOBAL_H
#define XNCORE_GLOBAL_H
#include <QtCore/qglobal.h>
#if defined(XNCORE_LIBRARY)
# define XNCORE_EXPORT Q_DECL_EXPORT
#else
# define XNCORE_EXPORT Q_DECL_IMPORT
#endif
#ifdef __linux__
# include <pthread.h>
# include <sched.h>
# include <sys/timeb.h>
# include <sys/mman.h>
# include <sys/stat.h>
# include <errno.h>
# include <time.h>
# include <memory>
# include <errno.h>
# include <unistd.h>
#endif
#define FAST_DDS_MACRO eprosima::fastdds::dds
/**
* @brief Hz
*/
#define BASE_RUN_FREQ 100.0
/**
* @brief
*/
#define BASE_RUN_INTER (1.0E9 / BASE_RUN_FREQ)
//模型周期性回调函数类型别名
using XNCallBack = std::function<void()>;
//DDS回调函数类型别名
using XNDDSCallBack = std::function<void(void *)>;
/**
* @brief
* @details 线
*/
struct PERIOD_INFO {
/**
* @brief
*/
timespec next_period;
/**
* @brief
*/
long period_ns;
};
/**
* @brief
*/
enum class RunStatus {
/**
* @brief
*/
NotStart = 0,
/**
* @brief
*/
Runing,
/**
* @brief
*/
Suspend,
/**
* @brief
*/
Aborted,
/**
* @brief
*/
Finished
};
/**
* @brief 仿
*/
enum class SimControlCmd {
/**
* @brief
*/
Start,
/**
* @brief
*/
Continue,
/**
* @brief
*/
Suspend,
/**
* @brief
*/
Abort
};
/**
* @brief
*/
enum class FreqLevel {
/**
* @brief
*/
BaseFreq = 0, // 120/100/60 Hz
/**
* @brief
*/
HalfFreq, // 60/50/30 Hz
/**
* @brief
*/
QuarterFreq, // 30/25/15 Hz
/**
* @brief
*/
EighthFreq, // 15/12.5/7.5 Hz
/**
* @brief
*/
SixteenthFreq, // 7.5/6.25/3.75 Hz
/**
* @brief
*/
ThirtyTwothFreq, // 3.75/3.125/1.875 Hz
};
/**
* @brief
*/
enum class XNFrameObjectStatus {
/**
* @brief
*/
NotReady = 0,
/**
* @brief
*/
Initialized,
/**
* @brief
*/
Ready,
/**
* @brief
*/
Unknown
};
#define XN_DLL_INITIALIZE(ClassName) \
extern "C" void Initial##ClassName() \
{ \
qRegisterMetaType<ClassName>(#ClassName); \
}
#endif // XNCORE_GLOBAL_H