From 56464728159c4e975fe1eecdb9a3687bc1a05c1d Mon Sep 17 00:00:00 2001 From: Jerome Hue Date: Sat, 24 Aug 2024 23:27:19 +0200 Subject: [PATCH] Rename ringbuffer to ringarray --- Sts1CobcSw/Periphery/CMakeLists.txt | 10 ++++-- .../{FramRingBuffer.hpp => FramRingArray.hpp} | 12 +++---- .../{FramRingBuffer.ipp => FramRingArray.ipp} | 20 +++++------ Tests/UnitTests/CMakeLists.txt | 6 ++-- ...Buffer.test.cpp => FramRingArray.test.cpp} | 34 +++++++++---------- 5 files changed, 44 insertions(+), 38 deletions(-) rename Sts1CobcSw/Periphery/{FramRingBuffer.hpp => FramRingArray.hpp} (71%) rename Sts1CobcSw/Periphery/{FramRingBuffer.ipp => FramRingArray.ipp} (81%) rename Tests/UnitTests/{FramRingBuffer.test.cpp => FramRingArray.test.cpp} (83%) diff --git a/Sts1CobcSw/Periphery/CMakeLists.txt b/Sts1CobcSw/Periphery/CMakeLists.txt index deb48f95..c07d766d 100644 --- a/Sts1CobcSw/Periphery/CMakeLists.txt +++ b/Sts1CobcSw/Periphery/CMakeLists.txt @@ -2,8 +2,14 @@ target_link_libraries(Sts1CobcSw_Periphery PUBLIC rodos::rodos Sts1CobcSw_Serial if(CMAKE_SYSTEM_NAME STREQUAL Generic) target_sources( - Sts1CobcSw_Periphery PRIVATE PersistentState.cpp Flash.cpp Fram.cpp Rf.cpp Eps.cpp - FramEpsSpi.cpp + Sts1CobcSw_Periphery + PRIVATE PersistentState.cpp + Flash.cpp + Fram.cpp + Rf.cpp + Eps.cpp + FramEpsSpi.cpp + FramRingArray.cpp ) target_link_libraries(Sts1CobcSw_Periphery PRIVATE Sts1CobcSw_Utility) target_link_libraries(Sts1CobcSw_Periphery PUBLIC Sts1CobcSw_Hal) diff --git a/Sts1CobcSw/Periphery/FramRingBuffer.hpp b/Sts1CobcSw/Periphery/FramRingArray.hpp similarity index 71% rename from Sts1CobcSw/Periphery/FramRingBuffer.hpp rename to Sts1CobcSw/Periphery/FramRingArray.hpp index 7903ca86..c4adc549 100644 --- a/Sts1CobcSw/Periphery/FramRingBuffer.hpp +++ b/Sts1CobcSw/Periphery/FramRingArray.hpp @@ -17,10 +17,10 @@ namespace sts1cobcsw::fram { template -class RingBuffer +class RingArray { public: - RingBuffer() : bufferSize_(size + 1U), offset_(sizeof(std::size_t) * 2) + RingArray() : bufferSize_(size + 1U), offset_(sizeof(std::size_t) * 2) { Initialize(); }; @@ -32,13 +32,13 @@ class RingBuffer auto Front() -> T; auto Back() -> T; - //! @brief Returns the current size of the ringbuffer + //! @brief Returns the current size of the ring array auto Size() -> std::size_t; - //! @brief Returns the capacity of the ringbuffer + //! @brief Returns the capacity of the ring array auto Capacity() -> std::size_t; - // @brief Initializes the ringbuffer by reading indices from FRAM + // @brief Initializes the ring array by reading indices from FRAM auto Initialize() -> void; private: @@ -53,4 +53,4 @@ class RingBuffer } -#include // IWYU pragma: keep +#include // IWYU pragma: keep diff --git a/Sts1CobcSw/Periphery/FramRingBuffer.ipp b/Sts1CobcSw/Periphery/FramRingArray.ipp similarity index 81% rename from Sts1CobcSw/Periphery/FramRingBuffer.ipp rename to Sts1CobcSw/Periphery/FramRingArray.ipp index 41bff372..a76c4386 100644 --- a/Sts1CobcSw/Periphery/FramRingBuffer.ipp +++ b/Sts1CobcSw/Periphery/FramRingArray.ipp @@ -1,13 +1,13 @@ #pragma once -#include +#include namespace sts1cobcsw::fram { template -void RingBuffer::Push(T const & newData) +void RingArray::Push(T const & newData) { auto const rawAddress = offset_ + value_of(startAddress) + (iEnd_ * serialSize); fram::WriteTo(fram::Address(rawAddress), Span(Serialize(newData)), 0); @@ -23,7 +23,7 @@ void RingBuffer::Push(T const & newData) template -auto RingBuffer::Front() -> T +auto RingArray::Front() -> T { auto const rawAddress = offset_ + value_of(startAddress) + (iBegin_ * serialSize); auto readData = fram::ReadFrom>(fram::Address(rawAddress), 0); @@ -34,7 +34,7 @@ auto RingBuffer::Front() -> T template -auto RingBuffer::Back() -> T +auto RingArray::Back() -> T { std::uint32_t readIndex = 0; if(iEnd_ == 0) @@ -55,7 +55,7 @@ auto RingBuffer::Back() -> T template -auto RingBuffer::operator[](std::size_t index) -> T +auto RingArray::operator[](std::size_t index) -> T { auto const rawAddress = offset_ + value_of(startAddress) + ((iBegin_ + index) % bufferSize_) * serialSize; @@ -67,7 +67,7 @@ auto RingBuffer::operator[](std::size_t index) -> T template -auto RingBuffer::Size() -> std::size_t +auto RingArray::Size() -> std::size_t { if(iEnd_ >= iBegin_) { @@ -77,19 +77,19 @@ auto RingBuffer::Size() -> std::size_t } template -auto RingBuffer::Capacity() -> std::size_t +auto RingArray::Capacity() -> std::size_t { return (bufferSize_ - 1U); } template -auto RingBuffer::Initialize() -> void +auto RingArray::Initialize() -> void { ReadIndices(); } template -auto RingBuffer::WriteIndices() -> void +auto RingArray::WriteIndices() -> void { auto beginAddress = value_of(startAddress); auto endAddress = beginAddress + sizeof(std::size_t); @@ -99,7 +99,7 @@ auto RingBuffer::WriteIndices() -> void } template -auto RingBuffer::ReadIndices() -> void +auto RingArray::ReadIndices() -> void { auto beginAddress = value_of(startAddress); auto endAddress = beginAddress + sizeof(std::size_t); diff --git a/Tests/UnitTests/CMakeLists.txt b/Tests/UnitTests/CMakeLists.txt index bb39091d..b2a30fb2 100644 --- a/Tests/UnitTests/CMakeLists.txt +++ b/Tests/UnitTests/CMakeLists.txt @@ -11,10 +11,10 @@ target_link_libraries( Sts1CobcSw_Utility ) -add_program(FramRingBuffer FramRingBuffer.test.cpp) +add_program(FramRingArray FramRingArray.test.cpp) target_link_libraries( - Sts1CobcSwTests_FramRingBuffer PRIVATE Catch2::Catch2WithMain Sts1CobcSw_Periphery - Sts1CobcSw_Serial Sts1CobcSw_Edu + Sts1CobcSwTests_FramRingArray PRIVATE Catch2::Catch2WithMain Sts1CobcSw_Periphery + Sts1CobcSw_Serial Sts1CobcSw_Edu ) # TODO: Enable again once problem with segmentation violation on CI is fixed diff --git a/Tests/UnitTests/FramRingBuffer.test.cpp b/Tests/UnitTests/FramRingArray.test.cpp similarity index 83% rename from Tests/UnitTests/FramRingBuffer.test.cpp rename to Tests/UnitTests/FramRingArray.test.cpp index 7724afc7..601645bd 100644 --- a/Tests/UnitTests/FramRingBuffer.test.cpp +++ b/Tests/UnitTests/FramRingArray.test.cpp @@ -1,7 +1,7 @@ #include #include #include -#include +#include #include #include @@ -20,15 +20,15 @@ using sts1cobcsw::operator""_b; // NOLINT(misc-unused-using-decls) TEST_CASE("Initial State ringbuffer") { - fram::RingBuffer buffer; + fram::RingArray buffer; REQUIRE(buffer.Size() == 0); REQUIRE(buffer.Capacity() == 10); // Fixed from 0 to 10 to reflect actual buffer capacity } -TEST_CASE("FramRingBuffer Push function") +TEST_CASE("FramRingArray Push function") { - fram::RingBuffer buffer; + fram::RingArray buffer; buffer.Push(1); buffer.Push(2); @@ -37,7 +37,7 @@ TEST_CASE("FramRingBuffer Push function") REQUIRE(buffer.Size() == 3); } -TEMPLATE_TEST_CASE_SIG("FramRingBuffer Front Address", +TEMPLATE_TEST_CASE_SIG("FramRingArray Front Address", "", ((typename T, size_t S, fram::Address A), T, S, A), (int, 10U, fram::Address{0}), @@ -47,7 +47,7 @@ TEMPLATE_TEST_CASE_SIG("FramRingBuffer Front Address", fram::ram::memory.fill(0x00_b); fram::Initialize(); - fram::RingBuffer buffer; + fram::RingArray buffer; // FIXME: [] not working buffer.Push(10); @@ -63,13 +63,13 @@ TEMPLATE_TEST_CASE_SIG("FramRingBuffer Front Address", REQUIRE(buffer[2] == 30); } -TEST_CASE("FramRingBuffer Back() and Front() methods") +TEST_CASE("FramRingArray Back() and Front() methods") { fram::ram::SetAllDoFunctions(); fram::ram::memory.fill(0x00_b); fram::Initialize(); - auto buffer = fram::RingBuffer(); + auto buffer = fram::RingArray(); etl::circular_buffer etlBuffer; // NOLINTNEXTLINE (readability-container-size-empty) @@ -121,13 +121,13 @@ TEST_CASE("FramRingBuffer Back() and Front() methods") REQUIRE(buffer[2] == 4); } -TEST_CASE("FramRingBuffer Full and Empty conditions") +TEST_CASE("FramRingArray Full and Empty conditions") { fram::ram::SetAllDoFunctions(); fram::ram::memory.fill(0x00_b); fram::Initialize(); - auto buffer = fram::RingBuffer{}; + auto buffer = fram::RingArray{}; REQUIRE(buffer.Size() == 0); REQUIRE(buffer.Capacity() == 3); @@ -153,13 +153,13 @@ TEST_CASE("FramRingBuffer Full and Empty conditions") REQUIRE(buffer.Back() == 10); } -TEST_CASE("FramRingBuffer and ETL Circular Buffer") +TEST_CASE("FramRingArray and ETL Circular Buffer") { fram::ram::SetAllDoFunctions(); fram::ram::memory.fill(0x00_b); fram::Initialize(); - fram::RingBuffer framBuffer{}; + fram::RingArray framBuffer{}; etl::circular_buffer etlBuffer; for(int i = 0; i < 5; ++i) @@ -181,13 +181,13 @@ TEST_CASE("FramRingBuffer and ETL Circular Buffer") REQUIRE(framBuffer.Back() == etlBuffer.back()); } -TEST_CASE("FramRingBuffer Stress Test") +TEST_CASE("FramRingArray Stress Test") { fram::ram::SetAllDoFunctions(); fram::ram::memory.fill(0x00_b); fram::Initialize(); - auto buffer = fram::RingBuffer(); + auto buffer = fram::RingArray(); for(int i = 0; i < 10000; ++i) { @@ -209,7 +209,7 @@ TEST_CASE("Custom Type") fram::Initialize(); - fram::RingBuffer buffer; + fram::RingArray buffer; auto pshEntry = sts1cobcsw::edu::ProgramStatusHistoryEntry{ .programId = sts1cobcsw::ProgramId(0), @@ -230,14 +230,14 @@ TEST_CASE("Reset mechanism") fram::Initialize(); { - sts1cobcsw::fram::RingBuffer buffer; + sts1cobcsw::fram::RingArray buffer; buffer.Push(1); buffer.Push(2); buffer.Push(3); } // Simulate a reset by creating a new buffer instance - fram::RingBuffer buffer; + fram::RingArray buffer; REQUIRE(buffer.Size() == 3); REQUIRE(buffer.Front() == 1);