diff --git a/firmware/util/cyclic_buffer.h b/firmware/util/cyclic_buffer.h index a96701782b..169db37791 100644 --- a/firmware/util/cyclic_buffer.h +++ b/firmware/util/cyclic_buffer.h @@ -34,9 +34,10 @@ class cyclic_buffer public: void add(T value); - int get(int index); + T get(int index); T sum(int length); void setSize(int size); + int getSize(); void clear(); private: @@ -108,8 +109,19 @@ void cyclic_buffer::setSize(int size) { } template -int cyclic_buffer::get(int index) { - return 0; +int cyclic_buffer::getSize() { + return size; +} + +template +T cyclic_buffer::get(int index) { + while (index < 0) { + index += size; + } + while (index >= size) { + index -= size; + } + return elements[index]; } template