motor board library
Dependencies: ST_INTERFACES X_NUCLEO_COMMON
Fork of X_NUCLEO_IHM02A1 by
BSP/x_nucleo_ihm02a1_class.h
- Committer:
- Davidroid
- Date:
- 2016-01-04
- Revision:
- 10:aa68441705b2
- Parent:
- 9:d70452d7a1e1
- Child:
- 11:1aca63b2f034
File content as of revision 10:aa68441705b2:
/** ****************************************************************************** * @file x_nucleo_ihm02a1_class.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 specific header files. * *----------------------------------------------------------------------------*/ #include "x_nucleo_ihm02a1_config.h" /* ACTION 3 ------------------------------------------------------------------* * Include here expansion board's components' header files. * * * * Example: * * #include "component_1_class.h" * * #include "component_2_class.h" * *----------------------------------------------------------------------------*/ #include "l6470_class.h" /* Classes -------------------------------------------------------------------*/ /** Class representing a X_NUCLEO_IHM02A1 board. */ class X_NUCLEO_IHM02A1 { 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. */ X_NUCLEO_IHM02A1(MICROSTEPPING_MOTOR_InitTypeDef *init_0, MICROSTEPPING_MOTOR_InitTypeDef *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. */ X_NUCLEO_IHM02A1(MICROSTEPPING_MOTOR_InitTypeDef *init_0, MICROSTEPPING_MOTOR_InitTypeDef *init_1, PinName flag_irq, PinName busy_irq, PinName standby_reset, PinName ssel, PinName mosi, PinName miso, PinName sclk); /** * @brief Destructor. */ ~X_NUCLEO_IHM02A1(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 **GetComponents(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* PerformPreparedActions(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]->GetPreparedAction() == L6470::PREPARED_SET_MARK) components[m]->PrepareSetMark((uint32_t) components[m]->GetPosition()); } /* Performing the prepared actions and getting back raw data. */ uint8_t *raw_data = components[0]->PerformPreparedActions(); /* Processing raw data. */ for (int m = 0; m < L6470DAISYCHAINSIZE; m++) results[m] = components[m]->GetResult(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. */ MICROSTEPPING_MOTOR_InitTypeDef *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 X_NUCLEO_IHM02A1_Id; /* Static data. */ static uint8_t number_of_boards; }; #endif // __X_NUCLEO_IHM02A1_CLASS_H /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/