C语言实现标准FIFO
说明:
本文在C语言中实现了标准FIFO,可以存储任意类型的数据。FIFO返回给应用模块的是一个int类型的索引值,本质是一个指针。通过这层封装,可以简化提供给应用模块的接口。
注意:此FIFO为满时不能写入的类型,如果需要的是满时自动覆蓋,请自行修改。
源码:
itcp_fifo.h:/**
* Copyright (c), 2015-2025
* @file itcp_fifo.h
* @brief fifo头文件
* @author jdh
* @verbatim
* Change Logs:
* Date Author Notes
* 2018-01-24 jdh 新建
* 2018-11-06 jdh 修改成通用格式
* @endverbatim
*/
#ifndef _ITCP_FIFO_H_
#define _ITCP_FIFO_H_
#include "itcp_def.h"
/**
* @brief 创建fifo
* @param item_sum:fifo中元素数.注意不是字节数
* @param item_size: 元素大小.单位: 字节
* @return fifo索引
*/
int itcp_fifo_create(int item_sum, int item_size);
/**
* @brief 删除fifo
* @param fifo_index: fifo索引
*/
void itcp_fifo_delete(int fifo_index);
/**
* @brief fifo检查是否可以写入
* @param fifo_index: fifo索引
* @retval false:不可以写入.true:可以写入
*/
bool itcp_fifo_writeable(int fifo_index);
/**
* @brief fifo写入
* @param fifo_index: fifo索引
* @param frame:写入元素指针
* @return false:失败.true:成功
*/
bool itcp_fifo_write(int fifo_index, void *data);
/**
* @brief fifo批量写入
* @param fifo_index: fifo索引
* @param data: 写入元素指针
* @param item_num:元素数目
* @return false:失败.true:成功
*/
bool itcp_fifo_write_batch(int fifo_index, void *data, int item_num);
/**
* @brief fifo检查是否可以读取
* @param fifo_index: fifo索引
* @return false:不可以读取.true:可以读取
*/
bool itcp_fifo_readable(int fifo_index);
/**
* @brief fifo读取
* @param fifo_index: fifo索引
* @param data: 读取的数据
* @return false: 失败.true: 成功
*/
bool itcp_fifo_read(int fifo_index, void *data);
/**
* @brief fifo批量读取
* @param fifo_index: fifo索引
* @param data: 读取的数据
* &#