X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=low-can-binding%2Fcan%2Fmessage-set.cpp;h=d4c3457c8beb193da6034fc15dac7bfbbacd584a;hb=d4ce219e8031b201b71df5e7b71181f7a15e3240;hp=69682e1acacae5cc88d58248f55f90f710d6596c;hpb=2f60d294b3fa4e243fa67a738f9b82a0b428a7fc;p=apps%2Fagl-service-can-low-level.git diff --git a/low-can-binding/can/message-set.cpp b/low-can-binding/can/message-set.cpp index 69682e1a..d4c3457c 100644 --- a/low-can-binding/can/message-set.cpp +++ b/low-can-binding/can/message-set.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2015, 2016, 2017 "IoT.bzh" + * Copyright (C) 2015, 2016, 2017, 2018, 2019 "IoT\.bzh" * Author "Romain Forlot" * Author "Loïc Collignon" * @@ -23,23 +23,54 @@ message_set_t::message_set_t( uint8_t index, const std::string& name, - const std::vector >& messages_definition, - const std::vector >& diagnostic_messages) + const vect_ptr_msg_def_t& messages_definition, + const vect_ptr_diag_msg_t& diagnostic_messages) : index_{index} , name_{name} , messages_definition_{messages_definition} , diagnostic_messages_{diagnostic_messages} {} + +int message_set_t::add_message_definition(std::shared_ptr msg_def) +{ + for (auto old_msg_def : messages_definition_) + { + if(old_msg_def->get_id() == msg_def->get_id()) + { + AFB_ERROR("Same id between : %s and %s", old_msg_def->get_name().c_str(), msg_def->get_name().c_str()); + return -1; + } + } + messages_definition_.push_back(msg_def); + return 0; +} + + +int message_set_t::add_diagnostic_message(std::shared_ptr diag_msg) +{ + for (auto old_diag_msg : diagnostic_messages_) + { + if(old_diag_msg->get_pid() == diag_msg->get_pid()) + { + AFB_ERROR("Same pid between : %s and %s", old_diag_msg->get_generic_name().c_str(), diag_msg->get_generic_name().c_str()); + return -1; + } + } + diagnostic_messages_.push_back(diag_msg); + return 0; +} + + /// @brief Returns a vector holding all message definitions which are handled by this message set. -std::vector>& message_set_t::get_messages_definition() +vect_ptr_msg_def_t& message_set_t::get_messages_definition() { return messages_definition_; } std::vector> message_set_t::get_all_signals() const { - std::vector > signals; + vect_ptr_signal_t signals; for(const auto& cmd: messages_definition_) { std::vector> cmd_signals = cmd->get_signals(); @@ -53,7 +84,12 @@ std::vector> message_set_t::get_all_signals() const } /// @brief Returns a vector holding all diagnostic message definitions which are handled by this message set. -std::vector>& message_set_t::get_diagnostic_messages() +vect_ptr_diag_msg_t& message_set_t::get_diagnostic_messages() { return diagnostic_messages_; } + +uint8_t message_set_t::get_index() const +{ + return index_; +}