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_ipc_request_reply.h
Go to the documentation of this file.
1
23
24
#ifndef RTE_IPC_REQUEST_REPLY_H
25
#define RTE_IPC_REQUEST_REPLY_H
26
27
#include "
rte/utils/status/rte_status.h
"
28
#include "
rte/utils/types/rte_types.h
"
29
#include "
rte_ipc.h
"
30
31
#ifdef __cplusplus
32
extern
"C"
{
33
#endif
34
35
/* ============================================================================
36
* Request-Reply Channel (Server Side)
37
* ========================================================================== */
38
42
typedef
struct
rte_ipc_rr_server_s *
rte_ipc_rr_server_t
;
43
47
typedef
struct
{
48
const
char
*
name
;
49
size_t
request_size
;
50
size_t
reply_size
;
51
size_t
queue_depth
;
52
}
rte_ipc_rr_server_config_t
;
53
57
typedef
struct
{
58
uint32_t
request_id
;
59
uint8_t *
request_data
;
60
size_t
request_size
;
61
}
rte_ipc_rr_request_t
;
62
82
rte_status_t
rte_ipc_rr_server_create
(
rte_ipc_rr_server_t
*handle_out,
83
const
rte_ipc_rr_server_config_t
*config);
84
105
rte_status_t
rte_ipc_rr_receive_request
(
rte_ipc_rr_server_t
server,
106
rte_ipc_rr_request_t
*request_out,
107
rte_duration_ms_t
timeout_ms);
108
129
rte_status_t
rte_ipc_rr_send_reply
(
rte_ipc_rr_server_t
server,
130
uint32_t request_id,
131
const
void
*reply_data,
132
size_t
reply_size);
133
140
rte_status_t
rte_ipc_rr_server_destroy
(
rte_ipc_rr_server_t
server);
141
142
/* ============================================================================
143
* Request-Reply Client (Client Side)
144
* ========================================================================== */
145
149
typedef
struct
rte_ipc_rr_client_s *
rte_ipc_rr_client_t
;
150
154
typedef
struct
{
155
const
char
*
server_name
;
156
size_t
request_size
;
157
size_t
reply_size
;
158
}
rte_ipc_rr_client_config_t
;
159
179
rte_status_t
rte_ipc_rr_client_create
(
rte_ipc_rr_client_t
*handle_out,
180
const
rte_ipc_rr_client_config_t
*config);
181
217
rte_status_t
rte_ipc_rr_request
(
rte_ipc_rr_client_t
client,
218
const
void
*request_data,
219
size_t
request_size,
220
void
*reply_out,
221
size_t
reply_size,
222
rte_duration_ms_t
timeout_ms);
223
230
rte_status_t
rte_ipc_rr_client_destroy
(
rte_ipc_rr_client_t
client);
231
232
#ifdef __cplusplus
233
}
234
#endif
235
236
#endif
/* RTE_IPC_REQUEST_REPLY_H */
rte_status_t
rte_status_t
Common result/status codes.
Definition
rte_status.h:27
rte_duration_ms_t
uint32_t rte_duration_ms_t
Definition
rte_types.h:27
rte_ipc.h
OS Abstraction Layer - Inter-process/inter-task communication service.
rte_ipc_rr_client_destroy
rte_status_t rte_ipc_rr_client_destroy(rte_ipc_rr_client_t client)
Destroy request-reply client connection.
Definition
rte_ipc_request_reply.c:128
rte_ipc_rr_send_reply
rte_status_t rte_ipc_rr_send_reply(rte_ipc_rr_server_t server, uint32_t request_id, const void *reply_data, size_t reply_size)
Send reply to a request.
Definition
rte_ipc_request_reply.c:62
rte_ipc_rr_server_destroy
rte_status_t rte_ipc_rr_server_destroy(rte_ipc_rr_server_t server)
Destroy request-reply server.
Definition
rte_ipc_request_reply.c:77
rte_ipc_rr_server_create
rte_status_t rte_ipc_rr_server_create(rte_ipc_rr_server_t *handle_out, const rte_ipc_rr_server_config_t *config)
Create a request-reply server channel.
Definition
rte_ipc_request_reply.c:25
rte_ipc_rr_receive_request
rte_status_t rte_ipc_rr_receive_request(rte_ipc_rr_server_t server, rte_ipc_rr_request_t *request_out, rte_duration_ms_t timeout_ms)
Receive a request (blocking with timeout).
Definition
rte_ipc_request_reply.c:50
rte_ipc_rr_server_t
struct rte_ipc_rr_server_s * rte_ipc_rr_server_t
Request-Reply server channel handle.
Definition
rte_ipc_request_reply.h:42
rte_ipc_rr_client_t
struct rte_ipc_rr_client_s * rte_ipc_rr_client_t
Request-reply client handle.
Definition
rte_ipc_request_reply.h:149
rte_ipc_rr_request
rte_status_t rte_ipc_rr_request(rte_ipc_rr_client_t client, const void *request_data, size_t request_size, void *reply_out, size_t reply_size, rte_duration_ms_t timeout_ms)
Send request and wait for reply (blocking with timeout).
Definition
rte_ipc_request_reply.c:110
rte_ipc_rr_client_create
rte_status_t rte_ipc_rr_client_create(rte_ipc_rr_client_t *handle_out, const rte_ipc_rr_client_config_t *config)
Create a request-reply client connection.
Definition
rte_ipc_request_reply.c:87
rte_status.h
Common status/error codes returned by every Safe API Framework function. Shared across all OS Abstrac...
rte_types.h
Common fixed-width types and the caller-owned-storage handle pattern used by every OAL service (see A...
rte_ipc_rr_client_config_t
Configuration for request-reply client.
Definition
rte_ipc_request_reply.h:154
rte_ipc_rr_client_config_t::server_name
const char * server_name
Definition
rte_ipc_request_reply.h:155
rte_ipc_rr_client_config_t::reply_size
size_t reply_size
Definition
rte_ipc_request_reply.h:157
rte_ipc_rr_client_config_t::request_size
size_t request_size
Definition
rte_ipc_request_reply.h:156
rte_ipc_rr_request_t
Incoming request with context for sending reply.
Definition
rte_ipc_request_reply.h:57
rte_ipc_rr_request_t::request_size
size_t request_size
Definition
rte_ipc_request_reply.h:60
rte_ipc_rr_request_t::request_id
uint32_t request_id
Definition
rte_ipc_request_reply.h:58
rte_ipc_rr_request_t::request_data
uint8_t * request_data
Definition
rte_ipc_request_reply.h:59
rte_ipc_rr_server_config_t
Configuration for request-reply server.
Definition
rte_ipc_request_reply.h:47
rte_ipc_rr_server_config_t::reply_size
size_t reply_size
Definition
rte_ipc_request_reply.h:50
rte_ipc_rr_server_config_t::name
const char * name
Definition
rte_ipc_request_reply.h:48
rte_ipc_rr_server_config_t::queue_depth
size_t queue_depth
Definition
rte_ipc_request_reply.h:51
rte_ipc_rr_server_config_t::request_size
size_t request_size
Definition
rte_ipc_request_reply.h:49
include
rte
oal
ipc
rte_ipc_request_reply.h
Generated by
1.18.0