Skip to content

Commit f99491c

Browse files
Ryan Shawdpgeorge
authored andcommitted
stmhal: uart.any() function now returns number of bytes available.
1 parent bd33aa3 commit f99491c

4 files changed

Lines changed: 14 additions & 12 deletions

File tree

stmhal/uart.c

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -282,9 +282,15 @@ bool uart_init(pyb_uart_obj_t *uart_obj, uint32_t baudrate) {
282282
}
283283
*/
284284

285-
bool uart_rx_any(pyb_uart_obj_t *self) {
286-
return self->read_buf_tail != self->read_buf_head
287-
|| __HAL_UART_GET_FLAG(&self->uart, UART_FLAG_RXNE) != RESET;
285+
mp_uint_t uart_rx_any(pyb_uart_obj_t *self) {
286+
int buffer_bytes = self->read_buf_head - self->read_buf_tail;
287+
if (buffer_bytes < 0) {
288+
return buffer_bytes + self->read_buf_len;
289+
} else if (buffer_bytes > 0) {
290+
return buffer_bytes;
291+
} else {
292+
return __HAL_UART_GET_FLAG(&self->uart, UART_FLAG_RXNE) != RESET;
293+
}
288294
}
289295

290296
// Waits at most timeout milliseconds for at least 1 char to become ready for
@@ -670,11 +676,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_1(pyb_uart_deinit_obj, pyb_uart_deinit);
670676
/// Return `True` if any characters waiting, else `False`.
671677
STATIC mp_obj_t pyb_uart_any(mp_obj_t self_in) {
672678
pyb_uart_obj_t *self = self_in;
673-
if (uart_rx_any(self)) {
674-
return mp_const_true;
675-
} else {
676-
return mp_const_false;
677-
}
679+
return MP_OBJ_NEW_SMALL_INT(uart_rx_any(self));
678680
}
679681
STATIC MP_DEFINE_CONST_FUN_OBJ_1(pyb_uart_any_obj, pyb_uart_any);
680682

stmhal/uart.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ void uart_init0(void);
4141
void uart_deinit(void);
4242
void uart_irq_handler(mp_uint_t uart_id);
4343

44-
bool uart_rx_any(pyb_uart_obj_t *uart_obj);
44+
mp_uint_t uart_rx_any(pyb_uart_obj_t *uart_obj);
4545
int uart_rx_char(pyb_uart_obj_t *uart_obj);
4646
void uart_tx_strn(pyb_uart_obj_t *uart_obj, const char *str, uint len);
4747
void uart_tx_strn_cooked(pyb_uart_obj_t *uart_obj, const char *str, uint len);

teensy/uart.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -172,11 +172,11 @@ bool uart_init(pyb_uart_obj_t *uart_obj, uint32_t baudrate) {
172172
return uart_init2(uart_obj);
173173
}
174174

175-
bool uart_rx_any(pyb_uart_obj_t *uart_obj) {
175+
mp_uint_t uart_rx_any(pyb_uart_obj_t *uart_obj) {
176176
#if 0
177177
return __HAL_UART_GET_FLAG(&uart_obj->uart, UART_FLAG_RXNE);
178178
#else
179-
return false;
179+
return 0;
180180
#endif
181181
}
182182

tests/pyb/uart.py.exp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ UART YB
1414
ValueError Z
1515
UART(1, baudrate=9600, bits=8, parity=None, stop=1, timeout=1000, timeout_char=0, read_buf_len=64)
1616
UART(1, baudrate=2400, bits=8, parity=None, stop=1, timeout=1000, timeout_char=0, read_buf_len=64)
17-
False
17+
0
1818
3
1919
4
2020
None

0 commit comments

Comments
 (0)