Forked from
Distributed Autonomous Networked Control Lab / MicroCART
1869 commits behind, 267 commits ahead of the upstream repository.
-
David Wehr authoredDavid Wehr authored
circ_buffer.h 890 B
//
// Created by dawehr on 10/24/2016.
//
#ifndef CIRC_BUFFER_H
#define CIRC_BUFFER_H
#define CIRC_BUFFER_SIZE 1024
#include <unistd.h>
#include <stdio.h>
#include <string.h>
struct data_chunk {
size_t length;
unsigned char* data;
};
/*
* Returns the largest contiguous chunk from the buffer
* Does not move the buffer forward. You must call markConsumed to
* mark the area as free.
*/
struct data_chunk getChunk();
/*
* Marks the n_consumed bytes as used, and that
* area of the buffer can be used for new data now
*/
void markConsumed(size_t n_consumed);
/*
* Places data into the circular buffer. Returns the number of bytes stored.
* Will store the entire chunk, unless there is not enough remaining size in the buffer
*/
size_t putChunk(struct data_chunk);
/*
* Returns the remaining size in the buffer
*/
size_t get_buffer_size();
#endif //CIRC_BUFFER_H