4 #ifndef __M5_Mic_Class_H__
5 #define __M5_Mic_Class_H__
9 #if defined ( ESP_PLATFORM )
11 #include <freertos/FreeRTOS.h>
12 #include <freertos/semphr.h>
13 #include <freertos/task.h>
14 #include <soc/i2s_struct.h>
16 #if __has_include(<driver/i2s_std.h>)
17 #include <driver/i2s_std.h>
19 #include <driver/i2s.h>
26 #ifndef I2S_PIN_NO_CHANGE
27 #define I2S_PIN_NO_CHANGE (-1)
115 bool record(uint8_t* rec_data,
size_t array_len, uint32_t sample_rate,
bool stereo =
false)
117 return _rec_raw(rec_data, array_len,
false, sample_rate, stereo);
125 bool record(int16_t* rec_data,
size_t array_len, uint32_t sample_rate,
bool stereo =
false)
127 return _rec_raw(rec_data, array_len,
true, sample_rate, stereo);
133 bool record(uint8_t* rec_data,
size_t array_len)
141 bool record(int16_t* rec_data,
size_t array_len)
166 bool _rec_raw(
void* recdata,
size_t array_len,
bool flg_16bit, uint32_t sample_rate,
bool stereo);
#define I2S_PIN_NO_CHANGE
bool isEnabled(void) const
esp_err_t _setup_i2s(void)
size_t isRecording(void) const
void setCallback(void *args, bool(*func)(void *, bool))
volatile bool _task_running
recording_info_t _rec_info[2]
bool record(uint8_t *rec_data, size_t array_len, uint32_t sample_rate, bool stereo=false)
static void mic_task(void *args)
volatile bool _is_recording
mic_config_t config(void) const
uint32_t _rec_sample_rate
bool record(uint8_t *rec_data, size_t array_len)
volatile SemaphoreHandle_t _task_semaphore
bool isRunning(void) const
void config(const mic_config_t &cfg)
bool(* _cb_set_enabled)(void *args, bool enabled)
void * _cb_set_enabled_args
bool record(int16_t *rec_data, size_t array_len, uint32_t sample_rate, bool stereo=false)
bool record(int16_t *rec_data, size_t array_len)
uint32_t _calc_rec_rate(void) const
void setSampleRate(uint32_t sample_rate)
TaskHandle_t _task_handle
bool _rec_raw(void *recdata, size_t array_len, bool flg_16bit, uint32_t sample_rate, bool stereo)
uint8_t task_priority
background task priority
i2s_port_t i2s_port
I2S port.
int pin_data_in
i2s_data_in (for mic)
uint8_t over_sampling
Sampling times of obtain the average value.
int input_offset
<<This value is no longer used>>
size_t dma_buf_count
for I2S dma_buf_count
uint32_t sample_rate
input sampling rate (Hz)
uint8_t noise_filter_level
Coefficient of the previous value, used for noise filtering.
bool use_adc
use analog input mic ( need only pin_data_in )
size_t dma_buf_len
for I2S dma_buf_len
bool stereo
use stereo output
uint8_t task_pinned_core
background task pinned core
uint8_t magnification
multiplier for input value