Modbus_1_Deva4ki/device_ring_buffer.c

46 lines
749 B
C

#include <stdio.h>
struct rb {
char buf[8];
char head;
char tail;
};
static void rb_initialize(struct rb* _rb)
{
memset(_rb, 0, sizeof(_rb));
}
int rb_put(struct rb* _rb, char element)
{
if (_rb->tail != _rb->head) {
_rb->buf[_rb->tail] = element;
_rb->tail++;
if (_rb->tail == sizeof(_rb->buf))
{
_rb->tail = 0;
}
return 1;
}
else
{
return 0;
}
}
int rb_get(struct rb* _rb, char *element)
{
if (_rb->tail != _rb->head) {
*element = _rb->buf[_rb->head];
_rb->head++;
if (_rb->head == sizeof(_rb->buf))
{
_rb->head = 0;
}
return 1;
}
else
{
return 0;
}
}