/** * UART init & async rx module. * * Call UART_Init(), UART_SetupAsyncReceiver() and * define UART_HandleRxByte() somewhere in application code. * * Call UART_PollRx() to allow rx in a blocking handler. */ #ifndef UART_HANDLER_H #define UART_HANDLER_H #include /** Configure UART periphs and enable pins - does not set baud rate, parity and stopbits */ void UART_Init(void); /** Configure async Rx on UART0 */ void UART_SetupAsyncReceiver(void); /** User must provide this func for handling received bytes */ extern void UART_HandleRxByte(char c); static inline void uart_rx_intr_disable(uint8 uart_no) { CLEAR_PERI_REG_MASK(UART_INT_ENA(uart_no), UART_RXFIFO_FULL_INT_ENA | UART_RXFIFO_TOUT_INT_ENA); } static inline void uart_rx_intr_enable(uint8 uart_no) { SET_PERI_REG_MASK(UART_INT_ENA(uart_no), UART_RXFIFO_FULL_INT_ENA | UART_RXFIFO_TOUT_INT_ENA); } /** * @brief get number of bytes in UART tx fifo * @param UART number */ static inline u8 UART_GetRxFifoCount(u8 uart_no) { return (u8) ((READ_PERI_REG(UART_STATUS((uart_no))) >> UART_RXFIFO_CNT_S) & UART_RXFIFO_CNT); } #endif