API - JSON Communication 

Page / - last modified by GiorgioGhisotti on 2025/01/30 12:19 

JSON Communication 
last modified by GiorgioGhisotti
on 2025/01/30 12:19

Table of Contents
Controller Output
Controller Input

Controller Output
The controller executable outputs JSON data whenever certain internal values are updated. The JSON output contains one or more of the following fields.
Field name	Content type	Value range	Number of values	Description	
TrackSpeeds	int	0-255	48	The speed each track is set at.	
TrackContacts	boolean	false-true	96	Whether or not a contact is triggered. Contacts on the same track are consecutive, for instance the contacts on track 0 are represented by indexes 0 and 1 in this array.	
TrackPoints	boolean	false-true
(Branch=true,Straight=false)	30	Whether a given directional switch is set to straight or branch.	
TrainPositions	int	0-47	11	The track each train is currently on.	
Bell	boolean	false-true	1	Whether the bell is ringing or not.	
Gate0	boolean	false-true	1	Whether gate 0 is raised or not.	
Gate1	boolean	false-true	1	Whether gate 1 is raised or not.	

Controller Input
The controller accepts the following input format read from a JSON file. The JSON file is called input.json and is found in $XDG_CONFIG_HOME/railway if XDG_CONFIG_HOME is set or from $HOME/.config/railway if it isn't.
Field name	Content type	Value range	Number of values	Description	
Action	int	0-MAXINT,0-10, 0-47	3	Contains the description of a new train action in the format: [ action id, train id, destination ]