commit f606f432933384278331ec7a083bf3a7f01f1adc
Author: Thomas Schöpping <tschoepp@cit-ec.uni-bielefeld.de>
Date:   Tue Oct 15 15:05:44 2019 +0200

    Introduced a new (preliminary) test for the new DW1000v2 driver (WIP!).

diff --git a/modules/LightRing_1-2/Makefile b/modules/LightRing_1-2/Makefile
index d312fb3..002a4f9 100644
--- a/modules/LightRing_1-2/Makefile
+++ b/modules/LightRing_1-2/Makefile
@@ -146,7 +146,7 @@ include $(AMIROLLD)/drivers/INA219/v1/alld_INA219.mk
 include $(AMIROLLD)/drivers/LED/v1/alld_LED.mk
 include $(AMIROLLD)/drivers/MIC9404x/v1/alld_MIC9404x.mk
 include $(AMIROLLD)/drivers/TLC5947/v1/alld_TLC5947.mk
-include $(AMIROLLD)/drivers/DW1000/v1/alld_DW1000.mk
+include $(AMIROLLD)/drivers/DW1000/v2/alld_DW1000.mk
 
 # Tests.
 AMIROOS_TEST_INC += $(AMIROOS_TEST_DIR)periphery-lld/AT24C01B_v1 \
@@ -154,7 +154,7 @@ AMIROOS_TEST_INC += $(AMIROOS_TEST_DIR)periphery-lld/AT24C01B_v1 \
                     $(AMIROOS_TEST_DIR)periphery-lld/LED_v1 \
                     $(AMIROOS_TEST_DIR)periphery-lld/MIC9404x_v1 \
                     $(AMIROOS_TEST_DIR)periphery-lld/TLC5947_v1 \
-                    $(AMIROOS_TEST_DIR)periphery-lld/DW1000_v1
+                    $(AMIROOS_TEST_DIR)periphery-lld/DW1000_v2
 
 # Module specific inclusion directories
 MODULE_INC = $(MODULE_DIR) \
diff --git a/modules/LightRing_1-2/aosconf.h b/modules/LightRing_1-2/aosconf.h
index 4345d33..1ff1159 100644
--- a/modules/LightRing_1-2/aosconf.h
+++ b/modules/LightRing_1-2/aosconf.h
@@ -84,8 +84,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
  * @note    Any mandatory events (e.g. for SSSP) are enabled implicitely despite this configuration.
  */
 #if !defined(OS_CFG_MAIN_LOOP_IOEVENT_MASK)
-//  #define AMIROOS_CFG_MAIN_LOOP_IOEVENT_MASK    0
-  #define AMIROOS_CFG_MAIN_LOOP_IOEVENT_MASK      MODULE_OS_IOEVENTFLAGS_DW1000
+  #define AMIROOS_CFG_MAIN_LOOP_IOEVENT_MASK    0
 #else /* !defined(OS_CFG_MAIN_LOOP_IOEVENT_MASK) */
   #define AMIROOS_CFG_MAIN_LOOP_IOEVENT_MASK    OS_CFG_MAIN_LOOP_IOEVENT_MASK
 #endif /* !defined(OS_CFG_MAIN_LOOP_IOEVENT_MASK) */
diff --git a/modules/LightRing_1-2/board.h b/modules/LightRing_1-2/board.h
index 67ef256..7ea2f11 100644
--- a/modules/LightRing_1-2/board.h
+++ b/modules/LightRing_1-2/board.h
@@ -61,10 +61,17 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #define STM32F103xE
 
 /*
- * Identifiers for optional peripherals.
+ * Identifiers for the several breakout modules, which can be attached to the LightRing v1.2 module.
  */
-#define BOARD_DW1000_CONNECTED      false
-#define BOARD_MIC9404x_CONNECTED    true /* Power supply for DW1000 in Light ring */
+#define BOARD_BREAKOUT_NONE         0
+#define BOARD_BREAKOUT_UWBv10       1
+
+/*
+ * Configuration macro to define which type of sensor ring is attached.
+ */
+#if !defined(BOARD_BREAKOUT_MODULE) || defined(__DOXYGEN__)
+#define BOARD_BREAKOUT_MODULE       BOARD_BREAKOUT_UWBv10
+#endif
 
 /*
  * IO pins assignments.
diff --git a/modules/LightRing_1-2/module.c b/modules/LightRing_1-2/module.c
index 801e533..b763077 100644
--- a/modules/LightRing_1-2/module.c
+++ b/modules/LightRing_1-2/module.c
@@ -69,9 +69,8 @@ SPIConfig moduleHalSpiLightConfig = {
   /* CR2                         */ SPI_CR2_RXDMAEN | SPI_CR2_TXDMAEN,
 };
 
-#if (BOARD_DW1000_CONNECTED == true)
+#if (BOARD_BREAKOUT_MODULE == BOARD_BREAKOUT_UWBv10)
 
-/*! SPI (high speed) configuration for DW1000 */
 SPIConfig moduleHalSpiUwbHsConfig = {
   /* circular buffer mode        */ false,
   /* callback function pointer   */ NULL,
@@ -80,7 +79,7 @@ SPIConfig moduleHalSpiUwbHsConfig = {
   /* CR1                         */ 0,                                  // 36/2 Mbps
   /* CR2                         */ SPI_CR2_RXDMAEN | SPI_CR2_TXDMAEN,  // 0
 };
-/*! SPI (low speed) configuration for DW1000 */
+
 SPIConfig moduleHalSpiUwbLsConfig = {
   /* circular buffer mode        */ false,
   /* callback function pointer   */ NULL,
@@ -90,8 +89,7 @@ SPIConfig moduleHalSpiUwbLsConfig = {
   /* CR2                         */ SPI_CR2_RXDMAEN | SPI_CR2_TXDMAEN,  // 0
 };
 
-#endif /* BOARD_DW1000_CONNECTED == true */
-
+#endif /* (BOARD_BREAKOUT_MODULE == BOARD_BREAKOUT_UWBv10) */
 
 /*===========================================================================*/
 /**
@@ -177,139 +175,165 @@ ROMCONST apalControlGpio_t moduleGpioSwV50En = {
 };
 
 /**
- * @brief   IO_3 breakout signal GPIO.
+ * @brief   SYS_UART_DN bidirectional signal GPIO.
  */
-static apalGpio_t _gpioBreakoutIo3 = {
-  /* line */ LINE_IO_3,
+static apalGpio_t _gpioSysUartDn = {
+  /* line */ LINE_SYS_UART_DN,
 };
-apalControlGpio_t moduleGpioBreakoutIo3 = {
-  /* GPIO */ &_gpioBreakoutIo3,
+ROMCONST apalControlGpio_t moduleGpioSysUartDn = {
+  /* GPIO */ &_gpioSysUartDn,
   /* meta */ {
-    /* direction      */ APAL_GPIO_DIRECTION_UNDEFINED,
+    /* direction      */ APAL_GPIO_DIRECTION_BIDIRECTIONAL,
     /* active state   */ APAL_GPIO_ACTIVE_LOW,
-    /* interrupt edge */ APAL_GPIO_EDGE_NONE,
+    /* interrupt edge */ APAL_GPIO_EDGE_BOTH,
   },
 };
 
 /**
- * @brief   IO_5 breakout signal GPIO.
+ * @brief   LED output signal GPIO.
  */
-static apalGpio_t _gpioBreakoutIo5 = {
-  /* line */ LINE_IO_5,
+static apalGpio_t _gpioLed = {
+  /* line */ LINE_LED,
 };
-apalControlGpio_t moduleGpioBreakoutIo5 = {
-  /* GPIO */ &_gpioBreakoutIo5,
+ROMCONST apalControlGpio_t moduleGpioLed = {
+  /* GPIO */ &_gpioLed,
   /* meta */ {
-    /* direction      */ APAL_GPIO_DIRECTION_UNDEFINED,
+    /* direction      */ APAL_GPIO_DIRECTION_OUTPUT,
     /* active state   */ APAL_GPIO_ACTIVE_LOW,
     /* interrupt edge */ APAL_GPIO_EDGE_NONE,
   },
 };
 
 /**
- * @brief   IO_6 breakout signal GPIO.
+ * @brief   LIGHT_XLAT output signal GPIO.
  */
-static apalGpio_t _gpioBreakoutIo6 = {
-  /* line */ LINE_IO_6,
+static apalGpio_t _gpioLightXlat = {
+  /* line */ LINE_LIGHT_XLAT,
 };
-apalControlGpio_t moduleGpioBreakoutIo6 = {
-  /* GPIO */ &_gpioBreakoutIo6,
+ROMCONST apalControlGpio_t moduleGpioLightXlat = {
+  /* GPIO */ &_gpioLightXlat,
   /* meta */ {
-    /* direction      */ APAL_GPIO_DIRECTION_UNDEFINED,
-    /* active state   */ APAL_GPIO_ACTIVE_LOW,
+    /* direction      */ APAL_GPIO_DIRECTION_OUTPUT,
+    /* active state   */ (TLC5947_LLD_XLAT_UPDATE_EDGE == APAL_GPIO_EDGE_RISING) ? APAL_GPIO_ACTIVE_HIGH : APAL_GPIO_ACTIVE_LOW,
     /* interrupt edge */ APAL_GPIO_EDGE_NONE,
   },
 };
 
 /**
- * @brief   SYS_UART_DN bidirectional signal GPIO.
+ * @brief   SW_V18_EN output signal GPIO.
  */
-static apalGpio_t _gpioSysUartDn = {
-  /* line */ LINE_SYS_UART_DN,
+static apalGpio_t _gpioSwV18En = {
+  /* line */ LINE_SW_V18_EN,
 };
-ROMCONST apalControlGpio_t moduleGpioSysUartDn = {
-  /* GPIO */ &_gpioSysUartDn,
+ROMCONST apalControlGpio_t moduleGpioSwV18En = {
+  /* GPIO */ &_gpioSwV18En,
   /* meta */ {
-    /* direction      */ APAL_GPIO_DIRECTION_BIDIRECTIONAL,
-    /* active state   */ APAL_GPIO_ACTIVE_LOW,
-    /* interrupt edge */ APAL_GPIO_EDGE_BOTH,
+    /* direction      */ APAL_GPIO_DIRECTION_OUTPUT,
+    /* active state   */ MIC9404x_LLD_EN_ACTIVE_STATE,
+    /* interrupt edge */ APAL_GPIO_EDGE_NONE,
   },
 };
 
-#if (BOARD_DW1000_CONNECTED == true)
 /**
- * @brief   DW1000 interrrupt input signal GPIO.
+ * @brief   SW_VSYS_EN output signal GPIO.
  */
-static apalGpio_t _gpioDw1000Irqn = {
-  /* line */  LINE_IO_8,            // (GPIOB, GPIOB_IO_8),
+static apalGpio_t _gpioSwVsysEn = {
+  /* line */ LINE_SW_VSYS_EN,
 };
-ROMCONST apalControlGpio_t moduleGpioDw1000Irqn = {
-  /* GPIO */ &_gpioDw1000Irqn,
+ROMCONST apalControlGpio_t moduleGpioSwVsysEn = {
+  /* GPIO */ &_gpioSwVsysEn,
   /* meta */ {
-    /* direction      */ APAL_GPIO_DIRECTION_INPUT,
-    /* active state   */ APAL_GPIO_ACTIVE_LOW,
-    /* interrupt edge */ APAL_GPIO_EDGE_RISING,
+    /* direction      */ APAL_GPIO_DIRECTION_OUTPUT,
+    /* active state   */ APAL_GPIO_ACTIVE_HIGH,
+    /* interrupt edge */ APAL_GPIO_EDGE_NONE,
   },
 };
 
 /**
- * @brief   DW1000 reset output signal GPIO.
+ * @brief   SYS_UART_UP bidirectional signal GPIO.
  */
-static apalGpio_t _gpioDw1000Reset = {
-  /* line */ LINE_IO_7,
+static apalGpio_t _gpioSysUartUp = {
+  /* line */ LINE_SYS_UART_UP,
 };
-ROMCONST apalControlGpio_t moduleGpioDw1000Reset = {
-  /* GPIO */ &_gpioDw1000Reset,
+ROMCONST apalControlGpio_t moduleGpioSysUartUp = {
+  /* GPIO */ &_gpioSysUartUp,
   /* meta */ {
     /* direction      */ APAL_GPIO_DIRECTION_BIDIRECTIONAL,
     /* active state   */ APAL_GPIO_ACTIVE_LOW,
-    /* interrupt edge */ APAL_GPIO_EDGE_NONE,
+    /* interrupt edge */ APAL_GPIO_EDGE_BOTH,
   },
 };
 
 /**
- * @brief   IO_2 breakout signal GPIO.
+ * @brief   SYS_PD bidirectional signal GPIO.
  */
-static apalGpio_t _gpioDw1000WakeUp = {
-  /* line */ LINE_IO_2,
+static apalGpio_t _gpioSysPd = {
+  /* line */ LINE_SYS_PD_N,
 };
-ROMCONST apalControlGpio_t moduleGpioDw1000WakeUp = {
-  /* GPIO */ &_gpioDw1000WakeUp,
+ROMCONST apalControlGpio_t moduleGpioSysPd = {
+  /* GPIO */ &_gpioSysPd,
   /* meta */ {
-    /* direction      */ APAL_GPIO_DIRECTION_OUTPUT,
-    /* active state   */ APAL_GPIO_ACTIVE_HIGH,
-    /* interrupt edge */ APAL_GPIO_EDGE_NONE,
+    /* direction      */ APAL_GPIO_DIRECTION_BIDIRECTIONAL,
+    /* active state   */ APAL_GPIO_ACTIVE_LOW,
+    /* interrupt edge */ APAL_GPIO_EDGE_BOTH,
   },
 };
 
 /**
- * @brief   DW1000 SPI chip select output signal GPIO.
+ * @brief   SYS_SYNC bidirectional signal GPIO.
  */
-static apalGpio_t _gpioSpiChipSelect = {
-  /* line */ LINE_SPI_SS_N,
+static apalGpio_t _gpioSysSync = {
+  /* line */ LINE_SYS_INT_N,
 };
-ROMCONST apalControlGpio_t moduleGpioSpiChipSelect = {
-  /* GPIO */ &_gpioSpiChipSelect,
+ROMCONST apalControlGpio_t moduleGpioSysSync = {
+  /* GPIO */ &_gpioSysSync,
   /* meta */ {
-    /* direction      */ APAL_GPIO_DIRECTION_OUTPUT,
+    /* direction      */ APAL_GPIO_DIRECTION_BIDIRECTIONAL,
     /* active state   */ APAL_GPIO_ACTIVE_LOW,
-    /* interrupt edge */ APAL_GPIO_EDGE_NONE,
+    /* interrupt edge */ APAL_GPIO_EDGE_BOTH,
   },
 };
-#else
+
 /**
- * @brief   IO_8 breakout signal GPIO.
+ * @brief   IO_1 breakout signal GPIO.
  */
-static apalGpio_t _gpioBreakoutIo8 = {
-  /* line */ LINE_IO_8,
+static apalGpio_t _gpioBreakoutIo1 = {
+  /* line */ LINE_IO_1,
 };
-apalControlGpio_t moduleGpioBreakoutIo8 = {
-  /* GPIO */ &_gpioBreakoutIo8,
-  /* meta */ {
-    /* direction      */ APAL_GPIO_DIRECTION_UNDEFINED,
-    /* active state   */ APAL_GPIO_ACTIVE_LOW,
-    /* interrupt edge */ APAL_GPIO_EDGE_NONE,
-  },
+
+/**
+ * @brief   IO_2 breakout signal GPIO.
+ */
+static apalGpio_t _gpioBreakoutIo2 = {
+  /* line */ LINE_IO_2,
+};
+
+/**
+ * @brief   IO_3 breakout signal GPIO.
+ */
+static apalGpio_t _gpioBreakoutIo3 = {
+  /* line */ LINE_IO_3,
+};
+
+/**
+ * @brief   IO_4 breakout signal GPIO.
+ */
+static apalGpio_t _gpioBreakoutIo4 = {
+  /* line */ LINE_IO_4,
+};
+
+/**
+ * @brief   IO_5 breakout signal GPIO.
+ */
+static apalGpio_t _gpioBreakoutIo5 = {
+  /* line */ LINE_IO_5,
+};
+
+/**
+ * @brief   IO_6 breakout signal GPIO.
+ */
+static apalGpio_t _gpioBreakoutIo6 = {
+  /* line */ LINE_IO_6,
 };
 
 /**
@@ -318,116 +342,101 @@ apalControlGpio_t moduleGpioBreakoutIo8 = {
 static apalGpio_t _gpioBreakoutIo7 = {
   /* line */ LINE_IO_7,
 };
-apalControlGpio_t moduleGpioBreakoutIo7 = {
-  /* GPIO */ &_gpioBreakoutIo7,
+
+/**
+ * @brief   IO_8 breakout signal GPIO.
+ */
+static apalGpio_t _gpioBreakoutIo8 = {
+  /* line */ LINE_IO_8,
+};
+
+#if (BOARD_BREAKOUT_MODULE == BOARD_BREAKOUT_NONE)
+
+apalControlGpio_t moduleGpioBreakoutIo1 = {
+  /* GPIO */ &_gpioBreakoutIo1,
   /* meta */ {
     /* direction      */ APAL_GPIO_DIRECTION_UNDEFINED,
-    /* active state   */ APAL_GPIO_ACTIVE_LOW,
+    /* active state   */ APAL_GPIO_ACTIVE_NONE,
     /* interrupt edge */ APAL_GPIO_EDGE_NONE,
   },
 };
 
-/**
- * @brief   IO_2 breakout signal GPIO.
- */
-static apalGpio_t _gpioBreakoutIo2 = {
-  /* line */ LINE_IO_2,
-};
 apalControlGpio_t moduleGpioBreakoutIo2 = {
   /* GPIO */ &_gpioBreakoutIo2,
   /* meta */ {
     /* direction      */ APAL_GPIO_DIRECTION_UNDEFINED,
-    /* active state   */ APAL_GPIO_ACTIVE_LOW,
+    /* active state   */ APAL_GPIO_ACTIVE_NONE,
     /* interrupt edge */ APAL_GPIO_EDGE_NONE,
   },
 };
-#endif  /* BOARD_DW1000_CONNECTED == true */
 
-
-/**
- * @brief   IO_4 breakout signal GPIO.
- */
-static apalGpio_t _gpioBreakoutIo4 = {
-  /* line */ LINE_IO_4,
+apalControlGpio_t moduleGpioBreakoutIo3 = {
+  /* GPIO */ &_gpioBreakoutIo3,
+  /* meta */ {
+    /* direction      */ APAL_GPIO_DIRECTION_UNDEFINED,
+    /* active state   */ APAL_GPIO_ACTIVE_NONE,
+    /* interrupt edge */ APAL_GPIO_EDGE_NONE,
+  },
 };
+
 apalControlGpio_t moduleGpioBreakoutIo4 = {
   /* GPIO */ &_gpioBreakoutIo4,
   /* meta */ {
     /* direction      */ APAL_GPIO_DIRECTION_UNDEFINED,
-    /* active state   */ APAL_GPIO_ACTIVE_LOW,
+    /* active state   */ APAL_GPIO_ACTIVE_NONE,
     /* interrupt edge */ APAL_GPIO_EDGE_NONE,
   },
 };
 
-/**
- * @brief   IO_1 breakout signal GPIO.
- */
-static apalGpio_t _gpioBreakoutIo1 = {
-  /* line */ LINE_IO_1,
-};
-apalControlGpio_t moduleGpioBreakoutIo1 = {
-  /* GPIO */ &_gpioBreakoutIo1,
+apalControlGpio_t moduleGpioBreakoutIo5 = {
+  /* GPIO */ &_gpioBreakoutIo5,
   /* meta */ {
     /* direction      */ APAL_GPIO_DIRECTION_UNDEFINED,
-    /* active state   */ APAL_GPIO_ACTIVE_LOW,
+    /* active state   */ APAL_GPIO_ACTIVE_NONE,
     /* interrupt edge */ APAL_GPIO_EDGE_NONE,
   },
 };
 
-
-/**
- * @brief   LED output signal GPIO.
- */
-static apalGpio_t _gpioLed = {
-  /* line */ LINE_LED,
-};
-ROMCONST apalControlGpio_t moduleGpioLed = {
-  /* GPIO */ &_gpioLed,
+apalControlGpio_t moduleGpioBreakoutIo6 = {
+  /* GPIO */ &_gpioBreakoutIo6,
   /* meta */ {
-    /* direction      */ APAL_GPIO_DIRECTION_OUTPUT,
-    /* active state   */ APAL_GPIO_ACTIVE_LOW,
+    /* direction      */ APAL_GPIO_DIRECTION_UNDEFINED,
+    /* active state   */ APAL_GPIO_ACTIVE_NONE,
     /* interrupt edge */ APAL_GPIO_EDGE_NONE,
   },
 };
 
-/**
- * @brief   LIGHT_XLAT output signal GPIO.
- */
-static apalGpio_t _gpioLightXlat = {
-  /* line */ LINE_LIGHT_XLAT,
-};
-ROMCONST apalControlGpio_t moduleGpioLightXlat = {
-  /* GPIO */ &_gpioLightXlat,
+apalControlGpio_t moduleGpioBreakoutIo7 = {
+  /* GPIO */ &_gpioBreakoutIo7,
   /* meta */ {
-    /* direction      */ APAL_GPIO_DIRECTION_OUTPUT,
-    /* active state   */ (TLC5947_LLD_XLAT_UPDATE_EDGE == APAL_GPIO_EDGE_RISING) ? APAL_GPIO_ACTIVE_HIGH : APAL_GPIO_ACTIVE_LOW,
+    /* direction      */ APAL_GPIO_DIRECTION_UNDEFINED,
+    /* active state   */ APAL_GPIO_ACTIVE_NONE,
     /* interrupt edge */ APAL_GPIO_EDGE_NONE,
   },
 };
 
-/**
- * @brief   SW_V18_EN output signal GPIO.
- */
-static apalGpio_t _gpioSwV18En = {
-  /* line */ LINE_SW_V18_EN,
-};
-ROMCONST apalControlGpio_t moduleGpioSwV18En = {
-  /* GPIO */ &_gpioSwV18En,
+apalControlGpio_t moduleGpioBreakoutIo8 = {
+  /* GPIO */ &_gpioBreakoutIo8,
   /* meta */ {
-    /* direction      */ APAL_GPIO_DIRECTION_OUTPUT,
-    /* active state   */ MIC9404x_LLD_EN_ACTIVE_STATE,
+    /* direction      */ APAL_GPIO_DIRECTION_UNDEFINED,
+    /* active state   */ APAL_GPIO_ACTIVE_NONE,
     /* interrupt edge */ APAL_GPIO_EDGE_NONE,
   },
 };
 
-/**
- * @brief   SW_VSYS_EN output signal GPIO.
- */
-static apalGpio_t _gpioSwVsysEn = {
-  /* line */ LINE_SW_VSYS_EN,
+#elif (BOARD_BREAKOUT_MODULE == BOARD_BREAKOUT_UWBv10)
+
+apalControlGpio_t moduleGpioBreakoutIo1 = {
+  /* GPIO */ &_gpioBreakoutIo1,
+  /* meta */ {
+    /* direction      */ APAL_GPIO_DIRECTION_UNDEFINED,
+    /* active state   */ APAL_GPIO_ACTIVE_NONE,
+    /* interrupt edge */ APAL_GPIO_EDGE_NONE,
+  },
 };
-ROMCONST apalControlGpio_t moduleGpioSwVsysEn = {
-  /* GPIO */ &_gpioSwVsysEn,
+
+apalControlGpio_t moduleGpioBreakoutIo2 = {
+  /* GPIO */ &_gpioBreakoutIo2,
   /* meta */ {
     /* direction      */ APAL_GPIO_DIRECTION_OUTPUT,
     /* active state   */ APAL_GPIO_ACTIVE_HIGH,
@@ -435,51 +444,62 @@ ROMCONST apalControlGpio_t moduleGpioSwVsysEn = {
   },
 };
 
-/**
- * @brief   SYS_UART_UP bidirectional signal GPIO.
- */
-static apalGpio_t _gpioSysUartUp = {
-  /* line */ LINE_SYS_UART_UP,
+apalControlGpio_t moduleGpioBreakoutIo3 = {
+  /* GPIO */ &_gpioBreakoutIo3,
+  /* meta */ {
+    /* direction      */ APAL_GPIO_DIRECTION_UNDEFINED,
+    /* active state   */ APAL_GPIO_ACTIVE_NONE,
+    /* interrupt edge */ APAL_GPIO_EDGE_NONE,
+  },
 };
-ROMCONST apalControlGpio_t moduleGpioSysUartUp = {
-  /* GPIO */ &_gpioSysUartUp,
+
+apalControlGpio_t moduleGpioBreakoutIo4 = {
+  /* GPIO */ &_gpioBreakoutIo4,
   /* meta */ {
-    /* direction      */ APAL_GPIO_DIRECTION_BIDIRECTIONAL,
-    /* active state   */ APAL_GPIO_ACTIVE_LOW,
-    /* interrupt edge */ APAL_GPIO_EDGE_BOTH,
+    /* direction      */ APAL_GPIO_DIRECTION_UNDEFINED,
+    /* active state   */ APAL_GPIO_ACTIVE_NONE,
+    /* interrupt edge */ APAL_GPIO_EDGE_NONE,
   },
 };
 
-/**
- * @brief   SYS_PD bidirectional signal GPIO.
- */
-static apalGpio_t _gpioSysPd = {
-  /* line */ LINE_SYS_PD_N,
+apalControlGpio_t moduleGpioBreakoutIo5 = {
+  /* GPIO */ &_gpioBreakoutIo5,
+  /* meta */ {
+    /* direction      */ APAL_GPIO_DIRECTION_UNDEFINED,
+    /* active state   */ APAL_GPIO_ACTIVE_NONE,
+    /* interrupt edge */ APAL_GPIO_EDGE_NONE,
+  },
 };
-ROMCONST apalControlGpio_t moduleGpioSysPd = {
-  /* GPIO */ &_gpioSysPd,
+
+apalControlGpio_t moduleGpioBreakoutIo6 = {
+  /* GPIO */ &_gpioBreakoutIo6,
+  /* meta */ {
+    /* direction      */ APAL_GPIO_DIRECTION_UNDEFINED,
+    /* active state   */ APAL_GPIO_ACTIVE_NONE,
+    /* interrupt edge */ APAL_GPIO_EDGE_NONE,
+  },
+};
+
+apalControlGpio_t moduleGpioBreakoutIo7 = {
+  /* GPIO */ &_gpioBreakoutIo7,
   /* meta */ {
     /* direction      */ APAL_GPIO_DIRECTION_BIDIRECTIONAL,
     /* active state   */ APAL_GPIO_ACTIVE_LOW,
-    /* interrupt edge */ APAL_GPIO_EDGE_BOTH,
+    /* interrupt edge */ APAL_GPIO_EDGE_NONE,
   },
 };
 
-/**
- * @brief   SYS_SYNC bidirectional signal GPIO.
- */
-static apalGpio_t _gpioSysSync = {
-  /* line */ LINE_SYS_INT_N,
-};
-ROMCONST apalControlGpio_t moduleGpioSysSync = {
-  /* GPIO */ &_gpioSysSync,
+apalControlGpio_t moduleGpioBreakoutIo8 = {
+  /* GPIO */ &_gpioBreakoutIo8,
   /* meta */ {
-    /* direction      */ APAL_GPIO_DIRECTION_BIDIRECTIONAL,
+    /* direction      */ APAL_GPIO_DIRECTION_INPUT,
     /* active state   */ APAL_GPIO_ACTIVE_LOW,
-    /* interrupt edge */ APAL_GPIO_EDGE_BOTH,
+    /* interrupt edge */ APAL_GPIO_EDGE_RISING,
   },
 };
 
+#endif
+
 /** @} */
 
 /*===========================================================================*/
@@ -506,72 +526,6 @@ ROMCONST char* moduleShellPrompt = "LightRing";
 
 /*===========================================================================*/
 /**
- * @name Hardware specific wrappers Functions
- * @{
- */
-/*===========================================================================*/
-
-#if (BOARD_DW1000_CONNECTED == true)
-/*! @brief Manually reset the DW1000 module  */
-void reset_DW1000(void){
-
-  // Set the pin as output
-  palSetLineMode(moduleGpioDw1000Reset.gpio->line, APAL_GPIO_DIRECTION_OUTPUT);
-
-  //drive the RSTn pin low
-  apalGpioWrite(moduleGpioDw1000Reset.gpio, APAL_GPIO_LOW);
-
-  //put the pin back to tri-state ... as input
-//  palSetLineMode(moduleGpioDw1000Reset.gpio->line, APAL_GPIO_DIRECTION_INPUT); // TODO:
-
-  aosThdMSleep(2);
-}
-
-/*! @brief entry point to the IRQn event in DW1000 module
- *
- * */
-void process_deca_irq(void){
-  do{
-    dwt_isr();
-   //while IRS line active (ARM can only do edge sensitive interrupts)
-  }while(port_CheckEXT_IRQ() == 1);
-}
-
-/*! @brief Check the current value of GPIO pin and return the value */
-apalGpioState_t port_CheckEXT_IRQ(void) {
-  apalGpioState_t  val;
-  apalGpioRead(moduleGpioDw1000Irqn.gpio, &val);
-  return val;
-}
-
-/*! @brief Manually set the chip select pin of the SPI */
-void set_SPI_chip_select(void){
-  apalGpioWrite(moduleGpioSpiChipSelect.gpio, APAL_GPIO_HIGH);
-}
-
-/*! @brief Manually reset the chip select pin of the SPI */
-void clear_SPI_chip_select(void){
-  apalGpioWrite(moduleGpioSpiChipSelect.gpio, APAL_GPIO_LOW);
-}
-
-/*! @brief Change the SPI speed configuration on the fly */
-void setHighSpeed_SPI(bool speedValue, DW1000Driver* drv){
-
-  spiStop(drv->spid);
-
-  if (speedValue == FALSE){
-    spiStart(drv->spid, &moduleHalSpiUwbLsConfig);  // low speed spi configuration
-  }
-  else{
-    spiStart(drv->spid, &moduleHalSpiUwbHsConfig); // high speed spi configuration
-  }
-}
-#endif /* (BOARD_DW1000_CONNECTED == true) */
-/** @} */
-
-
-/*===========================================================================*/
-/**
  * @name Low-level drivers
  * @{
  */
@@ -622,17 +576,15 @@ TLC5947Driver moduleLldLedPwm = {
   /* XLAT signal GPIO   */ &moduleGpioLightXlat,
 };
 
-#if (BOARD_DW1000_CONNECTED == true)
+#if (BOARD_BREAKOUT_MODULE == BOARD_BREAKOUT_UWBv10)
+
 DW1000Driver moduleLldDw1000 = {
-  /* SPI driver         */ &MODULE_HAL_SPI_UWB,
-  /* ext interrupt      */ &moduleGpioDw1000Irqn,
-  /* RESET DW1000       */ &moduleGpioDw1000Reset,
+  /* SPI driver     */ &MODULE_HAL_SPI_UWB,
+  /* interrupt GPIO */ &moduleGpioBreakoutIo8,
+  /* reset GPIO     */ &moduleGpioBreakoutIo7,
 };
 
-MIC9404xDriver moduleLldPowerSwitchDw1000 = {
-  /* power enable GPIO  */ &moduleGpioSwVsysEn,
-};
-#endif /* (BOARD_DW1000_CONNECTED == true) */
+#endif /* (BOARD_BREAKOUT_MODULE == BOARD_BREAKOUT_UWBv10) */
 
 /** @} */
 
@@ -696,7 +648,8 @@ static int _testTlc5947ShellCmdCb(BaseSequentialStream* stream, int argc, char*
 }
 AOS_SHELL_COMMAND(moduleTestTlc5947ShellCmd, "test:Lights", _testTlc5947ShellCmdCb);
 
-#if (BOARD_DW1000_CONNECTED == true) || defined(__DOXYGEN__)
+#if (BOARD_BREAKOUT_MODULE == BOARD_BREAKOUT_UWBv10)
+
 /*
  * UwB Driver (DW1000)
  */
@@ -706,7 +659,8 @@ static int _testDw1000ShellCmdCb(BaseSequentialStream* stream, int argc, char* a
   return moduleTestDw1000ShellCb(stream, argc, argv, NULL);
 }
 AOS_SHELL_COMMAND(moduleTestDw1000ShellCmd, "test:DW1000", _testDw1000ShellCmdCb);
-#endif /* (BOARD_DW1000_CONNECTED == true) */
+
+#endif /* (BOARD_BREAKOUT_MODULE == BOARD_BREAKOUT_UWBv10) */
 
 /*
  * entire module
@@ -763,6 +717,12 @@ static int _testAllShellCmdCb(BaseSequentialStream* stream, int argc, char* argv
   status |= moduleTestTlc5947ShellCb(stream, 0, targv, &result_test);
   result_total = aosTestResultAdd(result_total, result_test);
 
+#if (BOARD_BREAKOUT_MODULE == BOARD_BREAKOUT_UWBv10)
+  /* DW1000 (UWB transceiver) */
+  status |= moduleTestDw1000ShellCb(stream, 0, targv, &result_test);
+  result_total = aosTestResultAdd(result_total, result_test);
+#endif /* (BOARD_BREAKOUT_MODULE == BOARD_BREAKOUT_UWBv10) */
+
   // print total result
   chprintf(stream, "\n");
   aosTestResultPrintSummary(stream, &result_total, "entire module");
diff --git a/modules/LightRing_1-2/module.h b/modules/LightRing_1-2/module.h
index 02431f3..d62f6b5 100644
--- a/modules/LightRing_1-2/module.h
+++ b/modules/LightRing_1-2/module.h
@@ -36,24 +36,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 /*===========================================================================*/
 
-
-#if defined(__cplusplus)
-extern "C" {
-#endif /* defined(__cplusplus) */
-
-#if (BOARD_DW1000_CONNECTED == true)
-void process_deca_irq(void);
-apalGpioState_t port_CheckEXT_IRQ(void) ;
-#endif /* (BOARD_DW1000_CONNECTED == true) */
-
-void set_SPI_chip_select(void);
-void clear_SPI_chip_select(void);
-void reset_DW1000(void);
-
-#if defined(__cplusplus)
-}
-#endif /* defined(__cplusplus) */
-
 /** @} */
 
 /*===========================================================================*/
@@ -103,41 +85,39 @@ extern SerialConfig moduleHalProgIfConfig;
  */
 extern SPIConfig moduleHalSpiLightConfig;
 
-#if (BOARD_DW1000_CONNECTED == true)
 /**
- * @brief   SPI interface driver for UWB DW1000 module.
+ * @brief   SPI interface driver for the breakout header.
  */
-#define MODULE_HAL_SPI_UWB                      SPID2
+#define MODULE_HAL_SPI_BREAKOUT                 SPID2
 
 /**
- * @brief   Configuration for the high-speed SPI interface driver of DW1000 module.
+ * @brief   UART interface driver for the breakout header (alternative to serial).
  */
-extern SPIConfig moduleHalSpiUwbHsConfig;
+#define MODULE_HAL_UART_BREAKOUT                UARTD2
 
 /**
- * @brief   Configuration for the low-speed SPI interface driver of DW1000 module.
+ * @brief   Real-Time Clock driver.
  */
-extern SPIConfig moduleHalSpiUwbLsConfig;
+#define MODULE_HAL_RTC                          RTCD1
 
-#else
+#if (BOARD_BREAKOUT_MODULE == BOARD_BREAKOUT_UWBv10) || defined(__DOXYGEN__)
 
 /**
- * @brief   SPI interface driver for the breakout header.
+ * @brief   SPI interface driver for UWB DW1000 module.
  */
-#define MODULE_HAL_SPI_BREAKOUT                 SPID2
-
-#endif /* BOARD_DW1000_CONNECTED == true*/
-
+#define MODULE_HAL_SPI_UWB                      MODULE_HAL_SPI_BREAKOUT
 
 /**
- * @brief   UART interface driver for the breakout header (alternative to serial).
+ * @brief   Configuration for the high-speed SPI interface driver of DW1000 module.
  */
-#define MODULE_HAL_UART_BREAKOUT                UARTD2
+extern SPIConfig moduleHalSpiUwbHsConfig;
 
 /**
- * @brief   Real-Time Clock driver.
+ * @brief   Configuration for the low-speed SPI interface driver of DW1000 module.
  */
-#define MODULE_HAL_RTC                          RTCD1
+extern SPIConfig moduleHalSpiUwbLsConfig;
+
+#endif /* (BOARD_BREAKOUT_MODULE == BOARD_BREAKOUT_UWBv10) */
 
 /** @} */
 
@@ -195,6 +175,16 @@ extern apalControlGpio_t moduleGpioBreakoutIo6;
 extern ROMCONST apalControlGpio_t moduleGpioSysUartDn;
 
 /**
+ * @brief   IO_7 breakout signal GPIO.
+ */
+extern apalControlGpio_t moduleGpioBreakoutIo7;
+
+/**
+ * @brief   IO_8 breakout signal GPIO.
+ */
+extern apalControlGpio_t moduleGpioBreakoutIo8;
+
+/**
  * @brief   IO_4 breakout signal GPIO.
  */
 extern apalControlGpio_t moduleGpioBreakoutIo4;
@@ -205,6 +195,11 @@ extern apalControlGpio_t moduleGpioBreakoutIo4;
 extern apalControlGpio_t moduleGpioBreakoutIo1;
 
 /**
+ * @brief   IO_2 breakout signal GPIO.
+ */
+extern apalControlGpio_t moduleGpioBreakoutIo2;
+
+/**
  * @brief   LED output signal GPIO.
  */
 extern ROMCONST apalControlGpio_t moduleGpioLed;
@@ -239,48 +234,6 @@ extern ROMCONST apalControlGpio_t moduleGpioSysPd;
  */
 extern ROMCONST apalControlGpio_t moduleGpioSysSync;
 
-#if (BOARD_DW1000_CONNECTED == true)
-/**
- * @brief   DW1000 reset output signal
- * @note    the reset pin should be drived as low by MCU to activate.
- *          Then, put back the reset pin as input to MCU (tri-state float on the air
- *          is not supported in AMiRo)
- */
-extern ROMCONST apalControlGpio_t moduleGpioDw1000Reset;
-
-/**
- * @brief   DW1000 wakeup signal
- */
-extern ROMCONST apalControlGpio_t moduleGpioDw1000WakeUp;
-
-/**
- * @brief   DW1000 interrupt IRQn input signal.
- */
-extern ROMCONST apalControlGpio_t moduleGpioDw1000Irqn;
-
-/**
- * @brief   DW1000 SPI chip select  output signal.
- */
-extern ROMCONST apalControlGpio_t moduleGpioSpiChipSelect ;
-
-#else
-/**
- * @brief   IO_2 breakout signal GPIO.
- */
-extern apalControlGpio_t moduleGpioBreakoutIo2;
-
-/**
- * @brief   IO_7 breakout signal GPIO.
- */
-extern apalControlGpio_t moduleGpioBreakoutIo7;
-
-/**
- * @brief   IO_8 breakout signal GPIO.
- */
-extern apalControlGpio_t moduleGpioBreakoutIo8;
-
-#endif /* BOARD_DW1000_CONNECTED == true */
-
 /** @} */
 
 /*===========================================================================*/
@@ -341,14 +294,18 @@ extern apalControlGpio_t moduleGpioBreakoutIo8;
 #define MODULE_OS_IOEVENTFLAGS_BREAKOUTIO8      AOS_IOEVENT_FLAG(PAL_PAD(LINE_IO_8))
 
 /**
- * @brief   Event flag to be set on a DW1000 interrupt.
+ * @brief   Event flag to be set on a SYS_PD interrupt.
  */
-#define MODULE_OS_IOEVENTFLAGS_DW1000           AOS_IOEVENT_FLAG(PAL_PAD(LINE_IO_8))
+#define MODULE_OS_IOEVENTFLAGS_SYSPD            AOS_IOEVENT_FLAG(PAL_PAD(LINE_SYS_PD_N))
+
+#if (BOARD_BREAKOUT_MODULE == BOARD_BREAKOUT_UWBv10) || defined(__DOXYGEN__)
 
 /**
- * @brief   Event flag to be set on a SYS_PD interrupt.
+ * @brief   Event flag to be set on a DW1000 interrupt.
  */
-#define MODULE_OS_IOEVENTFLAGS_SYSPD            AOS_IOEVENT_FLAG(PAL_PAD(LINE_SYS_PD_N))
+#define MODULE_OS_IOEVENTFLAGS_DW1000           MODULE_OS_IOEVENTFLAGS_BREAKOUTIO8
+
+#endif /* (BOARD_BREAKOUT_MODULE == BOARD_BREAKOUT_UWBv10) */
 
 #if (AMIROOS_CFG_SHELL_ENABLE == true) || (AMIROOS_CFG_TESTS_ENABLE == true) || defined(__DOXYGEN__)
 /**
@@ -363,17 +320,17 @@ extern ROMCONST char* moduleShellPrompt;
  */
 #define MODULE_INIT_INTERRUPTS() {                                            \
   /* breakout interrupts must be enabled explicitely */                       \
-  MODULE_INIT_INTERRUPTS_DW1000();                                            \
+  MODULE_INIT_INTERRUPTS_BREAKOUT();                                          \
 }
-#if (BOARD_DW1000_CONNECTED == true)
-  #define MODULE_INIT_INTERRUPTS_DW1000() {                                   \
-    palSetLineCallback(moduleGpioDw1000Irqn.gpio->line, aosSysGetStdExtiCallback(), &moduleGpioDw1000Irqn.gpio->line);  \
-    palEnableLineEvent(moduleGpioDw1000Irqn.gpio->line, APAL2CH_EDGE(moduleGpioDw1000Irqn.meta.edge));                  \
+#if (BOARD_BREAKOUT_MODULE == BOARD_BREAKOUT_UWBv10)
+  #define MODULE_INIT_INTERRUPTS_BREAKOUT() {                                 \
+    palSetLineCallback(moduleLldDw1000.gpio_exti->gpio->line, aosSysGetStdExtiCallback(), &moduleLldDw1000.gpio_exti->gpio->line);  \
+    palEnableLineEvent(moduleLldDw1000.gpio_exti->gpio->line, APAL2CH_EDGE(moduleLldDw1000.gpio_exti->meta.edge));                  \
   }
-#else /* (BOARD_DW1000_CONNECTED == true) */
-  #define MODULE_INIT_INTERRUPTS_DW1000() {                                   \
+#elif (BOARD_BREAKOUT_MODULE == BOARD_BREAKOUT_NONE)
+  #define MODULE_INIT_INTERRUPTS_BREAKOUT() {                                 \
   }
-#endif /* (BOARD_DW1000_CONNECTED == true) */
+#endif
 
 /**
  * @brief   Unit test initialization hook.
@@ -386,16 +343,16 @@ extern ROMCONST char* moduleShellPrompt;
   aosShellAddCommand(&aos.shell, &moduleTestMic9404xShellCmd);                \
   aosShellAddCommand(&aos.shell, &moduleTestTlc5947ShellCmd);                 \
   aosShellAddCommand(&aos.shell, &moduleTestAllShellCmd);                     \
-  MODULE_INIT_TESTS_DW1000();                                                 \
+  MODULE_INIT_TESTS_BREAKOUT();                                               \
 }
-#if (BOARD_DW1000_CONNECTED == true)
-  #define MODULE_INIT_TESTS_DW1000() {                                        \
+#if (BOARD_BREAKOUT_MODULE == BOARD_BREAKOUT_UWBv10)
+  #define MODULE_INIT_TESTS_BREAKOUT() {                                      \
     aosShellAddCommand(&aos.shell, &moduleTestDw1000ShellCmd);                \
   }
-#else /* defined(AMIROLLD_CFG_DW1000) */
-  #define MODULE_INIT_TESTS_DW1000() {                                        \
+#elif (BOARD_BREAKOUT_MODULE == BOARD_BREAKOUT_NONE)
+  #define MODULE_INIT_TESTS_BREAKOUT() {                                      \
   }
-#endif /* BOARD_DW1000_CONNECTED == true */
+#endif
 
 /**
  * @brief   Periphery communication interfaces initialization hook.
@@ -410,16 +367,17 @@ extern ROMCONST char* moduleShellPrompt;
   i2cStart(&MODULE_HAL_I2C_EEPROM_PWRMTR_BREAKOUT, &moduleHalI2cEepromPwrmtrBreakoutConfig);  \
   /* SPI */                                                                   \
   spiStart(&MODULE_HAL_SPI_LIGHT, &moduleHalSpiLightConfig);                  \
-  MODULE_INIT_PERIPHERY_COMM_DW1000();                                        \
+  /* breakout module */                                                       \
+  MODULE_INIT_PERIPHERY_COMM_BREAKOUT();                                      \
 }
-#if (BOARD_DW1000_CONNECTED == true)
-  #define MODULE_INIT_PERIPHERY_COMM_DW1000() {                               \
-  spiStart(&MODULE_HAL_SPI_UWB, &moduleHalSpiUwbLsConfig);                    \
+#if (BOARD_BREAKOUT_MODULE == BOARD_BREAKOUT_UWBv10)
+  #define MODULE_INIT_PERIPHERY_COMM_BREAKOUT() {                             \
+    spiStart(&MODULE_HAL_SPI_UWB, &moduleHalSpiUwbLsConfig);                  \
   }
-#else /* defined(AMIROLLD_CFG_DW1000) */
-  #define MODULE_INIT_PERIPHERY_COMM_DW1000() {                               \
+#elif (BOARD_BREAKOUT_MODULE == BOARD_BREAKOUT_NONE)
+  #define MODULE_INIT_PERIPHERY_COMM_BREAKOUT() {                             \
   }
-#endif /* BOARD_DW1000_CONNECTED == true */
+#endif
 
 /**
  * @brief   Periphery communication interface deinitialization hook.
@@ -429,36 +387,19 @@ extern ROMCONST char* moduleShellPrompt;
   spiStop(&MODULE_HAL_SPI_LIGHT);                                             \
   /* I2C */                                                                   \
   i2cStop(&MODULE_HAL_I2C_EEPROM_PWRMTR_BREAKOUT);                            \
-  MODULE_SHUTDOWN_PERIPHERY_COMM_DW1000();                                    \
+  /* breakout module */                                                       \
+  MODULE_SHUTDOWN_PERIPHERY_COMM_BREAKOUT();                                  \
   /* don't stop the serial driver so messages can still be printed */         \
 }
-#if (BOARD_DW1000_CONNECTED == true)
-#define MODULE_SHUTDOWN_PERIPHERY_COMM_DW1000() {                             \
-  /* SPI */                                                                   \
-  spiStop(&MODULE_HAL_SPI_UWB);                                               \
-}
-#else /* defined(AMIROLLD_CFG_DW1000) */
-  #define MODULE_SHUTDOWN_PERIPHERY_COMM_DW1000() {                           \
-  }
-#endif /* BOARD_DW1000_CONNECTED == true */
-
-
-/**
- * @brief   HOOK to call process_deca_irq() func when the dw1000 interrupt pin is activated.
- */
-#define MODULE_MAIN_LOOP_IO_EVENT(eventflags) {                               \
-  MODULE_MAIN_LOOP_IO_EVENT_DW1000();                                         \
-}
-#if (BOARD_DW1000_CONNECTED == true)
-  #define MODULE_MAIN_LOOP_IO_EVENT_DW1000() {                                \
-    if(eventflags & MODULE_OS_IOEVENTFLAGS_DW1000) {                          \
-      process_deca_irq();                                                     \
-    }                                                                         \
+#if (BOARD_BREAKOUT_MODULE == BOARD_BREAKOUT_UWBv10)
+  #define MODULE_SHUTDOWN_PERIPHERY_COMM_BREAKOUT() {                         \
+    /* SPI */                                                                 \
+    spiStop(&MODULE_HAL_SPI_UWB);                                             \
   }
-#else /* defined(AMIROLLD_CFG_DW1000) */
-  #define MODULE_MAIN_LOOP_IO_EVENT_DW1000() {                                \
+#elif (BOARD_BREAKOUT_MODULE == BOARD_BREAKOUT_NONE)
+  #define MODULE_SHUTDOWN_PERIPHERY_COMM_BREAKOUT() {                         \
   }
-#endif /* BOARD_DW1000_CONNECTED == true */
+#endif
 
 /** @} */
 
@@ -523,7 +464,6 @@ extern ROMCONST char* moduleShellPrompt;
 #include <alld_MIC9404x.h>
 // TODO: add SNx5C3221E
 #include <alld_TLC5947.h>
-#include <alld_DW1000.h>
 
 /**
  * @brief   EEPROM driver.
@@ -573,14 +513,19 @@ extern MIC9404xDriver moduleLldPowerSwitchVsys;
  */
 extern TLC5947Driver moduleLldLedPwm;
 
+#if (BOARD_BREAKOUT_MODULE == BOARD_BREAKOUT_UWBv10) || defined(__DOXYGEN__)
+
+#include <alld_DW1000.h>
+
 /**
- * @brief   DW1000 driver.
+ * @brief   Alias for the DW1000 driver object.
+ * @note    The dw1000 struct is defined as external variable (singleton) by the
+ *          driver, since the Decawave software stacks assumes no more than a
+ *          single device in a system.
  */
-void setHighSpeed_SPI(bool speedValue, DW1000Driver* drv);
-#if (BOARD_DW1000_CONNECTED == true)
-extern DW1000Driver moduleLldDw1000;
-extern MIC9404xDriver moduleLldPowerSwitchDw1000;
-#endif /* (BOARD_DW1000_CONNECTED == true) */
+#define moduleLldDw1000                         dw1000
+
+#endif /* (BOARD_BREAKOUT_MODULE == BOARD_BREAKOUT_UWBv10) */
 
 /** @} */
 
@@ -625,12 +570,14 @@ extern aos_shellcommand_t moduleTestTlc5947ShellCmd;
 extern aos_shellcommand_t moduleTestAllShellCmd;
 
 
-#if (BOARD_DW1000_CONNECTED == true)
+#if (BOARD_BREAKOUT_MODULE == BOARD_BREAKOUT_UWBv10) || defined(__DOXYGEN__)
+
 /**
  * @brief   DW1000 (UWB transmitter) test command.
  */
 extern aos_shellcommand_t moduleTestDw1000ShellCmd;
-#endif /* (BOARD_DW1000_CONNECTED == true) */
+
+#endif /* (BOARD_BREAKOUT_MODULE == BOARD_BREAKOUT_UWBv10) */
 
 #endif /* (AMIROOS_CFG_TESTS_ENABLE == true) */
 
diff --git a/modules/LightRing_1-2/test/DW1000/module_test_DW1000.c b/modules/LightRing_1-2/test/DW1000/module_test_DW1000.c
index 04c78aa..09140f4 100644
--- a/modules/LightRing_1-2/test/DW1000/module_test_DW1000.c
+++ b/modules/LightRing_1-2/test/DW1000/module_test_DW1000.c
@@ -18,13 +18,12 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 #include <amiroos.h>
 
-#if (AMIROOS_CFG_TESTS_ENABLE == true) && (BOARD_DW1000_CONNECTED == true) || defined(__DOXYGEN__)
-
+#if ((AMIROOS_CFG_TESTS_ENABLE == true) && (BOARD_BREAKOUT_MODULE == BOARD_BREAKOUT_UWBv10)) || defined(__DOXYGEN__)
 
 #include <module_test_DW1000.h>
 #include <aos_test_DW1000.h>
-//#include <aos_test_MIC9404x.h>
-#include <module_test_MIC9404x.h>
+#include <string.h>
+#include <alld_MIC9404x.h>
 
 /******************************************************************************/
 /* LOCAL DEFINITIONS                                                          */
@@ -43,13 +42,10 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 /******************************************************************************/
 
 static aos_test_dw1000data_t _data = {
-  /* UWB data     */ &moduleLldDw1000,
-  /* event source */ &aos.events.io,
-  /* event flags  */ MODULE_OS_IOEVENTFLAGS_DW1000,
-  /* Power supply */ &moduleLldPowerSwitchDw1000,
+  /* driver */ &moduleLldDw1000,
 };
 
-static AOS_TEST(_test, "DW1000", NULL, moduleTestDw1000ShellCb, aosTestDw1000Func, &_data);
+static AOS_TEST(_test, "DW1000", "UWB transceiver", moduleTestDw1000ShellCb, aosTestDw1000Func, &_data);
 
 /******************************************************************************/
 /* LOCAL FUNCTIONS                                                            */
@@ -64,26 +60,22 @@ int moduleTestDw1000ShellCb(BaseSequentialStream* stream, int argc, char* argv[]
   (void)argc;
   (void)argv;
 
-  /* MIC9404x (power switch) */
-  // Enable 1.8V for DW1000 module on Light Ring
-  _data.mic9404xd = &moduleLldPowerSwitchV18;
-  aosTestRun(stream, &_test, "1.8V");
-  _data.mic9404xd = NULL;
-
-  // Enable 3.3V for DW1000 module on Light Ring
-  _data.mic9404xd = &moduleLldPowerSwitchV33;
-  aosTestRun(stream, &_test, "3.3V");
-  _data.mic9404xd = NULL;
+  // enable power
+  mic9404x_lld_set(&moduleLldPowerSwitchV18, MIC9404x_LLD_STATE_ON);
+  mic9404x_lld_set(&moduleLldPowerSwitchV33, MIC9404x_LLD_STATE_ON);
 
-
-  /* DW1000 (test) */
   if (result != NULL) {
     *result = aosTestRun(stream, &_test, NULL);
-
   } else {
     aosTestRun(stream, &_test, NULL);
   }
+
+  chprintf(stream, "TODO: turn off the device\n");
+  if (result) {
+    aosTestFailed(stream, result);
+  }
+
   return AOS_OK;
 }
 
-#endif /* (AMIROOS_CFG_TESTS_ENABLE == true) */
+#endif /* (AMIROOS_CFG_TESTS_ENABLE == true) && (BOARD_BREAKOUT_MODULE == BOARD_BREAKOUT_UWBv10) */
diff --git a/modules/LightRing_1-2/test/DW1000/module_test_DW1000.h b/modules/LightRing_1-2/test/DW1000/module_test_DW1000.h
index e95878c..0bbefeb 100644
--- a/modules/LightRing_1-2/test/DW1000/module_test_DW1000.h
+++ b/modules/LightRing_1-2/test/DW1000/module_test_DW1000.h
@@ -22,7 +22,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 #include <amiroos.h>
 
-#if (AMIROOS_CFG_TESTS_ENABLE == true) && (BOARD_DW1000_CONNECTED == true) || defined(__DOXYGEN__)
+#if ((AMIROOS_CFG_TESTS_ENABLE == true) && (BOARD_BREAKOUT_MODULE == BOARD_BREAKOUT_UWBv10)) || defined(__DOXYGEN__)
 
 /******************************************************************************/
 /* CONSTANTS                                                                  */
@@ -60,7 +60,7 @@ extern "C" {
 /* INLINE FUNCTIONS                                                           */
 /******************************************************************************/
 
-#endif /* (AMIROOS_CFG_TESTS_ENABLE == true) */
+#endif /* (AMIROOS_CFG_TESTS_ENABLE == true) && (BOARD_BREAKOUT_MODULE == BOARD_BREAKOUT_UWBv10) */
 
 #endif /* MODULE_TEST_DW1000_H */
 
diff --git a/test/periphery-lld/AT24C01B_v1/aos_test_AT24C01B.c b/test/periphery-lld/AT24C01B_v1/aos_test_AT24C01B.c
index 02c5772..205d3ee 100644
--- a/test/periphery-lld/AT24C01B_v1/aos_test_AT24C01B.c
+++ b/test/periphery-lld/AT24C01B_v1/aos_test_AT24C01B.c
@@ -73,7 +73,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 /**
  * @brief   AT24C01B test function.
  *
- * @param[in] stream  Stream for inout/outout.
+ * @param[in] stream  Stream for input/output.
  * @param[in] test    Test object.
  *
  * @return            Test result value.
diff --git a/test/periphery-lld/DW1000_v2/aos_test_DW1000.c b/test/periphery-lld/DW1000_v2/aos_test_DW1000.c
new file mode 100644
index 0000000..dbc706a
--- /dev/null
+++ b/test/periphery-lld/DW1000_v2/aos_test_DW1000.c
@@ -0,0 +1,77 @@
+/*
+AMiRo-OS is an operating system designed for the Autonomous Mini Robot (AMiRo) platform.
+Copyright (C) 2016..2019  Thomas Schöpping et al.
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include <amiroos.h>
+#include <aos_test_DW1000.h>
+
+#if (AMIROOS_CFG_TESTS_ENABLE == true) || defined(__DOXYGEN__)
+
+/******************************************************************************/
+/* LOCAL DEFINITIONS                                                          */
+/******************************************************************************/
+
+/******************************************************************************/
+/* EXPORTED VARIABLES                                                         */
+/******************************************************************************/
+
+/******************************************************************************/
+/* LOCAL TYPES                                                                */
+/******************************************************************************/
+
+/******************************************************************************/
+/* LOCAL VARIABLES                                                            */
+/******************************************************************************/
+
+/******************************************************************************/
+/* LOCAL FUNCTIONS                                                            */
+/******************************************************************************/
+
+/******************************************************************************/
+/* EXPORTED FUNCTIONS                                                         */
+/******************************************************************************/
+
+/**
+ * @brief   DW1000 test function.
+ *
+ * @param[in] stream  Stream for input/output.
+ * @param[in] test    Test object.
+ *
+ * @return            Test result value.
+ */
+aos_testresult_t aosTestDw1000Func(BaseSequentialStream* stream, const aos_test_t* test) {
+
+  aosDbgCheck(test->data != NULL &&
+      ((aos_test_dw1000data_t*)test->data)->driver != NULL);
+
+  // local variables
+  aos_testresult_t result;
+
+  aosTestResultInit(&result);
+
+  chprintf(stream, "TODO (%s): reimplement test routine\n", __FILE__);
+  chprintf(stream, "  - Implement EVERYTHING in the test/periphery-lld/DW1000/v2/ folder!\n");
+  chprintf(stream, "  - Preferably only use the two files aos_test_DW1000.h/.c!\n");
+  chprintf(stream, "  - The test shall assume that any other involved periphery has been setup correctly before!\n");
+  chprintf(stream, "  - Any module-specific code (e.g. initialization of voltages) belongs to the according <module>/test/DW1000/ folder!\n");
+  chprintf(stream, "\n");
+
+  return result;
+}
+
+
+#endif /* (AMIROOS_CFG_TESTS_ENABLE == true) */
diff --git a/test/periphery-lld/DW1000_v2/aos_test_DW1000.h b/test/periphery-lld/DW1000_v2/aos_test_DW1000.h
new file mode 100644
index 0000000..357e11e
--- /dev/null
+++ b/test/periphery-lld/DW1000_v2/aos_test_DW1000.h
@@ -0,0 +1,78 @@
+/*
+AMiRo-OS is an operating system designed for the Autonomous Mini Robot (AMiRo) platform.
+Copyright (C) 2016..2019  Thomas Schöpping et al.
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef AMIROOS_TEST_DW1000_H
+#define AMIROOS_TEST_DW1000_H
+
+#include <amiroos.h>
+
+#if (AMIROOS_CFG_TESTS_ENABLE == true) || defined(__DOXYGEN__)
+
+#include <alld_DW1000.h>
+
+/******************************************************************************/
+/* CONSTANTS                                                                  */
+/******************************************************************************/
+
+/******************************************************************************/
+/* SETTINGS                                                                   */
+/******************************************************************************/
+
+/******************************************************************************/
+/* CHECKS                                                                     */
+/******************************************************************************/
+
+/******************************************************************************/
+/* DATA STRUCTURES AND TYPES                                                  */
+/******************************************************************************/
+
+/**
+ * @brief   Custom data structure for the test.
+ */
+typedef struct {
+  /**
+   * @brief   Pointer to the driver to use.
+   */
+  DW1000Driver* driver;
+
+} aos_test_dw1000data_t;
+
+
+/******************************************************************************/
+/* MACROS                                                                     */
+/******************************************************************************/
+
+/******************************************************************************/
+/* EXTERN DECLARATIONS                                                        */
+/******************************************************************************/
+
+#if defined(__cplusplus)
+extern "C" {
+#endif /* defined(__cplusplus) */
+  aos_testresult_t aosTestDw1000Func(BaseSequentialStream* stream, const aos_test_t* test);
+#if defined(__cplusplus)
+}
+#endif /* defined(__cplusplus) */
+
+/******************************************************************************/
+/* INLINE FUNCTIONS                                                           */
+/******************************************************************************/
+
+#endif /* (AMIROOS_CFG_TESTS_ENABLE == true) */
+
+#endif /* AMIROOS_TEST_DW1000_H */
