File fmu_base_activity.h
Last update: 22.04.2026Location: core/lifecycle/fmu_activity/fmu_base_activity.h
Classes
Namespaces
Includes
- core/export/simfwk_core_export.h
- core/lifecycle/activity/base_activity.h
- core/lifecycle/fmu_activity/fmu_config.h
- core/lifecycle/fmu_activity/i_fmu_logic.h
- core/message/rtidds/fmu/fmu_message.hpp
- core/scheduler/i_scheduler_client/i_scheduler_client.h
-
Source
#ifndef SIMFWK_CORE_LIFECYCLE_FMUACTIVITY_FMUBASEACTIVITY_H
#define SIMFWK_CORE_LIFECYCLE_FMUACTIVITY_FMUBASEACTIVITY_H
#include "core/export/simfwk_core_export.h"
#include "core/lifecycle/activity/base_activity.h"
#include "core/lifecycle/fmu_activity/fmu_config.h"
#include "core/lifecycle/fmu_activity/i_fmu_logic.h"
#include "core/message/rtidds/fmu/fmu_message.hpp"
#include "core/scheduler/i_scheduler_client/i_scheduler_client.h"
#include <optional>
namespace simulation_framework
{
namespace core
{
class CommunicationManager;
namespace lifecycle
{
class SIMFWK_CORE_API FmuBaseActivity : public BaseActivity
{
public:
FmuBaseActivity(const std::string& name,
std::shared_ptr<CommunicationManager> communication_manager,
std::unique_ptr<scheduling::ISchedulerClient> scheduler_client,
FmuConfig fmu_config,
std::unique_ptr<IFmuLogic> fmu_logic,
const std::optional<double> step_size = std::nullopt);
virtual void ExecuteStep() override;
virtual void Init() override;
virtual void AddPublisherAndSubscriber() override;
protected:
FmuInOutMap DecodeMessage(const rtidds::FmuMessage& message) const;
rtidds::FmuMessage EncodeMessage(const FmuInOutMap& outputs) const;
FmuInOutMap DecodeBytesMessage(const rtidds::GenericBytesMessage& message) const;
rtidds::GenericBytesMessage EncodeBytesMessage(const FmuInOutMap& outputs) const;
void AddSubscriberForTopic(const std::string& topic_name, FmuInOutMap& var_map);
void AddPublisherForTopic(const std::string& topic_name, const FmuInOutMap& var_map);
FmuConfig fmu_config_{};
std::unique_ptr<IFmuLogic> fmu_logic_;
std::optional<double> step_size_;
FmuTopicToVarMap init_param_topics_to_var_map_{};
FmuTopicToVarMap input_topics_to_var_map_{};
FmuTopicToVarMap output_topics_to_var_map_{};
};
} // namespace lifecycle
} // namespace core
} // namespace simulation_framework
#endif // SIMFWK_CORE_LIFECYCLE_FMUACTIVITY_FMUBASEACTIVITY_H