feat: publish FreeRTOS C FC05 card

This commit is contained in:
2026-07-19 16:36:02 +02:00
commit 3f151c823d
194 changed files with 59220 additions and 0 deletions
+53
View File
@@ -0,0 +1,53 @@
#ifndef TASK01_QUEUE_MODEL_H
#define TASK01_QUEUE_MODEL_H
#include <stddef.h>
#include <stdint.h>
typedef struct QueueMessage
{
uint32_t sequence;
uint32_t payload;
uint32_t checksum;
} QueueMessage;
typedef struct QueueEvidence
{
uint32_t sequence;
uint32_t event;
uint32_t tick;
uint32_t actor;
uint32_t value;
uint32_t committed;
} QueueEvidence;
static inline uint32_t fc05_message_checksum( uint32_t sequence,
uint32_t payload )
{
return 0x51000000U ^ sequence ^ payload;
}
static inline int fc05_message_is_valid( const QueueMessage * message )
{
return message != NULL &&
message->checksum ==
fc05_message_checksum( message->sequence, message->payload );
}
static inline uint32_t fc05_digest( const QueueEvidence * events,
size_t count )
{
uint32_t hash = 2166136261U;
size_t index;
for( index = 0U; index < count; ++index )
{
hash = ( hash ^ events[ index ].event ) * 16777619U;
hash = ( hash ^ events[ index ].actor ) * 16777619U;
hash = ( hash ^ events[ index ].value ) * 16777619U;
hash = ( hash ^ events[ index ].committed ) * 16777619U;
}
return hash;
}
#endif