From f440728644ad3698ffd6af1abcfcc07aad5793c3 Mon Sep 17 00:00:00 2001
From: Clyne Sullivan <clyne@bitgloo.com>
Date: Tue, 8 Aug 2023 23:10:02 -0400
Subject: initial commit

* combine all source files into this monorepo

* convert all third-party source packages into submodules

* small fixes due to changes in latest third-part packages
---
 firmware/source/periph/adc.hpp | 53 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 53 insertions(+)
 create mode 100644 firmware/source/periph/adc.hpp

(limited to 'firmware/source/periph/adc.hpp')

diff --git a/firmware/source/periph/adc.hpp b/firmware/source/periph/adc.hpp
new file mode 100644
index 0000000..5f7fa08
--- /dev/null
+++ b/firmware/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_
+
-- 
cgit v1.2.3