#include #include #include #include "encoding.h" #include "platform.h" #include "prci_driver.h" #include "eos.h" #include "interrupt.h" #include "event.h" #include "uart.h" static eos_uart_handler_t uart_handler[EOS_UART_MAX_ETYPE]; static void uart_handle_evt(unsigned char type, unsigned char *buffer, uint16_t len) { unsigned char idx = (type & ~EOS_EVT_MASK) - 1; if ((idx < EOS_UART_MAX_ETYPE) && uart_handler[idx]) { uart_handler[idx](type); } else { eos_evtq_bad_handler(type, buffer, len); } } static void uart_handle_intr(void) { if (UART0_REG(UART_REG_IP) & UART_IP_TXWM) { UART0_REG(UART_REG_IE) &= ~UART_IP_TXWM; eos_evtq_push_isr(EOS_EVT_UART | EOS_UART_ETYPE_TX, NULL, 0); } if (UART0_REG(UART_REG_IP) & UART_IP_RXWM) { UART0_REG(UART_REG_IE) &= ~UART_IP_RXWM; eos_evtq_push_isr(EOS_EVT_UART | EOS_UART_ETYPE_RX, NULL, 0); } } int eos_uart_init(uint8_t wakeup_cause) { int i; for (i=0; i