X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=hardware%2Fagilent-dmm%2Fsched.c;h=68880660c02c2ed41df7126c9b7e8231a1c3741d;hb=f2e86bbfa64f328feb063ea2b79110a0ec1716e1;hp=82fd2cc093d46dd54edd12f0b21710531461ffd3;hpb=81599cc55b8f22fe4ef78e7bd4bdb6958d458c64;p=libsigrok.git diff --git a/hardware/agilent-dmm/sched.c b/hardware/agilent-dmm/sched.c index 82fd2cc0..68880660 100644 --- a/hardware/agilent-dmm/sched.c +++ b/hardware/agilent-dmm/sched.c @@ -83,7 +83,8 @@ static void receive_line(const struct sr_dev_inst *sdi) recv->recv(sdi, match); g_match_info_unref(match); g_regex_unref(reg); - } + } else + sr_dbg("agilent-dmm: unknown line '%s'", devc->buf); /* Done with this. */ devc->buflen = 0; @@ -104,15 +105,16 @@ SR_PRIV int agdmm_receive_data(int fd, int revents, void *cb_data) if (revents == G_IO_IN) { /* Serial data arrived. */ - len = AGDMM_BUFSIZE - devc->buflen - 1; - if (len > 0) { - len = serial_read(fd, devc->buf + devc->buflen, len); - if (len > 0) { - devc->buflen += len; - *(devc->buf + devc->buflen) = '\0'; - if (devc->buflen > 0 && *(devc->buf + devc->buflen - 1) == '\n') - /* End of line */ - receive_line(sdi); + while(AGDMM_BUFSIZE - devc->buflen - 1 > 0) { + len = serial_read(fd, devc->buf + devc->buflen, 1); + if (len < 1) + break; + devc->buflen += len; + *(devc->buf + devc->buflen) = '\0'; + if (*(devc->buf + devc->buflen - 1) == '\n') { + /* End of line */ + receive_line(sdi); + break; } } }