13#include "../rbc_ertms_types.h"
19#define RBC_IL_MAX_ROUTE_SECTIONS 16U
20#define RBC_IL_MAX_ROUTE_POINTS 8U
21#define RBC_IL_MAX_OVERLAP_LEN 1000U
27typedef enum rbc_il_route_state_e
29 RBC_IL_ROUTE_STATE_FREE = 0,
30 RBC_IL_ROUTE_STATE_REQUESTED = 1,
31 RBC_IL_ROUTE_STATE_RESERVED = 2,
32 RBC_IL_ROUTE_STATE_LOCKED = 3,
33 RBC_IL_ROUTE_STATE_CLEARED_PROCEED = 4,
34 RBC_IL_ROUTE_STATE_OCCUPIED = 5,
35 RBC_IL_ROUTE_STATE_CANCELLED_EMERGENCY= 6
36} rbc_il_route_state_t;
38typedef struct rbc_il_route_info_s
40 rbc_nid_route_t route_id;
41 rbc_il_route_state_t state;
42 rbc_nid_signal_t entry_signal;
43 rbc_nid_signal_t exit_signal;
44 rbc_distance_m_t route_length_m;
45 bool flank_protection_ok;
47 rbc_distance_m_t overlap_length_m;
48 uint8_t section_count;
49 rbc_nid_section_t sections[RBC_IL_MAX_ROUTE_SECTIONS];
56typedef enum rbc_il_section_state_e
58 RBC_IL_SECTION_CLEAR = 0,
59 RBC_IL_SECTION_OCCUPIED = 1,
60 RBC_IL_SECTION_DISTURBED = 2,
61 RBC_IL_SECTION_OUT_OF_ORDER = 3
62} rbc_il_section_state_t;
64typedef struct rbc_il_section_status_s
66 rbc_nid_section_t section_id;
67 rbc_il_section_state_t state;
68 rbc_timestamp_ms_t last_state_change_ms;
75typedef enum rbc_il_point_position_e
77 RBC_IL_POINT_NORMAL_LEFT = 0,
78 RBC_IL_POINT_REVERSE_RIGHT = 1,
79 RBC_IL_POINT_MOVING = 2,
80 RBC_IL_POINT_OUT_OF_ORDER = 3
81} rbc_il_point_position_t;
83typedef struct rbc_il_point_status_s
85 rbc_nid_point_t point_id;
86 rbc_il_point_position_t position;
94typedef enum rbc_il_signal_aspect_e
96 RBC_IL_SIGNAL_ASPECT_STOP = 0,
97 RBC_IL_SIGNAL_ASPECT_PROCEED = 1,
98 RBC_IL_SIGNAL_ASPECT_PROCEED_RESTRICTED = 2,
99 RBC_IL_SIGNAL_ASPECT_WARNING = 3,
100 RBC_IL_SIGNAL_ASPECT_SHUNTING = 4
101} rbc_il_signal_aspect_t;
103typedef struct rbc_il_signal_status_s
105 rbc_nid_signal_t signal_id;
106 rbc_il_signal_aspect_t aspect;
113typedef enum rbc_il_lx_state_e
116 RBC_IL_LX_CLOSING = 1,
117 RBC_IL_LX_CLOSED_PROTECTED = 2,
121typedef struct rbc_il_lx_status_s
124 rbc_il_lx_state_t state;