NRF Guide

Référence

SignalModel

Modèles indépendants : enums, règles, images, conduite et lecture typée du voisin.

Contexte d’utilisation

ModulePackageSource SDK
Kotlin/Nativenimbykotlin/src/nimby/SignalModel.kt

Signatures extraites de la version 0.8.0-alpha.1. Les paramètres, leurs valeurs par défaut et les propriétés de constructeur sont conservés. Les corps des méthodes ne font pas partie de cette référence.

SignalIndication

nimby · class
class SignalIndication

Décision d'un voisin, accompagnée du modèle qui l'a produite. Utiliser [of] pour la lire avec les enums de ce modèle. Un code numérique identique chez deux modèles ne rend jamais leurs indications interchangeables. Construction réservée au SDK : utilisez la fonction de création ou le contexte fourni.

SignalIndication.aspect

nimby · val
val aspect: Enum<*>

SignalIndication.reason

nimby · val
val reason: Enum<*>

SignalIndication.type

nimby · val
val type: SignalType get() = model.type

SignalIndication.drivingRule

nimby · val
val drivingRule: DrivingRule? get() = model.driving(Decision(aspect.ordinal, reason.ordinal))

Consigne explicitement déclarée par le modèle, sans déduction de couleur.

SignalIndication.active

nimby · val
val active: Boolean get() = model.active(Decision(aspect.ordinal, reason.ordinal))

SignalIndication.of

nimby · fun
fun <A : Enum<A>, R : Enum<R>> of(model: SignalModel<A, R>): Indication<A, R>?

Null si le voisin n'est pas exactement ce modèle. L'identité de la déclaration est vérifiée avant la conversion, pas seulement son nom.

SignalNeighbour

nimby · class
class SignalNeighbour

Voisin aval résolu sur le lien fourni par le réseau du mod. Aucun parcours géométrique supplémentaire : ce n'est pas une recherche de tous les signaux proches. Une donnée d'un mod absent n'est pas inventée. Construction réservée au SDK : utilisez la fonction de création ou le contexte fourni.

SignalNeighbour.id

nimby · val
val id: Long

SignalNeighbour.indication

nimby · val
val indication: SignalIndication

SignalNeighbour.type

nimby · val
val type: SignalType get() = indication.type

SignalNeighbour.drivingRule

nimby · val
val drivingRule: DrivingRule? get() = indication.drivingRule

SignalNeighbour.active

nimby · val
val active: Boolean get() = indication.active

SignalNeighbour.of

nimby · fun
fun <A : Enum<A>, R : Enum<R>> of(model: SignalModel<A, R>): Indication<A, R>? = indication.of(model)

SignalRuleContext

nimby · class
class SignalRuleContext

Entrée d'une règle de modèle. [next] conserve le type du voisin. Retourner null demande sa résolution ; un lien absent ou cyclique utilise le repli du modèle courant. Les interprétations entre modèles restent dans le mod. Construction réservée au SDK : utilisez la fonction de création ou le contexte fourni.

SignalRuleContext.next

nimby · val
val next: SignalNeighbour? = indication?.let { SignalNeighbour(source.nextSignal, it) }

SignalRuleContext.signal

nimby · val
val signal: Signal = source.copy(

Normalisation commune : un profil absent utilise les valeurs déclarées, un profil indisponible rend l'observation non fraîche. Aucun état de feu ni consigne de conduite n'est choisi ici. Le statut reste consultable.

SignalRuleContext.settings

nimby · val
val settings: Map<String, Boolean> get() = signal.settings

SignalRuleContext.observation

nimby · val
val observation: Observation get() = signal.observation

SignalRuleContext.block

nimby · val
val block: Occupancy get() = observation.block

SignalRuleContext.fresh

nimby · val
val fresh: Boolean get() = observation.fresh

SignalRuleContext.routeKnown

nimby · val
val routeKnown: Boolean get() = observation.routeKnown

SignalRuleContext.approachingTrain

nimby · val
val approachingTrain: Long? get() = observation.approachingTrain

SignalRuleContext.settingsStatus

nimby · val
val settingsStatus: SettingsStatus get() = signal.settingsStatus

SignalRuleContext.enabled

nimby · fun
fun enabled(option: Checkbox): Boolean

SignalModelBuilder

nimby · class
class SignalModelBuilder<A : Enum<A>, R : Enum<R>>

Tous les rôles d'un modèle, avec ses propres types d'indication et de motif. Les fonctions peuvent être déclarées dans des fichiers séparés du mod. Construction réservée au SDK : utilisez la fonction de création ou le contexte fourni.

SignalModelBuilder.observeApproach

nimby · var
var observeApproach = base.observeApproach

SignalModelBuilder.checkbox

nimby · fun
fun checkbox(name: String, label: String, description: String = "", defaultValue: Boolean = false,
                 onlyWhenEnabled: Boolean = false): Checkbox =

SignalModelBuilder.action

nimby · fun
fun action(id: String, label: String, whenMod: String, service: String)

SignalModelBuilder.rules

nimby · fun
fun rules(block: SignalRuleContext.() -> Indication<A, R>?)

SignalModelBuilder.evaluate

nimby · fun
fun evaluate(block: (Map<String, Boolean>, Observation) -> Indication<A, R>)

SignalModelBuilder.evaluate

nimby · fun
fun evaluate(block: (Map<String, Boolean>, Observation, A) -> Indication<A, R>)

Facultatif : compatibilité avec les diagnostics isolés qui fournissent Observation.next comme ordinal de CE modèle. Le SDK le valide et le décode. En réseau, utiliser rules et son voisin portant un modèle explicite.

SignalModelBuilder.migrateSettings

nimby · fun
fun migrateSettings(block: (Map<String, Boolean>) -> Map<String, Boolean>)

SignalModelBuilder.prepareObservation

nimby · fun
fun prepareObservation(block: (Signal) -> Signal)

SignalModelBuilder.allowForcedAspect

nimby · fun
fun allowForcedAspect(block: (A) -> Indication<A, R>?)

Recettes : le code reçu est l'ordinal local à ce modèle.

SignalModelBuilder.images

nimby · fun
fun images(block: (Indication<A, R>) -> String)

SignalModelBuilder.animatedImages

nimby · fun
fun animatedImages(block: (Indication<A, R>, Long, Long) -> String)

Temps de simulation, en millisecondes.

SignalModelBuilder.driving

nimby · fun
fun driving(block: (Indication<A, R>) -> DrivingRule?)

SignalModelBuilder.faults

nimby · fun
fun faults(block: (Indication<A, R>) -> Boolean)

SignalModelBuilder.activeWhen

nimby · fun
fun activeWhen(block: (Indication<A, R>) -> Boolean)

SignalModelBuilder.aspectNames

nimby · fun
fun aspectNames(block: (A) -> String)

SignalModelBuilder.reasonNames

nimby · fun
fun reasonNames(block: (R) -> String)

SignalModel

nimby · class
class SignalModel<A : Enum<A>, R : Enum<R>>

Modèle réutilisable et typé. Sa déclaration ne charge ni DLL ni partie. Ajouter ce modèle à [signalMod] pour le rendre constructible. Construction réservée au SDK : utilisez la fonction de création ou le contexte fourni.

SignalModel.type

nimby · val
val type: SignalType = builder.type()

signalModel

nimby · fun
inline fun <reified A : Enum<A>, reified R : Enum<R>> signalModel(
    id: String, title: String, textures: String, fallback: Indication<A, R>,
    invalidNetwork: Indication<A, R> = fallback, noinline block: SignalModelBuilder<A, R>.() -> Unit
): SignalModel<A, R> = signalModel(SignalType(id, title, textures), fallback, invalidNetwork, block)

signalModel

nimby · fun
inline fun <reified A : Enum<A>, reified R : Enum<R>> signalModel(
    type: SignalType, fallback: Indication<A, R>, invalidNetwork: Indication<A, R> = fallback,
    noinline block: SignalModelBuilder<A, R>.() -> Unit
): SignalModel<A, R> = buildSignalModel(type, fallback, invalidNetwork, enumValues<A>().toList(), enumValues<R>().toList(), block)

SignalModelsBuilder

nimby · class
class SignalModelsBuilder

Composition du paquet : chaque modèle conserve ses enums et ses callbacks. Construction réservée au SDK : utilisez la fonction de création ou le contexte fourni.

SignalModelsBuilder.maximumLineSpeed

nimby · var
var maximumLineSpeed = false

SignalModelsBuilder.diagnosticFile

nimby · var
var diagnosticFile = "nimby-kotlin-faults.jsonl"

SignalModelsBuilder.signal

nimby · fun
fun signal(model: SignalModel<*, *>)

SignalModelsBuilder.drivingPlan

nimby · fun
fun drivingPlan(block: (Vehicle, DrivingSettings, DrivingInput, List<Constraint>) -> DrivingPlan)

signalMod

nimby · fun
fun signalMod(id: String, title: String, block: SignalModelsBuilder.() -> Unit): SignallingMod

Assemble des modèles indépendants. Le SDK transporte leur identité, mais n'invente aucune correspondance entre leurs états et aucune règle de conduite.