7 #ifndef DOUBLEBUFFER_H_
8 #define DOUBLEBUFFER_H_
13 #if !defined BUFFER_SIZE
14 #error Please define BUFFER_SIZE before including doublebuffer.h!
21 #if BUFFER_SIZE == 256
22 uint8_t current_writing_index;
23 #elif BUFFER_SIZE == 512
24 uint16_t current_writing_index;
26 #error Unsupported BUFFER_SIZE
28 uint8_t buffer_1[BUFFER_SIZE];
29 uint8_t buffer_2[BUFFER_SIZE];
33 #define DoubleBuffer_init(buffers) do { \
34 (buffers).active_buffer_p = (buffers).buffer_1; \
35 (buffers).current_writing_index = 0; \
39 #define DoubleBuffer_getActive(buffers) ((buffers).active_buffer_p)
42 #define DoubleBuffer_swipe(buffers) do { \
43 if ((buffers).active_buffer_p == (buffers).buffer_1) \
45 (buffers).active_buffer_p = (buffers).buffer_2; \
49 (buffers).active_buffer_p = (buffers).buffer_1; \
51 (buffers).current_writing_index = 0; \
55 #define DoubleBuffer_getIndex(buffers) ((buffers).current_writing_index)
58 #define DoubleBuffer_incrIndex(buffers, inc) ((buffers).current_writing_index += inc)