diff --git a/ev-dev-tools/src/ev_cli/templates/interface-Base.hpp.j2 b/ev-dev-tools/src/ev_cli/templates/interface-Base.hpp.j2 index 98749b8..a4c74c5 100644 --- a/ev-dev-tools/src/ev_cli/templates/interface-Base.hpp.j2 +++ b/ev-dev-tools/src/ev_cli/templates/interface-Base.hpp.j2 @@ -39,7 +39,7 @@ public: if (error_factory == nullptr) { EVLOG_error << "error_factory is nullptr"; } - impl_mapping = ev->get_impl_mapping(name); + impl_mapping = Everest::get_impl_mapping(ev->get_mapping(), name); } } diff --git a/ev-dev-tools/src/ev_cli/templates/interface-Exports.hpp.j2 b/ev-dev-tools/src/ev_cli/templates/interface-Exports.hpp.j2 index 3712acd..a60be4f 100644 --- a/ev-dev-tools/src/ev_cli/templates/interface-Exports.hpp.j2 +++ b/ev-dev-tools/src/ev_cli/templates/interface-Exports.hpp.j2 @@ -15,10 +15,11 @@ class {{ info.class_name }} { public: - {{ info.class_name }}(Everest::ModuleAdapter* adapter, Requirement req, const std::string& module_id) + {{ info.class_name }}(Everest::ModuleAdapter* adapter, Requirement req, const std::string& module_id, std::optional mapping) : module_id(module_id), _adapter(adapter), - _req(req) { + _req(req), + _mapping(mapping) { if (adapter == nullptr) { EVLOG_error << "adapter is nullptr, please check the initialization of the module"; error_manager = nullptr; @@ -146,13 +147,14 @@ public: std::shared_ptr error_state_monitor; std::optional get_mapping() { - return _req.mapping; + return _mapping; } private: std::shared_ptr error_manager; Everest::ModuleAdapter* const _adapter; Requirement _req; + std::optional _mapping; }; #endif // {{ info.hpp_guard }} diff --git a/ev-dev-tools/src/ev_cli/templates/ld-ev.cpp.j2 b/ev-dev-tools/src/ev_cli/templates/ld-ev.cpp.j2 index 2436223..587a77e 100644 --- a/ev-dev-tools/src/ev_cli/templates/ld-ev.cpp.j2 +++ b/ev-dev-tools/src/ev_cli/templates/ld-ev.cpp.j2 @@ -104,20 +104,23 @@ std::vector everest_register(const std::map(&adapter, requirement, requirement_module_id)); + auto mapping = fulfillment.at(idx).mapping; + r_{{ requirement.id }}.emplace_back(std::make_unique<{{ requirement.class_name }}>(&adapter, requirement, requirement_module_id, mapping)); } } {% else %} std::string r_{{ requirement.id }}_requirement_module_id; Requirement r_{{ requirement.id }}_requirement; + std::optional r_{{ requirement.id }}_mapping; if (fulfillments.find("{{ requirement.id }}") != fulfillments.end()) { auto fulfillment = fulfillments.at("{{ requirement.id }}"); if (fulfillment.size() > 0) { r_{{ requirement.id }}_requirement_module_id = fulfillment.at(0).module_id; r_{{ requirement.id }}_requirement = fulfillment.at(0).requirement; + r_{{ requirement.id }}_mapping = fulfillment.at(0).mapping; } } - auto r_{{ requirement.id }} = std::make_unique<{{ requirement.class_name }}>(&adapter, r_{{ requirement.id }}_requirement, r_{{ requirement.id }}_requirement_module_id); + auto r_{{ requirement.id }} = std::make_unique<{{ requirement.class_name }}>(&adapter, r_{{ requirement.id }}_requirement, r_{{ requirement.id }}_requirement_module_id, r_{{ requirement.id }}_mapping); {% endif %} {% else %} (void) fulfillments; // no requirements -> unused fulfillments