SafeAPI RBC 2oo2 Generic Application
IL/CTC route and train logic for the safeAPIRBC2oo2 reference RBC
Loading...
Searching...
No Matches
ab_ga_ertms_ctc_interface.h
1
8
9#ifndef AB_GA_ERTMS_CTC_INTERFACE_H
10#define AB_GA_ERTMS_CTC_INTERFACE_H
11
12#include "../ab_ga_ertms_types.h"
13#include "ab_ga_ertms_ctc_types.h"
14
15
16#ifdef __cplusplus
17extern "C" {
18#endif
19
20/* ========================================================================= */
21/* CTC Command IDs (CTC -> RBC) */
22/* ========================================================================= */
23#define RBC_CTC_CMD_TYPE_ASSIGN_TRAIN_DESCRIBER 0x01U
24#define RBC_CTC_CMD_TYPE_SET_TSR 0x02U
25#define RBC_CTC_CMD_TYPE_REVOKE_TSR 0x03U
26#define RBC_CTC_CMD_TYPE_EMERGENCY_STOP 0x04U
27#define RBC_CTC_CMD_TYPE_REVOKE_EMERGENCY_STOP 0x05U
28#define RBC_CTC_CMD_TYPE_QUERY_STATUS 0x06U
29
30/* ========================================================================= */
31/* CTC Indication IDs (RBC -> CTC) */
32/* ========================================================================= */
33#define RBC_CTC_IND_TYPE_TRAIN_CONNECTED 0x81U
34#define RBC_CTC_IND_TYPE_TRAIN_DISCONNECTED 0x82U
35#define RBC_CTC_IND_TYPE_TRAIN_TELEMETRY 0x83U
36#define RBC_CTC_IND_TYPE_MA_STATUS_UPDATE 0x84U
37#define RBC_CTC_IND_TYPE_TSR_CONFIRMATION 0x85U
38#define RBC_CTC_IND_TYPE_ALARM_EVENT 0x86U
39#define RBC_CTC_IND_TYPE_RBC_HEALTH 0x87U
40
41/* ========================================================================= */
42/* CTC Protocol Framing Header */
43/* ========================================================================= */
44typedef struct rbc_ctc_header_s
45{
46 uint32_t sequence_number;
47 rbc_timestamp_ms_t timestamp_ms;
48 uint8_t msg_type;
50
51/* ========================================================================= */
52/* CTC -> RBC Commands */
53/* ========================================================================= */
54
55typedef struct rbc_ctc_cmd_assign_train_describer_s
56{
57 rbc_ctc_header_t header;
60
61typedef struct rbc_ctc_cmd_set_tsr_s
62{
63 rbc_ctc_header_t header;
66
67typedef struct rbc_ctc_cmd_revoke_tsr_s
68{
69 rbc_ctc_header_t header;
70 rbc_nid_tsr_t nid_tsr;
72
73typedef struct rbc_ctc_cmd_emergency_stop_s
74{
75 rbc_ctc_header_t header;
76 rbc_nid_engine_t nid_engine;
77 rbc_nid_em_t nid_em;
79
80typedef struct rbc_ctc_cmd_revoke_emergency_stop_s
81{
82 rbc_ctc_header_t header;
83 rbc_nid_engine_t nid_engine;
84 rbc_nid_em_t nid_em;
86
87/* ========================================================================= */
88/* RBC -> CTC Indications */
89/* ========================================================================= */
90
91typedef struct rbc_ctc_ind_train_connected_s
92{
93 rbc_ctc_header_t header;
94 rbc_nid_engine_t nid_engine;
95 rbc_nid_lrbg_t nid_lrbg;
96 rbc_distance_m_t d_lrbg_m;
97 rbc_timestamp_ms_t connection_time_ms;
99
100typedef struct rbc_ctc_ind_train_disconnected_s
101{
102 rbc_ctc_header_t header;
103 rbc_nid_engine_t nid_engine;
104 rbc_timestamp_ms_t disconnection_time_ms;
106
107typedef struct rbc_ctc_ind_train_telemetry_s
108{
109 rbc_ctc_header_t header;
112
113typedef enum rbc_ctc_ma_event_e
114{
115 RBC_CTC_MA_EVENT_GRANTED = 0,
116 RBC_CTC_MA_EVENT_EXTENDED = 1,
117 RBC_CTC_MA_EVENT_SHORTENED = 2,
118 RBC_CTC_MA_EVENT_REVOKED = 3
119} rbc_ctc_ma_event_t;
120
121typedef struct rbc_ctc_ind_ma_status_s
122{
123 rbc_ctc_header_t header;
124 rbc_nid_engine_t nid_engine;
125 rbc_ctc_ma_event_t event;
126 uint32_t ma_seq;
127 rbc_distance_m_t ma_length_m;
128 rbc_speed_kmh_t target_speed_kmh;
130
131typedef struct rbc_ctc_ind_alarm_s
132{
133 rbc_ctc_header_t header;
136
137typedef struct rbc_ctc_ind_health_s
138{
139 rbc_ctc_header_t header;
140 rbc_nid_rbc_t nid_rbc;
141 bool is_primary_active;
142 bool ixl_link_healthy;
143 uint8_t connected_train_count;
144 uint32_t cpu_load_percent;
146
147/* ========================================================================= */
148/* Unified Generic Message Containers & Handlers */
149/* ========================================================================= */
150
151typedef struct rbc_ctc_command_s
152{
153 uint8_t msg_type;
154 union
155 {
157 rbc_ctc_cmd_set_tsr_t set_tsr;
158 rbc_ctc_cmd_revoke_tsr_t revoke_tsr;
159 rbc_ctc_cmd_emergency_stop_t emergency_stop;
160 rbc_ctc_cmd_revoke_emergency_stop_t revoke_emergency_stop;
161 } payload;
163
164typedef struct rbc_ctc_indication_s
165{
166 uint8_t msg_type;
167 union
168 {
169 rbc_ctc_ind_train_connected_t train_connected;
170 rbc_ctc_ind_train_disconnected_t train_disconnected;
172 rbc_ctc_ind_ma_status_t ma_status;
175 } payload;
177
181typedef void (*rbc_ctc_on_command_received_fn)(const rbc_ctc_command_t *cmd, void *user_context);
182
186typedef int (*rbc_ctc_send_indication_fn)(const rbc_ctc_indication_t *ind, void *user_context);
187
188#ifdef __cplusplus
189}
190#endif
191
192#endif /* RBC_CTC_INTERFACE_H */
Last Relevant Balise Group (Country + BG identifier).