A library which allows the playing of Wav files using the TLV320
Dependents: RSALB_hbridge_helloworld RSALB_lobster WavPlayer_test AudioCODEC_HelloWorld
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 }
Generated on Tue Jul 12 2022 17:42:18 by 1.7.2