void UARTClass::IrqHandler( void ) { uint8_t uc_data; int ret; ret = uart_poll_in(CONFIG_UART_CONSOLE_INDEX, &uc_data); while ( ret != -1 ) { _rx_buffer->store_char(uc_data); ret = uart_poll_in(CONFIG_UART_CONSOLE_INDEX, &uc_data); } // Do we need to keep sending data? if (!uart_irq_tx_ready(CONFIG_UART_CONSOLE_INDEX)) { if (_tx_buffer->_iTail != _tx_buffer->_iHead) { uart_poll_out(CONFIG_UART_CONSOLE_INDEX, _tx_buffer->_aucBuffer[_tx_buffer->_iTail]); _tx_buffer->_iTail = (unsigned int)(_tx_buffer->_iTail + 1) % SERIAL_BUFFER_SIZE; } else { // Mask off transmit interrupt so we don't get it anymore uart_irq_tx_disable(CONFIG_UART_CONSOLE_INDEX); } } }
static int console_in(void) { unsigned char c; if (uart_poll_in(uart_console_dev, &c) < 0) return EOF; else return (int)c; }
static void test_by_polling(struct device *dev) { unsigned char data; write_string(dev, banner1, strlen(banner1)); /* Poll in the character */ while (uart_poll_in(dev, &data) == -1) ; write_string(dev, banner2, strlen(banner2)); write_string(dev, &data, 1); write_string(dev, "\n", 1); }
void UARTClass::end( void ) { int ret=0; uint8_t uc_data; // Wait for any outstanding data to be sent flush(); uart_irq_rx_disable(CONFIG_UART_CONSOLE_INDEX); uart_irq_tx_disable(CONFIG_UART_CONSOLE_INDEX); while ( ret != -1 ) { ret = uart_poll_in(CONFIG_UART_CONSOLE_INDEX, &uc_data); } opened = false; // Clear any received data _rx_buffer->_iHead = _rx_buffer->_iTail; }
void UARTClass::end( void ) { int ret=0; uint8_t uc_data; // Wait for any outstanding data to be sent flush(); uart_irq_rx_disable(CONFIG_UART_CONSOLE_INDEX); uart_irq_tx_disable(CONFIG_UART_CONSOLE_INDEX); while ( ret != -1 ) { ret = uart_poll_in(CONFIG_UART_CONSOLE_INDEX, &uc_data); } opened = false; // Clear any received data _rx_buffer->_iHead = _rx_buffer->_iTail; SET_PIN_MODE(17, GPIO_MUX_MODE); // Rdx SOC PIN (Arduino header pin 0) SET_PIN_MODE(16, GPIO_MUX_MODE); // Txd SOC PIN (Arduino header pin 1) }