AT-Command/samples/none_os/framework/ringbuffer.h

48 lines
1.2 KiB
C
Raw Normal View History

2022-12-31 14:42:31 +00:00
/******************************************************************************
* @brief <EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<EFBFBD>ο<EFBFBD>linux/kfifo)
*
* Copyright (c) 2016~2021, <morro_luo@163.com>
*
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
* 2016-05-30 roger.luo Initial version.
* 2021-02-05 roger.luo <EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD><EFBFBD>пռ<EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD>ӿ<EFBFBD>.
******************************************************************************/
#ifndef _RING_BUF_H_
#define _RING_BUF_H_
#include <stdbool.h>
#ifdef __cplusplus
extern "C" {
#endif
/*<2A><><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
typedef struct {
unsigned char *buf; /*<2A><><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD> */
unsigned int size; /*<2A><><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD> */
unsigned int front; /*ͷָ<CDB7><D6B8> */
unsigned int rear; /*βָ<CEB2><D6B8> */
}ring_buf_t;
bool ring_buf_init(ring_buf_t *r,unsigned char *buf,unsigned int size);
void ring_buf_clr(ring_buf_t *r);
unsigned int ring_buf_len(ring_buf_t *r);
unsigned int ring_buf_put(ring_buf_t *r,unsigned char *buf,unsigned int len);
unsigned int ring_buf_get(ring_buf_t *r,unsigned char *buf,unsigned int len);
unsigned int ring_buf_free_space(ring_buf_t *r);
#ifdef __cplusplus
}
#endif
#endif