/**
***************************************************
* @brief func_fifo_FindDelete
* @note 比较FIFO中数据
* @param fifo
* 指向待操作的FIFO,
* ind
* 从FIFO的pull后面的第ind个开始
* len
* 比较的长度为len
* data
* 比较的数据
* timeout
* 等待busy 超时时间,单位ms
* timeout
* @retval FifoErr
* @data 2021.09.03
* @auth WXL
* @his 1.0.0.0 2021.09.03 WXL
* create
***************************************************
**/
FifoErr func_fifo_Find(FifoTypeDef* fifo, INT16U ind, INT8U* data, INT16U len, INT16U* pos)
{
FifoErr err = FIFO_EOK;
INT16U cycle = 0;
if(FIFO_INIT_CHECK(fifo) == 0)
{
return FIFO_EINIT;
}
FIFO_SET_BUSY(fifo);
INT16U times = fifo->CntUsed - ind - len - 1;
err = FIFO_EFAILED;
while(cycle < times)
{
if(func_fifo_CmpLower(fifo, ind+cycle, len, data) == FIFO_EOK)
{
err = FIFO_EOK;
*pos = cycle;
break;
}
cycle++;
}
FIFO_RESET_BUSY(fifo);
return err;
} |