Plymouth ELEC351 Group T / Mbed OS ELEC351

Dependencies:   BME280 BMP280 TextLCD

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers FIFO.cpp Source File

FIFO.cpp

00001 #include "FIFO.hpp"
00002 
00003 //vae
00004 DATA Data_Active;//Current data sample
00005 DATA Data_Buffer[mailsize];//Data buffer
00006 int Data_Buffer_Write_Pointer;
00007 int Write_To_Data_Buffer(DATA Data_Store, int Write_Pointer);
00008 int Write_Pointer = 0;
00009 Mutex Data_Buffer_Lock;
00010 
00011 int Write_Data(DATA Data_Store, int Write_Pointer)//Writes data passed in to the array at address Write Pointer
00012 {
00013     Data_Buffer_Lock.lock();//Appling lock for critial section
00014     Data_Buffer[Write_Pointer] = Data_Store;
00015     if(Write_Pointer < mailsize - 1)//Checks if write pointer will be greater than mail size
00016     {
00017         Write_Pointer = Write_Pointer + 1;//Increment write pointer
00018     }
00019     else
00020     {
00021         Write_Pointer = 0;//Else set it to 0 thus a FIFO system   
00022     }
00023     Data_Buffer_Lock.unlock();//Releasing lock for critial section
00024     return Write_Pointer;//New address of Write pointer
00025     
00026 }
00027 DATA Read_Data(int Read_Pointer)
00028 {
00029     Data_Buffer_Lock.lock();//Appling lock for critial section
00030     DATA Temp_Data = Data_Buffer[Read_Pointer];
00031     Data_Buffer_Lock.unlock();//Releasing lock for critial section
00032     
00033     return Temp_Data;
00034 }
00035 void Delete_Data(int Delete_Pointer)
00036 {
00037     Data_Buffer_Lock.lock();//Appling lock for critial section
00038     Data_Buffer[Delete_Pointer].set_all_zero();
00039     Data_Buffer_Lock.unlock();//Releasing lock for critial section
00040 }