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
gateway_c_types.h File Reference

Shared wire-format constants and gateway_c_context_t. More...

#include <stdbool.h>
#include <stdint.h>
#include "rte/redundancy/channel_service/rte_channel_service.h"
#include "rte/utils/status/rte_status.h"
#include "rte/oal/timer/rte_timer.h"
#include "common/rbc_wire_types.h"
#include "common/site_config.h"
#include "gateway_c_config.h"
Include dependency graph for gateway_c_types.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  gateway_c_dedup_entry_t
struct  gateway_c_dedup_t
struct  gateway_c_context_t
 One gateway_c_context_t instance's state. More...

Macros

#define GATEWAY_C_PEER_COUNT   2
#define GATEWAY_C_DEDUP_WINDOW_SIZE   32U
#define GATEWAY_C_DEDUP_EXPIRY_MS   450U
#define GATEWAY_C_DEDUP_SAF_EXPIRY_MS   3000U

Enumerations

enum  gateway_c_peer_t { GATEWAY_C_PEER_A = 0 , GATEWAY_C_PEER_B = 1 }

Functions

void gateway_c_sleep_ms (unsigned int ms)

Detailed Description

Shared wire-format constants and gateway_c_context_t.

Definition in file gateway_c_types.h.

Macro Definition Documentation

◆ GATEWAY_C_PEER_COUNT

#define GATEWAY_C_PEER_COUNT   2

Definition at line 30 of file gateway_c_types.h.

◆ GATEWAY_C_DEDUP_WINDOW_SIZE

#define GATEWAY_C_DEDUP_WINDOW_SIZE   32U

Definition at line 32 of file gateway_c_types.h.

◆ GATEWAY_C_DEDUP_EXPIRY_MS

#define GATEWAY_C_DEDUP_EXPIRY_MS   450U

Definition at line 33 of file gateway_c_types.h.

◆ GATEWAY_C_DEDUP_SAF_EXPIRY_MS

#define GATEWAY_C_DEDUP_SAF_EXPIRY_MS   3000U

A/B copies of one train-link SaF frame (RBC_MSG_SAF_ENVELOPE) can arrive a whole cycle apart - B answers AU1 only after A's shared RB reaches it, and the two channels' cycles are not phase-locked - so the 450 ms window (kept shorter than a cycle so identical acks/keepalives in consecutive cycles still pass) let the second copy through and the train dropped the connection on it. A SaF frame is never legitimately repeated (a fresh random in AU2, a new sequence number in every Sa-DATA), so an identical one within this window can only be the other channel's copy - or a replay the train would reject anyway.

Definition at line 40 of file gateway_c_types.h.

Enumeration Type Documentation

◆ gateway_c_peer_t

Which site process a handler's own relay_*[peer] array's first index refers to

Enumerator
GATEWAY_C_PEER_A 
GATEWAY_C_PEER_B 

Definition at line 25 of file gateway_c_types.h.

Function Documentation

◆ gateway_c_sleep_ms()

void gateway_c_sleep_ms ( unsigned int ms)

Shared sleep helper (nanosleep-based)

Definition at line 11 of file gateway_c_util.c.