From: ian Date: Sat, 19 Jan 2008 15:57:59 +0000 (+0000) Subject: get rid of buffer stupidity which makes it seem like PIC sends NULs X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ijackson/git?a=commitdiff_plain;h=3a15fdef9a4588ae750da3ca5d757819af89460a;p=trains.git get rid of buffer stupidity which makes it seem like PIC sends NULs --- diff --git a/TODO b/TODO index f3d9d58..f67896d 100644 --- a/TODO +++ b/TODO @@ -1,19 +1,3 @@ -hostside/realtime -s/dev/ttyUSB0 sometimes says - picioh out 10 - picio out on - picioh out 11 - stastate 5 - picio out ping 556 - picioh out 8c 2c - realtime: fatal: PIC sent NMRADONE in Resolving - picioh in msg 8c 2c - picio in pong 556 - picioh in msg 00 - picio in nmradone 0 - realtime: fatal: PIC sent NMRADONE in Resolving - liberator:hostside> - - layout polarity diagram colourful segment encoding: make moveable feature selection in subseg2display bitwise rather than setwise diff --git a/hostside/realtime.c b/hostside/realtime.c index bfab9e2..8c90a9b 100644 --- a/hostside/realtime.c +++ b/hostside/realtime.c @@ -261,8 +261,9 @@ static void *serial_readable(oop_source *evts, int fd, oop_event evt, void *u0) { int r, buf_used; - r= read(serial_fd, &serial_buf.d + serial_buf.l, + r= read(serial_fd, serial_buf.d + serial_buf.l, sizeof(serial_buf.d) - serial_buf.l); + if (r==0) die("serial port - eof"); if (r==-1) { if (errno == EWOULDBLOCK || errno == EINTR) @@ -271,8 +272,7 @@ static void *serial_readable(oop_source *evts, int fd, } assert(r>0); - buf_used= serial_buf.l; - buf_used += r; + buf_used= serial_buf.l + r; for (;;) { serial_buf.l= buf_used;