motor board library

Dependencies:   ST_INTERFACES X_NUCLEO_COMMON

Dependents:   selfbalansingcar

Fork of X_NUCLEO_IHM02A1 by ST

Revision:
3:e3f6f4474d98
Parent:
1:b78dab6d2c58
Child:
9:d70452d7a1e1
--- a/BSP/x_nucleo_ihm02a1_class.cpp	Wed Nov 25 14:39:33 2015 +0000
+++ b/BSP/x_nucleo_ihm02a1_class.cpp	Wed Nov 25 17:15:37 2015 +0000
@@ -54,9 +54,6 @@
 
 /* Static variables ----------------------------------------------------------*/
 
-/* Singleton instance of X_NUCLEO_IHM02A1 class. */
-X_NUCLEO_IHM02A1 *X_NUCLEO_IHM02A1::_instance;
-
 /* Number of instantiated expansion boards. */
 uint8_t X_NUCLEO_IHM02A1::number_of_boards = 0;
 
@@ -129,6 +126,10 @@
  */
 X_NUCLEO_IHM02A1::X_NUCLEO_IHM02A1(PinName flag_irq, PinName busy_irq, PinName standby_reset, PinName ssel, DevSPI *spi) : dev_spi(spi)
 {
+    /* SPI communication. */
+    if (dev_spi == NULL)
+        dev_spi = new DevSPI(X_NUCLEO_IHM02A1_PIN_SPI_MOSI, X_NUCLEO_IHM02A1_PIN_SPI_MISO, X_NUCLEO_IHM02A1_PIN_SPI_SCLK);
+
     /* Instantiating the components. */
     /* ACTION 3 --------------------------------------------------------------*
      * Instantiate here the expansion board's components.                     *
@@ -140,38 +141,14 @@
     X_NUCLEO_IHM02A1_Id = number_of_boards++;
     components[0] = l6470_0 = new L6470(flag_irq, busy_irq, standby_reset, ssel, *dev_spi);
     components[1] = l6470_1 = new L6470(flag_irq, busy_irq, standby_reset, ssel, *dev_spi);
+
+    /* Initializing the components. */
+    if (!Init())
+        error("Initialization of the X_NUCLEO_IHM02A1 expansion board failed.\n");
 }
 
 /**
- * @brief Getting a singleton instance of X_NUCLEO_IHM02A1 class.
- * @param flag_irq      pin name of the FLAG pin of the component.
- * @param busy_irq      pin name of the BUSY pin of the component.
- * @param standby_reset pin name of the STBY\RST pin of the component.
- * @param ssel          pin name of the SSEL pin of the SPI device to be used for communication.
- * @param spi           SPI device to be used for communication.
- * @retval a singleton instance of X_NUCLEO_IHM02A1 class.
- */
-X_NUCLEO_IHM02A1 *X_NUCLEO_IHM02A1::Instance(PinName flag_irq, PinName busy_irq, PinName standby_reset, PinName ssel, DevSPI *spi)
-{
-    if (_instance == NULL)
-    {
-        /* SPI communication. */
-        if (spi == NULL)
-            spi = new DevSPI(X_NUCLEO_IHM02A1_PIN_SPI_MOSI, X_NUCLEO_IHM02A1_PIN_SPI_MISO, X_NUCLEO_IHM02A1_PIN_SPI_SCLK);
-
-        /* Instantiating the board. */
-        _instance = new X_NUCLEO_IHM02A1(flag_irq, busy_irq, standby_reset, ssel, spi);
-
-        /* Initializing the components. */
-        if (!_instance->Init())
-            error("Initialization of the X_NUCLEO_IHM02A1 expansion board failed.\n");
-    }
-
-    return _instance;
-}
-
-/**
- * @brief Getting a singleton instance of X_NUCLEO_IHM02A1 class.
+ * @brief Constructor.
  * @param flag_irq      pin name of the FLAG pin of the component.
  * @param busy_irq      pin name of the BUSY pin of the component.
  * @param standby_reset pin name of the STBY\RST pin of the component.
@@ -179,24 +156,27 @@
  * @param mosi          pin name of the MOSI pin of the SPI device to be used for communication.
  * @param miso          pin name of the MISO pin of the SPI device to be used for communication.
  * @param sclk          pin name of the SCLK pin of the SPI device to be used for communication.
- * @retval a singleton instance of X_NUCLEO_IHM02A1 class.
  */
-X_NUCLEO_IHM02A1 *X_NUCLEO_IHM02A1::Instance(PinName flag_irq, PinName busy_irq, PinName standby_reset, PinName ssel, PinName mosi, PinName miso, PinName sclk)
+X_NUCLEO_IHM02A1::X_NUCLEO_IHM02A1(PinName flag_irq, PinName busy_irq, PinName standby_reset, PinName ssel, PinName mosi, PinName miso, PinName sclk)
 {
-    if (_instance == NULL)
-    {
-        /* SPI communication. */
-        DevSPI *spi = new DevSPI(mosi, miso, sclk);
+    /* SPI communication. */
+    dev_spi = new DevSPI(mosi, miso, sclk);
 
-        /* Instantiating the board. */
-        _instance = new X_NUCLEO_IHM02A1(flag_irq, busy_irq, standby_reset, ssel, spi);
+    /* Instantiating the components. */
+    /* ACTION 3 --------------------------------------------------------------*
+     * Instantiate here the expansion board's components.                     *
+     *                                                                        *
+     * Example:                                                               *
+     *   component_1 = new COMPONENT_1(COMPONENT_1_SPI_SSEL, *dev_spi);       *
+     *   component_2 = new COMPONENT_2(COMPONENT_2_SPI_SSEL, *dev_spi);       *
+     *------------------------------------------------------------------------*/
+    X_NUCLEO_IHM02A1_Id = number_of_boards++;
+    components[0] = l6470_0 = new L6470(flag_irq, busy_irq, standby_reset, ssel, *dev_spi);
+    components[1] = l6470_1 = new L6470(flag_irq, busy_irq, standby_reset, ssel, *dev_spi);
 
-        /* Initializing the components. */
-        if (!_instance->Init())
-            error("Initialization of the X_NUCLEO_IHM02A1 expansion board failed.\n");
-    }
-
-    return _instance;
+    /* Initializing the components. */
+    if (!Init())
+        error("Initialization of the X_NUCLEO_IHM02A1 expansion board failed.\n");
 }
 
 /**