16#include "rte/utils/buffer/rte_buffer.h"
17#include "rte/utils/lifecycle/rte_lifecycle.h"
18#include "rte/utils/notify/rte_notify.h"
19#include "rte/oal/memory/rte_mem_util.h"
30 rte_status_t lifecycle_status;
34 return RTE_STATUS_INVALID_PARAM;
36 lifecycle_status = rte_lifecycle_check_setup_allowed();
37 if (lifecycle_status != RTE_STATUS_OK)
39 return lifecycle_status;
43 return RTE_STATUS_RESOURCE_EXHAUSTED;
79 rte_status_t lifecycle_status;
83 return RTE_STATUS_INVALID_PARAM;
85 lifecycle_status = rte_lifecycle_check_setup_allowed();
86 if (lifecycle_status != RTE_STATUS_OK)
88 return lifecycle_status;
92 return RTE_STATUS_RESOURCE_EXHAUSTED;
129 rte_status_t lifecycle_status;
133 return RTE_STATUS_INVALID_PARAM;
135 lifecycle_status = rte_lifecycle_check_setup_allowed();
136 if (lifecycle_status != RTE_STATUS_OK)
138 return lifecycle_status;
142 return RTE_STATUS_RESOURCE_EXHAUSTED;
148 return RTE_STATUS_OK;
179#define AB_GP_CTC_ALARM_WIRE_HEADER_SIZE 12U
180#define AB_GP_CTC_ALARM_WIRE_L_MESSAGE 36U
185 uint32_t cycle, uint32_t timestamp_ms)
195 (void)rte_buffer_set_length(&buf, 4U);
197 (void)rte_buffer_write_u16_le(&buf, 0U);
198 (void)rte_buffer_write_u32_le(&buf, timestamp_ms);
199 (void)rte_buffer_write_u32_le(&buf, cycle);
200 (void)rte_buffer_write_u32_le(&buf, 0U);
201 (void)rte_buffer_write_u32_le(&buf, (uint32_t)severity);
202 (void)rte_buffer_write_u32_le(&buf, 0U);
203 (void)rte_buffer_write_u32_le(&buf, code);
204 (void)rte_buffer_write_u32_le(&buf, 0U);
RTE_DECLARE_CALLBACK_LIST(ab_gp_db_route_context_list_t, ab_gp_route_context_notify_fn, AB_GP_DB_MAX_ROUTE_CONTEXT_SUBSCRIBERS)
bool ab_gp_dispatch_il_envelope(ab_gp_train_session_t *sessions, ab_gp_db_t *db, const uint8_t env_bytes[RBC_ENVELOPE_WIRE_SIZE], uint32_t cycle, rte_example_site_t site, const char *role_tag)
Calls the registered IL envelope handler, if any - see ab_gp_register_il_envelope_handler()'s own doc...
#define AB_GP_CTC_ALARM_WIRE_L_MESSAGE
static ab_gp_il_output_producer_list_t g_il_output_producer
uint8_t ab_gp_drain_ctc_outputs(ab_gp_ctc_pending_output_t out[AB_GP_CTC_MAX_PENDING_OUTPUTS])
Calls the registered CTC output producer, if any - see ab_gp_register_ctc_output_producer()'s own doc...
static ab_gp_ctc_output_confirm_fn g_ctc_output_confirm_fn
static ab_gp_ctc_output_producer_list_t g_ctc_output_producer
void ab_gp_confirm_il_outputs_sent(void)
Calls the registered IL output producer's own confirm callback, if any - see ab_gp_il_output_confirm_...
static ab_gp_il_output_confirm_fn g_il_output_confirm_fn
void ab_gp_confirm_ctc_outputs_sent(void)
Calls the registered CTC output producer's own confirm callback, if any - same contract as ab_gp_conf...
void ab_gp_build_ctc_alarm(uint8_t out[RBC_ENVELOPE_WIRE_SIZE], rbc_alarm_severity_t severity, uint32_t code, uint32_t cycle, uint32_t timestamp_ms)
Builds and wire-encodes an outbound CTC_ALARM envelope - GP's own now (moved from GA,...
static ab_gp_il_envelope_handler_list_t g_il_envelope_handler
uint8_t ab_gp_drain_il_outputs(ab_gp_il_pending_output_t out[AB_GP_IL_MAX_PENDING_OUTPUTS])
Calls the registered IL output producer, if any - see ab_gp_register_il_output_producer()'s own doc,...
GP's own dispatch side of the "GP calls into GA" surface - see ga_interface.h's own "functions GP cal...
#define RBC_ENVELOPE_WIRE_SIZE
bool(*) ab_gp_il_envelope_handler_fn(const void *context, ab_gp_train_session_t *sessions, ab_gp_db_t *db, const uint8_t env_bytes[RBC_ENVELOPE_WIRE_SIZE], uint32_t cycle, rte_example_site_t site, const char *role_tag)
uint8_t(*) ab_gp_ctc_output_producer_fn(const void *context, ab_gp_ctc_pending_output_t out[AB_GP_CTC_MAX_PENDING_OUTPUTS])
void(*) ab_gp_il_output_confirm_fn(const void *context)
#define AB_GP_IL_MAX_PENDING_OUTPUTS
uint8_t(*) ab_gp_il_output_producer_fn(const void *context, ab_gp_il_pending_output_t out[AB_GP_IL_MAX_PENDING_OUTPUTS])
void(*) ab_gp_ctc_output_confirm_fn(const void *context)
#define AB_GP_CTC_MAX_PENDING_OUTPUTS
rte_status_t ab_gp_register_ctc_output_producer(ab_gp_ctc_output_producer_fn fn, ab_gp_ctc_output_confirm_fn confirm_fn, const void *context)
rte_status_t ab_gp_register_il_output_producer(ab_gp_il_output_producer_fn fn, ab_gp_il_output_confirm_fn confirm_fn, const void *context)
rte_status_t ab_gp_register_il_envelope_handler(ab_gp_il_envelope_handler_fn fn, const void *context)
The RBC Train/IL/CTC scenario's shared wire envelope (ADR-029) - one fixed-size struct/frame reused f...
rbc_alarm_severity_t
Severity of an RBC_MSG_CTC_ALARM envelope (msg_type field on the wire) - deliberately a small,...