@@ -34,11 +34,6 @@ static int uart_os = UART_OS;
3434static os_event_t uart_evt_queue [16 ];
3535#endif
3636
37- // A small, static ring buffer for incoming chars
38- // This will only be populated if the UART is not attached to dupterm
39- static byte uart_ringbuf_array [16 ];
40- static ringbuf_t uart_ringbuf = {uart_ringbuf_array , sizeof (uart_ringbuf_array ), 0 , 0 };
41-
4237static void uart0_rx_intr_handler (void * para );
4338
4439void soft_reset (void );
@@ -175,26 +170,18 @@ static void uart0_rx_intr_handler(void *para) {
175170
176171 while (READ_PERI_REG (UART_STATUS (uart_no )) & (UART_RXFIFO_CNT << UART_RXFIFO_CNT_S )) {
177172 uint8 RcvChar = READ_PERI_REG (UART_FIFO (uart_no )) & 0xff ;
178- // For efficiency, when connected to dupterm we put incoming chars
179- // directly on stdin_ringbuf, rather than going via uart_ringbuf
180- if (uart_attached_to_dupterm ) {
181- if (RcvChar == mp_interrupt_char ) {
182- mp_keyboard_interrupt ();
183- } else {
184- ringbuf_put (& stdin_ringbuf , RcvChar );
185- }
173+ if (RcvChar == mp_interrupt_char ) {
174+ mp_keyboard_interrupt ();
186175 } else {
187- ringbuf_put (& uart_ringbuf , RcvChar );
176+ ringbuf_put (& stdin_ringbuf , RcvChar );
188177 }
189178 }
190179
180+ mp_hal_signal_input ();
181+
191182 // Clear pending FIFO interrupts
192183 WRITE_PERI_REG (UART_INT_CLR (UART_REPL ), UART_RXFIFO_TOUT_INT_CLR | UART_RXFIFO_FULL_INT_ST );
193184 ETS_UART_INTR_ENABLE ();
194-
195- if (uart_attached_to_dupterm ) {
196- mp_hal_signal_input ();
197- }
198185 }
199186}
200187
@@ -203,7 +190,7 @@ static void uart0_rx_intr_handler(void *para) {
203190bool uart_rx_wait (uint32_t timeout_us ) {
204191 uint32_t start = system_get_time ();
205192 for (;;) {
206- if (uart_ringbuf .iget != uart_ringbuf .iput ) {
193+ if (stdin_ringbuf .iget != stdin_ringbuf .iput ) {
207194 return true; // have at least 1 char ready for reading
208195 }
209196 if (system_get_time () - start >= timeout_us ) {
@@ -214,7 +201,7 @@ bool uart_rx_wait(uint32_t timeout_us) {
214201}
215202
216203int uart_rx_any (uint8 uart ) {
217- if (uart_ringbuf .iget != uart_ringbuf .iput ) {
204+ if (stdin_ringbuf .iget != stdin_ringbuf .iput ) {
218205 return true; // have at least 1 char ready for reading
219206 }
220207 return false;
@@ -230,7 +217,7 @@ int uart_tx_any_room(uint8 uart) {
230217
231218// Returns char from the input buffer, else -1 if buffer is empty.
232219int uart_rx_char (void ) {
233- return ringbuf_get (& uart_ringbuf );
220+ return ringbuf_get (& stdin_ringbuf );
234221}
235222
236223int uart_rx_one_char (uint8 uart_no ) {
@@ -288,7 +275,7 @@ void uart_task_handler(os_event_t *evt) {
288275 }
289276
290277 int c , ret = 0 ;
291- while ((c = ringbuf_get (& input_buf )) >= 0 ) {
278+ while ((c = ringbuf_get (& stdin_ringbuf )) >= 0 ) {
292279 if (c == mp_interrupt_char ) {
293280 mp_keyboard_interrupt ();
294281 }
0 commit comments