RobOmega - PSL RoboCup / Mbed OS nRF24L01P_L432KC_CarteBlanche

Dependencies:   nRF24L01P_Hello_World nRF24L01P

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers circularBuffer.cpp Source File

circularBuffer.cpp

00001 #include "circularBuffer.h"
00002 
00003 //-----------------------------TX-----------------------------//
00004 int cbTxHead;
00005 int cbTxTail;
00006 char cbTxBuffer[BUFFER_SIZE];
00007 
00008 void cbTxSendMessage(char* message, int length)
00009 {
00010     int i;
00011     if (cbTxRemainingSize() > length)
00012         for (i = 0; i < length; i++)
00013             cbTxAddOne(message[i]);
00014 }
00015 
00016 void cbTxAddOne(char value)
00017 {
00018     if (cbTxRemainingSize() > 0)
00019     {
00020         cbTxBuffer[cbTxHead++] = value;
00021         if (cbTxHead >= BUFFER_SIZE)
00022             cbTxHead = 0;
00023     }
00024 }
00025 
00026 char cbTxGetOne()
00027 {
00028     char value = cbTxBuffer[cbTxTail++];
00029     if (cbTxTail >= BUFFER_SIZE)
00030         cbTxTail = 0;
00031     return value;
00032 }
00033 
00034 int cbTxRemainingSize()
00035 {
00036     int size;
00037     if (cbTxTail > cbTxHead)
00038         size = cbTxTail - cbTxHead;
00039     else
00040         size = BUFFER_SIZE - (cbTxHead - cbTxTail);
00041     return size;
00042 }
00043 
00044 int cbTxGetDataSize()
00045 {
00046     return BUFFER_SIZE - cbTxRemainingSize();
00047 }
00048 
00049 
00050 //-----------------------------RX-----------------------------//
00051 int cbRxHead;
00052 int cbRxTail;
00053 char cbRxBuffer[BUFFER_SIZE];
00054 
00055 void cbRxAddOne(char value)
00056 {
00057     if (cbRxRemainingSize() > 0)
00058     {
00059         cbRxBuffer[cbRxHead++] = value;
00060         if (cbRxHead >= BUFFER_SIZE)
00061             cbRxHead = 0;
00062     }
00063 }
00064 
00065 char cbRxGetOne()
00066 {
00067     char value = cbRxBuffer[cbRxTail++];
00068     if (cbRxTail >= BUFFER_SIZE)
00069         cbRxTail = 0;
00070     return value;    
00071 }
00072 
00073 unsigned char cbRxIsDataAvailable()
00074 {
00075     if (cbRxTail != cbRxHead)
00076         return 1;
00077     else
00078         return 0;
00079 }
00080 
00081 int cbRxRemainingSize()
00082 {
00083     int size;
00084     if (cbRxTail > cbRxHead)
00085         size = cbRxTail - cbRxHead;
00086     else
00087         size = BUFFER_SIZE - (cbRxHead - cbRxTail);
00088     return size;
00089 }
00090 
00091 int cbRxGetDataSize()
00092 {
00093     return BUFFER_SIZE - cbRxRemainingSize();
00094 }