From 8dec04b15e6e37d048e142ec33b818746d160685 Mon Sep 17 00:00:00 2001 From: ian Date: Sat, 12 Apr 2008 12:48:35 +0000 Subject: [PATCH] data structure for features --- hostside/realtime.h | 25 +++++++++++++++++++++++++ hostside/record.c | 2 ++ hostside/safety.h | 4 ---- 3 files changed, 27 insertions(+), 4 deletions(-) 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. -- 2.30.2