From 189250e6a330d3239ffdb5b31a92e52652483e4b Mon Sep 17 00:00:00 2001 From: Eloi Charpentier Date: Wed, 10 Apr 2024 11:53:44 +0200 Subject: [PATCH] core: tvm: fix condition for constraining signals The condition was inverted. Additionally, VL now always returns false as a safety measure. --- .../main/kotlin/fr/sncf/osrd/signaling/tvm300/TVM300.kt | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/core/kt-osrd-sncf-signaling/src/main/kotlin/fr/sncf/osrd/signaling/tvm300/TVM300.kt b/core/kt-osrd-sncf-signaling/src/main/kotlin/fr/sncf/osrd/signaling/tvm300/TVM300.kt index af85bd4dd0b..fdb8c7a563c 100644 --- a/core/kt-osrd-sncf-signaling/src/main/kotlin/fr/sncf/osrd/signaling/tvm300/TVM300.kt +++ b/core/kt-osrd-sncf-signaling/src/main/kotlin/fr/sncf/osrd/signaling/tvm300/TVM300.kt @@ -39,7 +39,12 @@ object TVM300 : SignalingSystemDriver { } override fun isConstraining(signalState: SigState, trainState: SignalingTrainState): Boolean { - return trainState.speed <= maxSpeedForState(signalState) + if (signalState.getEnum("aspect").contains("VL")) { + // VL should never be considered constraining, + // it would cause infinite loops in spacing resource generation + return false + } + return trainState.speed > maxSpeedForState(signalState) } override fun checkBlock(reporter: BlockDiagReporter, block: SigBlock) {