Show last authors
1 == Trains ==
2
3 Each train has a trainnumber. The trainnumber is for prioritization, when multiple trains compete for the same track. Lower numbers mean higher priorities, e.g. train 0 has the highest priority. Priorities can't be changed dynamicly.
4 Each train has one home-track at each station.
5
6 === Train numbering ===
7
8 Variable **trainNum** is used to identify trains.
9
10 The assignment of numbers to trains is chosen as followed
11
12 |=(((
13 trainNum
14 )))|=(((
15 Starting track
16 )))
17 |(((
18 0
19 )))|(((
20 KH_ST_1
21 )))
22 |(((
23 1
24 )))|(((
25 KH_ST_2
26 )))
27 |(((
28 2
29 )))|(((
30 KH_ST_3 (r)
31 )))
32 |(((
33 3
34 )))|(((
35 KH_ST_4 (r)
36 )))
37 |(((
38 4
39 )))|(((
40 IC_ST_3
41 )))
42 |(((
43 5
44 )))|(((
45 IC_ST_2
46 )))
47 |(((
48 6
49 )))|(((
50 OC_ST_2
51 )))
52 |(((
53 7
54 )))|(((
55 OC_ST_1
56 )))
57 |(((
58 8
59 )))|(((
60 KH_ST_5
61 )))
62 |(((
63 9
64 )))|(((
65 IC_ST_1
66 )))
67 |(((
68 10
69 )))|(((
70 OC_ST_3
71 )))
72
73 == Logging ==
74
75 Variable **debug** indicates verbose logging.
76
77 Prefix of all log messages must be :** [trainnum][ST-ST]**
78
79 Use **println** function to produce textual output. Do not use printf or other io functions, because output may not be flushed correctly.
80
81 == Tracks ==
82
83 Stopping on tracks without contacts is permitted. Therefore they must be reserved and used with an adjacent track.
84 Each station has one drive-through track for each possible direction:
85
86 |=(((
87 station
88 )))|=(((
89 drive-through track
90 )))
91 |(((
92 IC_station
93 )))|(((
94 IC_ST_1
95 )))
96 |(((
97 OC_station
98 )))|(((
99 OC_ST_3
100 )))
101 |(((
102 KH_station
103 )))|(((
104 KH_ST_5
105 )))
106 |(% colspan="1" %)(% colspan="1" %)
107 (((
108 KH_station(r)
109 )))|(% colspan="1" %)(% colspan="1" %)
110 (((
111 KH_ST_1
112 )))
113
114 == Codestyle ==
115
116 Use entry-/exit-actions instead of actions on transitions, if possible.
117 If using hostcode, only use functions delivered by our own C-Interface and not the Höhrmann-API.
118
119 == Mutual Exclusion ==
120
121 bool <track>_req[<trainAmount>] contains the requests for each track and train. Before the availability of arrays, we used bool <train>_<track>_req.
122 int <track>_perm contains the trainnumber of the train, who is allowed to drive on <track>.
123
124 == Quit, Pause and Cleanup ==
125
126 Quit, pause and cleanup functionality is handled in the c interface.
127
128 **CTRL+C** (SIGINT)** **quits the controller
129
130 **CTRL+\** (SIGQUIT)** **cleans up
131
132 **CTRL+Z **(SIGSTP) pauses and continues
133
134
135
136