From: ian Date: Sat, 12 Apr 2008 12:48:35 +0000 (+0000) Subject: data structure for features X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ijackson/git?p=trains.git;a=commitdiff_plain;h=8dec04b15e6e37d048e142ec33b818746d160685 data structure for features --- diff --git a/hostside/realtime.h b/hostside/realtime.h index c5c1526..15007c9 100644 --- a/hostside/realtime.h +++ b/hostside/realtime.h @@ -73,6 +73,31 @@ void retransmit_urgent_cancel(RetransmitUrgentNode *rn); /* ... NB: these are NOT idempotent. Use _requeue it's queued; * _requeue is just _cancel followed by queue. */ +/*---------- features, filled in by record, used by features.c ----------*/ + +typedef struct { + int addr, cbitmap; + RetransmitRelaxedNode rn[4]; /* nmra feat setting cmds and speed cmd */ +} FeaturesAddr; + +typedef struct { + FeaturesAddr *a; + int bitval; /* may have no or several bits set */ + int speedstep; /* -ve means backwards; 0 means not to use motor for feat */ +} FeaturesFeature; + +typedef struct { + char *pname; + char *featchs; /* null-terminated for convenience; _ means unused */ + FeaturesFeature *feats; /* same order as featchs */ +} FeaturesTarget; + +extern int n_trains; +extern Train *trains; +extern Segment *segments; +extern int n_feattargs; +extern FeaturesTarget *feattargs; + /*---------- global variables, in realtime.c ----------*/ extern CommandInput cmdi; diff --git a/hostside/record.c b/hostside/record.c index e247e2f..b3b508f 100644 --- a/hostside/record.c +++ b/hostside/record.c @@ -10,6 +10,8 @@ * train home [-] [-] [-] * seg has [-] * seg at + * feature is + * feature is step [-] * * speed is in um/s, upwait and downwait are in us */ diff --git a/hostside/safety.h b/hostside/safety.h index 82caacf..518a54b 100644 --- a/hostside/safety.h +++ b/hostside/safety.h @@ -86,10 +86,6 @@ struct Segment { const SegmentInfo *i; }; -extern int n_trains; -extern Train *trains; -extern Segment *segments; - /*========== embed.c ==========*/ /* surrounds the algorithms and machinery in a program: logging, error * handling, arg parsing, etc.