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
Go to the documentation of this file.
1
55
56#ifndef SAPI_CHECKSUM_H
57#define SAPI_CHECKSUM_H
58
59#include <stdint.h>
60#include <stddef.h>
63
64#ifdef __cplusplus
65extern "C" {
66#endif
67
68/* ============================================================================
69 * Types & Constants
70 * ========================================================================== */
71
96
100typedef uint64_t sapi_crc64_t;
101
110
111/* ============================================================================
112 * API: CRC-64 Computation
113 * ========================================================================== */
114
138
167sapi_crc64_t sapi_checksum_crc64(const uint8_t *data, size_t size);
168
203sapi_status_t sapi_checksum_crc64_verify(const uint8_t *data,
204 size_t size,
205 sapi_crc64_t expected_crc,
206 sapi_checksum_result_t *result_out);
207
217
218/* ============================================================================
219 * API: Vital Channel Data Wrapper
220 * ========================================================================== */
221
233typedef struct {
235 uint32_t sender_id;
236 uint32_t timestamp_ms;
237 uint8_t payload_size;
238 uint8_t padding;
239 uint16_t reserved;
240
241 uint8_t payload[248];
244
279 sapi_vital_message_t *msg_out,
280 uint32_t sender_id,
281 uint32_t sequence,
282 const uint8_t *payload,
283 size_t payload_size
284);
285
332 const sapi_vital_message_t *msg,
333 uint32_t expected_sequence,
334 uint8_t *payload_out,
335 size_t payload_max_size,
336 uint8_t *payload_size_out
337);
338
339/* ============================================================================
340 * API: Statistics & Diagnostics
341 * ========================================================================== */
342
353
365
374
375#ifdef __cplusplus
376}
377#endif
378
382
383#endif /* SAPI_CHECKSUM_H */
uint64_t sapi_crc64_t
CRC-64 checksum value (64-bit).
sapi_crc64_polynomial_t sapi_checksum_crc64_get_polynomial(void)
Get current CRC-64 polynomial in use.
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_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
CRC-64 polynomial selection.
sapi_status_t sapi_checksum_get_stats(sapi_checksum_stats_t *stats_out)
Get checksum statistics.
sapi_status_t sapi_checksum_crc64_init(sapi_crc64_polynomial_t polynomial)
Initialize CRC-64 lookup tables for chosen polynomial.
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_reset_stats(void)
Reset checksum statistics.
@ SAPI_CRC64_XZ
@ SAPI_CRC64_ERTMS
@ SAPI_CRC64_ISO
sapi_status_t
Common result/status codes.
Definition sapi_status.h:27
Common status/error codes returned by every Safe API Framework function. Shared across all OS Abstrac...
Common fixed-width types and the caller-owned-storage handle pattern used by every OAL service (see A...
Checksum result for validation.
Checksum statistics for monitoring.
Vital channel message with integrated CRC-64.