ring buffer
rbuf.h@6:0f5c6e6c1ad2, 2011-07-21 (annotated)
- Committer:
- est2fe
- Date:
- Thu Jul 21 07:40:35 2011 +0000
- Revision:
- 6:0f5c6e6c1ad2
- Parent:
- 5:ddc33cb62d27
V0.97
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
est2fe | 4:192672304400 | 1 | #ifndef __rbuf_h_ |
est2fe | 4:192672304400 | 2 | #define __rbuf_h_ |
est2fe | 0:eae8cffdd121 | 3 | |
est2fe | 6:0f5c6e6c1ad2 | 4 | #include "mbed.h" |
est2fe | 6:0f5c6e6c1ad2 | 5 | |
est2fe | 0:eae8cffdd121 | 6 | #define NOT_EMPTY 0x01 // Bit fuer mindestens 1 Frame im Buffer |
est2fe | 0:eae8cffdd121 | 7 | #define FAST_VOLL 0x02 // Bit fuer Fuellstandsschwelle ueberschritten |
est2fe | 0:eae8cffdd121 | 8 | #define FEHLER 0x04 // Bit fuer Fehler aufgetreten |
est2fe | 0:eae8cffdd121 | 9 | |
est2fe | 0:eae8cffdd121 | 10 | typedef struct |
est2fe | 0:eae8cffdd121 | 11 | { |
est2fe | 0:eae8cffdd121 | 12 | uint16_t buflen; // Max. Objektanzahl fuer den Buffer |
est2fe | 0:eae8cffdd121 | 13 | uint16_t bufcnt; // Bufferfuellstand in Objekten |
est2fe | 0:eae8cffdd121 | 14 | void * in; // Zeiger auf char zum Schreiben (Schreibzeiger) |
est2fe | 0:eae8cffdd121 | 15 | void * out; // Zeiger auf char zum Lesen (Lesezeiger) |
est2fe | 0:eae8cffdd121 | 16 | void * buf; // Zeiger auf char[LEN]-Buffer (Buffer an sich) |
est2fe | 5:ddc33cb62d27 | 17 | uint32_t anzahl; // Anzahl aller geschriebenen Elemente (Absolutanzahl Elementzaehler) |
est2fe | 0:eae8cffdd121 | 18 | uint32_t fehleranzahl; // Anzahl aufgetretener Fehler |
est2fe | 0:eae8cffdd121 | 19 | uint16_t Schwelle; // Schwelle fuer "fast voll" |
est2fe | 0:eae8cffdd121 | 20 | uint16_t flags; // Status-Flags |
est2fe | 0:eae8cffdd121 | 21 | uint16_t peak_max; // Schleppzeiger ueber den max. Fuellstand an Elementen |
est2fe | 0:eae8cffdd121 | 22 | uint16_t blockgroesse; // Groesse eines Datenobjekts (1 Byte bis Frames) = Objektgroesse |
est2fe | 5:ddc33cb62d27 | 23 | } rbuf_t; // |
est2fe | 0:eae8cffdd121 | 24 | |
est2fe | 4:192672304400 | 25 | rbuf_t *rbuf_init (uint16_t b_size, uint16_t b_schwelle, uint16_t blockgroesse); |
est2fe | 0:eae8cffdd121 | 26 | |
est2fe | 5:ddc33cb62d27 | 27 | rbuf_t *rbuf_create (uint16_t Objektanzahl, uint16_t Fast_voll_Schwelle, uint16_t Objektgroesse); |
est2fe | 5:ddc33cb62d27 | 28 | void *rbuf_look (rbuf_t *buffer); |
est2fe | 5:ddc33cb62d27 | 29 | void *rbuf_get (rbuf_t *buffer, void *target); |
est2fe | 5:ddc33cb62d27 | 30 | void *rbuf_put (rbuf_t *buffer, void *source); |
est2fe | 5:ddc33cb62d27 | 31 | uint32_t rbuf_getcnt (rbuf_t *buffer); |
est2fe | 5:ddc33cb62d27 | 32 | uint32_t rbuf_getflags (rbuf_t *buffer); |
est2fe | 5:ddc33cb62d27 | 33 | uint32_t rbuf_getfehler (rbuf_t *buffer); |
est2fe | 5:ddc33cb62d27 | 34 | uint32_t rbuf_leer (rbuf_t *buffer); |
est2fe | 5:ddc33cb62d27 | 35 | uint32_t rbuf_fast_voll (rbuf_t *buffer); |
est2fe | 5:ddc33cb62d27 | 36 | uint32_t rbuf_fehler (rbuf_t *buffer); |
est2fe | 5:ddc33cb62d27 | 37 | uint32_t rbuf_get_fehleranz (rbuf_t *buffer); |
est2fe | 5:ddc33cb62d27 | 38 | uint32_t rbuf_get_gesendet (rbuf_t *buffer); |
est2fe | 3:c9c7c8e20336 | 39 | |
est2fe | 4:192672304400 | 40 | #endif // von #define __rbuf_h_ |