/******************************************************************************* * Function Name: UART_SpiUartReadRxData ******************************************************************************** * * Summary: * Retrieves the next data element from the receive buffer. * - RX software buffer is disabled: Returns data element retrieved from * RX FIFO. Undefined data will be returned if the RX FIFO is empty. * - RX software buffer is enabled: Returns data element from the software * receive buffer. Zero value is returned if the software receive buffer * is empty. * * Parameters: * None * * Return: * Next data element from the receive buffer. * * Global Variables: * Look into UART_SpiInit for description. * *******************************************************************************/ uint32 UART_SpiUartReadRxData(void) { uint32 rxData = 0u; #if (UART_INTERNAL_RX_SW_BUFFER_CONST) uint32 locTail; #endif /* (UART_INTERNAL_RX_SW_BUFFER_CONST) */ #if (UART_CHECK_RX_SW_BUFFER) { if (UART_rxBufferHead != UART_rxBufferTail) { /* There is data in RX software buffer */ /* Calculate index to read from */ locTail = (UART_rxBufferTail + 1u); if (UART_INTERNAL_RX_BUFFER_SIZE == locTail) { locTail = 0u; } /* Get data from RX software buffer */ rxData = UART_GetWordFromRxBuffer(locTail); /* Change index in the buffer */ UART_rxBufferTail = locTail; #if (UART_CHECK_UART_RTS_CONTROL_FLOW) { /* Check if RX Not Empty is disabled in the interrupt */ if (0u == (UART_INTR_RX_MASK_REG & UART_INTR_RX_NOT_EMPTY)) { /* Enable RX Not Empty interrupt source to continue * receiving data into software buffer. */ UART_INTR_RX_MASK_REG |= UART_INTR_RX_NOT_EMPTY; } } #endif } } #else { /* Read data from RX FIFO */ rxData = UART_RX_FIFO_RD_REG; } #endif return (rxData); }
/******************************************************************************* * Function Name: UART_SpiUartReadRxData ******************************************************************************** * * Summary: * Retrieves the next data element from the receive buffer. Undefined data will * be returned if the RX buffer is empty. * Call UART_SpiUartGetRxBufferSize() to return buffer size. * - RX software buffer disabled: Returns data element retrieved from RX FIFO. * - RX software buffer enabled: Returns data element from the software * receive buffer. * * Parameters: * None * * Return: * Next data element from the receive buffer. * * Global Variables: * Look into UART_SpiInit for description. * *******************************************************************************/ uint32 UART_SpiUartReadRxData(void) { uint32 rxData = 0u; #if(UART_INTERNAL_RX_SW_BUFFER_CONST) uint32 locTail; #endif /* (UART_INTERNAL_RX_SW_BUFFER_CONST) */ #if(UART_CHECK_RX_SW_BUFFER) { if(UART_rxBufferHead != UART_rxBufferTail) { /* There is data in RX software buffer */ /* Calculate index to read from */ locTail = (UART_rxBufferTail + 1u); if(UART_RX_BUFFER_SIZE == locTail) { locTail = 0u; } /* Get data fron RX software buffer */ rxData = UART_GetWordFromRxBuffer(locTail); /* Change index in the buffer */ UART_rxBufferTail = locTail; } } #else { rxData = UART_RX_FIFO_RD_REG; /* Read data from RX FIFO */ } #endif return(rxData); }