Safe API Framework 0.1.0 build 384e6ae
Layered API framework for safety-related applications (ERTMS RBC reference targeting CENELEC EN 50128 SIL 4)
Loading...
Searching...
No Matches
rte_state_transfer.h
Go to the documentation of this file.
1
33#ifndef RTE_STATE_TRANSFER_H
34#define RTE_STATE_TRANSFER_H
35
36#include <stdint.h>
37#include <stddef.h>
39
40#ifdef __cplusplus
41extern "C" {
42#endif
43
45#define RTE_STATE_TRANSFER_MAX_FIELDS 8U
46
64typedef rte_status_t (*rte_state_field_encode_fn)(const void *data, uint8_t *out, size_t size);
65
72typedef rte_status_t (*rte_state_field_decode_fn)(void *data, const uint8_t *in, size_t size);
73
99
101typedef struct {
103 uint32_t field_count;
105
112
125 const char *name, void *data, size_t size);
126
144 const char *name, void *data, size_t size,
146 rte_state_field_decode_fn decode_fn);
147
155
170 uint8_t *out, size_t out_size, size_t *out_len);
171
186 const uint8_t *in, size_t in_len);
187
188#ifdef __cplusplus
189}
190#endif
191
192#endif /* RTE_STATE_TRANSFER_H */
rte_status_t
Common result/status codes.
Definition rte_status.h:27
rte_status_t rte_state_transfer_register_field(rte_state_transfer_registry_t *registry, const char *name, void *data, size_t size)
Registers one field. Order matters - encode()/decode() pack/unpack in registration order.
#define RTE_STATE_TRANSFER_MAX_FIELDS
rte_status_t(*) rte_state_field_encode_fn(const void *data, uint8_t *out, size_t size)
Optional custom wire encoder for one field, registered via rte_state_transfer_register_field_ex() - e...
rte_status_t rte_state_transfer_decode(const rte_state_transfer_registry_t *registry, const uint8_t *in, size_t in_len)
Inverse of encode(): overwrites every registered field's live value from in, in registration order.
rte_status_t(*) rte_state_field_decode_fn(void *data, const uint8_t *in, size_t size)
Inverse of rte_state_field_encode_fn - must consume EXACTLY size bytes from in and write the result i...
rte_status_t rte_state_transfer_encode(const rte_state_transfer_registry_t *registry, uint8_t *out, size_t out_size, size_t *out_len)
Packs every registered field's current live value into out, in registration order,...
size_t rte_state_transfer_encoded_size(const rte_state_transfer_registry_t *registry)
Total encoded size (sum of every registered field's size) - the minimum buffer size encode()/decode()...
rte_status_t rte_state_transfer_register_field_ex(rte_state_transfer_registry_t *registry, const char *name, void *data, size_t size, rte_state_field_encode_fn encode_fn, rte_state_field_decode_fn decode_fn)
Registers one field with a custom wire encoder/decoder pair instead of this module's default raw memc...
rte_status_t rte_state_transfer_registry_init(rte_state_transfer_registry_t *registry)
Initializes an empty registry.
Common status/error codes returned by every Safe API Framework function. Shared across all OS Abstrac...
rte_state_field_encode_fn encode_fn
rte_state_field_decode_fn decode_fn