8#include "ga_interface.h"
19 ab_gp_train_session_t *sessions;
27 ab_gp_route_update_type_t update_type);
29 ab_gp_train_update_type_t update_type);
31 ab_gp_il_pending_output_t out[AB_GP_IL_MAX_PENDING_OUTPUTS]);
33 ab_gp_ctc_pending_output_t out[AB_GP_CTC_MAX_PENDING_OUTPUTS]);
42 g_channel_ctx.sessions = sessions;
43 g_channel_ctx.db = db;
46 if (status != RTE_STATUS_OK)
51 if (status != RTE_STATUS_OK)
61 if (status != RTE_STATUS_OK)
66 if (status != RTE_STATUS_OK)
87 ab_gp_route_update_type_t update_type)
99 ab_gp_train_update_type_t update_type)
109 ab_gp_il_pending_output_t out[AB_GP_IL_MAX_PENDING_OUTPUTS])
120 ab_gp_ctc_pending_output_t out[AB_GP_CTC_MAX_PENDING_OUTPUTS])
149 ab_gp_train_session_t *sessions = NULL;
153 sessions = ch->sessions;
void ab_ga_ctc_confirm_outputs_sent(ab_gp_train_session_t *sessions)
Consumes what the immediately-preceding ab_ga_ctc_build_outputs() call actually included in its own o...
void ab_ga_ctc_on_train_context_changed(const ab_gp_train_context_t *ctx, ab_gp_train_update_type_t update_type)
GA's dispatch module fans every train-context change here - stores the received snapshot and marks th...
uint8_t ab_ga_ctc_build_outputs(const ab_gp_train_session_t *sessions, ab_gp_db_t *db, ab_gp_ctc_pending_output_t out[AB_GP_CTC_MAX_PENDING_OUTPUTS])
Decides which trains need a CTC indication THIS cycle and builds all of them - see this file's own mo...
void ab_ga_ctc_on_route_context_changed(const ab_gp_route_context_t *ctx, ab_gp_route_update_type_t update_type)
GA's single dispatch module (safeAPIRBC2oo2GA/src/AB/main/ ab_ga_dispatch.c) is the ONLY thing that r...
A/B's own outbound messages to CtcRBCSim. Two layers, same split as AB/GP/train/ab_gp_train....
static void on_route_context_changed(const void *context, const ab_gp_route_context_t *ctx, ab_gp_route_update_type_t update_type)
static void il_output_confirm_trampoline(const void *context)
static uint8_t ctc_output_producer_trampoline(const void *context, ab_gp_ctc_pending_output_t out[AB_GP_CTC_MAX_PENDING_OUTPUTS])
static void on_train_context_changed(const void *context, const ab_gp_train_context_t *ctx, ab_gp_train_update_type_t update_type)
static void ctc_output_confirm_trampoline(const void *context)
static uint8_t il_output_producer_trampoline(const void *context, ab_gp_il_pending_output_t out[AB_GP_IL_MAX_PENDING_OUTPUTS])
rte_status_t ab_ga_dispatch_init(ab_gp_train_session_t *sessions, ab_gp_db_t *db)
Registers every GA<->GP subscription this process needs, in one place: route-context notify,...
GA's single GP-notification subscriber AND registration point for everything GP calls into GA with - ...
void ab_ga_il_on_route_context_changed(ab_gp_train_session_t *sessions, ab_gp_db_t *db, const ab_gp_route_context_t *ctx, ab_gp_route_update_type_t update_type)
GA's single dispatch module (ab_ga_dispatch.c) fans every route change here for AB_ROUTE_CONNECTED/AB...
uint8_t ab_ga_il_build_outputs(ab_gp_il_pending_output_t out[AB_GP_IL_MAX_PENDING_OUTPUTS])
Drains this module's own TrainPositionInRoute event queue (populated by this module's own route-conne...
void ab_ga_il_confirm_outputs_sent(void)
Clears the pending-route-event queue ab_ga_il_build_outputs() just built from - call ONLY once those ...
bool ab_ga_il_apply_envelope(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)
THE handler this module registers with GP (ab_gp_register_il_envelope_handler(), ga_interface....
A/B's own route handling against GP's own runtime table (via AB/GP/ga_interface/ga_interface....