diff options
Diffstat (limited to 'libsensors_iio/src/CircularBuffer.cpp')
-rw-r--r-- | libsensors_iio/src/CircularBuffer.cpp | 79 |
1 files changed, 0 insertions, 79 deletions
diff --git a/libsensors_iio/src/CircularBuffer.cpp b/libsensors_iio/src/CircularBuffer.cpp deleted file mode 100644 index 20b4de8..0000000 --- a/libsensors_iio/src/CircularBuffer.cpp +++ /dev/null @@ -1,79 +0,0 @@ -/* - * STMicroelectronics Circular Buffer Class - * - * Copyright 2013-2015 STMicroelectronics Inc. - * Author: Denis Ciocca - <denis.ciocca@st.com> - * - * Licensed under the Apache License, Version 2.0 (the "License"). - */ - -#include "CircularBuffer.h" - -#include <stdlib.h> -#include <string.h> -#include <cutils/log.h> - -CircularBuffer::CircularBuffer(unsigned int num_elements) -{ - data_sensor = (SensorBaseData *)malloc(num_elements * sizeof(SensorBaseData)); - - pthread_mutex_init(&data_mutex, NULL); - - lenght = num_elements; - elements_available = 0; - first_free_element = &data_sensor[0]; - first_available_element = &data_sensor[0]; -} - -CircularBuffer::~CircularBuffer() -{ - delete data_sensor; -} - -void CircularBuffer::writeElement(SensorBaseData *data) -{ - pthread_mutex_lock(&data_mutex); - - if (elements_available == lenght) { - first_available_element++; - - if (first_available_element == (&data_sensor[0] + lenght)) - first_available_element = &data_sensor[0]; - } - - memcpy(first_free_element, data, sizeof(SensorBaseData)); - first_free_element++; - - if (first_free_element == (&data_sensor[0] + lenght)) - first_free_element = &data_sensor[0]; - - if (elements_available < lenght) - elements_available++; - - pthread_mutex_unlock(&data_mutex); -} - -int CircularBuffer::readElement(SensorBaseData *data) -{ - int num_remaining_elements; - - pthread_mutex_lock(&data_mutex); - - if (elements_available == 0) { - pthread_mutex_unlock(&data_mutex); - return -EFAULT; - } - - memcpy(data, first_available_element, sizeof(SensorBaseData)); - first_available_element++; - - if (first_available_element == (&data_sensor[0] + lenght)) - first_available_element = &data_sensor[0]; - - elements_available--; - num_remaining_elements = elements_available; - - pthread_mutex_unlock(&data_mutex); - - return num_remaining_elements; -} |