embedded-software
reusable software modules for embedded systems
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
buffer.h
Go to the documentation of this file.
1 #ifndef _BUFFER_H_
2 #define _BUFFER_H_
3 
4 // Standard Includes
5 #include <stdint.h>
6 #include <stdbool.h>
7 
8 #include "library.h"
9 
42 typedef struct {
43  uint16_t size;
44  uint16_t max_size;
45  uint8_t *front;
46  uint8_t *rear;
47  uint8_t *buffer_start;
48  uint8_t *buffer_end;
49  void (*Callback)(void * buf);
51  //x the input to the Callback should be a buffer_t pointer; however, buffer_t
52  //x has not been defined thus the pointer is cast as a void pointer.
53  void (*OverwriteCallback)(void);
54 } buffer_t;
55 
71 void Buffer_Enqueue(buffer_t *buffer, uint8_t data);
72 
87 uint8_t Buffer_Dequeue(buffer_t *buffer);
88 
97 uint16_t Buffer_GetSize(buffer_t *buffer);
98 
106 #define BUFFER_ALLOCATE(buffer_name, max_size)\
107  char CAT2(buffer_name, _array)[max_size];\
108  buffer_t buffer_name
109 
110 #define BUFFER_INIT(buffer_name, max_size)\
111  Buffer_Init(&buffer_name, &CAT2(buffer_name, _array)[0], max_size)
112 
133 void Buffer_Init(buffer_t *buffer, uint8_t *data_array, uint16_t max_size);
134 
170 void Buffer_SetCallback(buffer_t * buffer, void (*Callback)(buffer_t * buffer));
171 
176 void Buffer_ClearCallback(buffer_t * buffer);
177 
196 uint8_t Buffer_EnqueueData(buffer_t * buffer, uint8_t * data, uint16_t length);
197 
198 #define BUFFER_ENQUEUE_FAILED 1
199 #define BUFFER_ENQUEUE_SUCCEEDED 0
200 
201 
203 #endif // _BUFFER_H_
uint16_t size
Definition: buffer.h:43
void Buffer_Enqueue(buffer_t *buffer, uint8_t data)
Definition: buffer.c:5
uint8_t Buffer_EnqueueData(buffer_t *buffer, uint8_t *data, uint16_t length)
Definition: buffer.c:82
void Buffer_ClearCallback(buffer_t *buffer)
Definition: buffer.c:78
uint8_t * buffer_end
Definition: buffer.h:48
uint8_t * rear
Definition: buffer.h:46
Definition: buffer.h:42
uint16_t max_size
Definition: buffer.h:44
uint16_t Buffer_GetSize(buffer_t *buffer)
Definition: buffer.c:58
void Buffer_Init(buffer_t *buffer, uint8_t *data_array, uint16_t max_size)
Definition: buffer.c:62
uint8_t Buffer_Dequeue(buffer_t *buffer)
Definition: buffer.c:42
void Buffer_SetCallback(buffer_t *buffer, void(*Callback)(buffer_t *buffer))
Definition: buffer.c:71
uint8_t * front
Definition: buffer.h:45
uint8_t * buffer_start
Definition: buffer.h:47