Time: 17:33 Date: 10/12/2017 Description: Task 1,7,8 Currently Functioning
Dependencies: BME280 BMP280 TextLCD
Working Repository
FIFO.cpp@50:3d61ca637399, 2018-01-09 (annotated)
- Committer:
- thomasmorris
- Date:
- Tue Jan 09 12:19:12 2018 +0000
- Revision:
- 50:3d61ca637399
- Parent:
- 47:6d128e500875
Dynamic Dating Working
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
thomasmorris | 47:6d128e500875 | 1 | #include "FIFO.hpp" |
thomasmorris | 47:6d128e500875 | 2 | |
thomasmorris | 47:6d128e500875 | 3 | //vae |
thomasmorris | 47:6d128e500875 | 4 | DATA Data_Active;//Current data sample |
thomasmorris | 47:6d128e500875 | 5 | DATA Data_Buffer[mailsize];//Data buffer |
thomasmorris | 47:6d128e500875 | 6 | int Data_Buffer_Write_Pointer; |
thomasmorris | 47:6d128e500875 | 7 | int Write_To_Data_Buffer(DATA Data_Store, int Write_Pointer); |
thomasmorris | 47:6d128e500875 | 8 | int Write_Pointer = 0; |
thomasmorris | 47:6d128e500875 | 9 | Mutex Data_Buffer_Lock; |
thomasmorris | 47:6d128e500875 | 10 | |
thomasmorris | 47:6d128e500875 | 11 | int Write_Data(DATA Data_Store, int Write_Pointer)//Writes data passed in to the array at address Write Pointer |
thomasmorris | 47:6d128e500875 | 12 | { |
thomasmorris | 47:6d128e500875 | 13 | Data_Buffer_Lock.lock();//Appling lock for critial section |
thomasmorris | 47:6d128e500875 | 14 | Data_Buffer[Write_Pointer] = Data_Store; |
thomasmorris | 47:6d128e500875 | 15 | if(Write_Pointer < mailsize - 1)//Checks if write pointer will be greater than mail size |
thomasmorris | 47:6d128e500875 | 16 | { |
thomasmorris | 47:6d128e500875 | 17 | Write_Pointer = Write_Pointer + 1;//Increment write pointer |
thomasmorris | 47:6d128e500875 | 18 | } |
thomasmorris | 47:6d128e500875 | 19 | else |
thomasmorris | 47:6d128e500875 | 20 | { |
thomasmorris | 47:6d128e500875 | 21 | Write_Pointer = 0;//Else set it to 0 thus a FIFO system |
thomasmorris | 47:6d128e500875 | 22 | } |
thomasmorris | 47:6d128e500875 | 23 | Data_Buffer_Lock.unlock();//Releasing lock for critial section |
thomasmorris | 47:6d128e500875 | 24 | return Write_Pointer;//New address of Write pointer |
thomasmorris | 47:6d128e500875 | 25 | |
thomasmorris | 47:6d128e500875 | 26 | } |
thomasmorris | 47:6d128e500875 | 27 | DATA Read_Data(int Read_Pointer) |
thomasmorris | 47:6d128e500875 | 28 | { |
thomasmorris | 47:6d128e500875 | 29 | Data_Buffer_Lock.lock();//Appling lock for critial section |
thomasmorris | 47:6d128e500875 | 30 | DATA Temp_Data = Data_Buffer[Read_Pointer]; |
thomasmorris | 47:6d128e500875 | 31 | Data_Buffer_Lock.unlock();//Releasing lock for critial section |
thomasmorris | 47:6d128e500875 | 32 | |
thomasmorris | 47:6d128e500875 | 33 | return Temp_Data; |
thomasmorris | 47:6d128e500875 | 34 | } |
thomasmorris | 47:6d128e500875 | 35 | void Delete_Data(int Delete_Pointer) |
thomasmorris | 47:6d128e500875 | 36 | { |
thomasmorris | 47:6d128e500875 | 37 | Data_Buffer_Lock.lock();//Appling lock for critial section |
thomasmorris | 47:6d128e500875 | 38 | Data_Buffer[Delete_Pointer].set_all_zero(); |
thomasmorris | 47:6d128e500875 | 39 | Data_Buffer_Lock.unlock();//Releasing lock for critial section |
thomasmorris | 47:6d128e500875 | 40 | } |