From 52cf5ace03e0d5280df66b97f21113f10b682332 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Cl=C3=A9ment=20Foucher?= <cfoucher@laas.fr>
Date: Mon, 28 Mar 2022 18:02:40 +0200
Subject: [PATCH] Move ADC source event enum to ADC Driver.

---
 .../zephyr/public_api/adc.c                   | 28 ++++++++++++++--
 .../zephyr/public_api/adc.h                   | 32 ++++++++++++++-----
 .../public_api/HardwareConfiguration.cpp      |  3 +-
 .../zephyr/public_api/HardwareConfiguration.h |  3 +-
 .../zephyr/src/adc_configuration.cpp          | 28 ++--------------
 .../zephyr/src/adc_configuration.h            | 16 +++-------
 6 files changed, 61 insertions(+), 49 deletions(-)

diff --git a/zephyr/modules/owntech_adc_driver/zephyr/public_api/adc.c b/zephyr/modules/owntech_adc_driver/zephyr/public_api/adc.c
index 2a82441..d811e8f 100644
--- a/zephyr/modules/owntech_adc_driver/zephyr/public_api/adc.c
+++ b/zephyr/modules/owntech_adc_driver/zephyr/public_api/adc.c
@@ -62,12 +62,36 @@ void adc_set_dual_mode(uint8_t dual_mode)
 	adc_core_set_dual_mode(dual_mode);
 }
 
-void adc_configure_trigger_source(uint8_t adc_number, uint32_t trigger_source)
+void adc_configure_trigger_source(uint8_t adc_number, adc_ev_src_t trigger_source)
 {
+	/////
+	// Convert to LL constants
+
+	uint32_t trig;
+	switch (trigger_source)
+	{
+	case hrtim_ev1:
+		trig = LL_ADC_REG_TRIG_EXT_HRTIM_TRG1;
+		break;
+	case hrtim_ev2:
+		trig = LL_ADC_REG_TRIG_EXT_HRTIM_TRG2;
+		break;
+	case hrtim_ev3:
+		trig = LL_ADC_REG_TRIG_EXT_HRTIM_TRG3;
+		break;
+	case hrtim_ev4:
+		trig = LL_ADC_REG_TRIG_EXT_HRTIM_TRG4;
+		break;
+	case software:
+	default:
+		trig = LL_ADC_REG_TRIG_SOFTWARE;
+		break;
+	}
+
 	// Only store configuration: it must be applied after ADC enable
 	if ( (adc_number > 0) && (adc_number <= NUMBER_OF_ADCS) )
 	{
-		adc_trigger_sources[adc_number-1] = trigger_source;
+		adc_trigger_sources[adc_number-1] = trig;
 	}
 }
 
diff --git a/zephyr/modules/owntech_adc_driver/zephyr/public_api/adc.h b/zephyr/modules/owntech_adc_driver/zephyr/public_api/adc.h
index 0b91a13..91b6112 100644
--- a/zephyr/modules/owntech_adc_driver/zephyr/public_api/adc.h
+++ b/zephyr/modules/owntech_adc_driver/zephyr/public_api/adc.h
@@ -47,6 +47,22 @@ extern "C" {
 #endif
 
 
+/////
+// Public enums
+
+typedef enum
+{
+	hrtim_ev1,
+	hrtim_ev2,
+	hrtim_ev3,
+	hrtim_ev4,
+	software
+} adc_ev_src_t;
+
+
+/////
+// Public API
+
 /**
  * @brief Initializes the ADCs. It must be
  * called *before* any configuration is made.
@@ -67,17 +83,16 @@ void adc_set_dual_mode(uint8_t dual_mode);
  * Registers the triger source for an ADC.
  * It will be applied when ADC is started.
  *
- * @param adc_number Number of the ADC to configure
- * @param triggger_source Source of the trigger as defined
- *        in stm32gxx_ll_adc.h (LL_ADC_REG_TRIG_***)
+ * @param adc_number Number of the ADC to configure.
+ * @param triggger_source Source of the trigger.
  */
-void adc_configure_trigger_source(uint8_t adc_number, uint32_t trigger_source);
+void adc_configure_trigger_source(uint8_t adc_number, adc_ev_src_t trigger_source);
 
 /**
  * Registers the discontinuous count for an ADC.
  * It will be applied when ADC is started.
  *
- * @param adc_number Number of the ADC to configure
+ * @param adc_number Number of the ADC to configure.
  * @param dicontinuous_count Number of channels to acquire on each
  *        trigger event. 0 to disable discontinuous mode (default).
  */
@@ -103,7 +118,8 @@ int8_t adc_configure_adc_channels(uint8_t adc_number, const char* channel_list[]
 
 /**
  * Get the number of enabled channels for an ADC.
- * @param  adc_num Number of the ADC
+ *
+ * @param  adc_num Number of the ADC.
  * @return Number of enabled channels in this ADC.
  */
 uint8_t adc_get_enabled_channels_count(uint8_t adc_num);
@@ -116,10 +132,10 @@ void adc_start();
 /**
  * This function returns the name of an enabled channel.
  *
- * This function must onle be called after
+ * This function must only be called after
  * adc_configure_adc_channels has been called.
  *
- * @param  adc_number Number of the ADC
+ * @param  adc_number Number of the ADC.
  * @param  channel_rank Rank of the ADC channel to query.
  *         Rank ranges from 0 to (number of enabled channels)-1
  * @return Name of the channel as defined in the device tree, or
diff --git a/zephyr/modules/owntech_hardware_configuration/zephyr/public_api/HardwareConfiguration.cpp b/zephyr/modules/owntech_hardware_configuration/zephyr/public_api/HardwareConfiguration.cpp
index 19de4f2..50af50b 100644
--- a/zephyr/modules/owntech_hardware_configuration/zephyr/public_api/HardwareConfiguration.cpp
+++ b/zephyr/modules/owntech_hardware_configuration/zephyr/public_api/HardwareConfiguration.cpp
@@ -19,6 +19,7 @@
 
 /**
  * @date   2022
+ *
  * @author Clément Foucher <clement.foucher@laas.fr>
  */
 
@@ -241,7 +242,7 @@ int8_t HardwareConfiguration::configureAdcChannels(uint8_t adc_number, const cha
 	return configure_adc_channels(adc_number, channel_list, channel_count);
 }
 
-void HardwareConfiguration::configureAdcTriggerSource(uint8_t adc_number, adc_src_t trigger_source)
+void HardwareConfiguration::configureAdcTriggerSource(uint8_t adc_number, adc_ev_src_t trigger_source)
 {
 	configure_adc_trigger_source(adc_number, trigger_source);
 }
diff --git a/zephyr/modules/owntech_hardware_configuration/zephyr/public_api/HardwareConfiguration.h b/zephyr/modules/owntech_hardware_configuration/zephyr/public_api/HardwareConfiguration.h
index 4a66b41..cc9b863 100644
--- a/zephyr/modules/owntech_hardware_configuration/zephyr/public_api/HardwareConfiguration.h
+++ b/zephyr/modules/owntech_hardware_configuration/zephyr/public_api/HardwareConfiguration.h
@@ -19,6 +19,7 @@
 
 /**
  * @date   2022
+ *
  * @author Clément Foucher <clement.foucher@laas.fr>
  */
 
@@ -104,7 +105,7 @@ public:
 	// ADC
 	static void configureAdc12DualMode(uint8_t dual_mode);
 	static int8_t configureAdcChannels(uint8_t adc_number, const char* channel_list[], uint8_t channel_count);
-	static void configureAdcTriggerSource(uint8_t adc_number, adc_src_t trigger_source);
+	static void configureAdcTriggerSource(uint8_t adc_number, adc_ev_src_t trigger_source);
 	static void configureAdcDefaultAllMeasurements();
 
 };
diff --git a/zephyr/modules/owntech_hardware_configuration/zephyr/src/adc_configuration.cpp b/zephyr/modules/owntech_hardware_configuration/zephyr/src/adc_configuration.cpp
index 265afa2..ee08ac3 100644
--- a/zephyr/modules/owntech_hardware_configuration/zephyr/src/adc_configuration.cpp
+++ b/zephyr/modules/owntech_hardware_configuration/zephyr/src/adc_configuration.cpp
@@ -19,13 +19,11 @@
 
 /**
  * @date   2022
+ *
  * @author Clément Foucher <clement.foucher@laas.fr>
  */
 
 
-// STM32 LL
-#include <stm32_ll_adc.h>
-
 // OwnTech Power API
 #include "adc.h"
 
@@ -94,7 +92,7 @@ int8_t configure_adc_channels(uint8_t adc_number, const char* channel_list[], ui
 	return NOERROR;
 }
 
-void configure_adc_trigger_source(uint8_t adc_number, adc_src_t trigger_source)
+void configure_adc_trigger_source(uint8_t adc_number, adc_ev_src_t trigger_source)
 {
 	/////
 	// Make sure module is initialized
@@ -106,28 +104,8 @@ void configure_adc_trigger_source(uint8_t adc_number, adc_src_t trigger_source)
 
 	/////
 	// Proceed
-	uint32_t trig;
-	switch (trigger_source)
-	{
-	case hrtim_ev1:
-		trig = LL_ADC_REG_TRIG_EXT_HRTIM_TRG1;
-		break;
-	case hrtim_ev2:
-		trig = LL_ADC_REG_TRIG_EXT_HRTIM_TRG2;
-		break;
-	case hrtim_ev3:
-		trig = LL_ADC_REG_TRIG_EXT_HRTIM_TRG3;
-		break;
-	case hrtim_ev4:
-		trig = LL_ADC_REG_TRIG_EXT_HRTIM_TRG4;
-		break;
-	case software:
-	default:
-		trig = LL_ADC_REG_TRIG_SOFTWARE;
-		break;
-	}
 
-	adc_configure_trigger_source(adc_number, trig);
+	adc_configure_trigger_source(adc_number, trigger_source);
 }
 
 void configure_adc_default_all_measurements()
diff --git a/zephyr/modules/owntech_hardware_configuration/zephyr/src/adc_configuration.h b/zephyr/modules/owntech_hardware_configuration/zephyr/src/adc_configuration.h
index 482b658..cc67dc4 100644
--- a/zephyr/modules/owntech_hardware_configuration/zephyr/src/adc_configuration.h
+++ b/zephyr/modules/owntech_hardware_configuration/zephyr/src/adc_configuration.h
@@ -19,6 +19,7 @@
 
 /**
  * @date   2022
+ *
  * @author Clément Foucher <clement.foucher@laas.fr>
  */
 
@@ -30,17 +31,8 @@
 // Stdlib
 #include <stdint.h>
 
-
-/////
-// Public enums
-typedef enum
-{
-	hrtim_ev1,
-	hrtim_ev2,
-	hrtim_ev3,
-	hrtim_ev4,
-	software
-} adc_src_t;
+// OwnTech API
+#include "adc.h"
 
 
 /////
@@ -88,7 +80,7 @@ int8_t configure_adc_channels(uint8_t adc_number, const char* channel_list[], ui
  * @param  adc_number Number of the ADC to configure
  * @param  trigger_source Source of the trigger
  */
-void configure_adc_trigger_source(uint8_t adc_number, adc_src_t trigger_source);
+void configure_adc_trigger_source(uint8_t adc_number, adc_ev_src_t trigger_source);
 
 /**
  * This function is used to configure all ADC channels in default configuration.
-- 
GitLab