From 5c00757a5cac767ee30fa25bbf720e85477f899d Mon Sep 17 00:00:00 2001 From: Damien George Date: Sun, 7 Sep 2014 20:57:18 +0100 Subject: [PATCH] stmhal: uart ioctl uses EINVAL, and checks TXE bit for write-ability. --- stmhal/uart.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/stmhal/uart.c b/stmhal/uart.c index 884490a5f4..84ea22fd58 100644 --- a/stmhal/uart.c +++ b/stmhal/uart.c @@ -27,6 +27,7 @@ #include #include #include +#include #include "stm32f4xx_hal.h" @@ -488,12 +489,11 @@ mp_uint_t uart_ioctl(mp_obj_t self_in, mp_uint_t request, int *errcode, ...) { if ((flags & MP_IOCTL_POLL_RD) && uart_rx_any(self)) { ret |= MP_IOCTL_POLL_RD; } - if (flags & MP_IOCTL_POLL_WR) { - // TODO can we always write? + if ((flags & MP_IOCTL_POLL_WR) && __HAL_UART_GET_FLAG(&self->uart, UART_FLAG_TXE)) { ret |= MP_IOCTL_POLL_WR; } } else { - *errcode = 1; // EPERM, operation not permitted + *errcode = EINVAL; ret = -1; } va_end(vargs);