X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fhardware%2Fbeaglelogic%2Fbeaglelogic_tcp.c;h=e06a19a82a8b5a76df44af8c0085b98f07272e63;hb=6dc0007c7152b9dc3af49f85f0c33b31813c72a6;hp=dfd8c624d6f946652e1d2c12c34531963961a8d9;hpb=a31010b3e4222c4d1c404c1f3d0a7c2d09e0cfd5;p=libsigrok.git diff --git a/src/hardware/beaglelogic/beaglelogic_tcp.c b/src/hardware/beaglelogic/beaglelogic_tcp.c index dfd8c624..e06a19a8 100644 --- a/src/hardware/beaglelogic/beaglelogic_tcp.c +++ b/src/hardware/beaglelogic/beaglelogic_tcp.c @@ -107,15 +107,17 @@ static int beaglelogic_tcp_send_cmd(struct dev_context *devc, if (out < 0) { sr_err("Send error: %s", g_strerror(errno)); + g_free(buf); return SR_ERR; } if (out < (int)strlen(buf)) { - sr_dbg("Only sent %d/%lu bytes of command: '%s'.", out, + sr_dbg("Only sent %d/%zu bytes of command: '%s'.", out, strlen(buf), buf); } sr_spew("Sent command: '%s'.", buf); + g_free(buf); return SR_OK; @@ -152,14 +154,14 @@ SR_PRIV int beaglelogic_tcp_drain(struct dev_context *devc) do { ret = select(devc->socket + 1, &rset, NULL, NULL, &tv); - if (ret > 0) { + if (ret > 0) len += beaglelogic_tcp_read_data(devc, buf, 1024); - } } while (ret > 0); sr_spew("Drained %d bytes of data.", len); g_free(buf); + return SR_OK; } @@ -170,10 +172,10 @@ static int beaglelogic_tcp_get_string(struct dev_context *devc, const char *cmd, int len; gint64 timeout; + *tcp_resp = NULL; if (cmd) { - if (beaglelogic_tcp_send_cmd(devc, cmd) != SR_OK) { + if (beaglelogic_tcp_send_cmd(devc, cmd) != SR_OK) return SR_ERR; - } } timeout = g_get_monotonic_time() + devc->read_timeout; @@ -185,9 +187,8 @@ static int beaglelogic_tcp_get_string(struct dev_context *devc, const char *cmd, return SR_ERR; } - if (len > 0) { + if (len > 0) g_string_set_size(response, len); - } if (g_get_monotonic_time() > timeout) { sr_err("Timed out waiting for response."); @@ -207,6 +208,7 @@ static int beaglelogic_tcp_get_string(struct dev_context *devc, const char *cmd, response->str, response->len); *tcp_resp = g_string_free(response, FALSE); + return SR_OK; } @@ -242,6 +244,7 @@ SR_PRIV int beaglelogic_tcp_detect(struct dev_context *devc) ret = SR_ERR; g_free(resp); + return ret; } @@ -269,7 +272,7 @@ static int beaglelogic_set_buffersize(struct dev_context *devc) int ret; char *resp; - beaglelogic_tcp_send_cmd(devc, "memalloc %lu", devc->buffersize); + beaglelogic_tcp_send_cmd(devc, "memalloc %" PRIu32, devc->buffersize); ret = beaglelogic_tcp_get_string(devc, NULL, &resp); if (ret == SR_OK && !g_ascii_strncasecmp(resp, "ok", 2)) ret = SR_OK; @@ -277,15 +280,20 @@ static int beaglelogic_set_buffersize(struct dev_context *devc) ret = SR_ERR; g_free(resp); + return ret; } static int beaglelogic_get_samplerate(struct dev_context *devc) { int arg, err; + err = beaglelogic_tcp_get_int(devc, "samplerate", &arg); + if (err) + return err; + devc->cur_samplerate = arg; - return err; + return SR_OK; } static int beaglelogic_set_samplerate(struct dev_context *devc) @@ -293,7 +301,7 @@ static int beaglelogic_set_samplerate(struct dev_context *devc) int ret; char *resp; - beaglelogic_tcp_send_cmd(devc, "samplerate %lu", + beaglelogic_tcp_send_cmd(devc, "samplerate %" PRIu32, (uint32_t)devc->cur_samplerate); ret = beaglelogic_tcp_get_string(devc, NULL, &resp); if (ret == SR_OK && !g_ascii_strncasecmp(resp, "ok", 2)) @@ -302,6 +310,7 @@ static int beaglelogic_set_samplerate(struct dev_context *devc) ret = SR_ERR; g_free(resp); + return ret; } @@ -316,7 +325,7 @@ static int beaglelogic_set_sampleunit(struct dev_context *devc) int ret; char *resp; - beaglelogic_tcp_send_cmd(devc, "sampleunit %lu", devc->sampleunit); + beaglelogic_tcp_send_cmd(devc, "sampleunit %" PRIu32, devc->sampleunit); ret = beaglelogic_tcp_get_string(devc, NULL, &resp); if (ret == SR_OK && !g_ascii_strncasecmp(resp, "ok", 2)) ret = SR_OK; @@ -324,6 +333,7 @@ static int beaglelogic_set_sampleunit(struct dev_context *devc) ret = SR_ERR; g_free(resp); + return ret; } @@ -338,7 +348,7 @@ static int beaglelogic_set_triggerflags(struct dev_context *devc) int ret; char *resp; - beaglelogic_tcp_send_cmd(devc, "triggerflags %lu", devc->triggerflags); + beaglelogic_tcp_send_cmd(devc, "triggerflags %" PRIu32, devc->triggerflags); ret = beaglelogic_tcp_get_string(devc, NULL, &resp); if (ret == SR_OK && !g_ascii_strncasecmp(resp, "ok", 2)) ret = SR_OK; @@ -346,18 +356,21 @@ static int beaglelogic_set_triggerflags(struct dev_context *devc) ret = SR_ERR; g_free(resp); + return ret; } static int beaglelogic_get_lasterror(struct dev_context *devc) { devc->last_error = 0; + return SR_OK; } static int beaglelogic_start(struct dev_context *devc) { beaglelogic_tcp_drain(devc); + return beaglelogic_tcp_send_cmd(devc, "get"); } @@ -377,7 +390,7 @@ static int beaglelogic_set_bufunitsize(struct dev_context *devc) int ret; char *resp; - beaglelogic_tcp_send_cmd(devc, "bufunitsize %ld", devc->bufunitsize); + beaglelogic_tcp_send_cmd(devc, "bufunitsize %" PRIu32, devc->bufunitsize); ret = beaglelogic_tcp_get_string(devc, NULL, &resp); if (ret == SR_OK && !g_ascii_strncasecmp(resp, "ok", 2)) ret = SR_OK; @@ -385,12 +398,14 @@ static int beaglelogic_set_bufunitsize(struct dev_context *devc) ret = SR_ERR; g_free(resp); + return ret; } static int dummy(struct dev_context *devc) { (void)devc; + return SR_ERR_NA; }