X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fcan_decode_message.cpp;h=a28fa180e6beb28431d6f4fe4dff918e76c43cdb;hb=c8a9ae83b95b3105717c58e390ba216567937772;hp=ff5a8e6d8e10480779937e42960047e361979635;hpb=28c03d4ea61c7ec40d62e49818bdfb2d8ef80a7f;p=apps%2Fagl-service-can-low-level.git diff --git a/src/can_decode_message.cpp b/src/can_decode_message.cpp index ff5a8e6d..a28fa180 100644 --- a/src/can_decode_message.cpp +++ b/src/can_decode_message.cpp @@ -19,58 +19,51 @@ #include #include #include +#include #include -#include "can-utils.h" -#include "can-decoder.h" +#include "can-utils.hpp" +#include "can-decoder.hpp" #include "openxc.pb.h" +#include "openxc-utils.hpp" -void can_decode_message(CanBus_c *can_bus) +void can_decode_message(can_bus_t &can_bus) { - CanMessage_c *can_message; - int i; - std:vector *signals; - CanSignal sig; + can_message_t can_message; + std:vector signals; + std:vector ::iterator signals_i; openxc_VehicleMessage vehicle_message; - openxc_SimpleMessage s_message; - openxc_DynamicField key, ret; - Decoder_c decoder(); - - vehicle_message = {.has_type = true, - .type = openxc_VehicleMessage_Type::openxc_VehicleMessage_Type_SIMPLE, - .has_simple_message = true }; + openxc_DynamicField search_key, ret; + bool send = true; + + decoder_t decoder(); while(true) { - if(can_message = can_bus->next_can_message()) + if(can_message = can_bus.next_can_message()) { /* First we have to found which CanSignal is */ - key = { .has_type = true, - .type = openxc_DynamicField_Type::openxc_DynamicField_Type_NUM, - .has_numeric_value = true, - .numeric_value = (double)can_message.get_id() }; - signals = GetSignals(key); + search_key = build_DynamicField(openxc_DynamicField_Type::openxc_DynamicField_Type_NUM, (double)can_message.get_id()) + signals = find_can_signals(search_key); + /* Decoding the message ! Don't kill the messenger ! */ - if(signals.size() > 0) - { - for(i=0; i< signals.size(); i++) + for(const auto& sig : signals) + { + subscribed_signals_i = subscribed_signals.find(sig.genericName); + + if(subscribed_signals_i != subscribed_signals.end() && + afb_event_is_valid(subscribed_signals_i->second)) { - sig = signals.back(); - ret = decoder.decodeSignal(&sig, can_message, SIGNALS, SIGNALS.size(), true); + ret = decoder.decodeSignal(sig, can_message, getSignals(), &send); - s_message = {.has_name = true, - .name = sig->genericName, - .has_value = true, - .value = ret - }; - vehicle_message.simple_message = s_message; + s_message = build_SimpleMessage(sig.genericName, ret); + + vehicle_message = build_VehicleMessage_with_SimpleMessage(openxc_DynamicField_Type::openxc_DynamicField_Type_NUM, s_message); vehicle_message_q.push(vehicle_message); - - signals.pop_back(); } } } } -} \ No newline at end of file +}