5 #include <dpsim-models/PtrFactory.h>
6 #include <dpsim/InterfaceQueued.h>
7 #include <dpsim/InterfaceWorker.h>
9 #include <spdlog/common.h>
10 #include <villas/kernel/rt.hpp>
11 #include <villas/node.hpp>
12 #include <villas/node/exceptions.hpp>
13 #include <villas/node/memory.hpp>
14 #include <villas/pool.hpp>
15 #include <villas/sample.hpp>
16 #include <villas/signal.hpp>
17 #include <villas/signal_list.hpp>
19 using namespace villas;
26 using Ptr = std::shared_ptr<InterfaceWorkerVillas>;
27 using Sample =
struct node::Sample;
29 static UInt villasPriority;
30 static UInt villasAffinity;
31 static UInt villasHugePages;
34 static Bool villasInitialized;
49 node::Pool mSamplePool;
54 std::map<int, node::Signal::Ptr> mExportSignals;
55 std::map<int, node::Signal::Ptr> mImportSignals;
59 const String &nodeConfig, UInt queueLenght = 512, UInt sampleLenght = 64,
60 spdlog::level::level_enum logLevel = spdlog::level::level_enum::info);
63 void close()
override;
65 void readValuesFromEnv(
66 std::vector<InterfaceQueued::AttributePacket> &updatedAttrs)
override;
67 void readValuesFromEnv(
68 std::vector<std::tuple<CPS::AttributeBase::Ptr, UInt, bool, bool>>
70 void writeValuesToEnv(
71 std::vector<InterfaceQueued::AttributePacket> &updatedAttrs)
override;
72 void writeValuesToEnv(
73 std::vector<std::tuple<CPS::AttributeBase::Ptr, UInt>> &updatedAttrs);
75 virtual void configureImport(UInt attributeId,
const std::type_info &type,
76 UInt idx,
const String &name =
"",
77 const String &unit =
"");
78 virtual void configureExport(UInt attributeId,
const std::type_info &type,
79 UInt idx, Bool waitForOnWrite,
80 const String &name =
"",
81 const String &unit =
"");
83 void printSignals()
const;
87 void setupNodeSignals();
88 void initVillas()
const;