8 #include <dpsim-models/Attribute.h>
9 #include <dpsim-models/Logger.h>
10 #include <dpsim-models/PtrFactory.h>
11 #include <dpsim-models/Task.h>
12 #include <dpsim/Config.h>
13 #include <dpsim/Definitions.h>
14 #include <dpsim/Interface.h>
15 #include <dpsim/Scheduler.h>
18 #include <villas/kernel/rt.hpp>
19 #include <villas/node.hpp>
20 #include <villas/node/exceptions.hpp>
21 #include <villas/node/memory.hpp>
22 #include <villas/pool.hpp>
23 #include <villas/sample.hpp>
24 #include <villas/signal.hpp>
25 #include <villas/signal_list.hpp>
27 using namespace villas;
36 typedef std::shared_ptr<InterfaceVillasQueueless> Ptr;
42 const String &nodeConfig,
const String &name =
"",
43 spdlog::level::level_enum logLevel = spdlog::level::level_enum::info);
45 virtual void open()
override;
46 virtual void close()
override;
49 virtual void syncExports()
override;
51 virtual void syncImports()
override;
53 virtual CPS::Task::List getTasks()
override;
55 virtual void printVillasSignals()
const;
61 }
catch (
const std::exception &e) {
62 SPDLOG_LOGGER_ERROR(mLog,
"Error closing interface: {}", e.what());
68 const String mNodeConfig;
70 node::Pool mSamplePool;
72 virtual void writeToVillas();
73 virtual Int readFromVillas();
77 Int mSequenceFromDpsim;
83 : Task(intf.mName +
".Read"), mIntf(intf) {
84 for (
const auto &[attr, _seqId, _blockOnRead, _syncOnStart] :
85 intf.mImportAttrsDpsim) {
86 mModifiedAttributes.push_back(attr);
90 void execute(Real time, Int timeStepCount)
override;
99 : Task(intf.mName +
".Write"), mIntf(intf) {
100 for (
const auto &[attr, _seqId] : intf.mExportAttrsDpsim) {
101 mAttributeDependencies.push_back(attr);
103 mModifiedAttributes.push_back(Scheduler::external);
106 void execute(Real time, Int timeStepCount)
override;
Tasks to be defined by every component.
Interface type that can be used to import and export simulation attributes over any node type support...