Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: scpi_sx127x scpi_sx127x_firstTest MLX90418_I2C_master
fifo.c
00001 00002 #include "fifo_private.h" 00003 00004 /** 00005 * Initialize fifo 00006 * @param fifo 00007 */ 00008 void fifo_init(scpi_fifo_t * fifo) { 00009 fifo->wr = 0; 00010 fifo->rd = 0; 00011 fifo->size = FIFO_SIZE; 00012 } 00013 00014 /** 00015 * Empty fifo 00016 * @param fifo 00017 */ 00018 void fifo_clear(scpi_fifo_t * fifo) { 00019 fifo->wr = 0; 00020 fifo->rd = 0; 00021 } 00022 00023 /** 00024 * Add element to fifo. If fifo is full, remove last element. 00025 * @param fifo 00026 * @param value 00027 * @return 00028 */ 00029 scpi_bool_t fifo_add(scpi_fifo_t * fifo, int16_t value) { 00030 /* FIFO full? */ 00031 if (fifo->wr == ((fifo->rd + fifo->size) % (fifo->size + 1))) { 00032 fifo_remove(fifo, NULL); 00033 } 00034 00035 fifo->data[fifo->wr] = value; 00036 fifo->wr = (fifo->wr + 1) % (fifo->size + 1); 00037 00038 return TRUE; 00039 } 00040 00041 /** 00042 * Remove element form fifo 00043 * @param fifo 00044 * @param value 00045 * @return FALSE - fifo is empty 00046 */ 00047 scpi_bool_t fifo_remove(scpi_fifo_t * fifo, int16_t * value) { 00048 /* FIFO empty? */ 00049 if (fifo->wr == fifo->rd) { 00050 return FALSE; 00051 } 00052 00053 if(value) { 00054 *value = fifo->data[fifo->rd]; 00055 } 00056 00057 fifo->rd = (fifo->rd + 1) % (fifo->size + 1); 00058 00059 return TRUE; 00060 } 00061 00062 /** 00063 * Retrive number of elements in fifo 00064 * @param fifo 00065 * @param value 00066 * @return 00067 */ 00068 scpi_bool_t fifo_count(scpi_fifo_t * fifo, int16_t * value) { 00069 *value = fifo->wr - fifo->rd; 00070 if (*value < 0) { 00071 *value += (fifo->size + 1); 00072 } 00073 return TRUE; 00074 }
Generated on Tue Jul 12 2022 19:30:15 by
1.7.2