Safe API Framework
Layered API framework for safety-related applications (ERTMS RBC reference targeting CENELEC EN 50128 SIL 4)
Loading...
Searching...
No Matches
sapi_checksum.h File Reference

Checksum and CRC utilities for data integrity in redundant systems. More...

#include <stdint.h>
#include <stddef.h>
#include "safeapi/utils/status/sapi_status.h"
#include "safeapi/utils/types/sapi_types.h"
Include dependency graph for sapi_checksum.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  sapi_checksum_result_t
 Checksum result for validation. More...
struct  sapi_vital_message_t
 Vital channel message with integrated CRC-64. More...
struct  sapi_checksum_stats_t
 Checksum statistics for monitoring. More...

Typedefs

typedef uint64_t sapi_crc64_t
 CRC-64 checksum value (64-bit).

Enumerations

enum  sapi_crc64_polynomial_t { SAPI_CRC64_ERTMS , SAPI_CRC64_ISO , SAPI_CRC64_XZ }
 CRC-64 polynomial selection. More...

Functions

sapi_status_t sapi_checksum_crc64_init (sapi_crc64_polynomial_t polynomial)
 Initialize CRC-64 lookup tables for chosen polynomial.
sapi_crc64_t sapi_checksum_crc64 (const uint8_t *data, size_t size)
 Compute CRC-64 for data buffer.
sapi_status_t sapi_checksum_crc64_verify (const uint8_t *data, size_t size, sapi_crc64_t expected_crc, sapi_checksum_result_t *result_out)
 Verify CRC-64 of data against stored value.
sapi_crc64_polynomial_t sapi_checksum_crc64_get_polynomial (void)
 Get current CRC-64 polynomial in use.
sapi_status_t sapi_checksum_vital_message_create (sapi_vital_message_t *msg_out, uint32_t sender_id, uint32_t sequence, const uint8_t *payload, size_t payload_size)
 Create vital channel message with CRC.
sapi_status_t sapi_checksum_vital_message_verify (const sapi_vital_message_t *msg, uint32_t expected_sequence, uint8_t *payload_out, size_t payload_max_size, uint8_t *payload_size_out)
 Verify vital channel message and extract payload.
sapi_status_t sapi_checksum_get_stats (sapi_checksum_stats_t *stats_out)
 Get checksum statistics.
sapi_status_t sapi_checksum_reset_stats (void)
 Reset checksum statistics.

Detailed Description

Checksum and CRC utilities for data integrity in redundant systems.

Provides CRC-64 data integrity checking for:

  • Channel-to-channel communication (vital/non-vital channels)
  • Inter-site cluster communication
  • Data validation before voting

Implements ERTMS-compliant CRC-64-CCITT polynomial for railway safety systems.

Definition in file sapi_checksum.h.