Use BDCMotor_class.h instead of motor_class.h
Dependents: HelloWorld_IHM04A1
Fork of X_NUCLEO_IHM04A1 by
Revision 3:b06e38d365d7, committed 2016-06-14
- Comitter:
- Manu_L
- Date:
- Tue Jun 14 12:14:28 2016 +0000
- Parent:
- 2:65057305b86e
- Commit message:
- Use BDCMotor_class.h instead of Motor_class.h
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Components/Interfaces/BDCMotor_class.h Tue Jun 14 12:14:28 2016 +0000
@@ -0,0 +1,159 @@
+/**
+ ******************************************************************************
+ * @file BCDMotor_class.h
+ * @author IPC Rennes
+ * @version V1.0.0
+ * @date April 6th, 2016
+ * @brief This file contains the abstract class describing the interface of a
+ * Brush DC motor component.
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>© COPYRIGHT(c) 2016 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.
+ *
+ ******************************************************************************
+ */
+
+
+/* Define to prevent from recursive inclusion --------------------------------*/
+
+#ifndef __BCDMMOTOR_CLASS_H
+#define __BCDMMOTOR_CLASS_H
+
+
+/* Includes ------------------------------------------------------------------*/
+
+#include <Component_class.h>
+
+
+/* Classes ------------------------------------------------------------------*/
+
+/** An abstract class for BDCMotor components.
+ */
+class BDCMotor : public Component
+{
+public:
+ /**
+ * @brief Rotation modes.
+ */
+ typedef enum
+ {
+ BWD = 0, /* Backward. */
+ FWD = 1 /* Forward. */
+ } direction_t;
+
+ /**
+ * @brief Disabling the specified bridge.
+ * @param bridgeId from 0 for bridge A to 1 for bridge B.
+ * @retval None.
+ */
+ virtual void DisableBridge(unsigned int) = 0;
+
+ /**
+ * @brief Enabling the specified bridge.
+ * @param bridgeId from 0 for bridge A to 1 for bridge B
+ * @retval None.
+ */
+ virtual void EnableBridge(unsigned int) = 0;
+
+ /**
+ * @brief Getting the PWM frequency of the specified bridge;
+ * @param bridgeId from 0 for bridge A to 1 for bridge B.
+ * @retval The frequency in Hz of the specified bridge input PWM.
+ */
+ virtual unsigned int GetBridgeInputPwmFreq(unsigned int) = 0;
+
+ /**
+ * @brief Getting the bridge status.
+ * @param bridgeId from 0 for bridge A to 1 for bridge B.
+ * @retval The status.
+ */
+ virtual unsigned int GetBridgeStatus(unsigned int) = 0;
+
+ /**
+ * @brief Getting the device State.
+ * @param motorId from 0 to (MAX_NUMBER_OF_BRUSH_DC_MOTORS - 1).
+ * @retval The device state
+ */
+ virtual motorState_t GetDeviceState(unsigned int) = 0;
+
+ /**
+ * @brief Getting the current speed in % of the specified motor.
+ * @param motorId from 0 to (MAX_NUMBER_OF_BRUSH_DC_MOTORS - 1).
+ * @retval The current speed in %.
+ */
+ virtual unsigned int GetSpeed(unsigned int) = 0;
+
+ /**
+ * @brief Stopping the motor and disabling the power bridge immediately.
+ * @param motorId from 0 to (MAX_NUMBER_OF_BRUSH_DC_MOTORS - 1).
+ * @retval None.
+ */
+ virtual void HardHiZ(unsigned int) = 0;
+
+ /**
+ * @brief Stopping the motor immediately.
+ * @param motorId from 0 to (MAX_NUMBER_OF_BRUSH_DC_MOTORS - 1).
+ * @retval None.
+ */
+ virtual void HardStop(unsigned int) = 0;
+
+ /**
+ * @brief Running the motor.
+ * @param motorId from 0 to (MAX_NUMBER_OF_BRUSH_DC_MOTORS - 1).
+ * @param direction The direction of rotation.
+ * @retval None.
+ */
+ virtual void Run(unsigned int, direction_t) = 0;
+
+ /**
+ * @brief Setting the PWM frequency of the specified bridge.
+ * @param bridgeId from 0 for bridge A to 1 for bridge B.
+ * @param frequency of the PWM in Hz
+ * @retval None.
+ */
+ virtual void SetBridgeInputPwmFreq(unsigned int, unsigned int) = 0;
+
+ /**
+ * @brief Setting the dual bridge configuration mode.
+ * @param configuration. The bridge configuration.
+ * @retval None.
+ */
+ virtual void SetDualFullBridgeConfig(unsigned int) = 0;
+
+ /**
+ * @brief Setting the speed in %.
+ * @param motorId from 0 to (MAX_NUMBER_OF_BRUSH_DC_MOTORS - 1).
+ * @param speed The new speed in %.
+ * @retval "true" in case of success, "false" otherwise.
+ */
+ virtual bool SetSpeed(unsigned int, unsigned int) = 0;
+
+
+};
+
+#endif /* __BCDMMOTOR_CLASS_H */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- a/Components/Interfaces/Motor_class.h Tue May 17 12:14:35 2016 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,211 +0,0 @@
-/**
- ******************************************************************************
- * @file Motor_class.h
- * @author AST
- * @version V1.0.0
- * @date April 13th, 2015
- * @brief This file contains the abstract class describing the interface of a
- * motor component.
- ******************************************************************************
- * @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 -----------------------------------------------*/
-
-
-/* Revision ------------------------------------------------------------------*/
-/*
- Repository: http://svn.x-nucleodev.codex.cro.st.com/svnroot/X-NucleoDev
- Branch/Trunk/Tag: trunk
- Based on: X-CUBE-SPN4/trunk/Drivers/BSP/Components/Common/motor.h
- Revision: 0
-*/
-
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-
-#ifndef __MOTOR_CLASS_H
-#define __MOTOR_CLASS_H
-
-
-/* Includes ------------------------------------------------------------------*/
-
-#include "Component_class.h"
-
-
-/* Classes ------------------------------------------------------------------*/
-
-/** An abstract class for Motor components.
- */
-class Motor : public Component
-{
-public:
- /* ACTION 1 --------------------------------------------------------------*
- * Declare here the interface's methods. *
- * They should be: *
- * + Methods with the same name of the C component's virtual table *
- * (and extended virtual table, if any)'s functions, provided that *
- * the component's driver implements them (i.e.: the corresponding *
- * pointer to function is not "0"). *
- * *
- * Example: *
- * virtual int GetValue(float *f) = 0; *
- *------------------------------------------------------------------------*/
-
- /**
- * @brief Getting the current speed in pps.
- * @param None.
- * @retval The current speed in pps.
- */
- virtual uint16_t GetCurrentSpeed(uint8_t motorId) = 0;
-
- /**
- * @brief Returns the device state
- * @param[in] motorId from 0 to MAX_NUMBER_OF_BRUSH_DC_MOTORS
- * @retval State (STEADY or INACTIVE)
- */
- virtual motorState_t GetDeviceState(uint8_t motorId) = 0;
-
- /**
- * @brief Returns the FW version of the library
- * @retval L6206_FW_VERSION
- */
- virtual uint8_t GetFwVersion(void) = 0;
-
- /**
- * @brief Returns the max speed of the specified motor
- * @param[in] motorId from 0 to MAX_NUMBER_OF_BRUSH_DC_MOTORS
- * @retval maxSpeed in % from 0 to 100
- */
- virtual uint16_t GetMaxSpeed(uint8_t motorId) = 0;
-
- /**
- * @brief Stops the motor without disabling the bridge
- * @param[in] motorId from 0 to MAX_NUMBER_OF_BRUSH_DC_MOTORS
- * @retval none
- */
- virtual void HardStop(uint8_t motorId) = 0;
-
- /**
- * @brief Runs the motor
- * @param[in] motorId from 0 to MAX_NUMBER_OF_BRUSH_DC_MOTORS
- * @param[in] direction FORWARD or BACKWARD
- * @retval None
- * @note For unidirectionnal motor, direction parameter has no effect
- */
- virtual void Run(uint8_t stepCount, motorDir_t direction) = 0;
-
- /**
- * @brief Changes the max speed of the specified device
- * @param[in] motorId from 0 to MAX_NUMBER_OF_BRUSH_DC_MOTORS
- * @param[in] newMaxSpeed in % from 0 to 100
- * @retval true if the command is successfully executed, else false
- */
- virtual bool SetMaxSpeed(uint8_t motorId, uint16_t newMaxSpeed) = 0;
-
- /**
- * @brief Disable the specified bridge
- * @param[in] bridgeId (from 0 for bridge A to 1 for bridge B)
- * @retval None
- * @note When input of different brigdes are parallelized
- * together, the disabling of one bridge leads to the disabling
- * of the second one
- */
- virtual void CmdDisable(uint8_t bridgeId) = 0;
-
- /**
- * @brief Enable the specified bridge
- * @param[in] bridgeId (from 0 for bridge A to 1 for bridge B)
- * @retval None
- * @note When input of different brigdes are parallelized
- * together, the enabling of one bridge leads to the enabling
- * of the second one
- */
- virtual void CmdEnable(uint8_t bridgeId) = 0;
-
- /**
- * @brief Get the status of the bridge enabling of the corresponding bridge
- * @param[in] bridgeId from 0 for bridge A to 1 for bridge B
- * @retval State of the Enable&Flag pin of the corresponding bridge (1 set, 0 for reset)
- */
- virtual uint16_t CmdGetStatus(uint8_t bridgeId) = 0;
-
- /**
- * @brief Immediatly stops the motor and disable the power bridge
- * @param[in] motorId from 0 to MAX_NUMBER_OF_BRUSH_DC_MOTORS
- * @retval None
- * @note if two motors uses the same power bridge, the
- * power bridge will be disable only if the two motors are stopped
- */
- virtual void CmdHardHiZ(uint8_t motorId) = 0;
-
- /**
- * @brief Error handler which calls the user callback (if defined)
- * @param[in] error Number of the error
- * @retval None
- */
- virtual void ErrorHandler(uint16_t error) = 0;
-
- /**
- * @brief Set dual full bridge parallelling configuration
- * @param[in] newConfig bridge configuration to apply from
- * dualFullBridgeConfig_t enum
- * @retval None
- */
- virtual void SetDualFullBridgeConfig(uint8_t newConfig) = 0;
-
- /**
- * @brief Get the PWM frequency of the specified bridge
- * @param[in] bridgeId 0 for bridge A, 1 for bridge B
- * @retval Freq in Hz
- */
- virtual uint32_t GetBridgeInputPwmFreq(uint8_t bridgeId) = 0;
-
- /**
- * @brief Changes the PWM frequency of the bridge input
- * @param[in] bridgeId 0 for bridge A, 1 for bridge B
- * @param[in] newFreq in Hz
- * @retval None
- */
- virtual void SetBridgeInputPwmFreq(uint8_t bridgeId, uint32_t newFreq) = 0;
-
- /**
- * @brief Sets the number of devices to be used
- * @param[in] nbDevices (from 1 to MAX_NUMBER_OF_DEVICES)
- * @retval TRUE if successfull, FALSE if failure, attempt to set a number of
- * devices greater than MAX_NUMBER_OF_DEVICES
- */
- virtual bool SetNbDevices(uint8_t nbDevices) = 0;
-};
-
-#endif /* __MOTOR_CLASS_H */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
-
--- a/Components/l6206/l6206_class.h Tue May 17 12:14:35 2016 +0000
+++ b/Components/l6206/l6206_class.h Tue Jun 14 12:14:28 2016 +0000
@@ -72,7 +72,7 @@
* #include "../Interfaces/Humidity_class.h" *
* #include "../Interfaces/Temperature_class.h" *
*----------------------------------------------------------------------------*/
-#include "../Interfaces/Motor_class.h"
+#include "../Interfaces/BDCMotor_class.h"
@@ -118,7 +118,7 @@
/**
* @brief Class representing a L6206 component.
*/
-class L6206 : public Motor
+class L6206 : public BDCMotor
{
public:
@@ -127,7 +127,7 @@
/**
* @brief Constructor.
*/
- L6206(PinName EN_flag_A, PinName EN_flag_B, PinName pwm_1A, PinName pwm_2A, PinName pwm_1B, PinName pwm_2B) : Motor(), flag_A_irq(EN_flag_A), flag_B_irq(EN_flag_B), EN_flag_A(EN_flag_A), EN_flag_B(EN_flag_B), pwm_1A(pwm_1A), pwm_2A(pwm_2A), pwm_1B(pwm_1B), pwm_2B(pwm_2B)
+ L6206(PinName EN_flag_A, PinName EN_flag_B, PinName pwm_1A, PinName pwm_2A, PinName pwm_1B, PinName pwm_2B) : BDCMotor(), flag_A_irq(EN_flag_A), flag_B_irq(EN_flag_B), EN_flag_A(EN_flag_A), EN_flag_B(EN_flag_B), pwm_1A(pwm_1A), pwm_2A(pwm_2A), pwm_1B(pwm_1B), pwm_2B(pwm_2B)
{
/* ACTION 4 ----------------------------------------------------------*
* Initialize here the component's member variables, one variable per *
@@ -225,9 +225,9 @@
* @param[in] motorId from 0 to MAX_NUMBER_OF_BRUSH_DC_MOTORS
* @retval current speed in % from 0 to 100
*/
- virtual uint16_t GetCurrentSpeed(uint8_t motorId)
+ virtual unsigned int GetSpeed(unsigned int motorId)
{
- return (uint16_t) L6206_GetCurrentSpeed((uint8_t) motorId);
+ return (unsigned int) L6206_GetCurrentSpeed((uint8_t) motorId);
}
/**
@@ -235,7 +235,7 @@
* @param[in] motorId from 0 to MAX_NUMBER_OF_BRUSH_DC_MOTORS
* @retval State (STEADY or INACTIVE)
*/
- virtual motorState_t GetDeviceState(uint8_t motorId)
+ virtual motorState_t GetDeviceState(unsigned int motorId)
{
return (motorState_t) L6206_GetDeviceState((uint8_t) motorId);
}
@@ -254,7 +254,7 @@
* @param[in] motorId from 0 to MAX_NUMBER_OF_BRUSH_DC_MOTORS
* @retval maxSpeed in % from 0 to 100
*/
- virtual uint16_t GetMaxSpeed(uint8_t motorId)
+ virtual uint16_t GetMaxSpeed(unsigned int motorId)
{
return (uint16_t) L6206_GetMaxSpeed((uint8_t) motorId);
}
@@ -264,7 +264,7 @@
* @param[in] motorId from 0 to MAX_NUMBER_OF_BRUSH_DC_MOTORS
* @retval none
*/
- virtual void HardStop(uint8_t motorId)
+ virtual void HardStop(unsigned int motorId)
{
L6206_HardStop((uint8_t) motorId);
}
@@ -276,9 +276,9 @@
* @retval None
* @note For unidirectionnal motor, direction parameter has no effect
*/
- virtual void Run(uint8_t stepCount, motorDir_t direction)
+ virtual void Run(unsigned int motorId, direction_t direction)
{
- L6206_Run((uint8_t) stepCount, (motorDir_t) direction);
+ L6206_Run((uint8_t) motorId, (motorDir_t) direction);
}
/**
@@ -287,7 +287,7 @@
* @param[in] newMaxSpeed in % from 0 to 100
* @retval true if the command is successfully executed, else false
*/
- virtual bool SetMaxSpeed(uint8_t motorId, uint16_t newMaxSpeed)
+ virtual bool SetSpeed(unsigned int motorId, unsigned int newMaxSpeed)
{
return (bool) L6206_SetMaxSpeed((uint8_t) motorId, (uint16_t) newMaxSpeed);
}
@@ -300,7 +300,7 @@
* together, the disabling of one bridge leads to the disabling
* of the second one
*/
- virtual void CmdDisable(uint8_t bridgeId)
+ virtual void DisableBridge(unsigned int bridgeId)
{
L6206_DisableBridge((uint8_t) bridgeId);
}
@@ -313,7 +313,7 @@
* together, the enabling of one bridge leads to the enabling
* of the second one
*/
- virtual void CmdEnable(uint8_t bridgeId)
+ virtual void EnableBridge(unsigned int bridgeId)
{
L6206_EnableBridge((uint8_t) bridgeId);
}
@@ -323,9 +323,9 @@
* @param[in] bridgeId from 0 for bridge A to 1 for bridge B
* @retval State of the Enable&Flag pin of the corresponding bridge (1 set, 0 for reset)
*/
- virtual uint16_t CmdGetStatus(uint8_t bridgeId)
+ virtual unsigned int GetBridgeStatus(unsigned int bridgeId)
{
- return (uint16_t) L6206_GetBridgeStatus((uint8_t) bridgeId);
+ return (unsigned int) L6206_GetBridgeStatus((uint8_t) bridgeId);
}
/**
@@ -335,7 +335,7 @@
* @note if two motors uses the same power bridge, the
* power bridge will be disable only if the two motors are stopped
*/
- virtual void CmdHardHiZ(uint8_t motorId)
+ virtual void HardHiZ(unsigned int motorId)
{
L6206_HardHiz((uint8_t) motorId);
}
@@ -356,7 +356,7 @@
* dualFullBridgeConfig_t enum
* @retval None
*/
- virtual void SetDualFullBridgeConfig(uint8_t newConfig)
+ virtual void SetDualFullBridgeConfig(unsigned int newConfig)
{
L6206_SetDualFullBridgeConfig((uint8_t) newConfig);
}
@@ -366,9 +366,9 @@
* @param[in] bridgeId 0 for bridge A, 1 for bridge B
* @retval Freq in Hz
*/
- virtual uint32_t GetBridgeInputPwmFreq(uint8_t bridgeId)
+ virtual unsigned int GetBridgeInputPwmFreq(unsigned int bridgeId)
{
- return (uint32_t) L6206_GetBridgeInputPwmFreq((uint8_t) bridgeId);
+ return (unsigned int) L6206_GetBridgeInputPwmFreq((uint8_t) bridgeId);
}
/**
@@ -377,7 +377,7 @@
* @param[in] newFreq in Hz
* @retval None
*/
- virtual void SetBridgeInputPwmFreq(uint8_t bridgeId, uint32_t newFreq)
+ virtual void SetBridgeInputPwmFreq(unsigned int bridgeId, unsigned int newFreq)
{
L6206_SetBridgeInputPwmFreq((uint8_t) bridgeId, (uint32_t) newFreq);
}
