tin  1.5.9
tsm::freertos_task_executor< Tasks > Class Template Reference

#include <freertos.h>

Collaboration diagram for tsm::freertos_task_executor< Tasks >:
Collaboration graph

Public Member Functions

 freertos_task_executor (Tasks &... tasks)
 
 freertos_task_executor (freertos_task_executor const &)=delete
 
freertos_task_executoroperator= (freertos_task_executor const &)=delete
 
 ~freertos_task_executor ()
 
void start (char const *name="tsm_exec", uint16_t stack_depth=configMINIMAL_STACK_SIZE, UBaseType_t priority=tskIDLE_PRIORITY+1U)
 
void stop ()
 
void wake ()
 
void wake_from_isr ()
 
void wait_for_work ()
 
bool step ()
 
std::size_t run_ready ()
 
std::size_t tick (tsm::tick_rep elapsed_ticks=1U)
 
std::size_t tick (tsm::tick_count elapsed_ticks)
 
void start_all ()
 
template<auto Entry, std::size_t Instance = 0U>
spawn_result start ()
 
template<auto Entry, typename... Args>
spawn_result spawn (Args &&... args)
 
runtime::task_spawner< freertos_task_executorspawner ()
 
template<auto Entry, std::size_t Instance = 0U>
task_status task_status () const
 
template<auto Entry, std::size_t Instance = 0U>
task_failure_reason task_failure_reason () const
 
template<auto Entry, std::size_t Instance = 0U>
bool cancel () noexcept
 
void cancel_all () noexcept
 

Protected Member Functions

void run_task ()
 

Static Protected Member Functions

static void task_entry (void *pv_parameters)
 

Protected Attributes

tsm::runtime::cooperative_executor< Tasks... > ready_
 
TaskHandle_t task_handle_ {}
 
BaseType_t stop_requested_ { pdTRUE }
 

Detailed Description

template<typename... Tasks>
class tsm::freertos_task_executor< Tasks >

FreeRTOS task executor.

The executor owns one FreeRTOS task that drains one or more tsm runtimes through the same step / run_ready contract used by the host and bare-metal executors. Runtimes still own their HSMs and queues.

Constructor & Destructor Documentation

◆ freertos_task_executor() [1/2]

template<typename... Tasks>
tsm::freertos_task_executor< Tasks >::freertos_task_executor ( Tasks &...  tasks)
inlineexplicit

◆ freertos_task_executor() [2/2]

template<typename... Tasks>
tsm::freertos_task_executor< Tasks >::freertos_task_executor ( freertos_task_executor< Tasks > const &  )
delete

◆ ~freertos_task_executor()

template<typename... Tasks>
tsm::freertos_task_executor< Tasks >::~freertos_task_executor ( )
inline

Member Function Documentation

◆ cancel()

template<typename... Tasks>
template<auto Entry, std::size_t Instance = 0U>
bool tsm::freertos_task_executor< Tasks >::cancel ( )
inlinenoexcept

◆ cancel_all()

template<typename... Tasks>
void tsm::freertos_task_executor< Tasks >::cancel_all ( )
inlinenoexcept

◆ operator=()

template<typename... Tasks>
freertos_task_executor& tsm::freertos_task_executor< Tasks >::operator= ( freertos_task_executor< Tasks > const &  )
delete

◆ run_ready()

template<typename... Tasks>
std::size_t tsm::freertos_task_executor< Tasks >::run_ready ( )
inline

◆ run_task()

template<typename... Tasks>
void tsm::freertos_task_executor< Tasks >::run_task ( )
inlineprotected

◆ spawn()

template<typename... Tasks>
template<auto Entry, typename... Args>
spawn_result tsm::freertos_task_executor< Tasks >::spawn ( Args &&...  args)
inline

◆ spawner()

template<typename... Tasks>
runtime::task_spawner<freertos_task_executor> tsm::freertos_task_executor< Tasks >::spawner ( )
inline

◆ start() [1/2]

template<typename... Tasks>
template<auto Entry, std::size_t Instance = 0U>
spawn_result tsm::freertos_task_executor< Tasks >::start ( )
inline

◆ start() [2/2]

template<typename... Tasks>
void tsm::freertos_task_executor< Tasks >::start ( char const *  name = "tsm_exec",
uint16_t  stack_depth = configMINIMAL_STACK_SIZE,
UBaseType_t  priority = tskIDLE_PRIORITY + 1U 
)
inline

◆ start_all()

template<typename... Tasks>
void tsm::freertos_task_executor< Tasks >::start_all ( )
inline

◆ step()

template<typename... Tasks>
bool tsm::freertos_task_executor< Tasks >::step ( )
inline

◆ stop()

template<typename... Tasks>
void tsm::freertos_task_executor< Tasks >::stop ( )
inline

◆ task_entry()

template<typename... Tasks>
static void tsm::freertos_task_executor< Tasks >::task_entry ( void *  pv_parameters)
inlinestaticprotected

◆ task_failure_reason()

template<typename... Tasks>
template<auto Entry, std::size_t Instance = 0U>
task_failure_reason tsm::freertos_task_executor< Tasks >::task_failure_reason ( ) const
inline

◆ task_status()

template<typename... Tasks>
template<auto Entry, std::size_t Instance = 0U>
task_status tsm::freertos_task_executor< Tasks >::task_status ( ) const
inline

◆ tick() [1/2]

template<typename... Tasks>
std::size_t tsm::freertos_task_executor< Tasks >::tick ( tsm::tick_count  elapsed_ticks)
inline

◆ tick() [2/2]

template<typename... Tasks>
std::size_t tsm::freertos_task_executor< Tasks >::tick ( tsm::tick_rep  elapsed_ticks = 1U)
inline

◆ wait_for_work()

template<typename... Tasks>
void tsm::freertos_task_executor< Tasks >::wait_for_work ( )
inline

◆ wake()

template<typename... Tasks>
void tsm::freertos_task_executor< Tasks >::wake ( )
inline

◆ wake_from_isr()

template<typename... Tasks>
void tsm::freertos_task_executor< Tasks >::wake_from_isr ( )
inline

Member Data Documentation

◆ ready_

template<typename... Tasks>
tsm::runtime::cooperative_executor<Tasks...> tsm::freertos_task_executor< Tasks >::ready_
protected

◆ stop_requested_

template<typename... Tasks>
BaseType_t tsm::freertos_task_executor< Tasks >::stop_requested_ { pdTRUE }
protected

◆ task_handle_

template<typename... Tasks>
TaskHandle_t tsm::freertos_task_executor< Tasks >::task_handle_ {}
protected

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