hi

Dependencies:   ST_INTERFACES X_NUCLEO_COMMON

Fork of X_NUCLEO_IHM02A1 by ST

Files at this revision

API Documentation at this revision

Comitter:
Davidroid
Date:
Mon Mar 13 17:52:38 2017 +0000
Parent:
23:cf489f2ab072
Child:
25:e7bdebda3c3b
Commit message:
Typo corrected.

Changed in this revision

BSP/XNucleoIHM02A1.cpp Show annotated file Show diff for this revision Revisions of this file
BSP/XNucleoIHM02A1.h Show annotated file Show diff for this revision Revisions of this file
BSP/XNucleoIhm02a1.cpp Show diff for this revision Revisions of this file
BSP/XNucleoIhm02a1.h Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/BSP/XNucleoIHM02A1.cpp	Mon Mar 13 17:52:38 2017 +0000
@@ -0,0 +1,220 @@
+/**
+ ******************************************************************************
+ * @file    XNucleoIHM02A1.cpp
+ * @author  AST / Software Platforms and Cloud
+ * @version V1.0
+ * @date    November 3rd, 2015
+ * @brief   Implementation file for the X_NUCLEO_IHM02A1 expansion board.
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *   1. Redistributions of source code must retain the above copyright notice,
+ *      this list of conditions and the following disclaimer.
+ *   2. Redistributions in binary form must reproduce the above copyright notice,
+ *      this list of conditions and the following disclaimer in the documentation
+ *      and/or other materials provided with the distribution.
+ *   3. Neither the name of STMicroelectronics nor the names of its contributors
+ *      may be used to endorse or promote products derived from this software
+ *      without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ ******************************************************************************
+ */
+
+
+/* Generated with STM32CubeTOO -----------------------------------------------*/
+
+
+/* Includes ------------------------------------------------------------------*/
+
+/* ACTION 1 ------------------------------------------------------------------*
+ * Include here platform specific header files.                               *
+ *----------------------------------------------------------------------------*/
+#include "mbed.h"
+#include "DevSPI.h"
+/* ACTION 2 ------------------------------------------------------------------*
+ * Include here expansion board specific header files.                        *
+ *----------------------------------------------------------------------------*/
+#include "XNucleoIHM02A1.h"
+
+
+/* Variables -----------------------------------------------------------------*/
+
+/* Number of expansion boards. */
+uint8_t XNucleoIHM02A1::number_of_boards = 0;
+
+
+/* Methods -------------------------------------------------------------------*/
+
+/**
+ * @brief Constructor.
+ * @param init_0        pointer to the initialization structure of the first motor.
+ * @param init_1        pointer to the initialization structure of the second motor.
+ * @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.
+ */
+XNucleoIHM02A1::XNucleoIHM02A1(L6470_init_t *init_0, L6470_init_t *init_1, PinName flag_irq, PinName busy_irq, PinName standby_reset, PinName ssel, DevSPI *spi) : dev_spi(spi)
+{
+    /* Checking stackability. */
+    if (!(number_of_boards < EXPBRD_MOUNTED_NR_MAX)) {
+        error("Instantiation of the X_NUCLEO_IHM02A1 expansion board failed: it can be stacked up to %d times.\r\n", EXPBRD_MOUNTED_NR_MAX);
+    }
+    instance_id = number_of_boards++;
+
+    /* 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.                     *
+     *                                                                        *
+     * Example:                                                               *
+     *   component_1 = new COMPONENT_1(ssel, *dev_spi);                       *
+     *   component_2 = new COMPONENT_2(ssel, *dev_spi);                       *
+     *------------------------------------------------------------------------*/
+    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. */
+    init_components[0] = init_0;
+    init_components[1] = init_1;
+    if (!init()) {
+        error("Initialization of the X_NUCLEO_IHM02A1 expansion board failed.\r\n");
+    }
+}
+
+/**
+ * @brief Constructor.
+ * @param init_0        pointer to the initialization structure of the first motor.
+ * @param init_1        pointer to the initialization structure of the second motor.
+ * @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 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.
+ */
+XNucleoIHM02A1::XNucleoIHM02A1(L6470_init_t *init_0, L6470_init_t *init_1, PinName flag_irq, PinName busy_irq, PinName standby_reset, PinName ssel, PinName mosi, PinName miso, PinName sclk)
+{
+    /* Checking stackability. */
+    if (!(number_of_boards < EXPBRD_MOUNTED_NR_MAX)) {
+        error("Instantiation of the X_NUCLEO_IHM02A1 expansion board failed: it can be stacked up to %d times.\r\n", EXPBRD_MOUNTED_NR_MAX);
+    }
+    instance_id = number_of_boards++;
+
+    /* SPI communication. */
+    dev_spi = new DevSPI(mosi, miso, sclk);
+
+    /* Instantiating the components. */
+    /* ACTION 3 --------------------------------------------------------------*
+     * Instantiate here the expansion board's components.                     *
+     *                                                                        *
+     * Example:                                                               *
+     *   component_1 = new COMPONENT_1(ssel, *dev_spi);                       *
+     *   component_2 = new COMPONENT_2(ssel, *dev_spi);                       *
+     *------------------------------------------------------------------------*/
+    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. */
+    init_components[0] = init_0;
+    init_components[1] = init_1;
+    if (!init()) {
+        error("Initialization of the X_NUCLEO_IHM02A1 expansion board failed.\r\n");
+    }
+}
+
+/**
+ * @brief Initializing the X_NUCLEO_IHM02A1 board.
+ * @retval true if initialization is successful, false otherwise.
+ */
+bool XNucleoIHM02A1::init(void)
+{
+    /* Initializing the components. */
+    /* ACTION 4 --------------------------------------------------------------*
+     * Initialize here the expansion board's components.                      *
+     *                                                                        *
+     * Example:                                                               *
+     *   return (init_COMPONENT_1() && init_COMPONENT_2());                   *
+     *------------------------------------------------------------------------*/
+    return (init_L6470_0() && init_L6470_1());
+}
+
+/* ACTION 5 ------------------------------------------------------------------*
+ * Implement here an initialization method for each expansion board's         *
+ * component.                                                                 *
+ *                                                                            *
+ * Example:                                                                   *
+ *   bool ExpansionBoard::init_COMPONENT_1(void)                              *
+ *   {                                                                        *
+ *     // Verifying identity.                                                 *
+ *     uint8_t id = 0;                                                        *
+ *     int ret = component_1->read_id(&id);                                   *
+ *     if ((ret != COMPONENT_OK) || (id != I_AM_COMPONENT_1))                 *
+ *     {                                                                      *
+ *       delete component_1;                                                  *
+ *       component_1 = NULL;                                                  *
+ *       return true;                                                         *
+ *     }                                                                      *
+ *                                                                            *
+ *     // Configuration.                                                      *
+ *     COMPONENT_init_t init;                                                 *
+ *     init.property_1 = COMPONENT_1_PROPERY_1_INIT;                          *
+ *     init.property_N = COMPONENT_1_PROPERY_N_INIT;                          *
+ *                                                                            *
+ *     // Initialization.                                                     *
+ *     if (component_1->init(&init) != COMPONENT_OK)                          *
+ *       return false;                                                        *
+ *                                                                            *
+ *     return true;                                                           *
+ *   }                                                                        *
+ *----------------------------------------------------------------------------*/
+/**
+ * @brief  Initialize the L6470 component.
+ * @retval true if initialization is successful, false otherwise.
+ */
+bool XNucleoIHM02A1::init_L6470_0(void)
+{
+    /* Initialization. */
+    if (l6470_0->init((void *) init_components[0]) != COMPONENT_OK) {
+        return false;
+    }
+
+    return true;
+}
+
+/**
+ * @brief  Initialize the L6470 component.
+ * @retval true if initialization is successful, false otherwise.
+ */
+bool XNucleoIHM02A1::init_L6470_1(void)
+{
+    /* Initialization. */
+    if (l6470_1->init((void *) init_components[1]) != COMPONENT_OK) {
+        return false;
+    }
+
+    return true;
+}
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/BSP/XNucleoIHM02A1.h	Mon Mar 13 17:52:38 2017 +0000
@@ -0,0 +1,224 @@
+/**
+ ******************************************************************************
+ * @file    XNucleoIHM02A1.h
+ * @author  AST / Software Platforms and Cloud
+ * @version V1.0
+ * @date    November 3rd, 2015
+ * @brief   Class header file for the X-NUCLEO-IHM02A1 expansion board.
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *   1. Redistributions of source code must retain the above copyright notice,
+ *      this list of conditions and the following disclaimer.
+ *   2. Redistributions in binary form must reproduce the above copyright notice,
+ *      this list of conditions and the following disclaimer in the documentation
+ *      and/or other materials provided with the distribution.
+ *   3. Neither the name of STMicroelectronics nor the names of its contributors
+ *      may be used to endorse or promote products derived from this software
+ *      without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ ******************************************************************************
+ */
+
+
+/* Generated with STM32CubeTOO -----------------------------------------------*/
+
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+
+#ifndef __X_NUCLEO_IHM02A1_CLASS_H
+#define __X_NUCLEO_IHM02A1_CLASS_H
+
+
+/* Includes ------------------------------------------------------------------*/
+
+/* ACTION 1 ------------------------------------------------------------------*
+ * Include here platform specific header files.                               *
+ *----------------------------------------------------------------------------*/
+#include "mbed.h"
+#include "DevSPI.h"
+/* ACTION 2 ------------------------------------------------------------------*
+ * Include here expansion board configuration's header files.                 *
+ *----------------------------------------------------------------------------*/
+#include "x_nucleo_ihm02a1_config.h"
+/* ACTION 3 ------------------------------------------------------------------*
+ * Include here expansion board's components' header files.                   *
+ *                                                                            *
+ * Example:                                                                   *
+ *   #include "COMPONENT_1.h"                                                 *
+ *   #include "COMPONENT_2.h"                                                 *
+ *----------------------------------------------------------------------------*/
+#include "L6470.h"
+
+
+/* Classes -------------------------------------------------------------------*/
+
+/** Class representing a X-NUCLEO-IHM02A1 board.
+ */
+class XNucleoIHM02A1
+{
+public:
+
+    /*** Constructor, Destructor, and Initialization Methods ***/
+
+    /**
+     * @brief Constructor.
+     * @param init_0        pointer to the initialization structure of the first motor.
+     * @param init_1        pointer to the initialization structure of the second motor.
+     * @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.
+     */
+    XNucleoIHM02A1(L6470_init_t *init_0, L6470_init_t *init_1, PinName flag_irq, PinName busy_irq, PinName standby_reset, PinName ssel, DevSPI *spi);
+
+    /**
+     * @brief Constructor.
+     * @param init_0        pointer to the initialization structure of the first motor.
+     * @param init_1        pointer to the initialization structure of the second motor.
+     * @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 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.
+     */
+    XNucleoIHM02A1(L6470_init_t *init_0, L6470_init_t *init_1, PinName flag_irq, PinName busy_irq, PinName standby_reset, PinName ssel, PinName mosi, PinName miso, PinName sclk);
+
+    /**
+     * @brief Destructor.
+     */
+    ~XNucleoIHM02A1(void) {}
+
+    /**
+     * @brief Initializing the X-NUCLEO-IHM02A1 board.
+     * @retval true if initialization is successful, false otherwise.
+     */
+    bool init(void);
+
+
+    /*** Other Public Expansion Board Related Methods ***/
+
+    /**
+     * @brief  Getting the array of components.
+     * @param  None.
+     * @retval The array of components.
+     */
+    L6470 **get_components(void)
+    {
+        return components;
+    }
+
+    /**
+      * @brief  Performing the actions set on the motors with calls to a number of
+      *         "Prepare<Action>()" methods, one for each motor of the daisy-chain.
+      * @param  None.
+      * @retval A pointer to the results returned by the components, i.e. an
+      *         integer value for each of them.
+      */
+    virtual uint32_t* perform_prepared_actions(void)
+    {
+        /* Performing pre-actions, if needed. */
+        for (int m = 0; m < L6470DAISYCHAINSIZE; m++) {
+            /*
+               "GetPosition()" is needed by "PrepareSetMark()" at the time when the
+               prepared actions get performed.
+            */
+            if (components[m]->get_prepared_action() == L6470::PREPARED_SET_MARK) {
+                components[m]->prepare_set_mark((uint32_t) components[m]->get_position());
+            }
+        }
+        
+        /* Performing the prepared actions and getting back raw data. */
+        uint8_t *raw_data = components[0]->perform_prepared_actions();
+
+        /* Processing raw data. */
+        for (int m = 0; m < L6470DAISYCHAINSIZE; m++) {
+            results[m] = components[m]->get_result(raw_data);
+        }
+
+        /* Returning results. */
+        return results;
+    }
+
+
+    /*** Public Expansion Board Related Attributes ***/
+
+    /* ACTION 4 --------------------------------------------------------------*
+     * Declare here a public attribute for each expansion board's component.  *
+     * You will have to call these attributes' public methods within your     *
+     * main program.                                                          *
+     *                                                                        *
+     *   Example:                                                             *
+     *     COMPONENT_1 *component_1;                                          *
+     *     COMPONENT_2 *component_2;                                          *
+     *------------------------------------------------------------------------*/
+    L6470 *l6470_0;
+    L6470 *l6470_1;
+
+
+protected:
+
+    /*** Protected Expansion Board Related Initialization Methods ***/
+
+    /* ACTION 5 --------------------------------------------------------------*
+     * Declare here a protected initialization method for each expansion      *
+     * board's component.                                                     *
+     *                                                                        *
+     * Example:                                                               *
+     *   bool init_COMPONENT_1(void);                                         *
+     *   bool init_COMPONENT_2(void);                                         *
+     *------------------------------------------------------------------------*/
+    bool init_L6470_0(void);
+    bool init_L6470_1(void);
+
+
+    /*** Component's Instance Variables ***/
+
+    /* IO Device. */
+    DevSPI *dev_spi;
+
+    /* Components. */
+    L6470 *components[L6470DAISYCHAINSIZE];
+    
+    /* Components' initialization. */
+    L6470_init_t *init_components[L6470DAISYCHAINSIZE];
+
+    /* Results of prepared actions. */
+    uint32_t results[L6470DAISYCHAINSIZE];
+
+    /* ACTION 6 --------------------------------------------------------------*
+     * Declare here the component's static and non-static data, one variable  *
+     * per line.                                                              *
+     *                                                                        *
+     * Example:                                                               *
+     *   int instance_id;                                                     *
+     *   static int number_of_instances;                                      *
+     *------------------------------------------------------------------------*/
+    /* Data. */
+    uint8_t instance_id;
+
+    /* Static data. */
+    static uint8_t number_of_boards;
+};
+
+#endif /* __X_NUCLEO_IHM02A1_CLASS_H */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- a/BSP/XNucleoIhm02a1.cpp	Fri Mar 10 15:23:54 2017 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,220 +0,0 @@
-/**
- ******************************************************************************
- * @file    XNucleoIhm02a1.cpp
- * @author  AST / Software Platforms and Cloud
- * @version V1.0
- * @date    November 3rd, 2015
- * @brief   Implementation file for the X_NUCLEO_IHM02A1 expansion board.
- ******************************************************************************
- * @attention
- *
- * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *   1. Redistributions of source code must retain the above copyright notice,
- *      this list of conditions and the following disclaimer.
- *   2. Redistributions in binary form must reproduce the above copyright notice,
- *      this list of conditions and the following disclaimer in the documentation
- *      and/or other materials provided with the distribution.
- *   3. Neither the name of STMicroelectronics nor the names of its contributors
- *      may be used to endorse or promote products derived from this software
- *      without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- ******************************************************************************
- */
-
-
-/* Generated with STM32CubeTOO -----------------------------------------------*/
-
-
-/* Includes ------------------------------------------------------------------*/
-
-/* ACTION 1 ------------------------------------------------------------------*
- * Include here platform specific header files.                               *
- *----------------------------------------------------------------------------*/
-#include "mbed.h"
-#include "DevSPI.h"
-/* ACTION 2 ------------------------------------------------------------------*
- * Include here expansion board specific header files.                        *
- *----------------------------------------------------------------------------*/
-#include "XNucleoIhm02a1.h"
-
-
-/* Variables -----------------------------------------------------------------*/
-
-/* Number of expansion boards. */
-uint8_t XNucleoIhm02a1::number_of_boards = 0;
-
-
-/* Methods -------------------------------------------------------------------*/
-
-/**
- * @brief Constructor.
- * @param init_0        pointer to the initialization structure of the first motor.
- * @param init_1        pointer to the initialization structure of the second motor.
- * @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.
- */
-XNucleoIhm02a1::XNucleoIhm02a1(L6470_init_t *init_0, L6470_init_t *init_1, PinName flag_irq, PinName busy_irq, PinName standby_reset, PinName ssel, DevSPI *spi) : dev_spi(spi)
-{
-    /* Checking stackability. */
-    if (!(number_of_boards < EXPBRD_MOUNTED_NR_MAX)) {
-        error("Instantiation of the X_NUCLEO_IHM02A1 expansion board failed: it can be stacked up to %d times.\r\n", EXPBRD_MOUNTED_NR_MAX);
-    }
-    instance_id = number_of_boards++;
-
-    /* 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.                     *
-     *                                                                        *
-     * Example:                                                               *
-     *   component_1 = new COMPONENT_1(ssel, *dev_spi);                       *
-     *   component_2 = new COMPONENT_2(ssel, *dev_spi);                       *
-     *------------------------------------------------------------------------*/
-    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. */
-    init_components[0] = init_0;
-    init_components[1] = init_1;
-    if (!init()) {
-        error("Initialization of the X_NUCLEO_IHM02A1 expansion board failed.\r\n");
-    }
-}
-
-/**
- * @brief Constructor.
- * @param init_0        pointer to the initialization structure of the first motor.
- * @param init_1        pointer to the initialization structure of the second motor.
- * @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 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.
- */
-XNucleoIhm02a1::XNucleoIhm02a1(L6470_init_t *init_0, L6470_init_t *init_1, PinName flag_irq, PinName busy_irq, PinName standby_reset, PinName ssel, PinName mosi, PinName miso, PinName sclk)
-{
-    /* Checking stackability. */
-    if (!(number_of_boards < EXPBRD_MOUNTED_NR_MAX)) {
-        error("Instantiation of the X_NUCLEO_IHM02A1 expansion board failed: it can be stacked up to %d times.\r\n", EXPBRD_MOUNTED_NR_MAX);
-    }
-    instance_id = number_of_boards++;
-
-    /* SPI communication. */
-    dev_spi = new DevSPI(mosi, miso, sclk);
-
-    /* Instantiating the components. */
-    /* ACTION 3 --------------------------------------------------------------*
-     * Instantiate here the expansion board's components.                     *
-     *                                                                        *
-     * Example:                                                               *
-     *   component_1 = new COMPONENT_1(ssel, *dev_spi);                       *
-     *   component_2 = new COMPONENT_2(ssel, *dev_spi);                       *
-     *------------------------------------------------------------------------*/
-    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. */
-    init_components[0] = init_0;
-    init_components[1] = init_1;
-    if (!init()) {
-        error("Initialization of the X_NUCLEO_IHM02A1 expansion board failed.\r\n");
-    }
-}
-
-/**
- * @brief Initializing the X_NUCLEO_IHM02A1 board.
- * @retval true if initialization is successful, false otherwise.
- */
-bool XNucleoIhm02a1::init(void)
-{
-    /* Initializing the components. */
-    /* ACTION 4 --------------------------------------------------------------*
-     * Initialize here the expansion board's components.                      *
-     *                                                                        *
-     * Example:                                                               *
-     *   return (init_COMPONENT_1() && init_COMPONENT_2());                   *
-     *------------------------------------------------------------------------*/
-    return (init_L6470_0() && init_L6470_1());
-}
-
-/* ACTION 5 ------------------------------------------------------------------*
- * Implement here an initialization method for each expansion board's         *
- * component.                                                                 *
- *                                                                            *
- * Example:                                                                   *
- *   bool ExpansionBoard::init_COMPONENT_1(void)                              *
- *   {                                                                        *
- *     // Verifying identity.                                                 *
- *     uint8_t id = 0;                                                        *
- *     int ret = component_1->read_id(&id);                                   *
- *     if ((ret != COMPONENT_OK) || (id != I_AM_COMPONENT_1))                 *
- *     {                                                                      *
- *       delete component_1;                                                  *
- *       component_1 = NULL;                                                  *
- *       return true;                                                         *
- *     }                                                                      *
- *                                                                            *
- *     // Configuration.                                                      *
- *     COMPONENT_init_t init;                                                 *
- *     init.property_1 = COMPONENT_1_PROPERY_1_INIT;                          *
- *     init.property_N = COMPONENT_1_PROPERY_N_INIT;                          *
- *                                                                            *
- *     // Initialization.                                                     *
- *     if (component_1->init(&init) != COMPONENT_OK)                          *
- *       return false;                                                        *
- *                                                                            *
- *     return true;                                                           *
- *   }                                                                        *
- *----------------------------------------------------------------------------*/
-/**
- * @brief  Initialize the L6470 component.
- * @retval true if initialization is successful, false otherwise.
- */
-bool XNucleoIhm02a1::init_L6470_0(void)
-{
-    /* Initialization. */
-    if (l6470_0->init((void *) init_components[0]) != COMPONENT_OK) {
-        return false;
-    }
-
-    return true;
-}
-
-/**
- * @brief  Initialize the L6470 component.
- * @retval true if initialization is successful, false otherwise.
- */
-bool XNucleoIhm02a1::init_L6470_1(void)
-{
-    /* Initialization. */
-    if (l6470_1->init((void *) init_components[1]) != COMPONENT_OK) {
-        return false;
-    }
-
-    return true;
-}
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ 
--- a/BSP/XNucleoIhm02a1.h	Fri Mar 10 15:23:54 2017 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,224 +0,0 @@
-/**
- ******************************************************************************
- * @file    XNucleoIhm02a1.h
- * @author  AST / Software Platforms and Cloud
- * @version V1.0
- * @date    November 3rd, 2015
- * @brief   Class header file for the X-NUCLEO-IHM02A1 expansion board.
- ******************************************************************************
- * @attention
- *
- * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *   1. Redistributions of source code must retain the above copyright notice,
- *      this list of conditions and the following disclaimer.
- *   2. Redistributions in binary form must reproduce the above copyright notice,
- *      this list of conditions and the following disclaimer in the documentation
- *      and/or other materials provided with the distribution.
- *   3. Neither the name of STMicroelectronics nor the names of its contributors
- *      may be used to endorse or promote products derived from this software
- *      without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- ******************************************************************************
- */
-
-
-/* Generated with STM32CubeTOO -----------------------------------------------*/
-
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-
-#ifndef __X_NUCLEO_IHM02A1_CLASS_H
-#define __X_NUCLEO_IHM02A1_CLASS_H
-
-
-/* Includes ------------------------------------------------------------------*/
-
-/* ACTION 1 ------------------------------------------------------------------*
- * Include here platform specific header files.                               *
- *----------------------------------------------------------------------------*/
-#include "mbed.h"
-#include "DevSPI.h"
-/* ACTION 2 ------------------------------------------------------------------*
- * Include here expansion board configuration's header files.                 *
- *----------------------------------------------------------------------------*/
-#include "x_nucleo_ihm02a1_config.h"
-/* ACTION 3 ------------------------------------------------------------------*
- * Include here expansion board's components' header files.                   *
- *                                                                            *
- * Example:                                                                   *
- *   #include "COMPONENT_1.h"                                                 *
- *   #include "COMPONENT_2.h"                                                 *
- *----------------------------------------------------------------------------*/
-#include "L6470.h"
-
-
-/* Classes -------------------------------------------------------------------*/
-
-/** Class representing a X-NUCLEO-IHM02A1 board.
- */
-class XNucleoIhm02a1
-{
-public:
-
-    /*** Constructor, Destructor, and Initialization Methods ***/
-
-    /**
-     * @brief Constructor.
-     * @param init_0        pointer to the initialization structure of the first motor.
-     * @param init_1        pointer to the initialization structure of the second motor.
-     * @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.
-     */
-    XNucleoIhm02a1(L6470_init_t *init_0, L6470_init_t *init_1, PinName flag_irq, PinName busy_irq, PinName standby_reset, PinName ssel, DevSPI *spi);
-
-    /**
-     * @brief Constructor.
-     * @param init_0        pointer to the initialization structure of the first motor.
-     * @param init_1        pointer to the initialization structure of the second motor.
-     * @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 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.
-     */
-    XNucleoIhm02a1(L6470_init_t *init_0, L6470_init_t *init_1, PinName flag_irq, PinName busy_irq, PinName standby_reset, PinName ssel, PinName mosi, PinName miso, PinName sclk);
-
-    /**
-     * @brief Destructor.
-     */
-    ~XNucleoIhm02a1(void) {}
-
-    /**
-     * @brief Initializing the X-NUCLEO-IHM02A1 board.
-     * @retval true if initialization is successful, false otherwise.
-     */
-    bool init(void);
-
-
-    /*** Other Public Expansion Board Related Methods ***/
-
-    /**
-     * @brief  Getting the array of components.
-     * @param  None.
-     * @retval The array of components.
-     */
-    L6470 **get_components(void)
-    {
-        return components;
-    }
-
-    /**
-      * @brief  Performing the actions set on the motors with calls to a number of
-      *         "Prepare<Action>()" methods, one for each motor of the daisy-chain.
-      * @param  None.
-      * @retval A pointer to the results returned by the components, i.e. an
-      *         integer value for each of them.
-      */
-    virtual uint32_t* perform_prepared_actions(void)
-    {
-        /* Performing pre-actions, if needed. */
-        for (int m = 0; m < L6470DAISYCHAINSIZE; m++) {
-            /*
-               "GetPosition()" is needed by "PrepareSetMark()" at the time when the
-               prepared actions get performed.
-            */
-            if (components[m]->get_prepared_action() == L6470::PREPARED_SET_MARK) {
-                components[m]->prepare_set_mark((uint32_t) components[m]->get_position());
-            }
-        }
-        
-        /* Performing the prepared actions and getting back raw data. */
-        uint8_t *raw_data = components[0]->perform_prepared_actions();
-
-        /* Processing raw data. */
-        for (int m = 0; m < L6470DAISYCHAINSIZE; m++) {
-            results[m] = components[m]->get_result(raw_data);
-        }
-
-        /* Returning results. */
-        return results;
-    }
-
-
-    /*** Public Expansion Board Related Attributes ***/
-
-    /* ACTION 4 --------------------------------------------------------------*
-     * Declare here a public attribute for each expansion board's component.  *
-     * You will have to call these attributes' public methods within your     *
-     * main program.                                                          *
-     *                                                                        *
-     *   Example:                                                             *
-     *     COMPONENT_1 *component_1;                                          *
-     *     COMPONENT_2 *component_2;                                          *
-     *------------------------------------------------------------------------*/
-    L6470 *l6470_0;
-    L6470 *l6470_1;
-
-
-protected:
-
-    /*** Protected Expansion Board Related Initialization Methods ***/
-
-    /* ACTION 5 --------------------------------------------------------------*
-     * Declare here a protected initialization method for each expansion      *
-     * board's component.                                                     *
-     *                                                                        *
-     * Example:                                                               *
-     *   bool init_COMPONENT_1(void);                                         *
-     *   bool init_COMPONENT_2(void);                                         *
-     *------------------------------------------------------------------------*/
-    bool init_L6470_0(void);
-    bool init_L6470_1(void);
-
-
-    /*** Component's Instance Variables ***/
-
-    /* IO Device. */
-    DevSPI *dev_spi;
-
-    /* Components. */
-    L6470 *components[L6470DAISYCHAINSIZE];
-    
-    /* Components' initialization. */
-    L6470_init_t *init_components[L6470DAISYCHAINSIZE];
-
-    /* Results of prepared actions. */
-    uint32_t results[L6470DAISYCHAINSIZE];
-
-    /* ACTION 6 --------------------------------------------------------------*
-     * Declare here the component's static and non-static data, one variable  *
-     * per line.                                                              *
-     *                                                                        *
-     * Example:                                                               *
-     *   int instance_id;                                                     *
-     *   static int number_of_instances;                                      *
-     *------------------------------------------------------------------------*/
-    /* Data. */
-    uint8_t instance_id;
-
-    /* Static data. */
-    static uint8_t number_of_boards;
-};
-
-#endif /* __X_NUCLEO_IHM02A1_CLASS_H */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/