Use shared_ptr to set message_set parent
[apps/agl-service-can-low-level.git] / low-can-binding / can / can-message-set.cpp
index a9f8cf2..a5cf881 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,
-               uint8_t can_bus_count,
-               unsigned short can_message_count,
-               unsigned short can_signal_count,
-               unsigned short can_command_count,
-               unsigned short obd2_signal_count)
+               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_bus_count_{can_bus_count}
-       , can_message_count_{can_message_count}
-       , can_signal_count_{can_signal_count}
-       , can_command_count_{can_command_count}
-       , obd2_signal_count_{obd2_signal_count}
+       , can_messages_definition_{can_messages_definition}
+       , diagnostic_messages_{diagnostic_messages}
+{}
+
+/// @brief Returns a vector holding all message definitions which are handled by this message set.
+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_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();
+               can_signals.insert( can_signals.end(),
+                                                       cmd_signals.begin(),
+                                                       cmd_signals.end()
+               );
+       }
+
+       return can_signals;
 }
+
+/// @brief Returns a vector holding all diagnostic message definitions which are handled by this message set.
+std::vector<std::shared_ptr<diagnostic_message_t> >& can_message_set_t::get_diagnostic_messages()
+{
+       return diagnostic_messages_;
+}
\ No newline at end of file