- uint8_t byte;
-
- if (ipdbg_la_tcp_receive(tcp, &byte) == 1) {
- if (devc->num_transfers <
- (devc->limit_samples * devc->data_width_bytes))
- devc->raw_sample_buf[devc->num_transfers] = byte;
-
- devc->num_transfers++;
+ const size_t bufsize = 1024;
+ uint8_t buffer[bufsize];
+
+ const int recd = ipdbg_la_tcp_receive(tcp, buffer, bufsize);
+ if ( recd > 0) {
+ int num_move = (((devc->num_transfers + recd) <=
+ (devc->limit_samples * devc->data_width_bytes))
+ ?
+ recd
+ :
+ (int)((devc->limit_samples * devc->data_width_bytes) -
+ devc->num_transfers));
+ if ( num_move > 0 )
+ memcpy(&(devc->raw_sample_buf[devc->num_transfers]),
+ buffer, num_move);
+ devc->num_transfers += recd;