File tree Expand file tree Collapse file tree
ports/espressif/supervisor Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -101,21 +101,28 @@ bool usb_serial_jtag_connected(void) {
101101}
102102
103103char 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
117124bool 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
121128void usb_serial_jtag_write (const char * text , uint32_t length ) {
You can’t perform that action at this time.
0 commit comments