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

signal: added new counter signal type

This commit is contained in:
Steffen Vogel 2017-09-01 07:50:35 +02:00
parent da3a056c9a
commit d6ea18d3a1
3 changed files with 7 additions and 2 deletions

View file

@ -171,7 +171,7 @@ nodes = {
signal_node = {
type = "signal",
signal = "sine", # One of: sine, square, ramp, triangle, random, mixed, constant"
signal = "sine", # One of: sine, square, ramp, counter, constant, triangle, random, mixed, constant"
values = 4, # Number of values per sample
amplitude = 2.3, # Amplitude of generated signals
frequency = 10, # Frequency of generated signals

View file

@ -42,6 +42,7 @@ enum signal_type {
SIGNAL_TYPE_SQUARE,
SIGNAL_TYPE_TRIANGLE,
SIGNAL_TYPE_RAMP,
SIGNAL_TYPE_COUNTER,
SIGNAL_TYPE_CONSTANT,
SIGNAL_TYPE_MIXED
};

View file

@ -39,6 +39,8 @@ enum signal_type signal_lookup_type(const char *type)
return SIGNAL_TYPE_TRIANGLE;
else if (!strcmp(type, "ramp"))
return SIGNAL_TYPE_RAMP;
else if (!strcmp(type, "counter"))
return SIGNAL_TYPE_COUNTER;
else if (!strcmp(type, "constant"))
return SIGNAL_TYPE_CONSTANT;
else if (!strcmp(type, "mixed"))
@ -242,7 +244,8 @@ int signal_read(struct node *n, struct sample *smps[], unsigned cnt)
case SIGNAL_TYPE_SINE: t->data[i].f = s->offset + s->amplitude * sin(running * s->frequency * 2 * M_PI); break;
case SIGNAL_TYPE_TRIANGLE: t->data[i].f = s->offset + s->amplitude * (fabs(fmod(running * s->frequency, 1) - .5) - 0.25) * 4; break;
case SIGNAL_TYPE_SQUARE: t->data[i].f = s->offset + s->amplitude * ( (fmod(running * s->frequency, 1) < .5) ? -1 : 1); break;
case SIGNAL_TYPE_RAMP: t->data[i].f = s->offset + s->amplitude * fmod(running, s->frequency); break;
case SIGNAL_TYPE_RAMP: t->data[i].f = s->offset + s->amplitude * fmod(running, s->frequency); break;
case SIGNAL_TYPE_COUNTER: t->data[i].f = s->offset + s->amplitude * s->counter; break;
case SIGNAL_TYPE_RANDOM:
s->last[i] += box_muller(0, s->stddev);
t->data[i].f = s->last[i];
@ -269,6 +272,7 @@ char * signal_print(struct node *n)
switch (s->type) {
case SIGNAL_TYPE_MIXED: type = "mixed"; break;
case SIGNAL_TYPE_RAMP: type = "ramp"; break;
case SIGNAL_TYPE_COUNTER: type = "counter"; break;
case SIGNAL_TYPE_TRIANGLE: type = "triangle"; break;
case SIGNAL_TYPE_SQUARE: type = "square"; break;
case SIGNAL_TYPE_SINE: type = "sine"; break;