X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fhardware%2Fbrymen-dmm%2Fprotocol.c;h=4db460afd63c255fcdcd7f0edeb72e5cedd27517;hb=32ba0d80054df01767ec323c621ab1c6bc5f310c;hp=dff7b985bfe071a8c6f90af6e14719c8aff81fbe;hpb=155b680da482cea2381becb73c51cfb838bff31e;p=libsigrok.git
diff --git a/src/hardware/brymen-dmm/protocol.c b/src/hardware/brymen-dmm/protocol.c
index dff7b985..4db460af 100644
--- a/src/hardware/brymen-dmm/protocol.c
+++ b/src/hardware/brymen-dmm/protocol.c
@@ -17,6 +17,7 @@
* along with this program. If not, see .
*/
+#include
#include "protocol.h"
static void handle_packet(const uint8_t *buf, struct sr_dev_inst *sdi)
@@ -24,7 +25,7 @@ static void handle_packet(const uint8_t *buf, struct sr_dev_inst *sdi)
float floatval;
struct dev_context *devc;
struct sr_datafeed_packet packet;
- struct sr_datafeed_analog analog;
+ struct sr_datafeed_analog_old analog;
devc = sdi->priv;
@@ -39,7 +40,7 @@ static void handle_packet(const uint8_t *buf, struct sr_dev_inst *sdi)
if (analog.mq != -1) {
/* Got a measurement. */
- packet.type = SR_DF_ANALOG;
+ packet.type = SR_DF_ANALOG_OLD;
packet.payload = &analog;
sr_session_send(devc->cb_data, &packet);
devc->num_samples++;
@@ -57,7 +58,7 @@ static void handle_new_data(struct sr_dev_inst *sdi)
/* Try to get as much data as the buffer can hold. */
len = DMM_BUFSIZE - devc->buflen;
- len = serial_read(serial, devc->buf + devc->buflen, len);
+ len = serial_read_nonblocking(serial, devc->buf + devc->buflen, len);
if (len < 1) {
sr_err("Serial port read error: %d.", len);
return;
@@ -179,7 +180,9 @@ SR_PRIV int brymen_stream_detect(struct sr_serial_dev_inst *serial,
{
int64_t start, time, byte_delay_us;
size_t ibuf, i, maxlen;
- int status, len, packet_len, stream_len;
+ ssize_t len, stream_len;
+ int packet_len;
+ int status;
maxlen = *buflen;
@@ -187,15 +190,15 @@ SR_PRIV int brymen_stream_detect(struct sr_serial_dev_inst *serial,
"ms, baudrate = %d).", serial->port, timeout_ms, baudrate);
/* Assume 8n1 transmission. That is 10 bits for every byte. */
- byte_delay_us = 10 * (1000000 / baudrate);
+ byte_delay_us = 10 * ((1000 * 1000) / baudrate);
start = g_get_monotonic_time();
packet_len = i = ibuf = len = 0;
while (ibuf < maxlen) {
- len = serial_read(serial, &buf[ibuf], maxlen - ibuf);
+ len = serial_read_nonblocking(serial, &buf[ibuf], maxlen - ibuf);
if (len > 0) {
ibuf += len;
- sr_spew("Read %d bytes.", len);
+ sr_spew("Read %zd bytes.", len);
}
time = g_get_monotonic_time() - start;
@@ -206,7 +209,7 @@ SR_PRIV int brymen_stream_detect(struct sr_serial_dev_inst *serial,
/* How large of a packet are we expecting? */
packet_len = stream_len;
status = get_packet_size(&buf[i], &packet_len);
- switch(status) {
+ switch (status) {
case PACKET_HEADER_OK:
/* We know how much data we need to wait for. */
break;
@@ -247,14 +250,14 @@ SR_PRIV int brymen_stream_detect(struct sr_serial_dev_inst *serial,
if (time >= (int64_t)timeout_ms) {
/* Timeout */
- sr_dbg("Detection timed out after %dms.", time);
+ sr_dbg("Detection timed out after %" PRIi64 "ms.", time);
break;
}
g_usleep(byte_delay_us);
}
*buflen = ibuf;
- sr_err("Didn't find a valid packet (read %d bytes).", ibuf);
+ sr_err("Didn't find a valid packet (read %zu bytes).", ibuf);
return SR_ERR;
}