    

 ## On this page

  

 

 # File fmu\_base\_activity.h

 Last update: 22.04.2026 

![](https://img.shields.io/badge/language-C%2B%2B-blue "C++")

**Location**: `core/lifecycle/fmu_activity/fmu_base_activity.h`

## Classes

- [simulation\_framework::core::lifecycle::FmuBaseActivity](classsimulation__framework_1_1core_1_1lifecycle_1_1FmuBaseActivity.md#classsimulation__framework_1_1core_1_1lifecycle_1_1FmuBaseActivity)

## Namespaces

- [simulation\_framework](namespacesimulation__framework.md#namespacesimulation__framework)
- [simulation\_framework::core](namespacesimulation__framework_1_1core.md#namespacesimulation__framework_1_1core)
- [simulation\_framework::core::lifecycle](namespacesimulation__framework_1_1core_1_1lifecycle.md#namespacesimulation__framework_1_1core_1_1lifecycle)

## Includes

- core/export/simfwk\_core\_export.h
- [core/lifecycle/activity/base\_activity.h](base__activity_8h.md#base__activity_8h)
- [core/lifecycle/fmu\_activity/fmu\_config.h](fmu__config_8h.md#fmu__config_8h)
- [core/lifecycle/fmu\_activity/i\_fmu\_logic.h](i__fmu__logic_8h.md#i__fmu__logic_8h)
- core/message/rtidds/fmu/fmu\_message.hpp
- [core/scheduler/i\_scheduler\_client/i\_scheduler\_client.h](i__scheduler__client_8h.md#i__scheduler__client_8h)
- 

## Source

```cpp


#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

```