Rename macro to more appropiate name.
[bertos.git] / bertos / struct / fifobuf.h
index 2895f390f2451bf1d1bae1a052d8d03a2736a77e..4bd205d0cf2dd16b105a213e64c036ff70d27808 100644 (file)
  * Copyright 2001, 2008 Bernie Innocenti <bernie@codewiz.org>
  * -->
  *
+ * \defgroup fifobuf FIFO buffer
+ * \ingroup struct
+ * \{
+ *
  * \brief General pourpose FIFO buffer implemented with a ring buffer
  *
  * \li \c begin points to the first buffer element;
@@ -60,7 +64,6 @@
  * location and head points to the first one:
  *             \code head == begin && tail == end \endcode
  *
- * \version $Id: fifobuf.h 1532 2008-08-04 07:21:26Z bernie $
  * \author Bernie Innocenti <bernie@codewiz.org>
  */
 
@@ -89,6 +92,19 @@ typedef struct FIFOBuffer
        )
 
 
+/**
+ * Define a static fifo buffer
+ */
+#define DEFINE_FIFO(_name, _ptr, _size)                        \
+       FIFOBuffer _name =                                      \
+       {                                                       \
+               .head = (_ptr),                                 \
+               .tail = (_ptr),                                 \
+               .begin = (_ptr),                                \
+               .end = (_ptr) + (_size) - 1,                    \
+       };                                                      \
+       STATIC_ASSERT((_size) > 1)
+
 /**
  * Check whether the fifo is empty
  *
@@ -355,4 +371,6 @@ void fifo_pushblock(FIFOBuffer *fb, unsigned char *block, size_t len)
 }
 #endif
 
+/** \} */ /* defgroup fifobuf */
+
 #endif /* STRUCT_FIFO_H */