11#include "rte/utils/cast/rte_cast.h"
15 if (buf == NULL || offset == NULL || val == NULL || *offset >= len)
26 if (buf == NULL || offset == NULL || val == NULL || (*offset + 2U) > len)
30 *val = (uint16_t)(((uint16_t)buf[*offset] << 8) | (uint16_t)buf[*offset + 1U]);
37 if (buf == NULL || offset == NULL || val == NULL || (*offset + 4U) > len)
41 *val = ((uint32_t)buf[*offset] << 24) |
42 ((uint32_t)buf[*offset + 1U] << 16) |
43 ((uint32_t)buf[*offset + 2U] << 8) |
44 ((uint32_t)buf[*offset + 3U]);
51 if (buf == NULL || offset == NULL || *offset >= cap)
62 if (buf == NULL || offset == NULL || (*offset + 2U) > cap)
66 (void)rte_cast_u16_to_u8((val >> 8) & 0xFFU, &buf[*offset]);
67 (void)rte_cast_u16_to_u8(val & 0xFFU, &buf[*offset + 1U]);
74 if (buf == NULL || offset == NULL || (*offset + 4U) > cap)
78 (void)rte_cast_u32_to_u8((val >> 24) & 0xFFU, &buf[*offset]);
79 (void)rte_cast_u32_to_u8((val >> 16) & 0xFFU, &buf[*offset + 1U]);
80 (void)rte_cast_u32_to_u8((val >> 8) & 0xFFU, &buf[*offset + 2U]);
81 (void)rte_cast_u32_to_u8(val & 0xFFU, &buf[*offset + 3U]);
92 uint32_t hi = (uint32_t)((val >> 32) & 0xFFFFFFFFU);
93 uint32_t lo = (uint32_t)(val & 0xFFFFFFFFU);
115 uint8_t q_scale = 0U;
117 uint16_t nid_bg = 0U;
118 uint32_t d_lrbg = 0U;
119 uint8_t q_dirlrbg = 0U;
120 uint8_t q_dlrbg = 0U;
121 uint32_t l_doubtover = 0U;
122 uint32_t l_doubtunder = 0U;
123 uint16_t v_train = 0U;
125 uint8_t m_level = 0U;
127 if (out_p0 == NULL ||
167 uint16_t nid_bg = 0U;
168 uint16_t prv_nid_c = 0U;
169 uint16_t prv_nid_bg = 0U;
170 uint32_t d_lrbg = 0U;
171 uint16_t v_train = 0U;
173 uint8_t m_level = 0U;
175 if (out_p1 == NULL ||
221 if (gradient == NULL)
357 uint32_t text_len = 0U;
375 for (i = 0U; i < text_len; i++)
388 if (transition == NULL)
bool rbc_packet_write_72_text_message(uint8_t *buf, size_t cap, size_t *offset, const rbc_packet_72_text_message_t *text)
bool rbc_packet_write_57_ma_request_params(uint8_t *buf, size_t cap, size_t *offset, const rbc_packet_57_ma_request_params_t *params)
bool rbc_codec_read_u8(const uint8_t *buf, size_t len, size_t *offset, uint8_t *val)
bool rbc_packet_write_131_rbc_transition(uint8_t *buf, size_t cap, size_t *offset, const rbc_packet_131_rbc_transition_t *transition)
Encodes Packet 131 (RBC Transition Order). NOTE: only d_rbctr/nid_c/ nid_rbc/nid_radio are written to...
bool rbc_codec_write_u8(uint8_t *buf, size_t cap, size_t *offset, uint8_t val)
bool rbc_packet_write_21_gradient_profile(uint8_t *buf, size_t cap, size_t *offset, const rbc_packet_21_gradient_profile_t *gradient)
bool rbc_codec_read_u32_be(const uint8_t *buf, size_t len, size_t *offset, uint32_t *val)
bool rbc_codec_read_u16_be(const uint8_t *buf, size_t len, size_t *offset, uint16_t *val)
bool rbc_packet_write_27_ssp(uint8_t *buf, size_t cap, size_t *offset, const rbc_packet_27_ssp_t *ssp)
bool rbc_codec_write_u16_be(uint8_t *buf, size_t cap, size_t *offset, uint16_t val)
bool rbc_packet_write_65_tsr(uint8_t *buf, size_t cap, size_t *offset, const rbc_packet_65_tsr_t *tsr)
bool rbc_packet_write_5_linking(uint8_t *buf, size_t cap, size_t *offset, const rbc_packet_5_linking_t *linking)
bool rbc_packet_write_66_tsr_revoke(uint8_t *buf, size_t cap, size_t *offset, const rbc_packet_66_tsr_revoke_t *revoke)
bool rbc_packet_read_1_position_report_2bg(const uint8_t *buf, size_t len, size_t *offset, rbc_packet_1_position_report_2bg_t *out_p1)
bool rbc_packet_write_3_national_values(uint8_t *buf, size_t cap, size_t *offset, const rbc_packet_3_national_values_t *nv)
bool rbc_packet_write_58_pr_params(uint8_t *buf, size_t cap, size_t *offset, const rbc_packet_58_pr_params_t *params)
bool rbc_codec_write_u64_be(uint8_t *buf, size_t cap, size_t *offset, uint64_t val)
bool rbc_packet_write_15_ma(uint8_t *buf, size_t cap, size_t *offset, const rbc_packet_15_ma_t *ma)
bool rbc_codec_write_u32_be(uint8_t *buf, size_t cap, size_t *offset, uint32_t val)
bool rbc_packet_read_0_position_report(const uint8_t *buf, size_t len, size_t *offset, rbc_packet_0_position_report_t *out_p0)
#define RBC_MAX_TEXT_MESSAGE_LEN
#define RBC_PACKET_131_RBC_TRANSITION_ORDER
#define RBC_PACKET_58_POSITION_REPORT_PARAMS
#define RBC_PACKET_65_TEMPORARY_SPEED_RESTRICT
#define RBC_PACKET_66_TSR_REVOCATION
#define RBC_PACKET_57_MA_REQUEST_PARAMS
#define RBC_PACKET_27_STATIC_SPEED_PROFILE
#define RBC_PACKET_72_TEXT_MESSAGE
#define RBC_PACKET_21_GRADIENT_PROFILE
#define RBC_PACKET_15_LEVEL_2_3_MA_SSP
#define RBC_PACKET_3_NATIONAL_VALUES
#define RBC_PACKET_5_LINKING_INFO
rbc_q_scale_t
Distance Scale Qualifier (Q_SCALE) Subset-026 Section 7.5.1.134: 0 = 10 cm (0.1 m) 1 = 1 m 2 = 10 m.
rbc_q_dlrbg_t
Train Orientation relative to LRBG (Q_DLRBG) Subset-026 Section 7.5.1.18: 0 = Reverse 1 = Nominal 2 =...
rbc_q_dirlrbg_t
Balise Group Orientation (Q_DIRLRBG) Subset-026 Section 7.5.1.16: 0 = Reverse 1 = Nominal 2 = Unknown...
rbc_m_mode_t
Train Operating Mode (M_MODE) Subset-026 Section 7.5.1.86.
rbc_m_level_t
ETCS Operating Level (M_LEVEL) Subset-026 Section 7.5.1.84.
uint16_t rbc_speed_kmh_t
Speed in km/h (5 km/h ETCS granularity or exact integer).
rbc_gradient_permille_t g_a
rbc_distance_m_t d_gradient
rbc_q_dirlrbg_t q_dirlrbg
rbc_distance_m_t ma_length
rbc_nid_lrbg_t nid_prvlrbg
rbc_gradient_segment_t segments[RBC_MAX_GRADIENT_SEGMENTS]
rbc_speed_segment_t segments[RBC_MAX_SPEED_SEGMENTS]
rbc_speed_kmh_t v_nvshunt
rbc_speed_kmh_t v_nvunfit
rbc_distance_m_t d_cycloc_m
rbc_linking_item_t links[RBC_MAX_LINKING_ITEMS]
char text[RBC_MAX_TEXT_MESSAGE_LEN]
rbc_distance_m_t d_static