X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fhardware%2Fipdbg-la%2Fapi.c;h=407344d2907956017ca7f494f26753846230fd00;hb=6ee37801751a6e76e6b5865d1b3c88b9d342fe53;hp=c24eb908507a9c449d60d8d126987743f2217260;hpb=3f34a40268891f36f527832f78dcc49795a38329;p=libsigrok.git diff --git a/src/hardware/ipdbg-la/api.c b/src/hardware/ipdbg-la/api.c index c24eb908..407344d2 100644 --- a/src/hardware/ipdbg-la/api.c +++ b/src/hardware/ipdbg-la/api.c @@ -207,7 +207,11 @@ static int config_set(uint32_t key, GVariant *data, devc->capture_ratio = g_variant_get_uint64(data); break; case SR_CONF_LIMIT_SAMPLES: - devc->limit_samples = g_variant_get_uint64(data); + { + uint64_t limit_samples = g_variant_get_uint64(data); + if (limit_samples <= devc->limit_samples_max) + devc->limit_samples = limit_samples; + } break; default: return SR_ERR_NA; @@ -258,13 +262,15 @@ static int dev_acquisition_stop(struct sr_dev_inst *sdi) struct ipdbg_la_tcp *tcp = sdi->conn; struct dev_context *devc = sdi->priv; - uint8_t byte; + const size_t bufsize = 1024; + uint8_t buffer[bufsize]; if (devc->num_transfers > 0) { while (devc->num_transfers < (devc->limit_samples_max * devc->data_width_bytes)) { - ipdbg_la_tcp_receive(tcp, &byte); - devc->num_transfers++; + int recd = ipdbg_la_tcp_receive(tcp, buffer, bufsize); + if (recd > 0) + devc->num_transfers += recd; } }