1
0
Fork 0
mirror of https://git.rwth-aachen.de/acs/public/villas/node/ synced 2025-03-09 00:00:00 +01:00

dp hook: fix converted signals being inserted at the wrong position

Signed-off-by: Niklas Eiling <niklas.eiling@eonerc.rwth-aachen.de>
This commit is contained in:
Niklas Eiling 2024-07-04 11:11:02 +02:00 committed by Niklas Eiling
parent 7128da24c3
commit 365bdd6288

View file

@ -27,7 +27,6 @@ protected:
char *signal_name;
unsigned signal_index;
int offset;
int inverse;
double f0;
@ -97,7 +96,7 @@ protected:
public:
DPHook(Path *p, Node *n, int fl, int prio, bool en = true)
: Hook(p, n, fl, prio, en), signal_name(nullptr), signal_index(0),
offset(0), inverse(0), f0(50.0), timestep(50e-6), time(), steps(0),
inverse(0), f0(50.0), timestep(50e-6), time(), steps(0),
coeffs(), fharmonics(), fharmonics_len(0) {}
virtual ~DPHook() {
@ -225,7 +224,7 @@ public:
if (!new_sig)
throw RuntimeError("Failed to create signal");
signals->insert(signals->begin() + offset, new_sig);
signals->insert(signals->begin() + signal_index, new_sig);
} else {
auto orig_sig = signals->getByIndex(signal_index);
if (!orig_sig)
@ -244,7 +243,7 @@ public:
if (!new_sig)
throw RuntimeError("Failed to create new signal");
signals->insert(signals->begin() + offset, new_sig);
signals->insert(signals->begin() + signal_index, new_sig);
}
}
@ -281,7 +280,7 @@ public:
istep(coeffs, &signal);
sample_data_remove(smp, signal_index, fharmonics_len);
sample_data_insert(smp, (union SignalData *)&signal, offset, 1);
sample_data_insert(smp, (union SignalData *)&signal, signal_index, 1);
} else {
double signal = smp->data[signal_index].f;
std::complex<float> coeffs[fharmonics_len];
@ -289,7 +288,7 @@ public:
step(&signal, coeffs);
sample_data_remove(smp, signal_index, 1);
sample_data_insert(smp, (union SignalData *)coeffs, offset,
sample_data_insert(smp, (union SignalData *)coeffs, signal_index,
fharmonics_len);
}