From 9a82cf1910e6ddb1498938adf1f447e3bf98f9b1 Mon Sep 17 00:00:00 2001 From: ian Date: Fri, 4 Feb 2005 23:45:51 +0000 Subject: [PATCH] working on safety thing --- hostside/safety.c | 8 ++++++++ hostside/safety.h | 31 ++++++++++++++++++++++++------- 2 files changed, 32 insertions(+), 7 deletions(-) diff --git a/hostside/safety.c b/hostside/safety.c index b0a2db0..cbd5c28 100644 --- a/hostside/safety.c +++ b/hostside/safety.c @@ -4,6 +4,14 @@ #include "safety.h" + +void safety_notify_detection(State *s, SegmentIx seg) { + if (s->seg[seg].detectable_now) return; + if (!s->seg[seg].detectable_future) + panic(NONE, seg, "unexpected detection"); + + + int main(void) { printf("%d\n",(int)sizeof(State)); return 0; diff --git a/hostside/safety.h b/hostside/safety.h index 3eb460b..7e7100e 100644 --- a/hostside/safety.h +++ b/hostside/safety.h @@ -5,25 +5,42 @@ typedef unsigned short TrainIx; typedef unsigned short SegmentIx; +typedef unsigned char Speed; /* non-negative, units of 4mm/s */ typedef struct { SegmentIx foremost; unsigned justarrived:1, reverse:1; - unsigned char speed; /* non-negative, units of 4mm/s */ -} Train; + Speed speed; +} TrainState; typedef struct { unsigned present_now:1, present_future:1, - detectable_now:1, detectable_future:1; + detectable_now:1, detectable_future:1, + sideways:1; TrainIx owner; /*polarity?*/ -} Segment; +} SegmentState; -#include "layoutinfo.h" typedef struct { - Train trains[NUM_TRAINS]; - Segment segments[NUM_SEGMENTS]; + unsigned next_rev:1; + SegmentIx next; + +} SegmentLink; + +typedef struct { + SegmentIx backwards, forwards, sideways; +} SegmentInfo; + +typedef struct { + Speed maxspeed; + +} TrainInfo; + + +typedef struct { + TrainState traNUM_TRAINS]; + SegmentState seg[NUM_SEGMENTS]; } State; #endif /*SAFETY_H*/ -- 2.30.2