36#ifndef SAFEAPI_EXAMPLE_AB_GA_IL_H
37#define SAFEAPI_EXAMPLE_AB_GA_IL_H
42#include "safeapi/utils/status/sapi_status.h"
44#include "rbc_wire_types.h"
45#include "site_config.h"
46#include "ga_interface.h"
98 const ab_gp_route_context_t *ctx, ab_gp_route_update_type_t update_type);
152bool ab_ga_il_route_add(ab_gp_db_t *db, uint16_t route_id, uint16_t start_signal, uint16_t end_signal);
255 const uint8_t env_bytes[RBC_ENVELOPE_WIRE_SIZE], uint32_t cycle,
256 sapi_example_site_t site,
const char *role_tag);
bool ab_ga_il_route_remove(ab_gp_db_t *db, uint16_t route_id)
Removes a tracked route from GP's own route table, freeing its slot - thin wrapper over ga_interface....
bool ab_ga_il_route_add(ab_gp_db_t *db, uint16_t route_id, uint16_t start_signal, uint16_t end_signal)
Adds a new route to GP's own route table, after verifying it via ab_ga_il_route_verify() above - thin...
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...
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, sapi_example_site_t site, const char *role_tag)
THE handler this module registers with GP (ab_gp_register_il_envelope_handler(), ga_interface....
bool ab_ga_il_route_unassign_train(ab_gp_db_t *db, uint16_t route_id)
Reverses ab_ga_il_route_assign_train() - thin wrapper over ga_interface.h's own ab_gp_db_route_discon...
bool ab_ga_il_route_verify(uint16_t route_id, uint16_t start_signal, uint16_t end_signal)
Verifies a route as reported by ILSim is OK: it must both exist in this site's own static layout AND ...
bool ab_ga_il_route_set_status(ab_gp_db_t *db, uint16_t route_id, ab_gp_db_route_il_status_t status)
Updates a tracked route's own il_status - IL's last-reported status for it - thin wrapper over ga_int...
bool ab_ga_il_site_has_route_by_signals(uint16_t start_signal, uint16_t end_signal, const ab_site_ga_route_layout_t **out_layout)
Pure site-layout lookup by route IDENTITY - does a route with this exact (start_signal,...
bool ab_ga_il_route_assign_train(ab_gp_db_t *db, uint16_t route_id, uint8_t train_id)
Assigns a route to a train - thin wrapper over ga_interface.h's own ab_gp_db_route_connect_train() (w...
bool ab_ga_il_handle_route_add(ab_gp_db_t *db, uint8_t train_id)
Handles the MA-length-bookkeeping half of an inbound ROUTE_ADD - marks this train as now holding a va...
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...
bool ab_ga_il_route_set_type(ab_gp_db_t *db, uint16_t route_id, uint32_t route_type)
Updates a tracked route's own route_type - IL's last-reported supervision mode (rbc_route_type_t: RBC...
bool ab_ga_il_site_has_route(uint16_t route_id, const ab_site_ga_route_layout_t **out_layout)
Pure site-layout lookup - does route_id exist in this site's own static track layout at all (ab_site_...
GA's own site data: route composition, built from GP's raw physical elements (railML interlocking <ro...
One route's static layout entry (railML interlocking <route>) - GA's own full definition (not a reduc...