From 3cf361151427e0f93ecc36575bbed63502c73adc Mon Sep 17 00:00:00 2001 From: Troy Gruetzmacher Date: Thu, 1 Dec 2022 07:31:58 -0700 Subject: [PATCH] added end method to PDM to facilitate stopping PDM --- libraries/PDM/src/PDM.cpp | 20 ++++++++++++++++++++ libraries/PDM/src/PDM.h | 1 + 2 files changed, 21 insertions(+) diff --git a/libraries/PDM/src/PDM.cpp b/libraries/PDM/src/PDM.cpp index c32756ea..8c169980 100644 --- a/libraries/PDM/src/PDM.cpp +++ b/libraries/PDM/src/PDM.cpp @@ -37,6 +37,26 @@ bool AP3_PDM::begin(pin_size_t pinPDMData, pin_size_t pinPDMClock) return (true); } +bool AP3_PDM::end() +{ + uint32_t retval = am_hal_pdm_disable(_PDMhandle); + if (retval != AP3_OK) + { + return false; + } + retval = (uint32_t)am_hal_pdm_power_control(_PDMhandle, AM_HAL_PDM_POWER_OFF, false); + if (retval != AP3_OK) + { + return retval; + } + retval = am_hal_pdm_deinitialize(_PDMhandle); + if (retval != AP3_OK) + { + return false; + } + return true; +} + bool AP3_PDM::available(void) { if (buff1New || buff2New) diff --git a/libraries/PDM/src/PDM.h b/libraries/PDM/src/PDM.h index 98a0bc7d..2b81dcfd 100644 --- a/libraries/PDM/src/PDM.h +++ b/libraries/PDM/src/PDM.h @@ -96,6 +96,7 @@ class AP3_PDM //AP3_PDM(uint16_t *userBuffer, uint32_t bufferSize); bool begin(pin_size_t pinPDMData = MIC_DATA, pin_size_t pinPDMClock = MIC_CLOCK); + bool end(); bool available(void); //Goes true if circular buffer is not empty bool isOverrun(void); //Goes true if head crosses tail