Use BDCMotor_class.h instead of motor_class.h

Dependents:   HelloWorld_IHM04A1

Fork of X_NUCLEO_IHM04A1 by ST

Files at this revision

API Documentation at this revision

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

Components/Interfaces/BDCMotor_class.h Show annotated file Show diff for this revision Revisions of this file
Components/Interfaces/Motor_class.h Show diff for this revision Revisions of this file
Components/l6206/l6206_class.h Show annotated file Show diff for this revision Revisions of this file
diff -r 65057305b86e -r b06e38d365d7 Components/Interfaces/BDCMotor_class.h
--- /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>&copy; 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****/ 
diff -r 65057305b86e -r b06e38d365d7 Components/Interfaces/Motor_class.h
--- 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>&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 -----------------------------------------------*/
-
-
-/* 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****/
-
diff -r 65057305b86e -r b06e38d365d7 Components/l6206/l6206_class.h
--- 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);
 	}