From f1f80c00981736edefba04ca31741b7f1bed0e2a Mon Sep 17 00:00:00 2001
From: smlng <s@mlng.net>
Date: Tue, 20 Jun 2017 10:11:27 +0200
Subject: [PATCH] drivers/adcxx1c: use pseudomodules for device variants

---
 drivers/Makefile.dep                     |  3 ++-
 drivers/adcxx1c/include/adcxx1c_params.h |  2 +-
 drivers/include/adcxx1c.h                | 14 ++++++++++++++
 makefiles/pseudomodules.inc.mk           |  5 +++++
 tests/driver_adcxx1c/Makefile            |  2 +-
 5 files changed, 23 insertions(+), 3 deletions(-)

diff --git a/drivers/Makefile.dep b/drivers/Makefile.dep
index d8cf634064..223b435d7d 100644
--- a/drivers/Makefile.dep
+++ b/drivers/Makefile.dep
@@ -240,7 +240,8 @@ ifneq (,$(filter lsm6dsl,$(USEMODULE)))
   USEMODULE += xtimer
 endif
 
-ifneq (,$(filter adcxx1c,$(USEMODULE)))
+ifneq (,$(filter adc%1c,$(USEMODULE)))
   FEATURES_REQUIRED += periph_gpio
   FEATURES_REQUIRED += periph_i2c
+  USEMODULE += adcxx1c
 endif
diff --git a/drivers/adcxx1c/include/adcxx1c_params.h b/drivers/adcxx1c/include/adcxx1c_params.h
index 6f8b6d83a3..f8abc80451 100644
--- a/drivers/adcxx1c/include/adcxx1c_params.h
+++ b/drivers/adcxx1c/include/adcxx1c_params.h
@@ -38,7 +38,7 @@ extern "C" {
 #define ADCXX1C_PARAM_ADDR       (ADCXX1C_I2C_ADDRESS)
 #endif
 #ifndef ADCXX1C_PARAM_BITS
-#define ADCXX1C_PARAM_BITS       (ADCXX1C_RES_8BITS)
+#define ADCXX1C_PARAM_BITS       (ADCXX1C_RES_DEFAULT)
 #endif
 #ifndef ADCXX1C_PARAM_CYCLE
 #define ADCXX1C_PARAM_CYCLE      (ADCXX1C_CYCLE_DISABLED)
diff --git a/drivers/include/adcxx1c.h b/drivers/include/adcxx1c.h
index c9fd9c2494..f176dd4c68 100644
--- a/drivers/include/adcxx1c.h
+++ b/drivers/include/adcxx1c.h
@@ -41,6 +41,20 @@ enum {
     ADCXX1C_RES_12BITS = 12, /**< 12 bits resolution (ADC121C family) */
 };
 
+/**
+ * @brief   ADC default resolution for device variants
+ */
+#if   defined(MODULE_ADC081C)
+#define ADCXX1C_RES_DEFAULT     ADCXX1C_RES_8BITS
+#elif defined(MODULE_ADC101C)
+#define ADCXX1C_RES_DEFAULT     ADCXX1C_RES_10BITS
+#elif defined(MODULE_ADC121C)
+#define ADCXX1C_RES_DEFAULT     ADCXX1C_RES_12BITS
+#else
+#define ADCXX1C_RES_DEFAULT     (-1)
+#error "ADCXX1C: Failed to select resolution: unknown ADCXX1C device variant!"
+#endif
+
 /**
  * @brief   Conversion interval configuration value
  */
diff --git a/makefiles/pseudomodules.inc.mk b/makefiles/pseudomodules.inc.mk
index 29cad6e389..617783e81d 100644
--- a/makefiles/pseudomodules.inc.mk
+++ b/makefiles/pseudomodules.inc.mk
@@ -64,5 +64,10 @@ PSEUDOMODULES += at86rf21%
 PSEUDOMODULES += bmp280
 PSEUDOMODULES += bme280
 
+# variants of TI ADCXX1C
+PSEUDOMODULES += adc081c
+PSEUDOMODULES += adc101c
+PSEUDOMODULES += adc121c
+
 # add all pseudo random number generator variants as pseudomodules
 PSEUDOMODULES += prng_%
diff --git a/tests/driver_adcxx1c/Makefile b/tests/driver_adcxx1c/Makefile
index f9aa117608..363449986c 100644
--- a/tests/driver_adcxx1c/Makefile
+++ b/tests/driver_adcxx1c/Makefile
@@ -3,7 +3,7 @@ include ../Makefile.tests_common
 
 FEATURES_REQUIRED = periph_i2c
 
-USEMODULE += adcxx1c
+USEMODULE += adc081c
 USEMODULE += xtimer
 
 # set alert parameters in case they are undefined
-- 
GitLab