RTE RBC 2oo2 Reference Application 0.1.0 build 0006685
SIL 4 2oo2 Dual-Site Fault-Tolerant ERTMS Radio Block Centre Reference Architecture
Loading...
Searching...
No Matches
ab_gp_ertms_engine.h
Go to the documentation of this file.
1
8
9#ifndef RTE_EXAMPLE_AB_GP_ERTMS_ENGINE_H
10#define RTE_EXAMPLE_AB_GP_ERTMS_ENGINE_H
11
12#include "ab_gp_ertms_types.h"
13#include "ab_gp_proc_session.h"
15#include "ab_gp_proc_ma.h"
16#include "ab_gp_proc_position.h"
18#include "ab_gp_proc_shunting.h"
19#include "ab_gp_proc_eom.h"
20#include "ab_gp_proc_tsr.h"
22#include "ab_gp_proc_handover.h"
23#include "../db/ab_gp_db.h"
24
25#ifdef __cplusplus
26extern "C" {
27#endif
28
34
41
49void ab_gp_ertms_engine_step(ab_gp_db_t *db, uint32_t cycle, uint32_t timestamp_ms, uint32_t elapsed_ms);
50
51/* ========================================================================= */
52/* GP ERTMS Calculation Services (Invoked in Cooperation with GA) */
53/* ========================================================================= */
54
62bool ab_gp_ertms_calc_ma_for_route(uint8_t train_id, uint16_t route_id, uint32_t ma_seq);
63
70bool ab_gp_ertms_extend_ma_for_route(uint8_t train_id, uint16_t route_id);
71
75bool ab_gp_ertms_validate_train_data(uint8_t train_id,
76 uint32_t l_train_m,
77 uint32_t v_maxtrain_kmh,
78 uint8_t m_axleload,
79 uint8_t m_loadinggauge,
80 bool m_airtight,
81 uint32_t timestamp_ms);
82
86bool ab_gp_ertms_update_train_position(uint8_t train_id,
87 uint32_t nid_lrbg,
88 uint32_t d_lrbg_m,
89 rbc_q_dirlrbg_t q_dirlrbg,
90 uint32_t v_train_kmh,
91 uint32_t m_mode,
92 uint32_t m_level,
93 uint32_t cycle,
94 uint32_t timestamp_ms);
95
99bool ab_gp_ertms_trigger_emergency_stop(uint8_t train_id,
100 bool is_conditional,
101 uint8_t nid_em,
102 uint32_t d_ref_m,
103 uint32_t d_es_m);
104
108bool ab_gp_ertms_revoke_emergency_stop(uint8_t train_id, uint8_t nid_em);
109
113bool ab_gp_ertms_request_shunting(uint8_t train_id);
114
118bool ab_gp_ertms_authorize_shunting(uint8_t train_id, bool authorized);
119
123bool ab_gp_ertms_terminate_mission(uint8_t train_id, ab_gp_db_t *db);
124
128bool ab_gp_ertms_add_tsr(uint8_t train_id,
129 uint8_t nid_tsr,
130 uint32_t v_tsr_kmh,
131 uint32_t d_start_m,
132 uint32_t d_end_m);
133
137bool ab_gp_ertms_remove_tsr(uint8_t train_id, uint8_t nid_tsr);
138
142bool ab_gp_ertms_send_text_message(uint8_t train_id,
143 uint8_t nid_textmessage,
144 uint8_t q_textclass,
145 uint8_t q_textconfirm,
146 uint32_t duration_s,
147 const char *text,
149
153bool ab_gp_ertms_handle_text_ack(uint8_t train_id,
154 uint8_t nid_textmessage,
155 uint32_t timestamp_ms);
156
160bool ab_gp_ertms_announce_handover(uint8_t train_id,
161 uint16_t target_nid_c,
162 uint16_t target_nid_rbc,
163 uint64_t target_nid_radio,
164 uint32_t d_rbctr_m);
165
169bool ab_gp_ertms_complete_handover(uint8_t train_id);
170
171#ifdef __cplusplus
172}
173#endif
174
175
176#endif /* RTE_EXAMPLE_AB_GP_ERTMS_ENGINE_H */
A/B's own simplified Train/Route database - fixed-size arrays describing the domain objects logic/ (p...
bool ab_gp_ertms_remove_tsr(uint8_t train_id, uint8_t nid_tsr)
Removes an active Temporary Speed Restriction (Packet 66) for a train path.
bool ab_gp_ertms_add_tsr(uint8_t train_id, uint8_t nid_tsr, uint32_t v_tsr_kmh, uint32_t d_start_m, uint32_t d_end_m)
Adds a Temporary Speed Restriction (Packet 65) for a train path.
ab_gp_ertms_train_context_t * ab_gp_ertms_engine_get_train_context(uint8_t train_id)
Retrieves the ERTMS procedure context for a given train slot.
bool ab_gp_ertms_handle_text_ack(uint8_t train_id, uint8_t nid_textmessage, uint32_t timestamp_ms)
Handles driver acknowledgement of a text message (Msg 146/158).
bool ab_gp_ertms_calc_ma_for_route(uint8_t train_id, uint16_t route_id, uint32_t ma_seq)
Computes a Movement Authority for a train on a given route.
bool ab_gp_ertms_complete_handover(uint8_t train_id)
Completes the RBC handover procedure for a train.
bool ab_gp_ertms_request_shunting(uint8_t train_id)
Requests shunting authorization for a train.
bool ab_gp_ertms_update_train_position(uint8_t train_id, uint32_t nid_lrbg, uint32_t d_lrbg_m, rbc_q_dirlrbg_t q_dirlrbg, uint32_t v_train_kmh, uint32_t m_mode, uint32_t m_level, uint32_t cycle, uint32_t timestamp_ms)
Updates train position and evaluates segment/route occupancy.
bool ab_gp_ertms_revoke_emergency_stop(uint8_t train_id, uint8_t nid_em)
Revokes an active emergency stop for a train.
bool ab_gp_ertms_validate_train_data(uint8_t train_id, uint32_t l_train_m, uint32_t v_maxtrain_kmh, uint8_t m_axleload, uint8_t m_loadinggauge, bool m_airtight, uint32_t timestamp_ms)
Validates train characteristics against site route topology.
bool ab_gp_ertms_authorize_shunting(uint8_t train_id, bool authorized)
Authorizes or rejects shunting mode for a train.
void ab_gp_ertms_engine_init(ab_gp_db_t *db)
Initializes the ERTMS procedure engine and all train contexts.
bool ab_gp_ertms_trigger_emergency_stop(uint8_t train_id, bool is_conditional, uint8_t nid_em, uint32_t d_ref_m, uint32_t d_es_m)
Triggers an emergency stop (UES or CES) for a train.
bool ab_gp_ertms_extend_ma_for_route(uint8_t train_id, uint16_t route_id)
Extends an existing Movement Authority with an additional route.
bool ab_gp_ertms_send_text_message(uint8_t train_id, uint8_t nid_textmessage, uint8_t q_textclass, uint8_t q_textconfirm, uint32_t duration_s, const char *text, rbc_packet_72_text_message_t *out_p72)
Sends a Driver Text Message (Packet 72) to a train.
bool ab_gp_ertms_announce_handover(uint8_t train_id, uint16_t target_nid_c, uint16_t target_nid_rbc, uint64_t target_nid_radio, uint32_t d_rbctr_m)
Announces an RBC handover transition order (Packet 131) for a train.
bool ab_gp_ertms_terminate_mission(uint8_t train_id, ab_gp_db_t *db)
Handles End of Mission teardown for a train.
void ab_gp_ertms_engine_step(ab_gp_db_t *db, uint32_t cycle, uint32_t timestamp_ms, uint32_t elapsed_ms)
Executes one cyclic evaluation of all active ERTMS train procedures.
ERTMS Subset-026 §5.7 Emergency Stop Management Procedure.
ERTMS Subset-026 §5.9 End of Mission (EoM) Procedure.
ERTMS Subset-026 §5.11 RBC-to-RBC Handover Procedure (Packet 131).
ERTMS Subset-026 §5.5 Movement Authority (MA) Management Procedure.
ERTMS Subset-026 §5.6 Supervised Location and Position Reporting Procedure.
ERTMS Subset-026 §5.3 Communication Session Management Procedure.
ERTMS Subset-026 5.6 Shunting initiated by driver (Level 2).
ERTMS Subset-026 §5.12 Plain Text Message to Driver (Packet 72) Procedure.
ERTMS Subset-026 §5.4 & §5.2 Validated Train Data and Start of Mission Procedure.
ERTMS Subset-026 §5.10 Temporary Speed Restriction (TSR) Procedure.
rbc_q_dirlrbg_t
Balise Group Orientation (Q_DIRLRBG) Subset-026 Section 7.5.1.16: 0 = Reverse 1 = Nominal 2 = Unknown...
ERTMS Subset-026 Chapter 5 Operational Procedure Data Types and Enums.
Complete ERTMS state and procedure context for one train slot.