hi
Dependencies: ST_INTERFACES X_NUCLEO_COMMON
Fork of X_NUCLEO_IHM02A1 by
Revision 24:ff67801d7cd7, committed 2017-03-13
- 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
--- /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>© 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>© 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>© 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>© 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****/
