chiark / gitweb /
working on safety thing
[trains.git] / hostside / safety.h
1 /**/
2
3 #ifndef SAFETY_H
4 #define SAFETY_H
5
6 typedef unsigned short TrainIx;
7 typedef unsigned short SegmentIx;
8 typedef unsigned char Speed; /* non-negative, units of 4mm/s */
9
10 typedef struct {
11   SegmentIx foremost;
12   unsigned justarrived:1, reverse:1;
13   Speed speed;
14 } TrainState;
15
16 typedef struct {
17   unsigned present_now:1, present_future:1,
18     detectable_now:1, detectable_future:1,
19     sideways:1;
20   TrainIx owner;
21   /*polarity?*/
22 } SegmentState;
23
24
25 typedef struct {
26   unsigned next_rev:1;
27   SegmentIx next;
28   
29 } SegmentLink;
30
31 typedef struct {
32   SegmentIx backwards, forwards, sideways;
33 } SegmentInfo;
34
35 typedef struct {
36   Speed maxspeed;
37   
38 } TrainInfo;
39
40
41 typedef struct {
42   TrainState traNUM_TRAINS];
43   SegmentState seg[NUM_SEGMENTS];
44 } State;
45
46 #endif /*SAFETY_H*/