2 * declarations for realtime daemon
9 #include "auproto-pic.h"
21 #include <sys/types.h>
31 #include "../layout/layout-data.h"
33 typedef struct Segment Segment;
34 typedef struct Train Train;
36 /*---------- from retransmit.c ----------*/
38 typedef struct RetransmitRelaxedNode RetransmitRelaxedNode;
39 typedef union RetransmitUrgentNode RetransmitUrgentNode;
40 typedef unsigned Retransmit__Time;
42 /* Contents of the retransmission nodes is generally all for use by
43 * retransmit.c only; as a special exception, caller may edit pi
44 * directly. Normally, though, pi is set by supplying an NMRA
45 * command to one of the _queue functions; iff the Nmra* is
46 * non-null, _queue will add an NMRA checksum and update pi.
48 struct RetransmitRelaxedNode {
50 DLIST_NODE(RetransmitRelaxedNode) rr;
52 union RetransmitUrgentNode {
55 RetransmitRelaxedNode relaxed;
57 Retransmit__Time when;
58 DLIST_NODE(RetransmitUrgentNode) queue;
62 void retransmit_start(void);
63 void retransmit_something(void);
65 void retransmit_relaxed_queue(RetransmitRelaxedNode *rn, Nmra *n);
66 void retransmit_relaxed_requeue(RetransmitRelaxedNode *rn, Nmra *n);
67 void retransmit_relaxed_cancel(RetransmitRelaxedNode *rn);
69 void retransmit_urgent_queue(RetransmitUrgentNode *rn, Nmra *n);
70 void retransmit_urgent_queue_relaxed(RetransmitUrgentNode *urg, Nmra *n);
71 void retransmit_urgent_requeue(RetransmitUrgentNode *rn, Nmra *n);
72 void retransmit_urgent_cancel(RetransmitUrgentNode *rn);
74 /* ... NB: these are NOT idempotent. Use _requeue it's queued;
75 * _requeue is just _cancel followed by queue. */
77 /*---------- features, filled in by record, used by features.c ----------*/
81 RetransmitRelaxedNode rn[4]; /* nmra feat setting cmds and speed cmd */
86 int bitval; /* may have no or several bits set */
87 int speedstep; /* -ve means backwards; 0 means not to use motor for feat */
92 char *featchs; /* null-terminated for convenience; _ means unused */
93 FeaturesFeature *feats; /* same order as featchs */
98 extern Segment *segments;
99 extern int n_feattargs;
100 extern FeaturesTarget *feattargs;
102 /*---------- global variables, in realtime.c ----------*/
104 extern CommandInput cmdi;
105 extern int picio_send_noise;
107 #define UPO (&(cmdi.out))
109 /*---------- from/for startup.c ----------*/
111 #include "stastate.h"
113 void sta_startup(void);
114 void sta_finalising_done(void);
115 void serial_moredata(PicInsn *buf);
117 extern StartupState sta_state;
118 extern const char *const stastatelist[];
120 void resolve_begin(void); /* from resolve.c */
121 int resolve_complete(void);
122 void resolve_motioncheck(void);
124 /*---------- from/for record.c and persist.c ----------*/
126 void records_parse(const char **argv);
127 void persist_entrails_interpret(void);
128 void persist_entrails_run_converter(void);
129 void persist_install(void);
131 extern const char *persist_fn;
132 extern char *persist_record_converted;
134 void persist_map_veryearly(void);
136 /*---------- from/for realtime.c ----------*/
138 void oupicio(const char *dirn, const PicInsnInfo *pii, int objnum);
139 void ouhex(const char *word, const Byte *command, int length);
141 void serial_transmit(const PicInsn *pi);
143 /*---------- from actual.c ----------*/
145 int picinsn_polarity_testbit(const PicInsn *pi, const SegmentInfo *segi);
146 /* this belongs in {au,skel}proto-pic.[ch] really but it's
147 * more convenient here. */
149 /*---------- from movpos.c ----------*/
151 void points_turning_on(void);
152 void points_all_abandon(void);
154 /*---------- tbi ----------*/
156 void choreographers_all_abandon(void);
161 #define PERSIST_CONVERT_OPTION "--persist-convert-entrails"
165 #define CTYPE(isfoobar,ch) (isfoobar((unsigned char)(ch)))
167 #endif /*REALTIME_H*/