diff options
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; |