From 784d48b8f432119de570a119a760e05e9068d12d Mon Sep 17 00:00:00 2001 From: Romain Forlot Date: Thu, 28 Sep 2017 20:07:54 +0200 Subject: Enhance list/get verb Handle options in a vector. Change-Id: Iafad2d93ea027db054750816750f4d07bd13c5d4 Signed-off-by: Romain Forlot --- .../signal-composer-binding.cpp | 10 +++----- signal-composer-binding/signal-composer.cpp | 28 +++++++++++----------- 2 files changed, 17 insertions(+), 21 deletions(-) diff --git a/signal-composer-binding/signal-composer-binding.cpp b/signal-composer-binding/signal-composer-binding.cpp index 36d0c9d..a1e4543 100644 --- a/signal-composer-binding/signal-composer-binding.cpp +++ b/signal-composer-binding/signal-composer-binding.cpp @@ -158,13 +158,9 @@ void list(afb_req request) {json_object_array_add(allSignalsJ, sig->toJSON());} if(json_object_array_length(allSignalsJ) && !execConf()) - { - afb_req_success(request, allSignalsJ, NULL); - } + {afb_req_success(request, allSignalsJ, NULL);} else - { - afb_req_fail(request, "error", "No Signals recorded so far"); - } + {afb_req_fail(request, "error", "No Signals recorded so far");} } /// @brief entry point for get requests. @@ -176,7 +172,7 @@ void get(struct afb_req request) const char* sig; // Process about Raw CAN message on CAN bus directly - err = wrap_json_unpack(args, "{ss,s?o!}", "signals", &sig, + err = wrap_json_unpack(args, "{ss,s?o!}", "signal", &sig, "options", &options); if(err) { diff --git a/signal-composer-binding/signal-composer.cpp b/signal-composer-binding/signal-composer.cpp index a340aa6..ab5c63c 100644 --- a/signal-composer-binding/signal-composer.cpp +++ b/signal-composer-binding/signal-composer.cpp @@ -355,33 +355,33 @@ int Composer::loadSignals(CtlSectionT* section, json_object *signalsJ) return err; } -void Composer::processOptions(const char** opts, std::shared_ptr sig, json_object* response) const +void Composer::processOptions(const std::map& opts, std::shared_ptr sig, json_object* response) const { - for(int idx=0; idx < sizeof(opts); idx++) + for(const auto& o: opts) { bool avg = false, min = false, max = false, last = false; - if (strcasestr(opts[idx], "average") && !avg) + if (o.first.compare("average") && !avg) { avg = true; - double value = sig->average(); + double value = sig->average(o.second); json_object_object_add(response, "value", json_object_new_double(value)); } - else if (strcasestr(opts[idx], "min") && !min) + else if (o.first.compare("minimum") && !min) { min = true; double value = sig->minimum(); json_object_object_add(response, "value", json_object_new_double(value)); } - else if (strcasestr(opts[idx], "max") && !max) + else if (o.first.compare("maximum") && !max) { max = true; double value = sig->maximum(); json_object_object_add(response, "value", json_object_new_double(value)); } - else if (strcasestr(opts[idx], "last") && !last) + else if (o.first.compare("last") && !last) { last = true; struct signalValue value = sig->last(); @@ -535,14 +535,14 @@ std::vector> Composer::searchSignals(const std::string& json_object* Composer::getsignalValue(const std::string& sig, json_object* options) { - const char **opts = nullptr; + std::map opts; json_object *response = nullptr, *finalResponse = json_object_new_array(); - wrap_json_unpack(options, "{s?s?s?s?!}", - &opts[0], - &opts[1], - &opts[2], - &opts[3]); + wrap_json_unpack(options, "{s?i, s?i, s?i, s?i !}", + "average", &opts["average"], + "minimum", &opts["minimum"], + "maximum", &opts["maximum"], + "last", &opts["last"]); std::vector> sigP = searchSignals(sig); if(!sigP.empty()) @@ -551,7 +551,7 @@ json_object* Composer::getsignalValue(const std::string& sig, json_object* optio { wrap_json_pack(&response, "{ss}", "signal", sig->id().c_str()); - if (!opts) + if (opts.empty()) { struct signalValue value = sig->last(); if(value.hasBool) -- cgit 1.2.3-korg