NRF SDK 0.9

Créer un mod

Lire trois choix d’un mod de signalisation

Des extraits d’AB Signalisation lumineuse illustrent la séparation entre observation, décision, apparence et conduite.

Une approche observée, une ouverture décidée

Prérequis : connaître signalModel et rules. Ces fragments proviennent d’AB Signalisation lumineuse ; CarreAspect, CarreReason et CarreDecision appartiennent à ce mod. Ils expliquent un mécanisme sans constituer un projet autonome.

Déclaration du modèle Carré Avertissement
observeApproach(blocks = 2)
Fin de la règle, après ses autres vérifications
if (!context.trainApproaching)
    return closed(CarreReason.AwaitingApproach)
return CarreDecision(CarreAspect.Warning, CarreReason.ApproachConfirmed)

Le SDK fournit l’observation d’approche ; le mod choisit si elle permet d’ouvrir. Les réglages, la fraîcheur, la panne, l’arrêt forcé et l’occupation aval sont traités avant ces lignes. La tolérance éventuelle à un aval inconnu appartient au modèle concerné, pas à tous les signaux.

Préparer une animation réutilisable

Description d’animation dans BalTextures
private val redFlash = blink(
    on = "imgs/ca/sem_bal/tex09.svg",
    off = "imgs/ca/sem_bal/tex10.svg",
    everyMs = 500
)
Sélection de l’animation par le modèle
appearance { BalTextures.forAspect(it.aspect) }

Le mod prépare les descriptions une seule fois et choisit celle de l’aspect courant. Le SDK utilise le temps simulé pour déterminer la phase. Le callback ne doit pas alterner lui-même les images selon l’horloge réelle. Un modèle fixe peut simplement déclarer images.

Relier une consigne au motif de fermeture

Branche du calcul de conduite BAL
BalAspect.S ->
    if (decision.reason == BalReason.BlockOccupied)
        AutomaticDriving.restrictedUntilNextSignal(
            entrySpeedMps = 0.0,
            maximumSpeedMps = ON_SIGHT_SPEED,
            stopFirst = true
        )
    else AutomaticDriving.stop()

Pour une fermeture due à l’occupation, AB Signalisation lumineuse demande ici un arrêt avant une marche limitée jusqu’au prochain signal. D’autres motifs demandent un arrêt sans cette permission. ON_SIGHT_SPEED est une vitesse choisie par le mod, en m/s. Cet extrait ne crée pas une règle ferroviaire universelle.