X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fcan-signals.cpp;h=5f23c40a19a01522aca38cc47367fbe064f9162a;hb=2e93fc880e497ac553111ba27f2de4b44ea94027;hp=ee682f9f944f595376d8371dfcdac4f39808079c;hpb=747d58ad84d230f6cf11ac818bab65019df83611;p=apps%2Fagl-service-can-low-level.git diff --git a/src/can-signals.cpp b/src/can-signals.cpp index ee682f9f..5f23c40a 100644 --- a/src/can-signals.cpp +++ b/src/can-signals.cpp @@ -17,14 +17,35 @@ #include "can-signals.hpp" +#include + +#include "can-decoder.hpp" +#include "low-can-binding.hpp" + +std::vector> CAN_MESSAGES = { + {{620, CanMessageFormat::STANDARD, {10, 0, nullptr}, false, (uint8_t)NULL}}, +}; + /** * @brief Dumb SIGNALS array. It is composed by CanMessageSet * SIGNALS[MESSAGE_SET_ID][CanSignal] */ -std::vector> SIGNALS { - {}// message set: example +std::vector> SIGNALS = { + {{&(CAN_MESSAGES[0][0]), "can.driver_door.open", 2, 4, 1.000000, 0.000000, 0.000000, 0.000000, {10, 0, nullptr}, false, true, nullptr, 0, false, decoder_t::booleanDecoder, nullptr, false, (float)NULL}}, }; +/** +* @brief Mutex allowing safe manipulation on subscribed_signals map. +* @desc To ensure that the map object isn't modified when we read it, you +* have to set this mutex before use subscribed_signals map object. +*/ +std::mutex subscribed_signals_mutex; + +std::mutex& get_subscribed_signals_mutex() +{ + return subscribed_signals_mutex; +} + const std::vector getSignals() { return SIGNALS[MESSAGE_SET_ID]; @@ -35,7 +56,7 @@ size_t getSignalCount() return SIGNALS[MESSAGE_SET_ID].size(); } -std::vector find_can_signals(const struct afb_binding_interface* interface, openxc_DynamicField& key) +std::vector find_can_signals(const openxc_DynamicField &key) { std::vector signals; @@ -57,7 +78,7 @@ std::vector find_can_signals(const struct afb_binding_interface* inte } break; default: - ERROR(interface, "find_can_signals: wrong openxc_DynamicField specified. Use openxc_DynamicField_Type_NUM or openxc_DynamicField_Type_STRING type only."); + ERROR(binder_interface, "find_can_signals: wrong openxc_DynamicField specified. Use openxc_DynamicField_Type_NUM or openxc_DynamicField_Type_STRING type only."); CanSignal cs; ::memset(&cs, 0, sizeof(CanSignal)); signals.push_back(cs);