Patch by jonor, fixes so uart_receive does not block when data is continuosly received. See http://www.proxmark.org/forum/viewtopic.php?id=1735

This commit is contained in:
martin.holst@gmail.com 2013-09-01 18:46:55 +00:00
parent 7cf3ef203c
commit babfcaa0f3

View file

@ -266,7 +266,7 @@ bool uart_receive(const serial_port sp, byte_t* pbtRx, size_t* pszRxLen) {
if (res < 0) {
return false;
}
// Read time-out
if (res == 0) {
if (*pszRxLen == 0) {
@ -277,21 +277,24 @@ bool uart_receive(const serial_port sp, byte_t* pbtRx, size_t* pszRxLen) {
return true;
}
}
// Retrieve the count of the incoming bytes
res = ioctl(((serial_port_unix*)sp)->fd, FIONREAD, &byteCount);
if (res < 0) return false;
// There is something available, read the data
res = read(((serial_port_unix*)sp)->fd,pbtRx+(*pszRxLen),byteCount);
// Stop if the OS has some troubles reading the data
if (res <= 0) return false;
*pszRxLen += res;
if(res==byteCount)
return true;
} while (byteCount);
return true;
}