49 lines
1.3 KiB
C
49 lines
1.3 KiB
C
#ifndef TASK01_QUEUE_H
|
|
#define TASK01_QUEUE_H
|
|
|
|
#include <stdint.h>
|
|
|
|
#include "FreeRTOS.h"
|
|
#include "queue.h"
|
|
#include "task.h"
|
|
#include "task01_queue_model.h"
|
|
|
|
#define FC05_QUEUE_LENGTH 1U
|
|
#define FC05_TASK_STACK_WORDS 256U
|
|
#define FC05_RECEIVER_PRIORITY 3U
|
|
#define FC05_SENDER_PRIORITY 2U
|
|
#define FC05_VERIFIER_PRIORITY 1U
|
|
#define FC05_EVENT_CAPACITY 12U
|
|
#define FC05_TIMEOUT_TICKS 20U
|
|
|
|
typedef struct QueueExperiment
|
|
{
|
|
QueueHandle_t queue;
|
|
TaskHandle_t receiver_handle;
|
|
TaskHandle_t sender_handle;
|
|
TaskHandle_t verifier_handle;
|
|
QueueMessage received[ 3 ];
|
|
QueueMessage mutated_source;
|
|
eTaskState sender_state_when_full;
|
|
UBaseType_t waiting_when_full;
|
|
uintptr_t receiver_sp;
|
|
uintptr_t sender_sp;
|
|
uint32_t receiver_done;
|
|
uint32_t sender_done;
|
|
uint32_t pass;
|
|
uint32_t evidence_digest;
|
|
} QueueExperiment;
|
|
|
|
extern QueueExperiment g_fc05;
|
|
extern QueueEvidence g_fc05_events[ FC05_EVENT_CAPACITY ];
|
|
extern volatile uint32_t g_fc05_event_count;
|
|
extern volatile uint32_t g_fc05_last_checkpoint;
|
|
extern volatile uint32_t g_fc05_pass;
|
|
|
|
void fc05_checkpoint_committed( uint32_t point, const void * subject );
|
|
void fc05_receiver_entry( void * context );
|
|
void fc05_sender_entry( void * context );
|
|
void fc05_verifier_entry( void * context );
|
|
|
|
#endif
|