diff options
author | Romain Forlot <romain.forlot@iot.bzh> | 2019-07-01 18:55:23 +0200 |
---|---|---|
committer | Romain Forlot <romain.forlot@iot.bzh> | 2019-07-03 09:37:05 +0200 |
commit | 3977705505069b4210b29e8188cdd35813c65886 (patch) | |
tree | 91664b21e4cb83e91b2288ff7e2e720171a80362 /low-can-binding | |
parent | 105d083165b263851edfcd3ffb7f64acb888d14b (diff) |
signals.cpp: Make an insensitive string comparisonhalibut_8.0.2halibut_8.0.1halibut_8.0.0halibut_7.99.3halibut/8.0.2halibut/8.0.1halibut/8.0.0halibut/7.99.38.0.28.0.18.0.07.99.3
When sending a CAN signal make an case-insensitive comparison as it isn't
necessary to be strict on that, so case insensitive if fine.
Update the documentation accordingly.
Bug-AGL: SPEC-2582
Change-Id: I998b64cdd9a381da3da582aeba42ab726fff1259
Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
Diffstat (limited to 'low-can-binding')
-rw-r--r-- | low-can-binding/binding/low-can-hat.hpp | 10 | ||||
-rw-r--r-- | low-can-binding/can/signals.cpp | 2 |
2 files changed, 11 insertions, 1 deletions
diff --git a/low-can-binding/binding/low-can-hat.hpp b/low-can-binding/binding/low-can-hat.hpp index e21b9cd0..1662ce04 100644 --- a/low-can-binding/binding/low-can-hat.hpp +++ b/low-can-binding/binding/low-can-hat.hpp @@ -23,6 +23,7 @@ #include <string> #include <memory> #include <systemd/sd-event.h> +#include <cctype> #include <afb/afb-binding> @@ -31,3 +32,12 @@ class low_can_subscription_t; void on_no_clients(std::shared_ptr<low_can_subscription_t> can_subscription, std::map<int, std::shared_ptr<low_can_subscription_t> >& s); void on_no_clients(std::shared_ptr<low_can_subscription_t> can_subscription, uint32_t pid, std::map<int, std::shared_ptr<low_can_subscription_t> >& s); int read_message(sd_event_source *s, int fd, uint32_t revents, void *userdata); + +inline bool caseInsCharCompareN(char a, char b) { + return(toupper(a) == toupper(b)); +} + +inline bool caseInsCompare(const std::string& s1, const std::string& s2) { + return((s1.size() == s2.size()) && + equal(s1.begin(), s1.end(), s2.begin(), caseInsCharCompareN)); +} diff --git a/low-can-binding/can/signals.cpp b/low-can-binding/can/signals.cpp index b47001bd..3d263431 100644 --- a/low-can-binding/can/signals.cpp +++ b/low-can-binding/can/signals.cpp @@ -161,7 +161,7 @@ uint64_t signal_t::get_states(const std::string& value) const uint64_t ret = -1; for( const auto& state: states_) { - if(state.second == value) + if(caseInsCompare(state.second, value)) { ret = (uint64_t)state.first; break; |