X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fcan-signals.cpp;h=7af957f963852f45ff322646117fbe989571a7c8;hb=914a47b69953ec321e35109841f2564286224631;hp=13ff30b1e8e957e7cadcbc33c2dbe5ef4da42e66;hpb=c2a2b12c1ec1a4e17a3c95ceb8f010ce961a909e;p=apps%2Fagl-service-can-low-level.git diff --git a/src/can-signals.cpp b/src/can-signals.cpp index 13ff30b1..7af957f9 100644 --- a/src/can-signals.cpp +++ b/src/can-signals.cpp @@ -16,6 +16,7 @@ */ #include +#include #include "can-signals.h" bool match(const std::string &first, const std::string &second) @@ -23,18 +24,34 @@ bool match(const std::string &first, const std::string &second) } -CanSignal* getSignals(std::string name) +CanSignal* getSignals(openxc_DynamicField *key) { int n_signals, i; - CanSignal ret_signals[]; + std::vector ret_signals; - n_signals = size(SIGNALS); + n_signals = SIGNALS.size(); - for(i=0; i<=n_signals; i++) + switch(key->type): { - if(SIGNALS[i].generic_name == name) - return &SIGNALS[i]; - i++; + case openxc_DynamicField_Type::openxc_DynamicField_Type_STRING: + for(i=0; i<=n_signals; i++) + { + if(match((std::string*)key->string_value, (std::string*)SIGNALS[i]->genericName)) + ret_signals.insert(&SIGNALS[i]); + } + break; + case openxc_DynamicField_Type::openxc_DynamicField_Type_NUM: + for(i=0; i<=n_signals; i++) + { + CanMessageDefinition *msg_def = SIGNALS[i]->message; + if(msg_def->id == key->numeric_value) + ret_signals.insert(&SIGNALS[i]) + } + break; + default: + return NULL; + break; } - return 0; -} + + return &ret_signals; +} \ No newline at end of file