Safe API Framework
Layered API framework for safety-related applications (ERTMS RBC reference targeting CENELEC EN 50128 SIL 4)
Loading...
Searching...
No Matches
sapi_cross_comparator.h
Go to the documentation of this file.
1
16
17#ifndef SAPI_CROSS_COMPARATOR_H
18#define SAPI_CROSS_COMPARATOR_H
19
20#include <stdint.h>
21#include <stdbool.h>
22#include <stddef.h>
23
27
28#ifdef __cplusplus
29extern "C" {
30#endif
31
57
59#define SAPI_CROSS_COMPARATOR_MAX_MESSAGE_SIZE 256U
60
65typedef struct {
67 sapi_channel_t *channel_a;
68 sapi_channel_t *channel_b;
69 uint32_t registered_count;
70 uint32_t total_disagreements;
71 bool initialized;
73
76
89 const sapi_cross_comparator_config_t *config);
90
110 sapi_channel_t *channel);
111
145 sapi_voting_result_t *result,
146 void *out_data, size_t *out_size);
147
161 uint32_t *healthy_count,
162 uint32_t *total_disagreements);
163
172
173#ifdef __cplusplus
174}
175#endif
176
178
179#endif /* SAPI_CROSS_COMPARATOR_H */
sapi_status_t
Common result/status codes.
Definition sapi_status.h:27
sapi_status_t sapi_cross_comparator_get_aggregated_health(const sapi_cross_comparator_t *cmp, uint32_t *healthy_count, uint32_t *total_disagreements)
Aggregated health across both registered channels.
sapi_status_t sapi_cross_comparator_init(sapi_cross_comparator_storage_t *storage, const sapi_cross_comparator_config_t *config)
Initializes a cross-comparator with zero registered channels.
sapi_cross_comparator_storage_t sapi_cross_comparator_t
Opaque handle to a cross-comparator instance.
sapi_status_t sapi_cross_comparator_destroy(sapi_cross_comparator_t *cmp)
Destroys a cross-comparator instance.
sapi_status_t sapi_cross_comparator_register_channel(sapi_cross_comparator_t *cmp, sapi_channel_t *channel)
Registers one already-initialized channel (channel A, then B).
sapi_status_t sapi_cross_comparator_execute(sapi_cross_comparator_t *cmp, size_t data_size, sapi_voting_result_t *result, void *out_data, size_t *out_size)
Receives from both registered channels and compares them.
sapi_voting_result_t
Outcome of one sapi_voter_receive() call.
Definition sapi_voter.h:45
bool(*) sapi_voter_compare_fn(const void *a, const void *b, size_t size, void *user_ctx)
Optional custom comparison callback.
Definition sapi_voter.h:73
A single redundant "channel": an opaque transport handle plus send/receive callbacks,...
Common status/error codes returned by every Safe API Framework function. Shared across all OS Abstrac...
N-way voting across registered sapi_channel_t links (2oo2/2oo3/NMR).
Configuration for sapi_cross_comparator_init().
void(*) on_disagreement(void *context, sapi_voting_result_t result)
Storage for one cross-comparator instance (opaque to caller). No dynamic memory.