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 signal_init_from_mapping()

This commit is contained in:
Steffen Vogel 2018-08-02 10:47:53 +02:00
parent b79386011a
commit e37d665755
2 changed files with 56 additions and 0 deletions

View file

@ -32,6 +32,7 @@ extern "C" {
/* Forward declarations */
struct list;
struct node;
struct mapping_entry;
enum signal_format {
SIGNAL_FORMAT_FLOAT = 0,
@ -50,6 +51,8 @@ struct signal {
int signal_init(struct signal *s);
int signal_init_from_mapping(struct signal *s, const struct mapping_entry *me, unsigned index);
int signal_destroy(struct signal *s);
int signal_parse(struct signal *s, json_t *cfg);

View file

@ -26,6 +26,7 @@
#include <villas/list.h>
#include <villas/utils.h>
#include <villas/node.h>
#include <villas/mapping.h>
int signal_init(struct signal *s)
{
@ -34,6 +35,58 @@ int signal_init(struct signal *s)
return 0;
}
int signal_init_from_mapping(struct signal *s, const struct mapping_entry *me, unsigned index)
{
int ret;
ret = signal_init(s);
if (ret)
return ret;
ret = mapping_to_str(me, index, &s->name);
if (ret)
return ret;
switch (me->type) {
case MAPPING_TYPE_STATS:
switch (me->stats.type) {
case MAPPING_STATS_TYPE_TOTAL:
s->format = SIGNAL_FORMAT_INT;
break;
case MAPPING_STATS_TYPE_LAST:
case MAPPING_STATS_TYPE_LOWEST:
case MAPPING_STATS_TYPE_HIGHEST:
case MAPPING_STATS_TYPE_MEAN:
case MAPPING_STATS_TYPE_VAR:
case MAPPING_STATS_TYPE_STDDEV:
s->format = SIGNAL_FORMAT_FLOAT;
break;
}
break;
case MAPPING_TYPE_HEADER:
switch (me->hdr.type) {
case MAPPING_HEADER_TYPE_LENGTH:
case MAPPING_HEADER_TYPE_SEQUENCE:
s->format = SIGNAL_FORMAT_INT;
break;
}
break;
case MAPPING_TYPE_TIMESTAMP:
s->format = SIGNAL_FORMAT_INT;
break;
case MAPPING_TYPE_DATA:
s->format = me->signal->format;
s->unit = me->signal->unit;
break;
}
return 0;
}
int signal_destroy(struct signal *s)
{
if (s->name)