Skip to main content

AVxcelerate Simulation Framework 2025 R2 SP02

base_activity

Last update: 19.09.2025
1
3
4#pragma once
5
6#include "core/communication/i_topic.h"
7#include "core/communication/topic_registry.h"
8#include "core/lifecycle/activity/i_activity.h"
9#include "core/scheduler/i_scheduler_client/i_scheduler_client.h"
10
16{
17namespace core
18{
19
20class CommunicationManager;
21
22namespace lifecycle
23{
24// clang-format off
73// clang-format on
74
75class BaseActivity : public IActivity
76{
77 public:
84 BaseActivity(const std::string& activity_name,
85 std::shared_ptr<core::CommunicationManager> communication_manager_ptr,
86 std::unique_ptr<scheduling::ISchedulerClient> scheduler_client);
87
95 BaseActivity(const std::string& activity_name,
96 std::shared_ptr<core::CommunicationManager> communication_manager_ptr,
97 std::unique_ptr<scheduling::ISchedulerClient> scheduler_client,
98 std::chrono::milliseconds timeout);
99
105 BaseActivity(const std::string& activity_name, const Topics& topics);
106
113 BaseActivity(const std::string& activity_name, const Topics& topics, std::chrono::milliseconds timeout);
114
118 virtual ~BaseActivity();
119
123 std::string GetName() const override;
124
130
135 void Step() final;
136
141
147
153
159
166
172
173 protected:
177 void Init() override {}
178
182 virtual void ExecuteStep() = 0;
183
187 virtual void AddPublisherAndSubscriber() = 0;
188
194 template <typename Topic>
195 void AddPublisher(const core::TopicId& topic_id, typename Topic::PublisherCallback callback);
201 template <typename Topic>
202 void AddSubscriber(const core::TopicId& topic_id, typename Topic::SubscriberMessageCallback callback);
203
204 private:
209 void WaitForPubSubConnection() override;
210
211 std::string name_;
212 std::shared_ptr<core::CommunicationManager> communication_manager_ptr_;
213 std::unique_ptr<scheduling::ISchedulerClient> scheduler_client_ptr_;
214 std::chrono::milliseconds timeout_;
215 bool is_init_step_finished_{false};
216};
217
218} // namespace lifecycle
219} // namespace core
220} // namespace simulation_framework
This is the concrete Topic class that can be used for creation of a communication channel with given ...
Definition topic.h:38
This is the basic implementation of IActivity interface. Inheriting classes, i.e. a concrete simulati...
time::Timestamp GetCurrentTimestamp() const final
Get current simulation timestamp.
std::chrono::milliseconds GetCycleTime() const final
Return cycle time of this activity as duration in milliseconds.
void SetUpCommunication() final
Register this activity's bounding communications, managed by higher level. Modifying by inheriting cl...
void AddPublisher(const core::TopicId &topic_id, typename Topic::PublisherCallback callback)
Template method which allows user to add one publisher pushing message to the given Topic.
void SetSimulationSettings(const scheduling::SimulationSettings &sim_settings) final
Set the simulation settings for this activity.
void Step() final
Calls the ExecuteStep() for internal logic and send/receive message from corresponding pub/sub,...
BaseActivity(const std::string &activity_name, const Topics &topics)
Construct an BaseActivity using RTIDDS communication to join simulation.
const SimulationParameters::CustomizedParameters & GetCustomizedParameters() const final
Retrieves the customized parameters for the activity.
BaseActivity(const std::string &activity_name, std::shared_ptr< core::CommunicationManager > communication_manager_ptr, std::unique_ptr< scheduling::ISchedulerClient > scheduler_client, std::chrono::milliseconds timeout)
Construct an BaseActivity to join simulation.
void AddSubscriber(const core::TopicId &topic_id, typename Topic::SubscriberMessageCallback callback)
Template method which allows user to add one subscriber receiving message to the given Topic.
void Init() override
Initialize this activity with customized action.
BaseActivity(const std::string &activity_name, const Topics &topics, std::chrono::milliseconds timeout)
Construct an BaseActivity using RTIDDS communication to join simulation.
BaseActivity(const std::string &activity_name, std::shared_ptr< core::CommunicationManager > communication_manager_ptr, std::unique_ptr< scheduling::ISchedulerClient > scheduler_client)
Construct an BaseActivity to join simulation.
virtual ~BaseActivity()
Destructor of an BaseActivity class.
virtual void AddPublisherAndSubscriber()=0
Addition of Pub/Sub into a concrete activity.
virtual void ExecuteStep()=0
Core operation of customer logic in a concrete activity.
std::string GetSimulationOutputDirectory() const final
Return output directory of simulation as string.
Interface for simulation activities.
Definition i_activity.h:30
The namespace for all core functionalities under namespace simulation_framework.
The top namespace for simulation framework.
The namespace for simulation time related implementation under namespace simulation_framework::core.
The SimulationParameters struct encapsulates parameters related to simfwk-core configuration.

Connect with Ansys