diff options
author | Clyne Sullivan <clyne@clyne-lp.lan> | 2021-07-31 10:47:00 -0400 |
---|---|---|
committer | Clyne Sullivan <clyne@clyne-lp.lan> | 2021-07-31 10:47:00 -0400 |
commit | 123cc4c756cc8a22f66351ab65595c5a20e53e27 (patch) | |
tree | d12ee8cb3d91e08c422e5bd4b5cb01d7dd622b19 /source/periph/adc.hpp | |
parent | d24ed15843c328983f9ed20283f89624e8574b9f (diff) |
reorganized source, wip
Diffstat (limited to 'source/periph/adc.hpp')
-rw-r--r-- | source/periph/adc.hpp | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/source/periph/adc.hpp b/source/periph/adc.hpp new file mode 100644 index 0000000..5f7fa08 --- /dev/null +++ b/source/periph/adc.hpp @@ -0,0 +1,53 @@ +/** + * @file adc.hpp + * @brief Manages signal reading through the ADC. + * + * Copyright (C) 2021 Clyne Sullivan + * + * Distributed under the GNU GPL v3 or later. You should have received a copy of + * the GNU General Public License along with this program. + * If not, see <https://www.gnu.org/licenses/>. + */ + +#ifndef STMDSP_ADC_HPP_ +#define STMDSP_ADC_HPP_ + +#include "hal.h" +#include "sclock.hpp" + +#include <array> + +class ADC +{ +public: + using Operation = void (*)(adcsample_t *buffer, size_t count); + + static void begin(); + + static void start(adcsample_t *buffer, size_t count, Operation operation); + static void stop(); + + static adcsample_t readAlt(unsigned int id); + + static void setRate(SClock::Rate rate); + static void setOperation(Operation operation); + +private: + static ADCDriver *m_driver; + static ADCDriver *m_driver2; + + static const ADCConfig m_config; + static const ADCConfig m_config2; + static ADCConversionGroup m_group_config; + static ADCConversionGroup m_group_config2; + + static adcsample_t *m_current_buffer; + static size_t m_current_buffer_size; + static Operation m_operation; + +public: + static void conversionCallback(ADCDriver *); +}; + +#endif // STMDSP_ADC_HPP_ + |