13 if ((adapter == NULL) || (config == NULL) || (transport == NULL))
18 (void)memset(adapter, 0,
sizeof(*adapter));
19 adapter->cfg = *config;
22 (void)memset(&saf_cfg, 0,
sizeof(saf_cfg));
24 saf_cfg.role = config->role;
31 saf_cfg.
t_connect_ms = (config->t_connect_ms > 0U) ? config->t_connect_ms : 5000U;
32 saf_cfg.
t_supervision_ms = (config->t_supervision_ms > 0U) ? config->t_supervision_ms : 10000U;
36 saf_cfg.
t_connect_ms = (config->t_connect_ms > 0U) ? config->t_connect_ms : 10000U;
37 saf_cfg.
t_supervision_ms = (config->t_supervision_ms > 0U) ? config->t_supervision_ms : 20000U;
46 adapter->is_open =
true;
51 const void *data,
size_t size)
53 if ((adapter == NULL) || (!adapter->is_open))
61 void *out_buf,
size_t buffer_size,
64 if ((adapter == NULL) || (!adapter->is_open))
68 return safecomm_saf_recv(&adapter->conn, (uint8_t *)out_buf, buffer_size, out_len);
73 if ((adapter == NULL) || (!adapter->is_open))
78 adapter->is_open =
false;
84 .open = adapter_open_saf,
85 .send = adapter_send_saf,
86 .receive = adapter_receive_saf,
87 .close = adapter_close_saf
92 .open = adapter_open_saf,
93 .send = adapter_send_saf,
94 .receive = adapter_receive_saf,
95 .close = adapter_close_saf
103 if ((adapter == NULL) || (config == NULL) || (transport == NULL))
112 .open = adapter_open_rasta,
113 .send = adapter_send_saf,
114 .receive = adapter_receive_saf,
115 .close = adapter_close_saf
#define SAFECOMM_MAC_KEY_LEN
RTE Protocol Adapter integration and Sublayer Abstraction.
const safecomm_protocol_ops_t * safecomm_protocol_adapter_get_rasta(void)
Retrieve the RaSTA (DIN VDE V 0831-102) Protocol Adapter operations vtable.
@ SAFECOMM_SUBLAYER_SAF_SS098
const safecomm_protocol_ops_t * safecomm_protocol_adapter_get_ss098(void)
Retrieve the Subset-098 RBC-RBC Protocol Adapter operations vtable.
const safecomm_protocol_ops_t * safecomm_protocol_adapter_get_ss037(void)
Retrieve the Subset-037 EuroRadio Protocol Adapter operations vtable.
safecomm_status_t safecomm_saf_send(safecomm_saf_conn_t *conn, const uint8_t *pdu, size_t pdu_len)
Send one user PDU as a MAC-protected, sequence-numbered Sa-DATA.
safecomm_status_t safecomm_saf_recv(safecomm_saf_conn_t *conn, uint8_t *out, size_t out_cap, size_t *out_len)
Receive and verify one Sa-DATA PDU (blocking).
safecomm_status_t safecomm_saf_init(safecomm_saf_conn_t *conn, const safecomm_saf_config_t *cfg, const safecomm_transport_t *transport)
Initialise a SaF connection object (no I/O yet).
safecomm_status_t
Result of a Safe Communication Framework operation.
@ SAFECOMM_STATUS_INVALID_PARAM
@ SAFECOMM_STATUS_NOT_IMPLEMENTED
Adapter connection endpoint configuration.
Adapter handle representation.
SAPI-compatible operations vtable for safe communication channels.
Static configuration for one SaF connection.
uint8_t kmac[SAFECOMM_MAC_KEY_LEN]
uint32_t t_supervision_ms
A consumer-supplied bearer the SaF layer runs over.