v2.0.0
Loading...
Searching...
No Matches
mna_param_binding.cpp
Go to the documentation of this file.
1//=============================================================================================================
34
35//=============================================================================================================
36// INCLUDES
37//=============================================================================================================
38
39#include "mna_param_binding.h"
40
41#include <QJsonArray>
42#include <QCborArray>
43
44//=============================================================================================================
45// USED NAMESPACES
46//=============================================================================================================
47
48using namespace MNALIB;
49
50//=============================================================================================================
51// DEFINE MEMBER METHODS
52//=============================================================================================================
53
54QJsonObject MnaParamBinding::toJson() const
55{
56 QJsonObject json;
57 json[QStringLiteral("target")] = targetPath;
58 json[QStringLiteral("expression")] = expression;
59 json[QStringLiteral("trigger")] = trigger;
60
61 if (trigger == QStringLiteral("periodic") && periodMs > 0) {
62 json[QStringLiteral("period_ms")] = periodMs;
63 }
64
65 if (!dependencies.isEmpty()) {
66 QJsonArray arr;
67 for (const QString& dep : dependencies) {
68 arr.append(dep);
69 }
70 json[QStringLiteral("dependencies")] = arr;
71 }
72
73 return json;
74}
75
76//=============================================================================================================
77
79{
81 b.targetPath = json.value(QStringLiteral("target")).toString();
82 b.expression = json.value(QStringLiteral("expression")).toString();
83 b.trigger = json.value(QStringLiteral("trigger")).toString();
84 b.periodMs = json.value(QStringLiteral("period_ms")).toInt(0);
85
86 const QJsonArray arr = json.value(QStringLiteral("dependencies")).toArray();
87 for (const QJsonValue& v : arr) {
88 b.dependencies.append(v.toString());
89 }
90
91 return b;
92}
93
94//=============================================================================================================
95
97{
98 QCborMap cbor;
99 cbor.insert(QStringLiteral("target"), targetPath);
100 cbor.insert(QStringLiteral("expression"), expression);
101 cbor.insert(QStringLiteral("trigger"), trigger);
102
103 if (trigger == QStringLiteral("periodic") && periodMs > 0) {
104 cbor.insert(QStringLiteral("period_ms"), periodMs);
105 }
106
107 if (!dependencies.isEmpty()) {
108 QCborArray arr;
109 for (const QString& dep : dependencies) {
110 arr.append(dep);
111 }
112 cbor.insert(QStringLiteral("dependencies"), arr);
113 }
114
115 return cbor;
116}
117
118//=============================================================================================================
119
121{
123 b.targetPath = cbor.value(QStringLiteral("target")).toString();
124 b.expression = cbor.value(QStringLiteral("expression")).toString();
125 b.trigger = cbor.value(QStringLiteral("trigger")).toString();
126 b.periodMs = static_cast<int>(cbor.value(QStringLiteral("period_ms")).toInteger(0));
127
128 const QCborArray arr = cbor.value(QStringLiteral("dependencies")).toArray();
129 for (const QCborValue& v : arr) {
130 b.dependencies.append(v.toString());
131 }
132
133 return b;
134}
MnaParamBinding struct declaration — formula-driven parameter binding.
MNE Analysis Container Format (mna/mnx).
Dynamic parameter binding for the MNA parameter tree.
static MnaParamBinding fromCbor(const QCborMap &cbor)
QString expression
Formula string, e.g. "clamp(ref('noise_est_01/snr') * 0.1, 0.01, 1.0)".
int periodMs
Evaluation period when trigger == "periodic" (ignored otherwise).
QStringList dependencies
Paths this binding reads from.
QString targetPath
Parameter to control: "nodeId/attrKey".
static MnaParamBinding fromJson(const QJsonObject &json)
QString trigger
"on_change", "periodic", "manual"
QJsonObject toJson() const