From 5bbc6cb56995d23cb8a4eb584ef0161be092da1f Mon Sep 17 00:00:00 2001 From: Romain Forlot Date: Sat, 16 Sep 2017 19:52:41 +0200 Subject: Adding new verb, implemented basic signal method Change-Id: I453ddc0ca374436275e7d76cdc27b3d843a2770f Signed-off-by: Romain Forlot --- signal-composer-binding/signal-composer.cpp | 59 ++++++++++++++++++++++++++++- 1 file changed, 58 insertions(+), 1 deletion(-) (limited to 'signal-composer-binding/signal-composer.cpp') diff --git a/signal-composer-binding/signal-composer.cpp b/signal-composer-binding/signal-composer.cpp index 3158797..9288e56 100644 --- a/signal-composer-binding/signal-composer.cpp +++ b/signal-composer-binding/signal-composer.cpp @@ -285,7 +285,7 @@ std::shared_ptr bindingApp::searchSignal(const std::string& aName) std::vector> allSignals = getAllSignals(); for (std::shared_ptr& sig : allSignals) { - if(sig->id() == aName) + if(*sig == aName) {return sig;} } } @@ -321,3 +321,60 @@ int bindingApp::execSubscription() const } return err; } + +json_object* bindingApp::getSignalValue(const std::string& sig, json_object* options) +{ + const char **opts = nullptr; + json_object *response = nullptr; + + wrap_json_unpack(options, "{s?s?s?s?!}", + &opts[0], + &opts[1], + &opts[2], + &opts[3]); + + std::shared_ptr sigP = searchSignal(sig); + wrap_json_pack(&response, "{ss}", + "signal", sigP->id().c_str()); + for(int idx=0; idx < sizeof(opts); idx++) + { + bool avg = false, min = false, max = false, last = false; + if (strcasestr(opts[idx], "average") && !avg) + { + avg = true; + double value = sigP->average(); + json_object_object_add(response, "average", + json_object_new_double(value)); + } + if (strcasestr(opts[idx], "min") && !min) + { + min = true; + double value = sigP->minimum(); + json_object_object_add(response, "min", + json_object_new_double(value)); + } + if (strcasestr(opts[idx], "max") && !max) + { + max = true; + double value = sigP->maximum(); + json_object_object_add(response, "max", + json_object_new_double(value)); + } + if (strcasestr(opts[idx], "last") && !last) + { + last = true; + double value = sigP->last(); + json_object_object_add(response, "last", + json_object_new_double(value)); + } + } + + if (!opts) + { + double value = sigP->last(); + json_object_object_add(response, "last", + json_object_new_double(value)); + } + + return response; +} -- cgit 1.2.3-korg