#ifndef FRAMEWORK_CONTAINER_SIMPLERINGBUFFER_H_ #define FRAMEWORK_CONTAINER_SIMPLERINGBUFFER_H_ #include #include /** * Circular buffer implementation, useful for buffering into data streams. * Note that the deleteData() has to be called to increment the read pointer */ class SimpleRingBuffer: public RingBufferBase<> { public: SimpleRingBuffer(uint32_t size, bool overwriteOld); virtual ~SimpleRingBuffer(); /** * Write to circular buffer and increment write pointer by amount * @param data * @param amount * @return */ ReturnValue_t writeData(const uint8_t* data, uint32_t amount); /** * Read from circular buffer at read pointer * @param data * @param amount * @param readRemaining * @param trueAmount * @return */ ReturnValue_t readData(uint8_t* data, uint32_t amount, bool readRemaining = false, uint32_t* trueAmount = NULL); /** * Delete data starting by incrementing read pointer * @param amount * @param deleteRemaining * @param trueAmount * @return */ ReturnValue_t deleteData(uint32_t amount, bool deleteRemaining = false, uint32_t* trueAmount = NULL); private: // static const uint8_t TEMP_READ_PTR = 1; static const uint8_t READ_PTR = 0; uint8_t* buffer; }; #endif /* FRAMEWORK_CONTAINER_SIMPLERINGBUFFER_H_ */