22 typedef std::shared_ptr<Interface> Ptr;
24 Interface(
const String &name =
"", spdlog::level::level_enum logLevel =
25 spdlog::level::level_enum::info)
26 : mName(name), mOpened(
false) {
27 mLog = CPS::Logger::get(
"Interface", logLevel);
30 virtual ~Interface() =
default;
32 virtual void open() = 0;
33 virtual void close() = 0;
36 virtual void syncExports() = 0;
40 virtual CPS::Task::List getTasks() = 0;
42 virtual void setLogger(CPS::Logger::Log log);
44 virtual String &getName() {
return mName; }
48 std::vector<std::tuple<CPS::AttributeBase::Ptr, UInt, bool, bool>>
51 std::vector<std::tuple<CPS::AttributeBase::Ptr, UInt>> mExportAttrsDpsim;
53 virtual void addImport(CPS::AttributeBase::Ptr attr,
bool blockOnRead =
false,
54 bool syncOnSimulationStart =
true);
55 virtual void addExport(CPS::AttributeBase::Ptr attr);
58 CPS::Logger::Log mLog;
60 bool mSyncOnSimulationStart;
61 UInt mCurrentSequenceDpsimToInterface = 1;
62 UInt mNextSequenceInterfaceToDpsim = 1;
63 std::atomic<bool> mOpened;