esphome/esphome/components/esp_adf/microphone/esp_adf_microphone.h

43 lines
827 B
C++

#pragma once
#ifdef USE_ESP_IDF
#include "../esp_adf.h"
#include "esphome/core/component.h"
#include "esphome/core/ring_buffer.h"
#include "esphome/components/microphone/microphone.h"
namespace esphome {
namespace esp_adf {
class ESPADFMicrophone : public ESPADFPipeline, public microphone::Microphone, public Component {
public:
void setup() override;
void start() override;
void stop() override;
void loop() override;
size_t read(int16_t *buf, size_t len) override;
protected:
void start_();
void read_();
void watch_();
static void read_task(void *params);
std::unique_ptr<RingBuffer> ring_buffer_;
TaskHandle_t read_task_handle_{nullptr};
QueueHandle_t read_event_queue_;
QueueHandle_t read_command_queue_;
};
} // namespace esp_adf
} // namespace esphome
#endif // USE_ESP_IDF