#include #include // C909_V1接口头文件 - 只在插件中包含 #include "../IDL/C909_V1_Interface.h" // 插件信息 static PluginInfo plugin_info = {"C909_V1", "", DATAMONITOR_PLUGIN_INTERFACE_VERSION}; // 支持的接口列表 static const char *supported_interfaces[] = { "Aerodynamics_input", "GroundHandling_input", "GroundHandling_output", "Aerodynamics_output", "WeightBalance_input", "WeightBalance_output", "GroundHandling_heartbeat", "WeightBalance_heartbeat", "Aerodynamics_heartbeat" }; static const int interface_count = sizeof(supported_interfaces) / sizeof(supported_interfaces[0]); // 导出的插件函数 extern "C" { PluginInfo *get_plugin_info() { return &plugin_info; } DataMonitorBasePtr create_monitor(const char *interfaceName) { std::string name(interfaceName); if (name == "Aerodynamics_input") { return std::make_shared>(); } else if (name == "GroundHandling_input") { return std::make_shared>(); } else if (name == "GroundHandling_output") { return std::make_shared>(); } else if (name == "Aerodynamics_output") { return std::make_shared>(); } else if (name == "WeightBalance_input") { return std::make_shared>(); } else if (name == "WeightBalance_output") { return std::make_shared>(); } else if (name == "GroundHandling_heartbeat") { return std::make_shared>(); } else if (name == "WeightBalance_heartbeat") { return std::make_shared>(); } else if (name == "Aerodynamics_heartbeat") { return std::make_shared>(); } return nullptr; } void destroy_monitor(const char *interfaceName) { // 智能指针会自动管理内存,这里可以添加额外的清理逻辑 } const char **get_supported_interfaces(int *count) { if (count) { *count = interface_count; } return const_cast(supported_interfaces); } void free_string_array(const char **array) { // 这里不需要释放,因为使用的是静态数组 } }