tin  1.5.9
tsm::runtime::tick_executor< Runtime, Capacity > Class Template Reference

#include <executor.h>

Inheritance diagram for tsm::runtime::tick_executor< Runtime, Capacity >:
Inheritance graph
Collaboration diagram for tsm::runtime::tick_executor< Runtime, Capacity >:
Collaboration graph

Public Types

using runtime_type = Runtime
 
using events = typename Runtime::events
 
using event_list = tsm::detail::as_type_list_t< events >
 

Public Member Functions

constexpr tick_executor (Runtime &runtime)
 
template<typename Event >
 requires (tsm::detail::contains_type< std::decay_t< Event >>(tsm::detail::as_type_list_t< events >{})) bool after_ticks(Event &&event
 
template<typename Event >
 requires (tsm::detail::contains_type< std::decay_t< Event >>(tsm::detail::as_type_list_t< events >{})) bool after_ticks(Event &&event
 
template<typename Event >
 requires (tsm::detail::contains_type< std::decay_t< Event >>(tsm::detail::as_type_list_t< events >{})) bool every_ticks(Event &&event
 
template<typename Event >
 requires (tsm::detail::contains_type< std::decay_t< Event >>(tsm::detail::as_type_list_t< events >{})) bool every_ticks(Event &&event
 
std::size_t tick (tsm::tick_rep elapsed_ticks=1U)
 
std::size_t tick (tsm::tick_count elapsed_ticks)
 
bool step ()
 
std::size_t run_ready ()
 
std::size_t pending () const
 
bool empty () const
 
void clear ()
 

Public Attributes

tsm::tick_rep ticks
 
tsm::tick_count ticks
 
tsm::tick_rep period
 
tsm::tick_count period
 

Detailed Description

template<typename Runtime, std::size_t Capacity = 16U>
class tsm::runtime::tick_executor< Runtime, Capacity >

Tick-driven delayed event executor for one runtime.

The tick executor stores normal HSM events in fixed inline storage and sends them to the runtime when their countdown expires. It sees only explicit tick counts; platform clocks, RTOS ticks, or SysTick interrupts are adapter inputs that call tick.

Member Typedef Documentation

◆ event_list

template<typename Runtime , std::size_t Capacity = 16U>
using tsm::runtime::tick_executor< Runtime, Capacity >::event_list = tsm::detail::as_type_list_t<events>

◆ events

template<typename Runtime , std::size_t Capacity = 16U>
using tsm::runtime::tick_executor< Runtime, Capacity >::events = typename Runtime::events

◆ runtime_type

template<typename Runtime , std::size_t Capacity = 16U>
using tsm::runtime::tick_executor< Runtime, Capacity >::runtime_type = Runtime

Constructor & Destructor Documentation

◆ tick_executor()

template<typename Runtime , std::size_t Capacity = 16U>
constexpr tsm::runtime::tick_executor< Runtime, Capacity >::tick_executor ( Runtime runtime)
inlineexplicitconstexpr

Member Function Documentation

◆ clear()

template<typename Runtime , std::size_t Capacity = 16U>
void tsm::runtime::tick_executor< Runtime, Capacity >::clear ( )
inline

◆ empty()

template<typename Runtime , std::size_t Capacity = 16U>
bool tsm::runtime::tick_executor< Runtime, Capacity >::empty ( ) const
inline

◆ pending()

template<typename Runtime , std::size_t Capacity = 16U>
std::size_t tsm::runtime::tick_executor< Runtime, Capacity >::pending ( ) const
inline

◆ requires() [1/4]

template<typename Runtime , std::size_t Capacity = 16U>
template<typename Event >
tsm::runtime::tick_executor< Runtime, Capacity >::requires ( tsm::detail::contains_type< std::decay_t< Event >>  tsm::detail::as_type_list_t< events >{}) &&

◆ requires() [2/4]

template<typename Runtime , std::size_t Capacity = 16U>
template<typename Event >
tsm::runtime::tick_executor< Runtime, Capacity >::requires ( tsm::detail::contains_type< std::decay_t< Event >>  tsm::detail::as_type_list_t< events >{}) &&

◆ requires() [3/4]

template<typename Runtime , std::size_t Capacity = 16U>
template<typename Event >
tsm::runtime::tick_executor< Runtime, Capacity >::requires ( tsm::detail::contains_type< std::decay_t< Event >>  tsm::detail::as_type_list_t< events >{}) &&

◆ requires() [4/4]

template<typename Runtime , std::size_t Capacity = 16U>
template<typename Event >
tsm::runtime::tick_executor< Runtime, Capacity >::requires ( tsm::detail::contains_type< std::decay_t< Event >>  tsm::detail::as_type_list_t< events >{}) &&

◆ run_ready()

template<typename Runtime , std::size_t Capacity = 16U>
std::size_t tsm::runtime::tick_executor< Runtime, Capacity >::run_ready ( )
inline

◆ step()

template<typename Runtime , std::size_t Capacity = 16U>
bool tsm::runtime::tick_executor< Runtime, Capacity >::step ( )
inline

◆ tick() [1/2]

template<typename Runtime , std::size_t Capacity = 16U>
std::size_t tsm::runtime::tick_executor< Runtime, Capacity >::tick ( tsm::tick_count  elapsed_ticks)
inline

◆ tick() [2/2]

template<typename Runtime , std::size_t Capacity = 16U>
std::size_t tsm::runtime::tick_executor< Runtime, Capacity >::tick ( tsm::tick_rep  elapsed_ticks = 1U)
inline

Member Data Documentation

◆ period [1/2]

template<typename Runtime , std::size_t Capacity = 16U>
tsm::tick_rep tsm::runtime::tick_executor< Runtime, Capacity >::period
Initial value:
{
return period != 0U &&
schedule(std::forward<Event>(event), period, period, true)
tsm::tick_rep period
Definition: executor.h:395

◆ period [2/2]

template<typename Runtime , std::size_t Capacity = 16U>
tsm::tick_count tsm::runtime::tick_executor< Runtime, Capacity >::period
Initial value:
{
return every_ticks(std::forward<Event>(event), period.count())
periodic_ticks every_ticks
Definition: coroutine.h:682

◆ ticks [1/2]

template<typename Runtime , std::size_t Capacity = 16U>
tsm::tick_rep tsm::runtime::tick_executor< Runtime, Capacity >::ticks
Initial value:
{
return schedule(std::forward<Event>(event), ticks, 0U, false)
tsm::tick_rep ticks
Definition: executor.h:379

◆ ticks [2/2]

template<typename Runtime , std::size_t Capacity = 16U>
tsm::tick_count tsm::runtime::tick_executor< Runtime, Capacity >::ticks
Initial value:
{
return after_ticks(std::forward<Event>(event), ticks.count())
sleep_ticks_awaitable after_ticks(tsm::tick_rep ticks) noexcept
Definition: coroutine.h:638

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