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_proc_session.c File Reference

Implementation of ERTMS Subset-026 §5.3 Communication Session Management. More...

#include "ab_gp_proc_session.h"
#include "../state_machines/ab_gp_dispatch.h"
#include "rte/oal/memory/rte_mem_util.h"
Include dependency graph for ab_gp_proc_session.c:

Go to the source code of this file.

Macros

#define RBC_SUPPORTED_ETCS_BASELINE_2   0x10U
#define RBC_SUPPORTED_ETCS_BASELINE_3   0x20U

Functions

void ab_gp_proc_session_init (ab_gp_ertms_train_context_t *ctx, uint8_t train_id, uint32_t nid_engine)
 Initializes the ERTMS procedure context for a train slot.
bool ab_gp_proc_session_handle_initiation (ab_gp_ertms_train_context_t *ctx, uint32_t cycle, uint32_t timestamp_ms)
 Handles session initiation request (Msg 155 / P0).
bool ab_gp_proc_session_handle_established (ab_gp_ertms_train_context_t *ctx, uint8_t m_version, uint32_t timestamp_ms)
 Handles session established confirmation (Msg 159).
bool ab_gp_proc_session_handle_termination (ab_gp_ertms_train_context_t *ctx, ab_gp_db_t *db)
 Handles session termination (Msg 156 / Msg 41).
bool ab_gp_proc_session_check_timeout (ab_gp_ertms_train_context_t *ctx, uint32_t elapsed_ms, uint32_t timeout_limit_ms, ab_gp_db_t *db)
 Supervises the communication contact timer (T_NVCONTACT).

Detailed Description

Implementation of ERTMS Subset-026 §5.3 Communication Session Management.

Implements SIL 4 C99 session state machine according to UNISIG Subset-026 §5.3.

Definition in file ab_gp_proc_session.c.

Macro Definition Documentation

◆ RBC_SUPPORTED_ETCS_BASELINE_2

#define RBC_SUPPORTED_ETCS_BASELINE_2   0x10U

Definition at line 13 of file ab_gp_proc_session.c.

◆ RBC_SUPPORTED_ETCS_BASELINE_3

#define RBC_SUPPORTED_ETCS_BASELINE_3   0x20U

Definition at line 14 of file ab_gp_proc_session.c.

Function Documentation

◆ ab_gp_proc_session_init()

void ab_gp_proc_session_init ( ab_gp_ertms_train_context_t * ctx,
uint8_t train_id,
uint32_t nid_engine )

Initializes the ERTMS procedure context for a train slot.

Parameters
[out]ctxTrain ERTMS context to initialize. Must not be NULL.
[in]train_id1..RTE_EXAMPLE_MAX_TRAINS connection slot.
[in]nid_engineETCS Engine identifier.

Definition at line 16 of file ab_gp_proc_session.c.

◆ ab_gp_proc_session_handle_initiation()

bool ab_gp_proc_session_handle_initiation ( ab_gp_ertms_train_context_t * ctx,
uint32_t cycle,
uint32_t timestamp_ms )

Handles session initiation request (Msg 155 / P0).

Parameters
[in,out]ctxTrain ERTMS context.
[in]cycleCurrent RTE execution cycle.
[in]timestamp_msCurrent timestamp in milliseconds.
Returns
true if state transitioned to INITIATED, false otherwise.

Definition at line 28 of file ab_gp_proc_session.c.

◆ ab_gp_proc_session_handle_established()

bool ab_gp_proc_session_handle_established ( ab_gp_ertms_train_context_t * ctx,
uint8_t m_version,
uint32_t timestamp_ms )

Handles session established confirmation (Msg 159).

Parameters
[in,out]ctxTrain ERTMS context.
[in]m_versionETCS baseline version reported by on-board.
[in]timestamp_msCurrent timestamp in milliseconds.
Returns
true if compatible and transitioned to ESTABLISHED, false otherwise.

Definition at line 50 of file ab_gp_proc_session.c.

◆ ab_gp_proc_session_handle_termination()

bool ab_gp_proc_session_handle_termination ( ab_gp_ertms_train_context_t * ctx,
ab_gp_db_t * db )

Handles session termination (Msg 156 / Msg 41).

Parameters
[in,out]ctxTrain ERTMS context.
[in,out]dbA/B Train/Route database to clean up.
Returns
true if session cleanly terminated, false otherwise.

Definition at line 83 of file ab_gp_proc_session.c.

◆ ab_gp_proc_session_check_timeout()

bool ab_gp_proc_session_check_timeout ( ab_gp_ertms_train_context_t * ctx,
uint32_t elapsed_ms,
uint32_t timeout_limit_ms,
ab_gp_db_t * db )

Supervises the communication contact timer (T_NVCONTACT).

Parameters
[in,out]ctxTrain ERTMS context.
[in]elapsed_msElapsed time since last cycle in ms.
[in]timeout_limit_msMaximum allowed silence before timeout.
[in,out]dbA/B database.
Returns
true if session remains healthy, false if timed out and terminated.

Definition at line 129 of file ab_gp_proc_session.c.