Files
TweinStein/inc/FIFO.h
2026-06-12 02:55:04 -07:00

126 lines
3.2 KiB
C

/*!
* @defgroup FIFO
* @brief First in first out queue
* @{*/
/**
* @file FIFO.h
* @brief Provide functions for a first in first out queue
* @details Runs on any Microcontroller.
* Provide functions that initialize a FIFO, put data in, get data out,
* and return the current size. The file includes two FIFOs
* using index implementation.
* @version ECE319K v1.0
* @author Daniel Valvano and Jonathan Valvano
* @copyright Copyright 2023 by Jonathan W. Valvano, valvano@mail.utexas.edu,
* @warning AS-IS
* @note For more information see http://users.ece.utexas.edu/~valvano/
* @date August 13, 2023
*/
#ifndef __FIFO_H__
#define __FIFO_H__
/**
* \brief TXFIFOSIZE the size of the transmit FIFO, which can hold 0 to TXFIFOSIZE-1 elements.
* The size must be a power of 2.
*/
#define TXFIFOSIZE 64 // must be a power of 2
/**
* Initialize the transmit FIFO
* @param none
* @return none
* @see TxFifo_Put() TxFifo_Get() TxFifo_Size()
* @brief Initialize FIFO
* @note TXFIFOSIZE the size of the transmit FIFO
*/
void TxFifo_Init(void);
/**
* Put character into the transmit FIFO
* @param data is a new character to save
* @return 0 for fail because full, 1 for success
* @see TxFifo_Init() TxFifo_Get() TxFifo_Size()
* @brief Put FIFO
* @note TXFIFOSIZE the size of the transmit FIFO
*/
int TxFifo_Put(char data);
/**
* Get character from the transmit FIFO
* @param none
* @return 0 for fail because empty, nonzero is data
* @see TxFifo_Init() TxFifo_Put() TxFifo_Size()
* @brief Get FIFO
* @note TXFIFOSIZE the size of the transmit FIFO
*/
char TxFifo_Get(void);
/**
* Determine how many elements are currently stored in the transmit FIFO
* @param none
* @return number of elements in FIFO
* @see TxFifo_Init() TxFifo_Put() TxFifo_Get()
* @brief number of elements in FIFO
* @note Does not change the FIFO
*/
uint32_t TxFifo_Size(void);
/**
* \brief RXFIFOSIZE the size of the receive FIFO, which can hold 0 to RXFIFOSIZE-1 elements
* The size must be a power of 2.
*/
#define RXFIFOSIZE 16 // must be a power of 2
/**
* Initialize the receive FIFO
* @param none
* @return none
* @see RxFifo_Put() RxFifo_Get() RxFifo_Size()
* @brief Initialize FIFO
* @note RXFIFOSIZE the size of the receive FIFO
*/
void RxFifo_Init(void);
/**
* Put character into the receive FIFO
* @param data is a new character to save
* @return 0 for fail because full, 1 for success
* @see RxFifo_Init() RxFifo_Get() RxFifo_Size()
* @brief Put FIFO
* @note RXFIFOSIZE the size of the receive FIFO
*/
int RxFifo_Put(char data);
/**
* Get character from the receive FIFO
* @param none
* @return 0 for fail because empty, nonzero is data
* @see RxFifo_Init() RxFifo_Put() RxFifo_Size()
* @brief Get FIFO
* @note RXFIFOSIZE the size of the receive FIFO
*/
char RxFifo_Get(void);
/**
* Determine how many elements are currently stored in the receive FIFO
* @param none
* @return number of elements in FIFO
* @see RxFifo_Init() RxFifo_Put() RxFifo_Get()
* @brief number of elements in FIFO
* @note Does not change the FIFO
*/
uint32_t RxFifo_Size(void);
#endif // __FIFO_H__
/** @}*/