Set parent from configuration_generated objects.
[apps/low-level-can-service.git] / CAN-binder / low-can-binding / binding / configuration-generated.cpp
index 24f89ec..bce469e 100644 (file)
@@ -4,7 +4,7 @@
 configuration_t::configuration_t()
        : can_bus_manager_{utils::config_parser_t{"/etc/dev-mapping.conf"}}
        , can_message_set_{
-               can_message_set_t{0,"example",
+               {std::make_shared<can_message_set_t>(can_message_set_t{0,"example",
                        { // beginning can_message_definition_ vector
                                {std::make_shared<can_message_definition_t>(can_message_definition_t{"can0",0x3D9,can_message_format_t::STANDARD,frequency_clock_t(5.00000f),true,
                                        { // beginning can_signals vector
@@ -220,7 +220,6 @@ configuration_t::configuration_t()
                                                })}
                                        } // end can_signals vector
                                })} // end can_message_definition entry
-
                }, // end can_message_definition vector
                        { // beginning diagnostic_messages_ vector
                                {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
@@ -455,9 +454,29 @@ configuration_t::configuration_t()
                                        true
                                })}
                        } // end diagnostic_messages_ vector
-               } // end can_message_set entry
+               })} // end can_message_set entry
        } // end can_message_set vector
-{}
+{
+       for(auto& cms: can_message_set_)
+       {
+               std::vector<std::shared_ptr<can_message_definition_t> >& can_messages_definition = cms->get_can_message_definition();
+               for(auto& cmd : can_messages_definition)
+               {
+                       cmd->set_parent(cms.get());
+                       std::vector<std::shared_ptr<can_signal_t> >& can_signals = cmd->get_can_signals();
+                       for(auto& sig: can_signals)
+                       {
+                               sig->set_parent(cmd.get());
+                       }
+               }
+
+               std::vector<std::shared_ptr<diagnostic_message_t> >& diagnostic_messages = cms->get_diagnostic_messages();
+               for(auto& dm : diagnostic_messages)
+               {
+                       dm->set_parent(cms.get());
+               }
+       }
+}
 
 const std::string configuration_t::get_diagnostic_bus() const
 {