ESPHome 2026.5.1
Loading...
Searching...
No Matches
i2s_audio_microphone.h
Go to the documentation of this file.
1#pragma once
2
3#ifdef USE_ESP32
4
5#include "../i2s_audio.h"
6
9
10#include <freertos/FreeRTOS.h>
11#include <freertos/event_groups.h>
12#include <freertos/semphr.h>
13#include <freertos/task.h>
14
15namespace esphome::i2s_audio {
16
18 public:
19 void setup() override;
20 void dump_config() override;
21 void start() override;
22 void stop() override;
23
24 void loop() override;
25
26 void set_correct_dc_offset(bool correct_dc_offset) { this->correct_dc_offset_ = correct_dc_offset; }
27
28 void set_din_pin(int8_t pin) { this->din_pin_ = (gpio_num_t) pin; }
29
30 void set_pdm(bool pdm) { this->pdm_ = pdm; }
31
32 protected:
35 bool start_driver_();
36
38 void stop_driver_();
39
43 void fix_dc_offset_(std::vector<uint8_t> &data);
44
45 size_t read_(uint8_t *buf, size_t len, TickType_t ticks_to_wait);
46
49
50 static void mic_task(void *params);
51
52 SemaphoreHandle_t active_listeners_semaphore_{nullptr};
53 EventGroupHandle_t event_group_{nullptr};
54
55 TaskHandle_t task_handle_{nullptr};
56
57 gpio_num_t din_pin_{I2S_GPIO_UNUSED};
58 i2s_chan_handle_t rx_handle_;
59 bool pdm_{false};
60
62 bool locked_driver_{false};
65};
66
67} // namespace esphome::i2s_audio
68
69#endif // USE_ESP32
void set_correct_dc_offset(bool correct_dc_offset)
void configure_stream_settings_()
Starts the I2S driver.
std::string size_t len