File tree Expand file tree Collapse file tree 1 file changed +10
-3
lines changed
ports/espressif/supervisor Expand file tree Collapse file tree 1 file changed +10
-3
lines changed Original file line number Diff line number Diff line change @@ -101,21 +101,28 @@ bool usb_serial_jtag_connected(void) {
101
101
}
102
102
103
103
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 () ) {
105
105
return -1 ;
106
106
}
107
- char c = ringbuf_get (& ringbuf );
107
+ char c = -1 ;
108
+ if (ringbuf_num_filled (& ringbuf ) > 0 ) {
109
+ c = ringbuf_get (& ringbuf );
110
+ }
108
111
// Maybe re-enable the recv interrupt if we've emptied the ringbuf.
109
112
if (ringbuf_num_filled (& ringbuf ) == 0 ) {
110
113
usb_serial_jtag_ll_disable_intr_mask (USB_SERIAL_JTAG_INTR_SERIAL_OUT_RECV_PKT );
111
114
_copy_out_of_fifo ();
112
115
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
+ }
113
120
}
114
121
return c ;
115
122
}
116
123
117
124
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 () ;
119
126
}
120
127
121
128
void usb_serial_jtag_write (const char * text , uint32_t length ) {
You can’t perform that action at this time.
0 commit comments