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
transport.h
Go to the documentation of this file.
1
18
#ifndef SAFECOMM_TRANSPORT_H
19
#define SAFECOMM_TRANSPORT_H
20
21
#include <stddef.h>
22
#include <stdint.h>
23
24
#include "
safecomm/status.h
"
25
26
#ifdef __cplusplus
27
extern
"C"
{
28
#endif
29
38
typedef
safecomm_status_t
(*
safecomm_transport_send_fn
)(
void
*user,
const
uint8_t *buf,
size_t
len);
39
49
typedef
safecomm_status_t
(*
safecomm_transport_recv_fn
)(
void
*user, uint8_t *buf,
size_t
cap,
size_t
*out_len);
50
52
typedef
void (*
safecomm_transport_close_fn
)(
void
*user);
53
55
typedef
struct
56
{
57
safecomm_transport_send_fn
send
;
58
safecomm_transport_recv_fn
recv
;
59
safecomm_transport_close_fn
close
;
60
void
*
user
;
61
}
safecomm_transport_t
;
62
74
safecomm_status_t
safecomm_transport_oal_tcp
(
safecomm_transport_t
*out,
75
const
char
*host, uint16_t port,
76
uint32_t recv_timeout_ms);
77
83
typedef
struct
84
{
85
void
*
channel
;
86
uint32_t
recv_timeout_ms
;
87
}
safecomm_transport_channel_ctx_t
;
88
115
safecomm_status_t
safecomm_transport_from_channel_service
(
safecomm_transport_t
*out,
116
safecomm_transport_channel_ctx_t
*ctx,
117
void
*channel,
118
uint32_t recv_timeout_ms);
119
120
#ifdef __cplusplus
121
}
122
#endif
123
124
#endif
/* SAFECOMM_TRANSPORT_H */
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_transport_channel_ctx_t
Caller-owned storage for safecomm_transport_from_channel_service. No dynamic memory (MISRA): the call...
Definition
transport.h:84
safecomm_transport_channel_ctx_t::channel
void * channel
Definition
transport.h:85
safecomm_transport_channel_ctx_t::recv_timeout_ms
uint32_t recv_timeout_ms
Definition
transport.h:86
safecomm_transport_t
A consumer-supplied bearer the SaF layer runs over.
Definition
transport.h:56
safecomm_transport_t::send
safecomm_transport_send_fn send
Definition
transport.h:57
safecomm_transport_t::recv
safecomm_transport_recv_fn recv
Definition
transport.h:58
safecomm_transport_t::user
void * user
Definition
transport.h:60
safecomm_transport_t::close
safecomm_transport_close_fn close
Definition
transport.h:59
safecomm_transport_send_fn
safecomm_status_t(*) safecomm_transport_send_fn(void *user, const uint8_t *buf, size_t len)
Blocking send of exactly len bytes.
Definition
transport.h:38
safecomm_transport_oal_tcp
safecomm_status_t safecomm_transport_oal_tcp(safecomm_transport_t *out, const char *host, uint16_t port, uint32_t recv_timeout_ms)
Populate out with an OAL/TCP transport built on safeAPIFreamwork.
Definition
transport.c:99
safecomm_transport_close_fn
void(*) safecomm_transport_close_fn(void *user)
Release the underlying bearer. Idempotent.
Definition
transport.h:52
safecomm_transport_from_channel_service
safecomm_status_t safecomm_transport_from_channel_service(safecomm_transport_t *out, safecomm_transport_channel_ctx_t *ctx, void *channel, uint32_t recv_timeout_ms)
Populate out with a transport that runs over an already-open, caller-owned Platform_RTE named channel...
Definition
transport.c:84
safecomm_transport_recv_fn
safecomm_status_t(*) safecomm_transport_recv_fn(void *user, uint8_t *buf, size_t cap, size_t *out_len)
Blocking receive of up to cap bytes.
Definition
transport.h:49
include
safecomm
transport
transport.h
Generated by
1.18.0