comparison src/lwwire.c @ 13:7702bb8a8216

Add transactional delay in lwwire_write() This value could be smaller, but some laggy usb uarts work better at 50us.
author Brett Gordon
date Tue, 22 Nov 2016 17:27:59 -0500
parents 38184ef1296d
children
comparison
equal deleted inserted replaced
12:f8226a33698d 13:7702bb8a8216
564 { 564 {
565 int towrite = len; 565 int towrite = len;
566 int rv; 566 int rv;
567 fd_set fdset; 567 fd_set fdset;
568 struct timeval timeout; 568 struct timeval timeout;
569 569 struct timespec sltime;
570 struct timespec rtime;
571
572
573 // Sleep for 50us to client has time to start
574 // listening
575 sltime.tv_sec = 0;
576 sltime.tv_nsec = 50000;
577 while (nanosleep(&sltime, &rtime) < 0)
578 {
579 // anything other than EINTR indicates something seriously messed up
580 if (errno != EINTR)
581 return -1;
582 sltime = rtime;
583 }
584
585
570 while (towrite > 0) 586 while (towrite > 0)
571 { 587 {
572 rv = write(1, buf, towrite); 588 rv = write(1, buf, towrite);
573 if (rv == towrite) 589 if (rv == towrite)
574 break; 590 break;