Safe API Framework
0.1.0 build 384e6ae
Layered API framework for safety-related applications (ERTMS RBC reference targeting CENELEC EN 50128 SIL 4)
Toggle main menu visibility
Loading...
Searching...
No Matches
rte_channel.h
Go to the documentation of this file.
1
22
23
#ifndef RTE_CHANNEL_LINK_H
24
#define RTE_CHANNEL_LINK_H
25
26
#include <stdint.h>
27
#include <stdbool.h>
28
#include <stddef.h>
29
30
#include "
rte/utils/status/rte_status.h
"
31
32
#ifdef __cplusplus
33
extern
"C"
{
34
#endif
35
39
typedef
struct
{
41
uint32_t
send_count
;
43
uint32_t
send_error_count
;
45
uint32_t
receive_count
;
47
uint32_t
receive_error_count
;
51
bool
is_healthy
;
53
rte_status_t
last_error
;
54
}
rte_channel_health_t
;
55
67
typedef
rte_status_t
(*
rte_channel_send_fn
)(
void
*channel_handle,
68
const
void
*data,
69
size_t
data_size);
70
82
typedef
rte_status_t
(*
rte_channel_recv_fn
)(
void
*channel_handle,
83
void
*data,
84
size_t
data_size,
85
uint32_t timeout_ms);
86
90
typedef
struct
{
94
void
*
channel_handle
;
96
rte_channel_send_fn
send
;
98
rte_channel_recv_fn
recv
;
105
const
char
*
name
;
106
}
rte_channel_config_t
;
107
114
typedef
struct
{
115
rte_channel_config_t
config
;
116
rte_channel_health_t
health
;
117
bool
initialized
;
118
}
rte_channel_storage_t
;
119
127
typedef
rte_channel_storage_t
rte_channel_t
;
128
152
rte_status_t
rte_channel_init
(
rte_channel_storage_t
*storage,
153
const
rte_channel_config_t
*config);
154
175
rte_status_t
rte_channel_send
(
rte_channel_t
*handle,
176
const
void
*data,
177
size_t
data_size);
178
199
rte_status_t
rte_channel_receive
(
rte_channel_t
*handle,
200
void
*data,
201
size_t
data_size,
202
uint32_t timeout_ms);
203
216
rte_status_t
rte_channel_get_health
(
const
rte_channel_t
*handle,
217
rte_channel_health_t
*out_health);
218
233
const
char
*
rte_channel_get_name
(
const
rte_channel_t
*handle);
234
254
rte_status_t
rte_channel_set_healthy
(
rte_channel_t
*handle,
255
bool
is_healthy);
256
269
rte_status_t
rte_channel_destroy
(
rte_channel_t
*handle);
270
271
#ifdef __cplusplus
272
}
273
#endif
274
276
277
#endif
/* RTE_CHANNEL_LINK_H */
rte_status_t
rte_status_t
Common result/status codes.
Definition
rte_status.h:27
rte_channel_get_name
const char * rte_channel_get_name(const rte_channel_t *handle)
Returns this channel's name, as given in rte_channel_config_t::name at rte_channel_init() time.
Definition
rte_channel.c:124
rte_channel_destroy
rte_status_t rte_channel_destroy(rte_channel_t *handle)
Destroys a vital channel instance.
Definition
rte_channel.c:144
rte_channel_receive
rte_status_t rte_channel_receive(rte_channel_t *handle, void *data, size_t data_size, uint32_t timeout_ms)
Receives data on this channel via its OSAdapter receive callback.
Definition
rte_channel.c:84
rte_channel_recv_fn
rte_status_t(*) rte_channel_recv_fn(void *channel_handle, void *data, size_t data_size, uint32_t timeout_ms)
OSAdapter receive callback: reads from this channel's underlying transport.
Definition
rte_channel.h:82
rte_channel_set_healthy
rte_status_t rte_channel_set_healthy(rte_channel_t *handle, bool is_healthy)
Marks this channel healthy/unhealthy.
Definition
rte_channel.c:133
rte_channel_get_health
rte_status_t rte_channel_get_health(const rte_channel_t *handle, rte_channel_health_t *out_health)
Queries this channel's health statistics.
Definition
rte_channel.c:113
rte_channel_t
rte_channel_storage_t rte_channel_t
Opaque handle to a vital channel instance.
Definition
rte_channel.h:127
rte_channel_init
rte_status_t rte_channel_init(rte_channel_storage_t *storage, const rte_channel_config_t *config)
Initializes one vital channel over a caller-supplied transport.
Definition
rte_channel.c:23
rte_channel_send
rte_status_t rte_channel_send(rte_channel_t *handle, const void *data, size_t data_size)
Sends data on this channel via its OSAdapter send callback.
Definition
rte_channel.c:56
rte_channel_send_fn
rte_status_t(*) rte_channel_send_fn(void *channel_handle, const void *data, size_t data_size)
OSAdapter send callback: transmits on this channel's underlying transport.
Definition
rte_channel.h:67
rte_status.h
Common status/error codes returned by every Safe API Framework function. Shared across all OS Abstrac...
rte_channel_config_t
Configuration for rte_channel_init().
Definition
rte_channel.h:90
rte_channel_config_t::channel_handle
void * channel_handle
Definition
rte_channel.h:94
rte_channel_config_t::send
rte_channel_send_fn send
Definition
rte_channel.h:96
rte_channel_config_t::recv
rte_channel_recv_fn recv
Definition
rte_channel.h:98
rte_channel_config_t::name
const char * name
Definition
rte_channel.h:105
rte_channel_health_t
Health statistics for one vital channel.
Definition
rte_channel.h:39
rte_channel_health_t::is_healthy
bool is_healthy
Definition
rte_channel.h:51
rte_channel_health_t::receive_error_count
uint32_t receive_error_count
Definition
rte_channel.h:47
rte_channel_health_t::send_error_count
uint32_t send_error_count
Definition
rte_channel.h:43
rte_channel_health_t::send_count
uint32_t send_count
Definition
rte_channel.h:41
rte_channel_health_t::receive_count
uint32_t receive_count
Definition
rte_channel.h:45
rte_channel_health_t::last_error
rte_status_t last_error
Definition
rte_channel.h:53
rte_channel_storage_t
Storage for one vital channel instance (opaque to caller).
Definition
rte_channel.h:114
rte_channel_storage_t::config
rte_channel_config_t config
Definition
rte_channel.h:115
rte_channel_storage_t::health
rte_channel_health_t health
Definition
rte_channel.h:116
rte_channel_storage_t::initialized
bool initialized
Definition
rte_channel.h:117
include
rte
redundancy
channel_link
rte_channel.h
Generated by
1.18.0