Skip to content

Commit d7fefe8

Browse files
committed
core: add blocks to v2 signal projection request
1 parent b9c2b55 commit d7fefe8

File tree

5 files changed

+13
-9
lines changed

5 files changed

+13
-9
lines changed

core/kt-osrd-sim-infra/src/main/kotlin/fr/sncf/osrd/sim_infra/api/LoadedSignalingInfra.kt

+6
Original file line numberDiff line numberDiff line change
@@ -118,3 +118,9 @@ interface BlockInfra {
118118
fun InfraSigSystemManager.findSignalingSystemOrThrow(sigSystem: String): SignalingSystemId {
119119
return findSignalingSystem(sigSystem) ?: throw OSRDError.newSignalingError(sigSystem)
120120
}
121+
122+
fun BlockInfra.convertBlockPath(blocks: List<String>): StaticIdxList<Block> {
123+
val res = mutableStaticIdxArrayListOf<Block>()
124+
for (block in blocks) res.add(getBlockFromName(block)!!)
125+
return res
126+
}

core/src/main/java/fr/sncf/osrd/standalone_sim/ScheduleMetadataExtractor.kt

+2-3
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ import fr.sncf.osrd.standalone_sim.result.ResultTrain.SignalSighting
2626
import fr.sncf.osrd.train.RollingStock
2727
import fr.sncf.osrd.train.StandaloneTrainSchedule
2828
import fr.sncf.osrd.utils.CurveSimplification
29-
import fr.sncf.osrd.utils.indexing.MutableStaticIdxArrayList
3029
import fr.sncf.osrd.utils.indexing.StaticIdxList
3130
import fr.sncf.osrd.utils.indexing.mutableStaticIdxArrayListOf
3231
import fr.sncf.osrd.utils.units.*
@@ -249,7 +248,7 @@ fun routingRequirements(
249248
// compute the signaling train state for each signal
250249
data class SignalingTrainStateImpl(override val speed: Speed) : SignalingTrainState
251250

252-
var signalingTrainStates = mutableMapOf<LogicalSignalId, SignalingTrainState>()
251+
val signalingTrainStates = mutableMapOf<LogicalSignalId, SignalingTrainState>()
253252
for (i in 0 until blockPath.size) {
254253
val block = blockPath[i]
255254
val blockOffset = blockOffsets[i]
@@ -569,7 +568,7 @@ fun pathSignalsInRange(
569568
fun trainPathBlockOffset(
570569
infra: RawInfra,
571570
blockInfra: BlockInfra,
572-
blockPath: MutableStaticIdxArrayList<Block>,
571+
blockPath: StaticIdxList<Block>,
573572
chunkPath: ChunkPath
574573
): Distance {
575574
val firstChunk = chunkPath.chunks[0]

core/src/main/kotlin/fr/sncf/osrd/api/api_v2/project_signals/SignalProjectionEndpointV2.kt

+3
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import fr.sncf.osrd.api.InfraManager
55
import fr.sncf.osrd.api.pathfinding.makeChunkPath
66
import fr.sncf.osrd.reporting.warnings.DiagnosticRecorderImpl
77
import fr.sncf.osrd.signal_projection.projectSignals
8+
import fr.sncf.osrd.sim_infra.api.convertBlockPath
89
import fr.sncf.osrd.sim_infra.api.convertRoutePath
910
import org.takes.Request
1011
import org.takes.Response
@@ -29,6 +30,7 @@ class SignalProjectionEndpointV2(private val infraManager: InfraManager) : Take
2930

3031
// Parse path
3132
val chunkPath = makeChunkPath(infra.rawInfra, request.trackSectionRanges)
33+
val blockPath = infra.blockInfra.convertBlockPath(request.blocks)
3234
val routePath = infra.rawInfra.convertRoutePath(request.routes)
3335

3436
val signalProjections = mutableMapOf<Long, List<SignalUpdate>>()
@@ -37,6 +39,7 @@ class SignalProjectionEndpointV2(private val infraManager: InfraManager) : Take
3739
projectSignals(
3840
infra,
3941
chunkPath,
42+
blockPath,
4043
routePath,
4144
trainSimulation.signalSightings,
4245
trainSimulation.zoneUpdates,

core/src/main/kotlin/fr/sncf/osrd/api/api_v2/project_signals/SignalProjectionRequest.kt

+1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import fr.sncf.osrd.utils.json.UnitAdapterFactory
1111
import fr.sncf.osrd.utils.units.TimeDelta
1212

1313
class SignalProjectionRequest(
14+
val blocks: List<String>,
1415
@Json(name = "track_section_ranges") var trackSectionRanges: List<TrackRange>,
1516
var routes: List<String>,
1617
@Json(name = "train_simulations") var trainSimulations: Map<Long, TrainSimulation>,

core/src/main/kotlin/fr/sncf/osrd/signal_projection/SignalProjectionV2.kt

+1-6
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import fr.sncf.osrd.sim_infra.api.*
1111
import fr.sncf.osrd.sim_infra.impl.ChunkPath
1212
import fr.sncf.osrd.standalone_sim.*
1313
import fr.sncf.osrd.utils.indexing.StaticIdxList
14-
import fr.sncf.osrd.utils.indexing.mutableStaticIdxArrayListOf
1514
import fr.sncf.osrd.utils.units.*
1615
import java.awt.Color
1716

@@ -20,6 +19,7 @@ data class SignalAspectChangeEventV2(val newAspect: String, val time: TimeDelta)
2019
fun projectSignals(
2120
fullInfra: FullInfra,
2221
chunkPath: ChunkPath,
22+
blockPath: StaticIdxList<Block>,
2323
routePath: StaticIdxList<Route>,
2424
signalSightings: Collection<SignalSighting>,
2525
zoneUpdates: Collection<ZoneUpdate>,
@@ -50,11 +50,6 @@ fun projectSignals(
5050
value("aspect", "300VL")
5151
}
5252

53-
// Recover blocks from the route path
54-
val detailedBlockPath = recoverBlockPath(simulator, fullInfra, routePath)
55-
val blockPath = mutableStaticIdxArrayListOf<Block>()
56-
for (block in detailedBlockPath) blockPath.add(block.block)
57-
5853
val zoneMap = mutableMapOf<String, Int>()
5954
var zoneCount = 0
6055
for (block in blockPath) {

0 commit comments

Comments
 (0)