![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Finished project.
Fork of ReferredCoursework2016 by
Diff: buffer.cpp
- Revision:
- 91:cd9fcd45ecf6
- Parent:
- 90:38dfa3f350aa
--- a/buffer.cpp Thu Aug 17 02:42:30 2017 +0000 +++ b/buffer.cpp Thu Aug 17 06:58:29 2017 +0000 @@ -19,23 +19,25 @@ int32_t averageY; int32_t averageZ; +Mutex mutex2; //Pushes data on to buffer using modulo operation. void log_push(AccelData data) { - - rear = (rear + 1) % 10; + mutex2.lock(); - if (rear == front) { - front = (front + 1) % 10; + rear = (rear + 1) % 10; + + if (rear == front) { + front = (front + 1) % 10; } - circular_buffer_array[rear] = data; - + circular_buffer_array[rear] = data; + mutex2.unlock(); } //Retrieves a single data struct using the argument to specify which. AccelData log_get(int index) { - + AccelData record; record = circular_buffer_array[(front + index) % 10]; @@ -50,7 +52,7 @@ void print_averages(){ while(1){ - + mutex2.lock(); for (int i = 0; i < 10; i++) { AccelData entry = log_get(i); @@ -75,5 +77,6 @@ sumX = 0; sumY = 0; sumZ = 0; + mutex2.unlock(); } }