#ifndef TASK01_FIRST_TASK_H #define TASK01_FIRST_TASK_H #include #include "FreeRTOS.h" #include "task.h" typedef enum { WORKER_TRACE_PREPARED = 0, WORKER_TRACE_STARTING, WORKER_TRACE_READY, WORKER_TRACE_RUNNING, WORKER_TRACE_COMPLETED, WORKER_TRACE_CREATE_FAILED } WorkerTraceState; typedef struct { uint32_t id; volatile uint32_t result; volatile uint32_t iterations; volatile WorkerTraceState trace_state; TaskHandle_t handle; volatile TickType_t start_tick; volatile TickType_t end_tick; uintptr_t created_handle; uintptr_t tcb_address; uintptr_t stack_low; uintptr_t stack_high; uintptr_t entry_sp; UBaseType_t stack_high_water; } WorkerContext; typedef struct { WorkerContext * first; WorkerContext * second; TaskHandle_t handle; volatile uint32_t pass; } SupervisorContext; void sum_task_entry( void * pv_parameters ); void supervisor_task_entry( void * pv_parameters ); void task01_debug_checkpoint( uint32_t point, const void * subject ); void task01_debug_checkpoint_committed( uint32_t point, const void * subject ); #endif