From 4dcfa5125edf80f2bc6bde7861e1da394b4d7a4e Mon Sep 17 00:00:00 2001 From: "Robin.Mueller" Date: Tue, 4 Aug 2020 11:47:47 +0200 Subject: [PATCH] added additional calls --- container/SharedRingBuffer.cpp | 10 ++++++++++ container/SharedRingBuffer.h | 8 ++++++++ container/SimpleRingBuffer.cpp | 2 +- container/SimpleRingBuffer.h | 4 ++-- 4 files changed, 21 insertions(+), 3 deletions(-) diff --git a/container/SharedRingBuffer.cpp b/container/SharedRingBuffer.cpp index 86277a80e..2fde2851b 100644 --- a/container/SharedRingBuffer.cpp +++ b/container/SharedRingBuffer.cpp @@ -43,6 +43,16 @@ ReturnValue_t SharedRingBuffer::deleteDataProtected(size_t amount, return SimpleRingBuffer::deleteData(amount, deleteRemaining, trueAmount); } +size_t SharedRingBuffer::getExcessBytes() const { + MutexHelper(mutex, mutexTimeout); + return SimpleRingBuffer::getExcessBytes(); +} + +void SharedRingBuffer::moveExcessBytesToStart() { + MutexHelper(mutex, mutexTimeout); + return SimpleRingBuffer::moveExcessBytesToStart(); +} + size_t SharedRingBuffer::getAvailableReadDataProtected(uint8_t n) const { MutexHelper(mutex, mutexTimeout); return ((write + size) - read[n]) % size; diff --git a/container/SharedRingBuffer.h b/container/SharedRingBuffer.h index 7fed7b221..8d68b9678 100644 --- a/container/SharedRingBuffer.h +++ b/container/SharedRingBuffer.h @@ -34,6 +34,14 @@ public: void setMutexTimeout(dur_millis_t newTimeout); + virtual size_t getExcessBytes() const override; + /** + * Helper functions which moves any excess bytes to the start + * of the ring buffer. + * @return + */ + virtual void moveExcessBytesToStart() override; + /** Performs mutex protected SimpleRingBuffer::getFreeElement call */ ReturnValue_t getFreeElementProtected(uint8_t** writePtr, size_t amount); diff --git a/container/SimpleRingBuffer.cpp b/container/SimpleRingBuffer.cpp index cad1a48e9..368808133 100644 --- a/container/SimpleRingBuffer.cpp +++ b/container/SimpleRingBuffer.cpp @@ -39,7 +39,7 @@ ReturnValue_t SimpleRingBuffer::getFreeElement(uint8_t **writePointer, if((amount - amountTillWrap + excessBytes) > maxExcessBytes) { return HasReturnvaluesIF::RETURN_FAILED; } - excessBytes += amount - amountTillWrap; + excessBytes = amount - amountTillWrap; } *writePointer = &buffer[write]; incrementWrite(amount); diff --git a/container/SimpleRingBuffer.h b/container/SimpleRingBuffer.h index 2627541f1..0784e4152 100644 --- a/container/SimpleRingBuffer.h +++ b/container/SimpleRingBuffer.h @@ -64,13 +64,13 @@ public: */ ReturnValue_t getFreeElement(uint8_t** writePointer, size_t amount); - size_t getExcessBytes() const; + virtual size_t getExcessBytes() const; /** * Helper functions which moves any excess bytes to the start * of the ring buffer. * @return */ - void moveExcessBytesToStart(); + virtual void moveExcessBytesToStart(); /** * Read from circular buffer at read pointer.