X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fhardware%2Fpce-322a%2Fprotocol.c;h=ee98c7c61128cd82cb0a1bdbb2d0a7ab724524d8;hb=a7740b06997b4d455428baaa995b777090c3b76e;hp=6dc9deeb7da8c746f8fc19188f60cf6e4b3e9598;hpb=ae87e02fad06324de80c24997fc8589780ba3b03;p=libsigrok.git diff --git a/src/hardware/pce-322a/protocol.c b/src/hardware/pce-322a/protocol.c index 6dc9deeb..ee98c7c6 100644 --- a/src/hardware/pce-322a/protocol.c +++ b/src/hardware/pce-322a/protocol.c @@ -19,12 +19,14 @@ */ #include +#include #include "protocol.h" static int send_command(const struct sr_dev_inst *sdi, uint16_t command) { struct sr_serial_dev_inst *serial; uint8_t buffer[2]; + int ret; buffer[0] = command >> 8; buffer[1] = command; @@ -32,8 +34,11 @@ static int send_command(const struct sr_dev_inst *sdi, uint16_t command) if (!(serial = sdi->conn)) return SR_ERR; - if (serial_write_nonblocking(serial, (const void *)buffer, 2) != 2) - return SR_ERR; + ret = serial_write_blocking(serial, buffer, sizeof(buffer), 0); + if (ret < 0) + return ret; + if ((size_t)ret != sizeof(buffer)) + return SR_ERR_IO; return SR_OK; } @@ -42,6 +47,7 @@ static int send_long_command(const struct sr_dev_inst *sdi, uint32_t command) { struct sr_serial_dev_inst *serial; uint8_t buffer[4]; + int ret; buffer[0] = command >> 24; buffer[1] = command >> 16; @@ -51,8 +57,11 @@ static int send_long_command(const struct sr_dev_inst *sdi, uint32_t command) if (!(serial = sdi->conn)) return SR_ERR; - if (serial_write_nonblocking(serial, (const void *)buffer, 4) != 4) - return SR_ERR; + ret = serial_write_blocking(serial, buffer, sizeof(buffer), 0); + if (ret < 0) + return ret; + if ((size_t)ret != sizeof(buffer)) + return SR_ERR_IO; return SR_OK; } @@ -82,7 +91,7 @@ static void send_data(const struct sr_dev_inst *sdi, float sample) devc->num_samples++; /* Limiting number of samples is only supported for live data. */ if (devc->cur_data_source == DATA_SOURCE_LIVE && devc->limit_samples && devc->num_samples >= devc->limit_samples) - sdi->driver->dev_acquisition_stop((struct sr_dev_inst *)sdi); + sr_dev_acquisition_stop((struct sr_dev_inst *)sdi); } static void process_measurement(const struct sr_dev_inst *sdi) @@ -140,15 +149,13 @@ static void process_memory_measurement(const struct sr_dev_inst *sdi) static void process_byte(const struct sr_dev_inst *sdi, const unsigned char c) { struct dev_context *devc; - unsigned int i; devc = sdi->priv; if (devc->buffer_len < BUFFER_SIZE) { devc->buffer[devc->buffer_len++] = c; } else { - for (i = 1; i < BUFFER_SIZE; i++) - devc->buffer[i - 1] = devc->buffer[i]; + memmove(devc->buffer, devc->buffer + 1, BUFFER_SIZE - 1); devc->buffer[BUFFER_SIZE - 1] = c; } @@ -162,15 +169,13 @@ static void process_byte(const struct sr_dev_inst *sdi, const unsigned char c) static void process_usage_byte(const struct sr_dev_inst *sdi, uint8_t c) { struct dev_context *devc; - unsigned int i; devc = sdi->priv; if (devc->buffer_len < MEM_USAGE_BUFFER_SIZE) { devc->buffer[devc->buffer_len++] = c; } else { - for (i = 1; i < MEM_USAGE_BUFFER_SIZE; i++) - devc->buffer[i - 1] = devc->buffer[i]; + memmove(devc->buffer, devc->buffer + 1, MEM_USAGE_BUFFER_SIZE - 1); devc->buffer[MEM_USAGE_BUFFER_SIZE - 1] = c; } @@ -193,15 +198,13 @@ static void process_usage_byte(const struct sr_dev_inst *sdi, uint8_t c) static void process_memory_byte(const struct sr_dev_inst *sdi, uint8_t c) { struct dev_context *devc; - unsigned int i; devc = sdi->priv; if (devc->buffer_len < MEM_DATA_BUFFER_SIZE) { devc->buffer[devc->buffer_len++] = c; } else { - for (i = 1; i < MEM_DATA_BUFFER_SIZE; i++) - devc->buffer[i - 1] = devc->buffer[i]; + memmove(devc->buffer, devc->buffer + 1, MEM_DATA_BUFFER_SIZE - 1); devc->buffer[MEM_DATA_BUFFER_SIZE - 1] = c; }