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
Toggle main menu visibility
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
40
extern
"C"
{
41
#endif
42
44
typedef
struct
45
{
46
uint32_t
ec_period_ms
;
47
uint16_t
seq_window
;
48
uint8_t
ec_alarm_state
;
49
}
safecomm_sai_config_t
;
50
55
typedef
struct
56
{
57
safecomm_saf_conn_t
*
saf
;
58
safecomm_sai_config_t
cfg;
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;
68
int
ec_state
;
69
}
safecomm_sai_conn_t
;
70
78
safecomm_status_t
safecomm_sai_init
(
safecomm_sai_conn_t
*conn,
safecomm_saf_conn_t
*saf,
79
const
safecomm_sai_config_t
*cfg);
80
87
safecomm_status_t
safecomm_sai_start
(
safecomm_sai_conn_t
*conn);
88
97
safecomm_status_t
safecomm_sai_send
(
safecomm_sai_conn_t
*conn,
const
uint8_t *pdu,
size_t
pdu_len);
98
112
safecomm_status_t
safecomm_sai_recv
(
safecomm_sai_conn_t
*conn, uint8_t *out,
size_t
out_cap,
size_t
*out_len);
113
120
void
safecomm_sai_tick
(
safecomm_sai_conn_t
*conn);
121
122
#ifdef __cplusplus
123
}
124
#endif
125
126
#endif
/* SAFECOMM_SAI_H */
saf.h
Safety Functional (SaF) sub-layer — shared by Subset-037 and Subset-098 (ERTMS/ETCS Subset-037 §7).
safecomm_sai_send
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_sai_recv
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_sai_init
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_sai_start
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
safecomm_sai_tick
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
status.h
Common status codes for the Safe Communication Framework.
safecomm_status_t
safecomm_status_t
Result of a Safe Communication Framework operation.
Definition
status.h:17
safecomm_saf_conn_t
SaF connection object. Caller-allocated, zero-initialised, opaque in practice — fields are not part o...
Definition
saf.h:92
safecomm_sai_config_t
Static configuration for one SAI connection.
Definition
sai.h:45
safecomm_sai_config_t::ec_period_ms
uint32_t ec_period_ms
Definition
sai.h:46
safecomm_sai_config_t::seq_window
uint16_t seq_window
Definition
sai.h:47
safecomm_sai_config_t::ec_alarm_state
uint8_t ec_alarm_state
Definition
sai.h:48
safecomm_sai_conn_t
SAI connection object, layered over an already-initialised safecomm_saf_conn_t. Caller-allocated,...
Definition
sai.h:56
safecomm_sai_conn_t::saf
safecomm_saf_conn_t * saf
Definition
sai.h:57
safecomm_sai_conn_t::ratio
double ratio
Definition
sai.h:64
safecomm_sai_conn_t::expected_ec
double expected_ec
Definition
sai.h:65
safecomm_sai_conn_t::ec_state
int ec_state
Definition
sai.h:68
include
safecomm
sai
sai.h
Generated by
1.18.0