Safe Communication Framework 0.1.0 build feea4f9
ERTMS/ETCS safe communication (Subset-037 EuroRadio, Subset-098 RBC/RBC), CENELEC EN 50128 SIL 4 oriented
Loading...
Searching...
No Matches
sai.h
Go to the documentation of this file.
1
29#ifndef SAFECOMM_SAI_H
30#define SAFECOMM_SAI_H
31
32#include <stdbool.h>
33#include <stddef.h>
34#include <stdint.h>
35
36#include "safecomm/status.h"
37#include "safecomm/saf/saf.h"
38
39#ifdef __cplusplus
40extern "C" {
41#endif
42
44typedef struct
45{
46 uint32_t ec_period_ms;
47 uint16_t seq_window;
50
55typedef struct
56{
59 uint16_t seq_tx;
60 uint16_t seq_rx;
61 bool seq_rx_valid;
62 uint32_t ec_tx;
63 uint32_t peer_ec_period_ms;
64 double ratio;
65 double expected_ec;
66 uint32_t last_rx_ec;
67 bool ec_initialized;
70
79 const safecomm_sai_config_t *cfg);
80
88
97safecomm_status_t safecomm_sai_send(safecomm_sai_conn_t *conn, const uint8_t *pdu, size_t pdu_len);
98
112safecomm_status_t safecomm_sai_recv(safecomm_sai_conn_t *conn, uint8_t *out, size_t out_cap, size_t *out_len);
113
121
122#ifdef __cplusplus
123}
124#endif
125
126#endif /* SAFECOMM_SAI_H */
Safety Functional (SaF) sub-layer — shared by Subset-037 and Subset-098 (ERTMS/ETCS Subset-037 §7).
safecomm_status_t safecomm_sai_send(safecomm_sai_conn_t *conn, const uint8_t *pdu, size_t pdu_len)
Wrap one user PDU in a SAI header (message type, sequence number, our EC counter) and send it through...
Definition sai.c:127
safecomm_status_t safecomm_sai_recv(safecomm_sai_conn_t *conn, uint8_t *out, size_t out_cap, size_t *out_len)
Receive, unwrap and check one SAI-protected PDU.
Definition sai.c:156
safecomm_status_t safecomm_sai_init(safecomm_sai_conn_t *conn, safecomm_saf_conn_t *saf, const safecomm_sai_config_t *cfg)
Initialise a SAI connection object over an already-initialised SaF connection.
Definition sai.c:52
safecomm_status_t safecomm_sai_start(safecomm_sai_conn_t *conn)
Run the EC initialisation exchange (§5.4.9.3): send our ExecutionCycleStart, wait for the peer's,...
Definition sai.c:73
void safecomm_sai_tick(safecomm_sai_conn_t *conn)
Advance our own EC by one: call this once per cfg.ec_period_ms elapsed on the caller's clock....
Definition sai.c:213
Common status codes for the Safe Communication Framework.
safecomm_status_t
Result of a Safe Communication Framework operation.
Definition status.h:17
SaF connection object. Caller-allocated, zero-initialised, opaque in practice — fields are not part o...
Definition saf.h:92
Static configuration for one SAI connection.
Definition sai.h:45
uint32_t ec_period_ms
Definition sai.h:46
uint16_t seq_window
Definition sai.h:47
uint8_t ec_alarm_state
Definition sai.h:48
SAI connection object, layered over an already-initialised safecomm_saf_conn_t. Caller-allocated,...
Definition sai.h:56
safecomm_saf_conn_t * saf
Definition sai.h:57
double ratio
Definition sai.h:64
double expected_ec
Definition sai.h:65