diff --git a/uart/uart_posix.c b/uart/uart_posix.c index 6c7580b67..a608006e1 100644 --- a/uart/uart_posix.c +++ b/uart/uart_posix.c @@ -61,9 +61,6 @@ const struct timeval timeout = { .tv_usec = 30000 // 30000 micro seconds }; -// Overall timeout for receives -- 300ms -#define RECV_TOTAL_TIMEOUT_MS 300 - serial_port uart_open(const char* pcPortName) { serial_port_unix* sp = malloc(sizeof(serial_port_unix)); @@ -128,8 +125,8 @@ serial_port uart_open(const char* pcPortName) } void uart_close(const serial_port sp) { - if (sp == INVALID_SERIAL_PORT) return; - if (sp == CLAIMED_SERIAL_PORT) return; +// if (sp == INVALID_SERIAL_PORT) return; +// if (sp == CLAIMED_SERIAL_PORT) return; serial_port_unix* spu = (serial_port_unix*)sp; tcflush(spu->fd, TCIOFLUSH); @@ -150,18 +147,11 @@ void uart_close(const serial_port sp) { free(sp); } -bool uart_cts(const serial_port sp) { - char status; - if (ioctl(((serial_port_unix*)sp)->fd,TIOCMGET,&status) < 0) return false; - return (status & TIOCM_CTS); -} - bool uart_receive(const serial_port sp, byte_t* pbtRx, size_t pszMaxRxLen, size_t* pszRxLen) { int res; int byteCount; fd_set rfds; struct timeval tv; - //uint64_t timeout_at = msclock() + RECV_TOTAL_TIMEOUT_MS; // Reset the output count *pszRxLen = 0; @@ -212,7 +202,7 @@ bool uart_receive(const serial_port sp, byte_t* pbtRx, size_t pszMaxRxLen, size_ } } while (byteCount); -// } while (msclock() < timeout_at); + return true; } @@ -221,14 +211,13 @@ bool uart_send(const serial_port sp, const byte_t* pbtTx, const size_t szTxLen) size_t szPos = 0; fd_set rfds; struct timeval tv; - const serial_port_unix* spu = (serial_port_unix*)sp; while (szPos < szTxLen) { // Reset file descriptor FD_ZERO(&rfds); - FD_SET(spu->fd, &rfds); + FD_SET(((serial_port_unix*)sp)->fd,&rfds); tv = timeout; - res = select(spu->fd + 1, NULL, &rfds, NULL, &tv); + res = select(((serial_port_unix*)sp)->fd+1, NULL, &rfds, NULL, &tv); // Write error if (res < 0) { @@ -243,7 +232,7 @@ bool uart_send(const serial_port sp, const byte_t* pbtTx, const size_t szTxLen) } // Send away the bytes - res = write(spu->fd, pbtTx + szPos, szTxLen-szPos); + res = write(((serial_port_unix*)sp)->fd,pbtTx+szPos,szTxLen-szPos); // Stop if the OS has some troubles sending the data if (res <= 0) { diff --git a/uart/uart_win32.c b/uart/uart_win32.c index de3534713..955e6c3a7 100644 --- a/uart/uart_win32.c +++ b/uart/uart_win32.c @@ -122,29 +122,6 @@ void uart_close(const serial_port sp) { bool uart_receive(const serial_port sp, byte_t* pbtRx, size_t pszMaxRxLen, size_t* pszRxLen) { ReadFile(((serial_port_windows*)sp)->hPort, pbtRx, pszMaxRxLen, (LPDWORD)pszRxLen, NULL); return (*pszRxLen != 0); - /* - DWORD dwBytesToGet = (DWORD)pszMaxRxLen; - DWORD dwBytesReceived = 0; - DWORD dwTotalBytesReceived = 0; - BOOL res; - - do { - res = ReadFile(((serial_port_windows *) sp)->hPort, pbtRx + dwTotalBytesReceived, dwBytesToGet, &dwBytesReceived, NULL); - - dwTotalBytesReceived += dwBytesReceived; - - if (!res) - return false; - else if (dwBytesReceived == 0) - return false; - - if (((DWORD)pszMaxRxLen) > dwTotalBytesReceived) - dwBytesToGet -= dwBytesReceived; - - } while (((DWORD)pszMaxRxLen) > dwTotalBytesReceived); - - return (dwTotalBytesReceived == (DWORD) pszMaxRxLen); - */ } bool uart_send(const serial_port sp, const byte_t* pbtTx, const size_t szTxLen) {