Safe API Framework
Layered API framework for safety-related applications (ERTMS RBC reference targeting CENELEC EN 50128 SIL 4)
Toggle main menu visibility
Loading...
Searching...
No Matches
sapi_dual_msgchannel.h
Go to the documentation of this file.
1
41
#ifndef SAPI_DUAL_MSGCHANNEL_H
42
#define SAPI_DUAL_MSGCHANNEL_H
43
44
#include <stdint.h>
45
46
#include "
safeapi/redundancy/checksum/sapi_checksum.h
"
47
#include "
safeapi/oal/netlink/sapi_netlink.h
"
48
#include "
safeapi/utils/status/sapi_status.h
"
49
#include "
safeapi/utils/types/sapi_types.h
"
50
51
#ifdef __cplusplus
52
extern
"C"
{
53
#endif
54
58
#define SAPI_DUAL_MSGCHANNEL_MAX_PAYLOAD 248U
59
67
typedef
struct
sapi_dual_msgchannel_s
68
{
69
sapi_netlink_handle_t
link
;
70
uint32_t
sender_id
;
71
uint32_t
expected_peer_id
;
72
uint32_t
next_sequence
;
73
uint32_t
expected_sequence
;
74
}
sapi_dual_msgchannel_t
;
75
77
typedef
struct
sapi_dual_msgchannel_config_s
78
{
84
sapi_netlink_handle_t
link
;
87
uint32_t
sender_id
;
91
uint32_t
expected_peer_id
;
92
}
sapi_dual_msgchannel_config_t
;
93
101
sapi_status_t
sapi_dual_msgchannel_init
(
sapi_dual_msgchannel_t
*channel,
102
const
sapi_dual_msgchannel_config_t
*config);
103
124
sapi_status_t
sapi_dual_msgchannel_send
(
sapi_dual_msgchannel_t
*channel,
125
const
uint8_t *payload,
126
uint8_t payload_size,
127
sapi_duration_ms_t
timeout_ms,
128
uint32_t *out_sequence);
129
158
sapi_status_t
sapi_dual_msgchannel_receive
(
sapi_dual_msgchannel_t
*channel,
159
uint8_t *out_payload,
160
uint8_t payload_max_size,
161
sapi_duration_ms_t
timeout_ms,
162
uint8_t *out_payload_size,
163
uint32_t *out_sequence);
164
177
sapi_status_t
sapi_dual_msgchannel_reset_sequence
(
sapi_dual_msgchannel_t
*channel);
178
179
#ifdef __cplusplus
180
}
181
#endif
182
183
#endif
/* SAPI_DUAL_MSGCHANNEL_H */
184
sapi_dual_msgchannel_send
sapi_status_t sapi_dual_msgchannel_send(sapi_dual_msgchannel_t *channel, const uint8_t *payload, uint8_t payload_size, sapi_duration_ms_t timeout_ms, uint32_t *out_sequence)
Wraps payload in a sapi_vital_message_t (this channel's own sender_id and next sequence_number) and s...
Definition
sapi_dual_msgchannel.c:37
sapi_dual_msgchannel_init
sapi_status_t sapi_dual_msgchannel_init(sapi_dual_msgchannel_t *channel, const sapi_dual_msgchannel_config_t *config)
Initializes a sapi_dual_msgchannel_t: starts both sequence counters at 0.
Definition
sapi_dual_msgchannel.c:20
sapi_dual_msgchannel_reset_sequence
sapi_status_t sapi_dual_msgchannel_reset_sequence(sapi_dual_msgchannel_t *channel)
Resets both sequence counters to 0. Intended to be called by the caller (typically sapi_dual_channel_...
Definition
sapi_dual_msgchannel.c:135
sapi_dual_msgchannel_receive
sapi_status_t sapi_dual_msgchannel_receive(sapi_dual_msgchannel_t *channel, uint8_t *out_payload, uint8_t payload_max_size, sapi_duration_ms_t timeout_ms, uint8_t *out_payload_size, uint32_t *out_sequence)
Receives one frame over config->link, blocking at most timeout_ms, verifies its CRC-64 and sequence c...
Definition
sapi_dual_msgchannel.c:80
sapi_netlink_handle_t
struct sapi_netlink_impl_s * sapi_netlink_handle_t
Opaque handle to an established link, returned by sapi_netlink_open().
Definition
sapi_netlink.h:55
sapi_status_t
sapi_status_t
Common result/status codes.
Definition
sapi_status.h:27
sapi_duration_ms_t
uint32_t sapi_duration_ms_t
Definition
sapi_types.h:27
sapi_checksum.h
Checksum and CRC utilities for data integrity in redundant systems.
sapi_netlink.h
OS Abstraction Layer - Point-to-point network link service.
sapi_status.h
Common status/error codes returned by every Safe API Framework function. Shared across all OS Abstrac...
sapi_types.h
Common fixed-width types and the caller-owned-storage handle pattern used by every OAL service (see A...
sapi_dual_msgchannel_config_t
Configuration for sapi_dual_msgchannel_init().
Definition
sapi_dual_msgchannel.h:78
sapi_dual_msgchannel_config_t::sender_id
uint32_t sender_id
Definition
sapi_dual_msgchannel.h:87
sapi_dual_msgchannel_config_t::expected_peer_id
uint32_t expected_peer_id
Definition
sapi_dual_msgchannel.h:91
sapi_dual_msgchannel_config_t::link
sapi_netlink_handle_t link
Definition
sapi_dual_msgchannel.h:84
sapi_dual_msgchannel_t
One sapi_dual_msgchannel_t instance's state. Caller-owned storage (REQ-DUAL-MSGCHANNEL-001); opaque i...
Definition
sapi_dual_msgchannel.h:68
sapi_dual_msgchannel_t::next_sequence
uint32_t next_sequence
Definition
sapi_dual_msgchannel.h:72
sapi_dual_msgchannel_t::sender_id
uint32_t sender_id
Definition
sapi_dual_msgchannel.h:70
sapi_dual_msgchannel_t::link
sapi_netlink_handle_t link
Definition
sapi_dual_msgchannel.h:69
sapi_dual_msgchannel_t::expected_sequence
uint32_t expected_sequence
Definition
sapi_dual_msgchannel.h:73
sapi_dual_msgchannel_t::expected_peer_id
uint32_t expected_peer_id
Definition
sapi_dual_msgchannel.h:71
include
safeapi
redundancy
dual
sapi_dual_msgchannel.h
Generated by
1.18.0