1/*
 2 * Copyright (c) 2021 Arm Limited and Contributors. All rights reserved.
 3 *
 4 * SPDX-License-Identifier: Apache-2.0
 5 * 
 6 */
 7
 8#ifndef _PICO_PDM_MICROPHONE_H_
 9#define _PICO_PDM_MICROPHONE_H_
10
11#include "hardware/pio.h"
12
13typedef void (*pdm_samples_ready_handler_t)(void);
14
15struct pdm_microphone_config {
16    uint gpio_data;
17    uint gpio_clk;
18    PIO pio;
19    uint pio_sm;
20    uint sample_rate;
21    uint sample_buffer_size;
22};
23
24int pdm_microphone_init(const struct pdm_microphone_config* config);
25void pdm_microphone_deinit();
26
27int pdm_microphone_start();
28void pdm_microphone_stop();
29
30void pdm_microphone_set_samples_ready_handler(pdm_samples_ready_handler_t handler);
31void pdm_microphone_set_filter_max_volume(uint8_t max_volume);
32void pdm_microphone_set_filter_gain(uint8_t gain);
33void pdm_microphone_set_filter_volume(uint16_t volume);
34
35int pdm_microphone_read(int16_t* buffer, size_t samples);
36
37#endif