NRF Guide

Référence

SignalMod

Indication et ancienne déclaration à vocabulaire commun ; préférer signalModel pour les nouveaux projets.

Contexte d’utilisation

ModulePackageSource SDK
Kotlin/Nativenimbykotlin/src/nimby/SignalMod.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.

Indication

nimby · class
data class Indication<A : Enum<A>, R : Enum<R>>(val aspect: A, val reason: R)

Indication typée d'un modèle : deux enums Kotlin, sans code natif à manipuler. Les recettes utilisent leurs ordinaux locaux au modèle. Ajouter les nouvelles valeurs à la fin si des recettes utilisent déjà ces codes.

SignalModDsl

nimby · class
annotation class SignalModDsl

SignalContext

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

Contexte d'une règle. [next] est null lors du premier calcul ; retourner null demande au SDK de résoudre le signal suivant puis de rappeler la règle. Si le suivant est absent ou si le réseau boucle, le SDK utilise le repli `invalidNetwork` choisi par le mod. Aucune règle nationale n'est implicite. Construction réservée au SDK : utilisez la fonction de création ou le contexte fourni.

SignalContext.signal

nimby · val
val signal: Signal

SignalContext.next

nimby · val
val next: Indication<A, R>?

SignalContext.observation

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

SignalContext.block

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

SignalContext.fresh

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

SignalContext.routeKnown

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

SignalContext.approachingTrain

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

SignalContext.settingsStatus

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

SignalContext.enabled

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

Une valeur absente prend le défaut déclaré. Un profil indisponible reste identifiable par [settingsStatus] : ce défaut ne prouve pas sa validité.

SignalDefinition

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

Configuration d'un modèle constructible. Les callbacks n'effectuent aucun appel natif : ils se testent avec de simples valeurs Kotlin. Construction réservée au SDK : utilisez la fonction de création ou le contexte fourni.

SignalDefinition.observeApproach

nimby · var
var observeApproach: Boolean = base.observeApproach

SignalDefinition.checkbox

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

SignalDefinition.rules

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

SignalDefinition.action

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

Affiché seulement si le fournisseur et son service sont disponibles. Aucune dépendance obligatoire et aucun appel de mod depuis le thread UI.

SignalDefinition.evaluate

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

Facultatif : calcul isolé sans résolution du réseau, pour les diagnostics.

SignalDefinition.migrateSettings

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

SignalDefinition.prepareObservation

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

SignalDefinition.allowForcedAspect

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

Sans ce callback, toute demande de forçage d'indication est refusée.

SignalModBuilder

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

Déclaration du mod. Les replis, images, vitesses et permissions viennent exclusivement du mod. Le SDK prend en charge les exports et le réseau. Construction réservée au SDK : utilisez la fonction de création ou le contexte fourni.

SignalModBuilder.maximumLineSpeed

nimby · var
var maximumLineSpeed: Boolean = false

SignalModBuilder.diagnosticFile

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

SignalModBuilder.signal

nimby · fun
fun signal(id: String, title: String, textures: String, block: SignalDefinition<A, R>.() -> Unit) =

SignalModBuilder.signal

nimby · fun
fun signal(type: SignalType, block: SignalDefinition<A, R>.() -> Unit)

Permet de conserver une déclaration partagée avec des tests ou un éditeur.

SignalModBuilder.images

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

SignalModBuilder.animatedImages

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

Temps simulé et demi-période en millisecondes, jamais l'heure du PC.

SignalModBuilder.driving

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

SignalModBuilder.faults

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

SignalModBuilder.activeWhen

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

SignalModBuilder.aspectNames

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

SignalModBuilder.reasonNames

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

SignalModBuilder.drivingPlan

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

signalMod

nimby · fun
inline fun <reified A : Enum<A>, reified R : Enum<R>> signalMod(
    id: String, title: String, fallback: Indication<A, R>,
    invalidNetwork: Indication<A, R> = fallback,
    noinline block: SignalModBuilder<A, R>.() -> Unit
): SignallingMod = buildSignalMod(id, title, fallback, invalidNetwork, enumValues<A>().toList(), enumValues<R>().toList(), block)

Ancienne déclaration à vocabulaire commun. Pour des modèles indépendants, préférer [signalModel] et la surcharge signalMod(id, title) { signal(model) }. [fallback] couvre les observations inconnues ; [invalidNetwork] couvre les liens absents et les cycles sans décision locale.