Skip to content

Commit bd097de

Browse files
committed
Check usb/jtag for incoming chars too
1 parent 827eaeb commit bd097de

File tree

1 file changed

+10
-3
lines changed

1 file changed

+10
-3
lines changed

ports/espressif/supervisor/usb_serial_jtag.c

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -101,21 +101,28 @@ bool usb_serial_jtag_connected(void) {
101101
}
102102

103103
char usb_serial_jtag_read_char(void) {
104-
if (ringbuf_num_filled(&ringbuf) == 0) {
104+
if (ringbuf_num_filled(&ringbuf) == 0 && !usb_serial_jtag_ll_rxfifo_data_available()) {
105105
return -1;
106106
}
107-
char c = ringbuf_get(&ringbuf);
107+
char c = -1;
108+
if (ringbuf_num_filled(&ringbuf) > 0) {
109+
c = ringbuf_get(&ringbuf);
110+
}
108111
// Maybe re-enable the recv interrupt if we've emptied the ringbuf.
109112
if (ringbuf_num_filled(&ringbuf) == 0) {
110113
usb_serial_jtag_ll_disable_intr_mask(USB_SERIAL_JTAG_INTR_SERIAL_OUT_RECV_PKT);
111114
_copy_out_of_fifo();
112115
usb_serial_jtag_ll_ena_intr_mask(USB_SERIAL_JTAG_INTR_SERIAL_OUT_RECV_PKT);
116+
// May have only been ctrl-c.
117+
if (c == -1 && ringbuf_num_filled(&ringbuf) > 0) {
118+
c = ringbuf_get(&ringbuf);
119+
}
113120
}
114121
return c;
115122
}
116123

117124
bool usb_serial_jtag_bytes_available(void) {
118-
return ringbuf_num_filled(&ringbuf) > 0;
125+
return ringbuf_num_filled(&ringbuf) > 0 || usb_serial_jtag_ll_rxfifo_data_available();
119126
}
120127

121128
void usb_serial_jtag_write(const char *text, uint32_t length) {

0 commit comments

Comments
 (0)