g0b1vetx-board/middleware/fifo/mid_fifo.c
2023-04-29 09:09:12 +08:00

78 lines
1.6 KiB
C

/*
* @Author: zhangpeng
* @Date: 2020-03-05 18:28:21
* @LastEditTime: 2020-03-05 20:02:45
* @LastEditors: zhangpeng
* @Description: New File
* @FilePath: \Firmware\user\fifo.c
* @Copyright (c) 2019-2021 ZhangYeJinZhi.Co.Ltd. All rights reserved.
*/
/**
* @function: Fifo_Read
* @description: 从数据队列里面读取一帧数据
* @param {type}
* @return:
* @Author: zhangpeng
* @LastEditTime: Do not edit
*/
#include "fifo-board.h"
/**
* @function: Fifo_Read
* @description: 从数据队列里面读取一帧数据
* @param fifo: 队列指针
* @param buf: 读取数据的缓存
* @return:
* @Author: zhangpeng
*/
int FifoRead(Fifo_p fifo, char *buf, int length)
{
if (fifo->count == 0)
{
return -1;
}
fifo->count--;
// *length = fifo->data[fifo->read].length;
memcpy(buf, fifo->data + fifo->read * length, length);
fifo->read++;
if (fifo->read >= fifo->max_count)
fifo->read = 0;
return 0; //数据读取成功
}
/**
* @function: Fifo_Read
* @description: 从数据队列里面读取一帧数据
* @param fifo: 队列指针
* @param buf: 读取数据的缓存
* @return:
* @Author: zhangpeng
*/
int FifoWrite(Fifo_p fifo, char *buf, int length) //
{
if (fifo->data == NULL)
return -1;
if (fifo->count == fifo->max_count)
{ // 满
return -1;
}
fifo->count++;
// fifo->data[fifo->write].length = length;
memcpy(fifo->data + fifo->write * length, buf, length);
fifo->write++;
if (fifo->write >= fifo->max_count)
fifo->write = 0;
return 0; //数据读取成功
}
/*清空缓冲区*/
void FifoInit(Fifo_p fifo, char *data, int max)
{
fifo->read = 0;
fifo->write = 0;
fifo->count = 0;
fifo->data = data;
fifo->max_count = max;
}