v2.0.0
Loading...
Searching...
No Matches
mna_param_binding.cpp
Go to the documentation of this file.
1//=============================================================================================================
21
22//=============================================================================================================
23// INCLUDES
24//=============================================================================================================
25
26#include "mna_param_binding.h"
27
28#include <QJsonArray>
29#include <QCborArray>
30
31//=============================================================================================================
32// USED NAMESPACES
33//=============================================================================================================
34
35using namespace MNALIB;
36
37//=============================================================================================================
38// DEFINE MEMBER METHODS
39//=============================================================================================================
40
41QJsonObject MnaParamBinding::toJson() const
42{
43 QJsonObject json;
44 json[QStringLiteral("target")] = targetPath;
45 json[QStringLiteral("expression")] = expression;
46 json[QStringLiteral("trigger")] = trigger;
47
48 if (trigger == QStringLiteral("periodic") && periodMs > 0) {
49 json[QStringLiteral("period_ms")] = periodMs;
50 }
51
52 if (!dependencies.isEmpty()) {
53 QJsonArray arr;
54 for (const QString& dep : dependencies) {
55 arr.append(dep);
56 }
57 json[QStringLiteral("dependencies")] = arr;
58 }
59
60 return json;
61}
62
63//=============================================================================================================
64
66{
68 b.targetPath = json.value(QStringLiteral("target")).toString();
69 b.expression = json.value(QStringLiteral("expression")).toString();
70 b.trigger = json.value(QStringLiteral("trigger")).toString();
71 b.periodMs = json.value(QStringLiteral("period_ms")).toInt(0);
72
73 const QJsonArray arr = json.value(QStringLiteral("dependencies")).toArray();
74 for (const QJsonValue& v : arr) {
75 b.dependencies.append(v.toString());
76 }
77
78 return b;
79}
80
81//=============================================================================================================
82
84{
85 QCborMap cbor;
86 cbor.insert(QStringLiteral("target"), targetPath);
87 cbor.insert(QStringLiteral("expression"), expression);
88 cbor.insert(QStringLiteral("trigger"), trigger);
89
90 if (trigger == QStringLiteral("periodic") && periodMs > 0) {
91 cbor.insert(QStringLiteral("period_ms"), periodMs);
92 }
93
94 if (!dependencies.isEmpty()) {
95 QCborArray arr;
96 for (const QString& dep : dependencies) {
97 arr.append(dep);
98 }
99 cbor.insert(QStringLiteral("dependencies"), arr);
100 }
101
102 return cbor;
103}
104
105//=============================================================================================================
106
108{
110 b.targetPath = cbor.value(QStringLiteral("target")).toString();
111 b.expression = cbor.value(QStringLiteral("expression")).toString();
112 b.trigger = cbor.value(QStringLiteral("trigger")).toString();
113 b.periodMs = static_cast<int>(cbor.value(QStringLiteral("period_ms")).toInteger(0));
114
115 const QCborArray arr = cbor.value(QStringLiteral("dependencies")).toArray();
116 for (const QCborValue& v : arr) {
117 b.dependencies.append(v.toString());
118 }
119
120 return b;
121}
Formula-driven binding that recomputes one MNA parameter from an expression whenever its triggers fir...
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