Libs for using Nucleo STM32F411 periphery

Embed: (wiki syntax)

« Back to documentation index

RingBuffer Class Reference

RingBuffer Class Reference

#include <RingBuffer.h>

Public Member Functions

 RingBuffer (const int size)
 ~RingBuffer ()
bool writeBuffer (uint32_t inputdata)
bool setBufferStatus (int bit)
bool resetBufferStatus (int bit)
uint8_t getBufferStatus ()
uint32_t readBuffer ()
void setBF_METHODE (void(*BUFFER_HANDLER)(void))

Protected Attributes

int buffer_size
 Größe des Buffers.
uint32_t read_pointer
 Lesezeiger der auf die nächste zulesenede Stelle zeigt.
uint32_t write_pointer
 Schreibzeiger der auf die nächste zubeschreibene Stelle zeigt.
bool bufferfull
 Buffer ist voll.
bool bufferempty
 Buffer ist leer.
bool extfct
 Freigabe zur Verwendung externer Funktionen.
void(* BUFFER_HANDLER )(void)
 Externe Funktion bei fast vollem Buffer aufrufen.

Detailed Description

Diese Klasse erstellt einen 32 Bit Ringbuffer mit einen vom Nutzer vorgegebenen Größenbereich. In dem Ringbuffer können entsprechend 32 Bit Daten für Messaufzeichnungen genutzt werden. Zudem gibt es 8 Bit in einem Statusregister die frei definiert werden können. Es gibt für jedes einzelne Bit des Statusregisters eine Setter und Getter Methode. Nachdem der Ringbuffer komplett beschrieben wurde, wird wieder der erste Wert überschrieben. Wenn der Abstand zwischen Lese- und Schreibezeiger zu gering wird, kann eine vom User definierte Funktion aufgerufen werden.

 #include "mbed.h"
 #include "RingBuffer.h"

 int Event_Routine(){ .... }                        // Irgendeine Funktion die bei fast vollem Fifo aufgerufen wird           

 bool write;
 uint8_t status;

 int main() {
    
     Ringbuffer adcbuffer(250);                       // Erstellen einer Instanz mit 250 Werten
 
     write = adcbuffer.writeBuffer(16658);            // Schreibt einen Wert in den Buffer. Wenn Rückgabe write
                                                      // true ist wurde dieser erfolgreich beschrieben.

     adcbuffer.setBF_METHODE(Event_Routine);          // Bei fast vollem Fifo wird die Routine aufgerufen

     adcbuffer.setBufferStatus(4);                    // Setzt das 4. Bit des Statusregisters

     adcbuffer.resetBufferStatus(6);                  // Löscht das 6. Bit des Statusregisters

     status = adcbuffer.getBufferStatus();            // Liest das Statusregister aus

      while(1){
        printf("Value: %i\r\n", adcbuffer.readBuffer());   // Ausgabe der geschriebenen Werte
      }
    }

Definition at line 44 of file RingBuffer.h.


Constructor & Destructor Documentation

RingBuffer ( const int  size )

Konstruktor zum Erstellen einer Instanz mit einer vom User festgelegten Größe

Parameters:
sizeGröße Anzahl der maximal gespeicherten Werte im Buffer

Definition at line 8 of file RingBuffer.cpp.

~RingBuffer (  )

Destruktor entfernt den RingBuffer

Definition at line 55 of file RingBuffer.h.


Member Function Documentation

uint8_t getBufferStatus (  )

Liest den Status aus der aktuelle Zelle und gibt diesen zurück.

Definition at line 84 of file RingBuffer.cpp.

uint32_t readBuffer (  )

Liest Daten aus der aktuelle Zelle. Wenn die Werte nicht ausgelesen werden konnten, dann ist der Rückgabewert 0

Definition at line 52 of file RingBuffer.cpp.

bool resetBufferStatus ( int  bit )

ResSetzt ein Bit im Statusvektor des Buffers. Wenn der Rückgabewert True ist, würde der Wert übernommen

Parameters:
bitWelches Bit der Zelle zurück gesetzt werden soll

Definition at line 98 of file RingBuffer.cpp.

void setBF_METHODE ( void(*)(void)  BUFFER_HANDLER )

Setzt eine weitere Routine die verwendet werden kann, wenn der Buffer fast voll ist. Um die Daten z.B. zu übernehmen

Parameters:
BUFFER_HANDLERAdresse zur weiteren Routine

Definition at line 109 of file RingBuffer.cpp.

bool setBufferStatus ( int  bit )

Setzt ein Bit im Statusvektor des Buffers. Wenn der Rückgabewert True ist, würde der Wert übernommen

Parameters:
bitWelches Bit der Zelle gesetzt werden soll

Definition at line 88 of file RingBuffer.cpp.

bool writeBuffer ( uint32_t  inputdata )

Schreibt Daten in die aktuelle Zelle. Wenn die Rückgabe true ist, dann wurde der Wert geschrieben. Wenn nicht, ist der Buffer voll.

Parameters:
inputdataDaten 32 Bit Integer Daten für die aktuelle Zelle

Definition at line 23 of file RingBuffer.cpp.


Field Documentation

void(* BUFFER_HANDLER)(void) [protected]

Externe Funktion bei fast vollem Buffer aufrufen.

Definition at line 103 of file RingBuffer.h.

int buffer_size [protected]

Größe des Buffers.

Definition at line 91 of file RingBuffer.h.

bool bufferempty [protected]

Buffer ist leer.

Definition at line 99 of file RingBuffer.h.

bool bufferfull [protected]

Buffer ist voll.

Definition at line 97 of file RingBuffer.h.

bool extfct [protected]

Freigabe zur Verwendung externer Funktionen.

Definition at line 101 of file RingBuffer.h.

uint32_t read_pointer [protected]

Lesezeiger der auf die nächste zulesenede Stelle zeigt.

Definition at line 93 of file RingBuffer.h.

uint32_t write_pointer [protected]

Schreibzeiger der auf die nächste zubeschreibene Stelle zeigt.

Definition at line 95 of file RingBuffer.h.