#pragma once #include "dll_export.h" #include #include #include "common/event_bus.h" #include "common/task_scheduler.h" #define PLUGIN_LOADER(constructor) \ extern "C" \ { \ satdump::Plugin *loader() \ { \ return (satdump::Plugin *)new constructor(); \ } \ } namespace satdump { struct SatDumpStartedEvent { }; class Plugin { public: Plugin() {} virtual std::string getID() = 0; virtual void init() = 0; virtual ~Plugin(){}; }; SATDUMP_DLL extern std::map> loaded_plugins; SATDUMP_DLL extern std::shared_ptr eventBus; SATDUMP_DLL extern std::shared_ptr taskScheduler; }; // namespace satdump void loadPlugins(std::map> &loaded_plugins = satdump::loaded_plugins);