ifw-slm 0.1.2
 
Loading...
Searching...
No Matches
ifw::slm::BaseLoopExecuteActivity Class Referenceabstract

#include <baseLoopActions.hpp>

Inheritance diagram for ifw::slm::BaseLoopExecuteActivity:
ifw::slm::KillableThreadActivity ifw::slm::MalRequestLoopActivity< Interface > ifw::slm::TestableExecuteActivity

Public Member Functions

 BaseLoopExecuteActivity (const std::string &id, rad::SMAdapter &sm, DataContext &data, int loop_index, LoopCompletionHandler *completion_handler=nullptr)
 
virtual ~BaseLoopExecuteActivity ()=default
 
void Run () override
 
 BaseLoopExecuteActivity (const BaseLoopExecuteActivity &)=delete
 
BaseLoopExecuteActivityoperator= (const BaseLoopExecuteActivity &)=delete
 
template<typename T>
GetLoopParam (const std::string &name) const
 
template<typename T>
GetLoopParam (const std::string &name, const T &default_value) const
 
template<typename T>
bool ReadLoopOldb (const std::string &name, T &out) const
 
- Public Member Functions inherited from ifw::slm::KillableThreadActivity
 KillableThreadActivity (const KillableThreadActivity &)=delete
 
KillableThreadActivityoperator= (const KillableThreadActivity &)=delete
 
pthread_t GetNativeHandle () const override
 
bool IsThreadJoined () const override
 

Protected Member Functions

virtual bool DoExecute ()=0
 
- Protected Member Functions inherited from ifw::slm::KillableThreadActivity
void StartThread () override
 
void JoinThread () override
 

Protected Attributes

rad::SMAdapter & m_sm
 
DataContextm_data
 
int m_loop_index
 
LoopStateData m_loop_state
 
LoopCompletionHandlerm_completion_handler
 
log4cplus::Logger m_logger = log4cplus::Logger::getInstance(LOGGER_NAME + ".BaseLoopExecuteActivity")
 
- Protected Attributes inherited from ifw::slm::KillableThreadActivity
std::atomic< bool > m_killed {false}
 
std::atomic< int > m_thread_generation {0}
 

Detailed Description

Base class for loop execute activities.

This activity runs the loop execution logic in a separate thread. Users should extend this class and override DoExecute() to implement their custom control logic.

Constructor & Destructor Documentation

◆ BaseLoopExecuteActivity() [1/2]

ifw::slm::BaseLoopExecuteActivity::BaseLoopExecuteActivity ( const std::string & id,
rad::SMAdapter & sm,
DataContext & data,
int loop_index,
LoopCompletionHandler * completion_handler = nullptr )

◆ ~BaseLoopExecuteActivity()

virtual ifw::slm::BaseLoopExecuteActivity::~BaseLoopExecuteActivity ( )
virtualdefault

◆ BaseLoopExecuteActivity() [2/2]

ifw::slm::BaseLoopExecuteActivity::BaseLoopExecuteActivity ( const BaseLoopExecuteActivity & )
delete

Member Function Documentation

◆ DoExecute()

virtual bool ifw::slm::BaseLoopExecuteActivity::DoExecute ( )
protectedpure virtual

Hook method for derived classes to implement custom execute logic.

This method is called from Run() and should contain the actual control algorithm implementation.

Returns
true if execution was successful, false otherwise

Implemented in ifw::slm::TestableExecuteActivity.

◆ GetLoopParam() [1/2]

template<typename T>
T ifw::slm::BaseLoopExecuteActivity::GetLoopParam ( const std::string & name) const
inline

Read a per-loop configuration parameter by name.

"params/<name>" entries live in the params vector_string node, so they must go through GetLoopParamFromConfig (which parses the vector) and not through a plain rad::Config key lookup - config-ng cannot resolve a named child on a sequence node.

Parameters
nameParameter name (e.g. "params/motor_speed")
Template Parameters
TExpected type (string, int, double, bool)
Returns
Parameter value
Exceptions
std::runtime_errorif parameter missing or type mismatch

◆ GetLoopParam() [2/2]

template<typename T>
T ifw::slm::BaseLoopExecuteActivity::GetLoopParam ( const std::string & name,
const T & default_value ) const
inline

Read a per-loop configuration parameter with a default value.

◆ operator=()

BaseLoopExecuteActivity & ifw::slm::BaseLoopExecuteActivity::operator= ( const BaseLoopExecuteActivity & )
delete

◆ ReadLoopOldb()

template<typename T>
bool ifw::slm::BaseLoopExecuteActivity::ReadLoopOldb ( const std::string & name,
T & out ) const
inline

Read this loop's current OLDB value (key sl/loop_/<name>), e.g. a setpoint another component wrote. Returns false if the key is missing or has a different type. This is a convenience for loops that need to consume OLDB state instead of (or in addition to) static config.

◆ Run()

void ifw::slm::BaseLoopExecuteActivity::Run ( )
overridevirtual

Member Data Documentation

◆ m_completion_handler

LoopCompletionHandler* ifw::slm::BaseLoopExecuteActivity::m_completion_handler
protected

◆ m_data

DataContext& ifw::slm::BaseLoopExecuteActivity::m_data
protected

◆ m_logger

log4cplus::Logger ifw::slm::BaseLoopExecuteActivity::m_logger = log4cplus::Logger::getInstance(LOGGER_NAME + ".BaseLoopExecuteActivity")
protected

◆ m_loop_index

int ifw::slm::BaseLoopExecuteActivity::m_loop_index
protected

◆ m_loop_state

LoopStateData ifw::slm::BaseLoopExecuteActivity::m_loop_state
protected

◆ m_sm

rad::SMAdapter& ifw::slm::BaseLoopExecuteActivity::m_sm
protected

The documentation for this class was generated from the following files: