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:
parent
b79386011a
commit
e37d665755
2 changed files with 56 additions and 0 deletions
|
@ -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);
|
||||
|
|
53
lib/signal.c
53
lib/signal.c
|
@ -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)
|
||||
|
|
Loading…
Add table
Reference in a new issue