Skip to main content

AVxcelerate Simulation Framework 2026 R1 SP01

File fmu_base_activity.h

Last update: 22.04.2026

Location: core/lifecycle/fmu_activity/fmu_base_activity.h

Classes

Namespaces

Includes

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

Connect with Ansys