SafeAPI RBC 2oo2 Generic Application
IL/CTC route and train logic for the safeAPIRBC2oo2 reference RBC
Toggle main menu visibility
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
17
extern
"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
/* ========================================================================= */
44
typedef
struct
rbc_ctc_header_s
45
{
46
uint32_t sequence_number;
47
rbc_timestamp_ms_t timestamp_ms;
48
uint8_t msg_type;
49
}
rbc_ctc_header_t
;
50
51
/* ========================================================================= */
52
/* CTC -> RBC Commands */
53
/* ========================================================================= */
54
55
typedef
struct
rbc_ctc_cmd_assign_train_describer_s
56
{
57
rbc_ctc_header_t
header;
58
rbc_ctc_train_describer_t
describer;
59
}
rbc_ctc_cmd_assign_train_describer_t
;
60
61
typedef
struct
rbc_ctc_cmd_set_tsr_s
62
{
63
rbc_ctc_header_t
header;
64
rbc_ctc_tsr_command_t
tsr;
65
}
rbc_ctc_cmd_set_tsr_t
;
66
67
typedef
struct
rbc_ctc_cmd_revoke_tsr_s
68
{
69
rbc_ctc_header_t
header;
70
rbc_nid_tsr_t nid_tsr;
71
}
rbc_ctc_cmd_revoke_tsr_t
;
72
73
typedef
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;
78
}
rbc_ctc_cmd_emergency_stop_t
;
79
80
typedef
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;
85
}
rbc_ctc_cmd_revoke_emergency_stop_t
;
86
87
/* ========================================================================= */
88
/* RBC -> CTC Indications */
89
/* ========================================================================= */
90
91
typedef
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;
98
}
rbc_ctc_ind_train_connected_t
;
99
100
typedef
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;
105
}
rbc_ctc_ind_train_disconnected_t
;
106
107
typedef
struct
rbc_ctc_ind_train_telemetry_s
108
{
109
rbc_ctc_header_t
header;
110
rbc_ctc_train_telemetry_t
telemetry;
111
}
rbc_ctc_ind_train_telemetry_t
;
112
113
typedef
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
121
typedef
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;
129
}
rbc_ctc_ind_ma_status_t
;
130
131
typedef
struct
rbc_ctc_ind_alarm_s
132
{
133
rbc_ctc_header_t
header;
134
rbc_ctc_alarm_event_t
alarm;
135
}
rbc_ctc_ind_alarm_t
;
136
137
typedef
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;
145
}
rbc_ctc_ind_health_t
;
146
147
/* ========================================================================= */
148
/* Unified Generic Message Containers & Handlers */
149
/* ========================================================================= */
150
151
typedef
struct
rbc_ctc_command_s
152
{
153
uint8_t msg_type;
154
union
155
{
156
rbc_ctc_cmd_assign_train_describer_t
assign_describer;
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;
162
}
rbc_ctc_command_t
;
163
164
typedef
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;
171
rbc_ctc_ind_train_telemetry_t
telemetry;
172
rbc_ctc_ind_ma_status_t
ma_status;
173
rbc_ctc_ind_alarm_t
alarm;
174
rbc_ctc_ind_health_t
health;
175
} payload;
176
}
rbc_ctc_indication_t
;
177
181
typedef
void (*rbc_ctc_on_command_received_fn)(
const
rbc_ctc_command_t
*cmd,
void
*user_context);
182
186
typedef
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 */
rbc_ctc_alarm_event_t
Definition
ab_ga_ertms_ctc_types.h:101
rbc_ctc_cmd_assign_train_describer_t
Definition
ab_ga_ertms_ctc_interface.h:56
rbc_ctc_cmd_emergency_stop_t
Definition
ab_ga_ertms_ctc_interface.h:74
rbc_ctc_cmd_emergency_stop_t::nid_engine
rbc_nid_engine_t nid_engine
Definition
ab_ga_ertms_ctc_interface.h:76
rbc_ctc_cmd_revoke_emergency_stop_t
Definition
ab_ga_ertms_ctc_interface.h:81
rbc_ctc_cmd_revoke_tsr_t
Definition
ab_ga_ertms_ctc_interface.h:68
rbc_ctc_cmd_set_tsr_t
Definition
ab_ga_ertms_ctc_interface.h:62
rbc_ctc_command_t
Definition
ab_ga_ertms_ctc_interface.h:152
rbc_ctc_header_t
Definition
ab_ga_ertms_ctc_interface.h:45
rbc_ctc_ind_alarm_t
Definition
ab_ga_ertms_ctc_interface.h:132
rbc_ctc_ind_health_t
Definition
ab_ga_ertms_ctc_interface.h:138
rbc_ctc_ind_ma_status_t
Definition
ab_ga_ertms_ctc_interface.h:122
rbc_ctc_ind_train_connected_t
Definition
ab_ga_ertms_ctc_interface.h:92
rbc_ctc_ind_train_disconnected_t
Definition
ab_ga_ertms_ctc_interface.h:101
rbc_ctc_ind_train_telemetry_t
Definition
ab_ga_ertms_ctc_interface.h:108
rbc_ctc_indication_t
Definition
ab_ga_ertms_ctc_interface.h:165
rbc_ctc_train_describer_t
Definition
ab_ga_ertms_ctc_types.h:56
rbc_ctc_train_telemetry_t
Definition
ab_ga_ertms_ctc_types.h:36
rbc_ctc_tsr_command_t
Definition
ab_ga_ertms_ctc_types.h:78
rbc_nid_lrbg_t
Last Relevant Balise Group (Country + BG identifier).
Definition
ab_ga_ertms_types.h:43
src
AB
ctc
ab_ga_ertms_ctc_interface.h
Generated by
1.18.0