ESPHome 2026.5.0-dev
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 {
16namespace i2s_audio {
17
19 public:
20 void setup() override;
21 void dump_config() override;
22 void start() override;
23 void stop() override;
24
25 void loop() override;
26
27 void set_correct_dc_offset(bool correct_dc_offset) { this->correct_dc_offset_ = correct_dc_offset; }
28
29 void set_din_pin(int8_t pin) { this->din_pin_ = (gpio_num_t) pin; }
30
31 void set_pdm(bool pdm) { this->pdm_ = pdm; }
32
33 protected:
36 bool start_driver_();
37
39 void stop_driver_();
40
44 void fix_dc_offset_(std::vector<uint8_t> &data);
45
46 size_t read_(uint8_t *buf, size_t len, TickType_t ticks_to_wait);
47
50
51 static void mic_task(void *params);
52
53 SemaphoreHandle_t active_listeners_semaphore_{nullptr};
54 EventGroupHandle_t event_group_{nullptr};
55
56 TaskHandle_t task_handle_{nullptr};
57
58 gpio_num_t din_pin_{I2S_GPIO_UNUSED};
59 i2s_chan_handle_t rx_handle_;
60 bool pdm_{false};
61
63 bool locked_driver_{false};
66};
67
68} // namespace i2s_audio
69} // namespace esphome
70
71#endif // USE_ESP32
void set_correct_dc_offset(bool correct_dc_offset)
void configure_stream_settings_()
Starts the I2S driver.
Providing packet encoding functions for exchanging data with a remote host.
Definition a01nyub.cpp:7
std::string size_t len
Definition helpers.h:1045