Référence
SignalModel
Modèles indépendants : enums, règles, images, conduite et lecture typée du voisin.
Contexte d’utilisation
| Module | Package | Source SDK |
|---|---|---|
| Kotlin/Native | nimby | kotlin/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
class SignalIndicationDé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
val aspect: Enum<*>SignalIndication.reason
val reason: Enum<*>SignalIndication.type
val type: SignalType get() = model.typeSignalIndication.drivingRule
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
val active: Boolean get() = model.active(Decision(aspect.ordinal, reason.ordinal))SignalIndication.of
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
class SignalNeighbourVoisin 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
val id: LongSignalNeighbour.indication
val indication: SignalIndicationSignalNeighbour.type
val type: SignalType get() = indication.typeSignalNeighbour.drivingRule
val drivingRule: DrivingRule? get() = indication.drivingRuleSignalNeighbour.active
val active: Boolean get() = indication.activeSignalNeighbour.of
fun <A : Enum<A>, R : Enum<R>> of(model: SignalModel<A, R>): Indication<A, R>? = indication.of(model)SignalRuleContext
class SignalRuleContextEntré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
val next: SignalNeighbour? = indication?.let { SignalNeighbour(source.nextSignal, it) }SignalRuleContext.signal
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
val settings: Map<String, Boolean> get() = signal.settingsSignalRuleContext.observation
val observation: Observation get() = signal.observationSignalRuleContext.block
val block: Occupancy get() = observation.blockSignalRuleContext.fresh
val fresh: Boolean get() = observation.freshSignalRuleContext.routeKnown
val routeKnown: Boolean get() = observation.routeKnownSignalRuleContext.approachingTrain
val approachingTrain: Long? get() = observation.approachingTrainSignalRuleContext.settingsStatus
val settingsStatus: SettingsStatus get() = signal.settingsStatusSignalRuleContext.enabled
fun enabled(option: Checkbox): BooleanSignalModelBuilder
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
var observeApproach = base.observeApproachSignalModelBuilder.checkbox
fun checkbox(name: String, label: String, description: String = "", defaultValue: Boolean = false,
onlyWhenEnabled: Boolean = false): Checkbox =SignalModelBuilder.action
fun action(id: String, label: String, whenMod: String, service: String)SignalModelBuilder.rules
fun rules(block: SignalRuleContext.() -> Indication<A, R>?)SignalModelBuilder.evaluate
fun evaluate(block: (Map<String, Boolean>, Observation) -> Indication<A, R>)SignalModelBuilder.evaluate
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
fun migrateSettings(block: (Map<String, Boolean>) -> Map<String, Boolean>)SignalModelBuilder.prepareObservation
fun prepareObservation(block: (Signal) -> Signal)SignalModelBuilder.allowForcedAspect
fun allowForcedAspect(block: (A) -> Indication<A, R>?)Recettes : le code reçu est l'ordinal local à ce modèle.
SignalModelBuilder.images
fun images(block: (Indication<A, R>) -> String)SignalModelBuilder.animatedImages
fun animatedImages(block: (Indication<A, R>, Long, Long) -> String)Temps de simulation, en millisecondes.
SignalModelBuilder.driving
fun driving(block: (Indication<A, R>) -> DrivingRule?)SignalModelBuilder.faults
fun faults(block: (Indication<A, R>) -> Boolean)SignalModelBuilder.activeWhen
fun activeWhen(block: (Indication<A, R>) -> Boolean)SignalModelBuilder.aspectNames
fun aspectNames(block: (A) -> String)SignalModelBuilder.reasonNames
fun reasonNames(block: (R) -> String)SignalModel
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
val type: SignalType = builder.type()signalModel
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
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
class SignalModelsBuilderComposition 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
var maximumLineSpeed = falseSignalModelsBuilder.diagnosticFile
var diagnosticFile = "nimby-kotlin-faults.jsonl"SignalModelsBuilder.signal
fun signal(model: SignalModel<*, *>)SignalModelsBuilder.drivingPlan
fun drivingPlan(block: (Vehicle, DrivingSettings, DrivingInput, List<Constraint>) -> DrivingPlan)signalMod
fun signalMod(id: String, title: String, block: SignalModelsBuilder.() -> Unit): SignallingModAssemble des modèles indépendants. Le SDK transporte leur identité, mais n'invente aucune correspondance entre leurs états et aucune règle de conduite.