Safe API Framework 0.1.0 build 384e6ae
Layered API framework for safety-related applications (ERTMS RBC reference targeting CENELEC EN 50128 SIL 4)
Loading...
Searching...
No Matches
rte_checksum.h
Go to the documentation of this file.
1
68
69#ifndef RTE_CHECKSUM_H
70#define RTE_CHECKSUM_H
71
72#include <stdint.h>
73#include <stddef.h>
76
77#ifdef __cplusplus
78extern "C" {
79#endif
80
81/* ============================================================================
82 * Types & Constants
83 * ========================================================================== */
84
109
113typedef uint64_t rte_crc64_t;
114
123
124/* ============================================================================
125 * API: CRC-64 Computation
126 * ========================================================================== */
127
151
180rte_crc64_t rte_checksum_crc64(const uint8_t *data, size_t size);
181
220rte_status_t rte_checksum_crc64_verify(const uint8_t *data,
221 size_t size,
222 rte_crc64_t expected_crc,
223 rte_checksum_result_t *result_out);
224
234
235/* ============================================================================
236 * API: Vital Channel Data Wrapper
237 * ========================================================================== */
238
250typedef struct {
252 uint32_t sender_id;
253 uint32_t timestamp_ms;
254 uint8_t payload_size;
255 uint8_t padding;
256 uint16_t reserved;
257
258 uint8_t payload[248];
261
300 rte_vital_message_t *msg_out,
301 uint32_t sender_id,
302 uint32_t sequence,
303 const uint8_t *payload,
304 size_t payload_size
305);
306
357 const rte_vital_message_t *msg,
358 uint32_t expected_sequence,
359 uint8_t *payload_out,
360 size_t payload_max_size,
361 uint8_t *payload_size_out
362);
363
364/* ============================================================================
365 * API: Statistics & Diagnostics
366 * ========================================================================== */
367
378
390
399
400#ifdef __cplusplus
401}
402#endif
403
407
408#endif /* RTE_CHECKSUM_H */
uint64_t rte_crc64_t
CRC-64 checksum value (64-bit).
rte_crc64_polynomial_t rte_checksum_crc64_get_polynomial(void)
Get current CRC-64 polynomial in use.
rte_status_t rte_checksum_reset_stats(void)
Reset checksum statistics.
rte_status_t rte_checksum_vital_message_verify(const rte_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.
rte_status_t rte_checksum_vital_message_create(rte_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.
rte_status_t rte_checksum_crc64_init(rte_crc64_polynomial_t polynomial)
Initialize CRC-64 lookup tables for chosen polynomial.
rte_crc64_t rte_checksum_crc64(const uint8_t *data, size_t size)
Compute CRC-64 for data buffer.
rte_crc64_polynomial_t
CRC-64 polynomial selection.
rte_status_t rte_checksum_crc64_verify(const uint8_t *data, size_t size, rte_crc64_t expected_crc, rte_checksum_result_t *result_out)
Verify CRC-64 of data against stored value.
rte_status_t rte_checksum_get_stats(rte_checksum_stats_t *stats_out)
Get checksum statistics.
@ RTE_CRC64_ISO
@ RTE_CRC64_XZ
@ RTE_CRC64_ERTMS
rte_status_t
Common result/status codes.
Definition rte_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.
uint32_t verification_failures
Vital channel message with integrated CRC-64.
uint8_t payload[248]