ESPHome  2024.4.2
ring_buffer.h
Go to the documentation of this file.
1 #pragma once
2 
3 #ifdef USE_ESP32
4 
5 #include <freertos/FreeRTOS.h>
6 #include <freertos/stream_buffer.h>
7 
8 #include <cinttypes>
9 #include <memory>
10 
11 namespace esphome {
12 
13 class RingBuffer {
14  public:
15  size_t read(void *data, size_t len, TickType_t ticks_to_wait = 0);
16 
17  size_t write(void *data, size_t len);
18 
19  size_t available() const;
20  size_t free() const;
21 
22  BaseType_t reset();
23 
24  static std::unique_ptr<RingBuffer> create(size_t len);
25 
26  protected:
27  StreamBufferHandle_t handle_;
28  StaticStreamBuffer_t structure_;
29  uint8_t *storage_;
30 };
31 
32 } // namespace esphome
33 
34 #endif
uint8_t * storage_
Definition: ring_buffer.h:29
size_t free() const
Definition: ring_buffer.cpp:44
StaticStreamBuffer_t structure_
Definition: ring_buffer.h:28
BaseType_t reset()
Definition: ring_buffer.cpp:46
size_t read(void *data, size_t len, TickType_t ticks_to_wait=0)
Definition: ring_buffer.cpp:28
size_t available() const
Definition: ring_buffer.cpp:42
std::string size_t len
Definition: helpers.h:292
This is a workaround until we can figure out a way to get the tflite-micro idf component code availab...
Definition: a01nyub.cpp:7
size_t write(void *data, size_t len)
Definition: ring_buffer.cpp:32
static std::unique_ptr< RingBuffer > create(size_t len)
Definition: ring_buffer.cpp:14
StreamBufferHandle_t handle_
Definition: ring_buffer.h:27