X-Git-Url: https://sigrok.org/gitweb/?p=libsigrok.git;a=blobdiff_plain;f=hardware%2Fbrymen-dmm%2Fprotocol.c;h=664258aa72f53fb3cc06799176d51b5eb12e24a6;hp=425697ee7bea3a8728aa07384a90512e822c2f38;hb=ba7dd8bbb8168cba432a844259a3e239aa5f36d7;hpb=c5d6f5cc1c0069a5141c5c76f7e17dd592427138 diff --git a/hardware/brymen-dmm/protocol.c b/hardware/brymen-dmm/protocol.c index 425697ee..664258aa 100644 --- a/hardware/brymen-dmm/protocol.c +++ b/hardware/brymen-dmm/protocol.c @@ -19,10 +19,6 @@ #include "protocol.h" -/* parser.c */ -SR_PRIV int sr_brymen_parse(const uint8_t *buf, float *floatval, - struct sr_datafeed_analog *analog, void *info); - static void handle_packet(const uint8_t *buf, struct sr_dev_inst *sdi) { float floatval; @@ -35,10 +31,11 @@ static void handle_packet(const uint8_t *buf, struct sr_dev_inst *sdi) analog.num_samples = 1; analog.mq = -1; - sr_brymen_parse(buf, &floatval, &analog, NULL); + if (brymen_parse(buf, &floatval, &analog, NULL) != SR_OK) + return; analog.data = &floatval; - analog.probes = sdi->probes; + analog.channels = sdi->channels; if (analog.mq != -1) { /* Got a measurement. */ @@ -53,12 +50,14 @@ static void handle_new_data(struct sr_dev_inst *sdi) { struct dev_context *devc; int len, status, offset = 0; + struct sr_serial_dev_inst *serial; devc = sdi->priv; + serial = sdi->conn; /* Try to get as much data as the buffer can hold. */ len = DMM_BUFSIZE - devc->buflen; - len = serial_read(devc->serial, devc->buf + devc->buflen, len); + len = serial_read(serial, devc->buf + devc->buflen, len); if (len < 1) { sr_err("Serial port read error: %d.", len); return; @@ -112,6 +111,7 @@ SR_PRIV int brymen_dmm_receive_data(int fd, int revents, void *cb_data) { struct sr_dev_inst *sdi; struct dev_context *devc; + struct sr_serial_dev_inst *serial; int ret; int64_t time; @@ -123,12 +123,14 @@ SR_PRIV int brymen_dmm_receive_data(int fd, int revents, void *cb_data) if (!(devc = sdi->priv)) return TRUE; + serial = sdi->conn; + if (revents == G_IO_IN) { /* Serial data arrived. */ handle_new_data(sdi); } else { /* Timeout, send another packet request. */ - if ((ret = brymen_packet_request(devc->serial)) < 0) { + if ((ret = brymen_packet_request(serial)) < 0) { sr_err("Failed to request packet: %d.", ret); return FALSE; } @@ -181,8 +183,8 @@ SR_PRIV int brymen_stream_detect(struct sr_serial_dev_inst *serial, maxlen = *buflen; - sr_dbg("Detecting packets on FD %d (timeout = %" PRIu64 - "ms, baudrate = %d).", serial->fd, timeout_ms, baudrate); + sr_dbg("Detecting packets on %s (timeout = %" PRIu64 + "ms, baudrate = %d).", serial->port, timeout_ms, baudrate); /* Assume 8n1 transmission. That is 10 bits for every byte. */ byte_delay_us = 10 * (1000000 / baudrate);