2 * declarations common to simple test program and real controller daemon
10 /*---------- types ----------*/
12 typedef unsigned char Byte;
14 #define COMMAND_ENCODED_MAX 16
15 #define NMRA_PACKET_MAX ((COMMAND_ENCODED_MAX*7 - 14) / 8)
18 Byte d[NMRA_PACKET_MAX];
22 typedef struct PicInsn {
23 Byte d[COMMAND_ENCODED_MAX];
27 /*---------- from serialio.c ----------*/
29 void vdie(const char *fmt, int ev, va_list al)
30 __attribute__((noreturn,format(printf,1,0)));
31 void die(const char *fmt, ...) __attribute__((noreturn,format(printf,1,2)));
32 void diee(const char *fmt, ...) __attribute__((noreturn,format(printf,1,2)));
33 void diem(void) __attribute__((noreturn));
35 void serial_open(const char *device);
36 void serial_transmit_now(const Byte *command, int length);
38 void *mmalloc(size_t sz);
39 char *mstrdupl(const char *s, int l);
40 char *mstrdup(const char *s);
42 extern int serial_fd, serial_fudge_delay;
44 /*---------- nmra parsing, nmra.c et al ----------*/
46 typedef struct NmraParseEncodeCaller NmraParseEncodeCaller;
47 void nmra_parse_encode(Nmra *out, const char *arg, int argl,
48 int argc, NmraParseEncodeCaller *pec);
49 /* will call back to these, supplied by caller: */
50 unsigned long nmra_argnumber(NmraParseEncodeCaller *pec, int argi);
51 void nmra_problem(NmraParseEncodeCaller *pec, const char *problem);
53 void nmra_addchecksum(Nmra *packet);
54 void nmra_encodeforpic(const Nmra *packet, PicInsn *pi_out);