void xmit_nmra(const Byte *without_csum, int length);
void xmit_command(const Byte *command, int length);
+extern FILE *dump_stream;
+void dump(const char *what, const Byte *data, int length);
void sysfatal(const char *m);
void serial_open(const char *device);
#include "hostside.h"
+FILE *dump_stream= 0;
+
int main(int argc, const char **argv) {
int l, i;
char hbuf[3], *ep;
}
for (;;) {
-
- switch (instruction[0]) {
+
+ if (*instruction == 'd') {
+ dump_stream= stdout;
+ instruction++;
+ }
+
+ switch (*instruction) {
case 'c': xmit_command(buf,l); break;
case 'r': xmit_nmra_raw(buf,l); break;
case 'n': xmit_nmra(buf,l); break;
default: abort();
}
+ assert(!instruction[1]);
if (repeat_delay < 0) break;
if (iterations >= 0 && !iterations--) break;
unsigned working, newbits;
int working_qty;
+ dump("xmit_nmra_raw",nmra_packet,length);
+
assert(length > 0);
assert(length <= NMRA_PACKET_MAX);
encp= encoded;
int left;
unsigned running;
+ dump("xmit_nmra",without_csum,length);
+
assert(length >=0 && length < sizeof(with_csum));
for (left=length, running=0, in=without_csum, out=with_csum;
left>0;
if (serial_fd<0) sysfatal(device);
}
+void dump(const char *what, const Byte *data, int length) {
+ printf("%-25s %3d ",what,length);
+ while (length>0) {
+ printf(" %02x", *data);
+ data++;
+ length--;
+ }
+ printf("\n");
+}
+
void xmit_command(const Byte *command, int length) {
int r;
assert(length <= COMMAND_ENCODED_MAX);
+ dump("xmit_command",command,length);
+
while (length > 0) {
r= write(serial_fd, command,
serial_fudge_delay ? 1 : length);