Skip to main content

AVxcelerate Simulation Framework 2025 R1

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 
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 
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

Connect with Ansys