chiark / gitweb /
data structure for features
[trains.git] / hostside / realtime.h
index c5c152635c1efa7b07eda1242de4cbcc3ac679f0..15007c9204ddc839572eaf3f215f600cfc8970ab 100644 (file)
@@ -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;