ring buffer
Embed:
(wiki syntax)
Show/hide line numbers
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_
Generated on Tue Jul 26 2022 09:06:34 by 1.7.2