?? ring_buffer.c
字號:
/**
* \file ring_buffer.c
* \brief Ring (circular) buffer API.
*/
#include "ring_buffer.h"
void ring_buffer_init(
uint32_t size,
uint8_t *data,
ring_buffer_t *buf)
{
buf->wr = 0;
buf->rd = 0;
buf->count = 0;
buf->size = size;
buf->data = data;
}
int32_t ring_buffer_remove(
ring_buffer_t *buf)
{
int ch;
/* Empty check */
if (buf->count == 0) {
return -1;
}
ch = buf->data[buf->rd];
buf->rd++;
buf->count--;
/* Buffer read-pointer wrap */
if (buf->rd == buf->size) {
buf->rd = 0;
}
return ch;
}
int32_t ring_buffer_add(
ring_buffer_t *buf,
int8_t ch)
{
/* Full check */
if (buf->count == buf->size) {
return -1;
}
buf->data[buf->wr] = ch;
buf->wr++;
buf->count++;
/* Buffer write-pointer wrap */
if (buf->wr == buf->size) {
buf->wr = 0;
}
return 0;
}
uint32_t ring_buffer_count(
ring_buffer_t *buf)
{
return buf->count;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -