ring buffer

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers rbuf.h Source File

rbuf.h

00001 #ifndef  __rbuf_h_
00002  #define __rbuf_h_
00003 
00004 #include "mbed.h" 
00005 
00006 #define NOT_EMPTY           0x01    // Bit fuer mindestens 1 Frame im Buffer 
00007 #define FAST_VOLL           0x02    // Bit fuer Fuellstandsschwelle ueberschritten 
00008 #define FEHLER              0x04    // Bit fuer Fehler aufgetreten 
00009 
00010 typedef struct 
00011   { 
00012      uint16_t   buflen;        // Max. Objektanzahl fuer den Buffer 
00013      uint16_t   bufcnt;        // Bufferfuellstand in Objekten 
00014      void       * in;          // Zeiger auf char zum Schreiben (Schreibzeiger) 
00015      void       * out;         // Zeiger auf char zum Lesen     (Lesezeiger) 
00016      void       * buf;         // Zeiger auf char[LEN]-Buffer   (Buffer an sich) 
00017      uint32_t   anzahl;        // Anzahl aller geschriebenen Elemente (Absolutanzahl Elementzaehler) 
00018      uint32_t   fehleranzahl;  // Anzahl aufgetretener Fehler 
00019      uint16_t   Schwelle;      // Schwelle fuer "fast voll" 
00020      uint16_t   flags;         // Status-Flags 
00021      uint16_t   peak_max;      // Schleppzeiger ueber den max. Fuellstand an Elementen 
00022      uint16_t   blockgroesse;  // Groesse eines Datenobjekts (1 Byte bis Frames) = Objektgroesse 
00023    } rbuf_t;                   // 
00024 
00025 rbuf_t   *rbuf_init (uint16_t b_size, uint16_t b_schwelle, uint16_t blockgroesse); 
00026 
00027 rbuf_t   *rbuf_create        (uint16_t Objektanzahl, uint16_t Fast_voll_Schwelle, uint16_t Objektgroesse); 
00028 void     *rbuf_look          (rbuf_t *buffer); 
00029 void     *rbuf_get           (rbuf_t *buffer, void *target); 
00030 void     *rbuf_put           (rbuf_t *buffer, void *source); 
00031 uint32_t  rbuf_getcnt        (rbuf_t *buffer); 
00032 uint32_t  rbuf_getflags      (rbuf_t *buffer); 
00033 uint32_t  rbuf_getfehler     (rbuf_t *buffer); 
00034 uint32_t  rbuf_leer          (rbuf_t *buffer); 
00035 uint32_t  rbuf_fast_voll     (rbuf_t *buffer); 
00036 uint32_t  rbuf_fehler        (rbuf_t *buffer); 
00037 uint32_t  rbuf_get_fehleranz (rbuf_t *buffer); 
00038 uint32_t  rbuf_get_gesendet  (rbuf_t *buffer); 
00039 
00040 #endif // von #define __rbuf_h_