A library which allows the playing of Wav files using the TLV320

Dependents:   RSALB_hbridge_helloworld RSALB_lobster WavPlayer_test AudioCODEC_HelloWorld

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers RingBuffer.cpp Source File

RingBuffer.cpp

00001 
00002 
00003 #include "RingBuffer.h"
00004 //Serial debug(USBTX,USBRX);
00005 
00006 RingBuffer::RingBuffer()
00007 {
00008     Start = 0;
00009     Finish = 0;
00010     for(int i = 0; i < RBLENGTH; i++)
00011     {
00012         for(int j = 0; j<RBWIDTH; j++)
00013         {
00014             Buffer[i][j] = 0;
00015         }
00016     }
00017     //debug.baud(115200);
00018 }
00019 
00020 int RingBuffer::addToBuffer(int* input)
00021 {
00022     if(Finish == Start && Samples != 0)
00023     {
00024         return -1;     
00025     }
00026     else
00027     {
00028         for(int i = 0; i < RBWIDTH; i++)
00029         {
00030             Buffer[Finish][i] = input[i];
00031         }
00032         sortFinishNS();
00033         return 0;
00034     }
00035     
00036 }
00037 
00038 
00039 int RingBuffer::addToBufferS(int input, int across)
00040 {
00041     Buffer[Finish][across] = input;
00042     return 0;
00043 }
00044 
00045 
00046 
00047 int RingBuffer::nextBuffer()
00048 {
00049     sortFinishNS();
00050     return 0;
00051 }
00052 
00053 
00054 
00055 void RingBuffer::readFirst(int* output)
00056 {
00057     for(int i = 0; i < RBWIDTH; i++)
00058         {
00059             output[i] = Buffer[Start][i];
00060         }
00061 }
00062 
00063 int RingBuffer::readFirstS(int across)
00064 {
00065     return Buffer[Start][across];
00066 }
00067 
00068 
00069 
00070 void RingBuffer::readAt(int* output, int at)
00071 {
00072     for(int i = 0; i < RBWIDTH; i++)
00073         {
00074             output[i] = Buffer[at][i];
00075         }
00076 }
00077 
00078 int RingBuffer::readAtS(int at, int across)
00079 {
00080     return Buffer[at][across];
00081 }
00082 
00083 
00084 
00085 void RingBuffer::readLast(int*output)
00086 {
00087      for(int i = 0; i < RBWIDTH; i++)
00088         {
00089             output[i] = Buffer[Finish-1][i];
00090         }
00091 }
00092 
00093 
00094 int RingBuffer::readLastS(int across)
00095 {
00096     return Buffer[Finish-1][across];
00097 }
00098 
00099 void RingBuffer::usedFirst()
00100 {
00101     sortStartUS();
00102 }
00103 
00104 void RingBuffer::usedLast()
00105 {
00106     Finish--;
00107     Samples--;
00108 }
00109 
00110 int RingBuffer::numberStored()
00111 {
00112     if(Samples > RBLENGTH)
00113     {
00114         if(Finish < Start)
00115         {
00116             Samples = Finish + (RBLENGTH - Start);
00117         }
00118         else
00119         {
00120             Samples = Start - Finish;
00121         }
00122     }
00123     return Samples;
00124 }
00125 
00126 void RingBuffer::sortFinishNS()
00127 {
00128     Finish++;
00129     Samples++;
00130     if(Finish == RBLENGTH)
00131     {
00132         Finish = 0;
00133         //debug.printf("\n\rBOO! %3i %3i\n\r",Start, Finish);
00134     }
00135     
00136 }
00137 
00138 void RingBuffer::sortStartUS()
00139 {
00140     Start++;
00141     Samples--;
00142     if(Start == RBLENGTH)
00143     {
00144         Start = 0;
00145     }
00146 }