fmu_base_activity Last update: 16.07.2025 1 4 #pragma once 5 6 #include "core/lifecycle/activity/base_activity.h" 7 #include "core/lifecycle/fmu_activity/fmu_config.h" 8 #include "core/lifecycle/fmu_activity/i_fmu_logic.h" 9 #include "core/message/rtidds/fmu/fmu_message.hpp" 10 #include "core/scheduler/i_scheduler_client/i_scheduler_client.h" 11 #include <optional> 12 17 namespace simulation_framework 18 { 19 namespace core 20 { 21 22 class CommunicationManager; 23 24 namespace lifecycle 25 { 26 30 class FmuBaseActivity : public BaseActivity 31 { 32 public: 41 FmuBaseActivity(const std::string& name, 42 std::shared_ptr<CommunicationManager> communication_manager, 43 std::unique_ptr<scheduling::ISchedulerClient> scheduler_client, 44 FmuConfig fmu_config, 45 std::unique_ptr<IFmuLogic> fmu_logic, 46 const std::optional<double> step_size = std::nullopt); 47 49 virtual void ExecuteStep() override; 50 52 virtual void Init() override; 53 55 virtual void AddPublisherAndSubscriber() override; 56 57 protected: 61 FmuInOutMap DecodeMessage(const rtidds::FmuMessage& message); 62 66 rtidds::FmuMessage EncodeMessage(const FmuInOutMap& outputs); 67 71 FmuInOutMap DecodeBytesMessage(const rtidds::GenericBytesMessage& message); 72 76 rtidds::GenericBytesMessage EncodeBytesMessage(const FmuInOutMap& outputs); 77 79 FmuConfig fmu_config_{}; 80 82 std::unique_ptr<IFmuLogic> fmu_logic_; 83 85 std::optional<double> step_size_; 86 88 FmuTopicToVarMap input_topics_to_var_map_{}; 89 91 FmuTopicToVarMap output_topics_to_var_map_{}; 92 }; 93 94 } // namespace lifecycle 95 } // namespace core 96 } // namespace simulation_framework