From d8c2b2f781d9cab547e9a262e6b9290fc41622b2 Mon Sep 17 00:00:00 2001 From: Steffen Vogel Date: Tue, 6 Jul 2021 18:30:46 +0200 Subject: [PATCH] signal: add signal_print() function --- include/villas/signal.h | 2 ++ lib/signal.cpp | 23 +++++++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/include/villas/signal.h b/include/villas/signal.h index e3f6e3ba5..405ecc94f 100644 --- a/include/villas/signal.h +++ b/include/villas/signal.h @@ -78,6 +78,8 @@ struct signal * signal_copy(struct signal *s); /** Parse signal description. */ int signal_parse(struct signal *s, json_t *json); +char * signal_print(const struct signal *s, const union signal_data *d = nullptr); + /** Initialize signal from a mapping_entry. */ int signal_init_from_mapping(struct signal *s, const struct mapping_entry *me, unsigned index); diff --git a/lib/signal.cpp b/lib/signal.cpp index 7c151ca9a..69291da5f 100644 --- a/lib/signal.cpp +++ b/lib/signal.cpp @@ -245,3 +245,26 @@ json_t * signal_to_json(struct signal *s) return json_sig; } + +char * signal_print(const struct signal *s, const union signal_data *d) +{ + char *buf = nullptr; + + if (s->name) + strcatf(&buf, " %s", s->name); + + if (s->unit) + strcatf(&buf, " [%s]", s->unit); + + strcatf(&buf, "(%s)", signal_type_to_str(s->type)); + + if (d) { + char val[32]; + + signal_data_print_str(d, s->type, val, sizeof(val)); + + strcatf(&buf, " = %s", val); + } + + return buf; +}