- exit_on_escapeseq(buf, r1);
- r2 = CHECK(write(fd, buf, r1));
- if (r1 != r2) {
- fprintf(stderr, "Not all data written to %s (%d/%d)\n", dev, r1, r2);
+ exit_on_escapeseq(buf2dev, buf_len);
+ }
+ if (buf_len > 0) {
+ int wlen = 0;
+ bool short_write = false;
+ if (tx_delay_ms == 0) {
+ wlen = CHECK(write(fd, buf2dev, buf_len));
+ short_write = wlen != buf_len;
+
+ } else {
+ int64_t now = now_us();
+ if (now - last_tx_us >= tx_delay_ms * 1000) {
+ wlen = CHECK(write(fd, &buf2dev[buf_idx], 1));
+ short_write = wlen != 1;
+ last_tx_us = now;
+ }
+ }
+ if (short_write) {
+ fprintf(stderr, "Not all data written to %s (%d/%d)\n", dev, buf_len, wlen);