Set parent from configuration_generated objects.
[apps/low-level-can-service.git] / CAN-binder / low-can-binding / can / can-message-set.cpp
index 46dc448..dcb859d 100644 (file)
 
 #include "can-message-set.hpp"
 
+#include "../can/can-message-definition.hpp"
+
 can_message_set_t::can_message_set_t(
                uint8_t index,
-               const std::string& name,
-               std::vector<std::shared_ptr<can_message_definition_t> > can_messages_definition)
+               const std::string name,
+               const std::vector<std::shared_ptr<can_message_definition_t> >& can_messages_definition,
+               const std::vector<std::shared_ptr<diagnostic_message_t> >& diagnostic_messages)
        : index_{index}
        , name_{name}
-       , can_messages_definition_{can_messages_definition}
-{
-       for(auto& cmd : can_messages_definition_)
-       {
-               cmd->set_parent(std::make_shared<can_message_set_t>(*this));
-       }
-}
+       , can_messages_definition_{std::move(can_messages_definition)}
+       , diagnostic_messages_{std::move(diagnostic_messages)}
+{}
 
 /// @brief Return vector holding all message definition handled by this message set.
-std::vector<std::shared_ptr<can_message_definition_t> > can_message_set_t::get_can_message_definition()
+std::vector<std::shared_ptr<can_message_definition_t> >& can_message_set_t::get_can_message_definition()
 {
        return can_messages_definition_;
 }
 
-std::vector<std::shared_ptr<can_signal_t> > can_message_set_t::get_can_signals() const
+std::vector<std::shared_ptr<can_signal_t> > can_message_set_t::get_all_can_signals() const
 {
        std::vector<std::shared_ptr<can_signal_t> > can_signals;
        for(const auto& cmd: can_messages_definition_)
        {
-               std::vector<std::shared_ptr<can_signal_t> > cmd_signals = cmd->get_can_signals();
+               std::vector<std::shared_ptr<can_signal_t> >& cmd_signals = cmd->get_can_signals();
                can_signals.insert( can_signals.end(),
                                                        cmd_signals.begin(),
                                                        cmd_signals.end()
@@ -51,4 +50,9 @@ std::vector<std::shared_ptr<can_signal_t> > can_message_set_t::get_can_signals()
        }
 
        return can_signals;
+}
+
+std::vector<std::shared_ptr<diagnostic_message_t> >& can_message_set_t::get_diagnostic_messages()
+{
+       return diagnostic_messages_;
 }
\ No newline at end of file