Use BDCMotor_class.h instead of motor_class.h

Dependents:   HelloWorld_IHM04A1

Fork of X_NUCLEO_IHM04A1 by ST

Committer:
Manu_L
Date:
Tue Jun 14 12:14:28 2016 +0000
Revision:
3:b06e38d365d7
Parent:
0:2cb6ce8e07bd
Use BDCMotor_class.h instead of Motor_class.h

Who changed what in which revision?

UserRevisionLine numberNew contents of line
brdirais 0:2cb6ce8e07bd 1 /**
brdirais 0:2cb6ce8e07bd 2 ******************************************************************************
brdirais 0:2cb6ce8e07bd 3 * @file motor.h
brdirais 0:2cb6ce8e07bd 4 * @author IPC Rennes
brdirais 0:2cb6ce8e07bd 5 * @version V1.5.0
brdirais 0:2cb6ce8e07bd 6 * @date January 25, 2016
brdirais 0:2cb6ce8e07bd 7 * @brief This file contains all the functions prototypes for motor drivers.
brdirais 0:2cb6ce8e07bd 8 ******************************************************************************
brdirais 0:2cb6ce8e07bd 9 * @attention
brdirais 0:2cb6ce8e07bd 10 *
brdirais 0:2cb6ce8e07bd 11 * <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
brdirais 0:2cb6ce8e07bd 12 *
brdirais 0:2cb6ce8e07bd 13 * Redistribution and use in source and binary forms, with or without modification,
brdirais 0:2cb6ce8e07bd 14 * are permitted provided that the following conditions are met:
brdirais 0:2cb6ce8e07bd 15 * 1. Redistributions of source code must retain the above copyright notice,
brdirais 0:2cb6ce8e07bd 16 * this list of conditions and the following disclaimer.
brdirais 0:2cb6ce8e07bd 17 * 2. Redistributions in binary form must reproduce the above copyright notice,
brdirais 0:2cb6ce8e07bd 18 * this list of conditions and the following disclaimer in the documentation
brdirais 0:2cb6ce8e07bd 19 * and/or other materials provided with the distribution.
brdirais 0:2cb6ce8e07bd 20 * 3. Neither the name of STMicroelectronics nor the names of its contributors
brdirais 0:2cb6ce8e07bd 21 * may be used to endorse or promote products derived from this software
brdirais 0:2cb6ce8e07bd 22 * without specific prior written permission.
brdirais 0:2cb6ce8e07bd 23 *
brdirais 0:2cb6ce8e07bd 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
brdirais 0:2cb6ce8e07bd 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
brdirais 0:2cb6ce8e07bd 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
brdirais 0:2cb6ce8e07bd 27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
brdirais 0:2cb6ce8e07bd 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
brdirais 0:2cb6ce8e07bd 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
brdirais 0:2cb6ce8e07bd 30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
brdirais 0:2cb6ce8e07bd 31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
brdirais 0:2cb6ce8e07bd 32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
brdirais 0:2cb6ce8e07bd 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
brdirais 0:2cb6ce8e07bd 34 *
brdirais 0:2cb6ce8e07bd 35 ******************************************************************************
brdirais 0:2cb6ce8e07bd 36 */
brdirais 0:2cb6ce8e07bd 37
brdirais 0:2cb6ce8e07bd 38 /* Define to prevent recursive inclusion -------------------------------------*/
brdirais 0:2cb6ce8e07bd 39 #ifndef __MOTOR_H
brdirais 0:2cb6ce8e07bd 40 #define __MOTOR_H
brdirais 0:2cb6ce8e07bd 41
brdirais 0:2cb6ce8e07bd 42 #ifdef __cplusplus
brdirais 0:2cb6ce8e07bd 43 extern "C" {
brdirais 0:2cb6ce8e07bd 44 #endif
brdirais 0:2cb6ce8e07bd 45
brdirais 0:2cb6ce8e07bd 46 /* Includes ------------------------------------------------------------------*/
brdirais 0:2cb6ce8e07bd 47 #include <stdint.h>
brdirais 0:2cb6ce8e07bd 48 #include "component.h"
brdirais 0:2cb6ce8e07bd 49
brdirais 0:2cb6ce8e07bd 50 /** @addtogroup BSP
brdirais 0:2cb6ce8e07bd 51 * @{
brdirais 0:2cb6ce8e07bd 52 */
brdirais 0:2cb6ce8e07bd 53
brdirais 0:2cb6ce8e07bd 54 /** @addtogroup Components
brdirais 0:2cb6ce8e07bd 55 * @{
brdirais 0:2cb6ce8e07bd 56 */
brdirais 0:2cb6ce8e07bd 57
brdirais 0:2cb6ce8e07bd 58 /** @defgroup Motor Motor
brdirais 0:2cb6ce8e07bd 59 * @{
brdirais 0:2cb6ce8e07bd 60 */
brdirais 0:2cb6ce8e07bd 61
brdirais 0:2cb6ce8e07bd 62 /** @defgroup Motor_Exported_Constants Motor Exported Constants
brdirais 0:2cb6ce8e07bd 63 * @{
brdirais 0:2cb6ce8e07bd 64 */
brdirais 0:2cb6ce8e07bd 65
brdirais 0:2cb6ce8e07bd 66 /// boolean for false condition
brdirais 0:2cb6ce8e07bd 67 #ifndef FALSE
brdirais 0:2cb6ce8e07bd 68 #define FALSE (0)
brdirais 0:2cb6ce8e07bd 69 #endif
brdirais 0:2cb6ce8e07bd 70 /// boolean for true condition
brdirais 0:2cb6ce8e07bd 71 #ifndef TRUE
brdirais 0:2cb6ce8e07bd 72 #define TRUE (1)
brdirais 0:2cb6ce8e07bd 73 #endif
brdirais 0:2cb6ce8e07bd 74
brdirais 0:2cb6ce8e07bd 75 /**
brdirais 0:2cb6ce8e07bd 76 * @}
brdirais 0:2cb6ce8e07bd 77 */
brdirais 0:2cb6ce8e07bd 78
brdirais 0:2cb6ce8e07bd 79 /** @defgroup Motor_Exported_Types Motor Exported Types
brdirais 0:2cb6ce8e07bd 80 * @{
brdirais 0:2cb6ce8e07bd 81 */
brdirais 0:2cb6ce8e07bd 82
brdirais 0:2cb6ce8e07bd 83 /** @defgroup Motor_Boolean_Type Motor Boolean Type
brdirais 0:2cb6ce8e07bd 84 * @{
brdirais 0:2cb6ce8e07bd 85 */
brdirais 0:2cb6ce8e07bd 86 ///bool Type
brdirais 0:2cb6ce8e07bd 87 //typedef uint8_t bool;
brdirais 0:2cb6ce8e07bd 88 /**
brdirais 0:2cb6ce8e07bd 89 * @}
brdirais 0:2cb6ce8e07bd 90 */
brdirais 0:2cb6ce8e07bd 91
brdirais 0:2cb6ce8e07bd 92 /** @defgroup Device_Direction_Options Device Direction Options
brdirais 0:2cb6ce8e07bd 93 * @{
brdirais 0:2cb6ce8e07bd 94 */
brdirais 0:2cb6ce8e07bd 95 /// Direction options
brdirais 0:2cb6ce8e07bd 96 typedef enum {
brdirais 0:2cb6ce8e07bd 97 BACKWARD = 0,
brdirais 0:2cb6ce8e07bd 98 FORWARD = 1,
brdirais 0:2cb6ce8e07bd 99 UNKNOW_DIR = ((uint8_t)0xFF)
brdirais 0:2cb6ce8e07bd 100 } motorDir_t;
brdirais 0:2cb6ce8e07bd 101 /**
brdirais 0:2cb6ce8e07bd 102 * @}
brdirais 0:2cb6ce8e07bd 103 */
brdirais 0:2cb6ce8e07bd 104
brdirais 0:2cb6ce8e07bd 105 /** @defgroup Device_Action_Options Device Action Options
brdirais 0:2cb6ce8e07bd 106 * @{
brdirais 0:2cb6ce8e07bd 107 */
brdirais 0:2cb6ce8e07bd 108 /// Action options
brdirais 0:2cb6ce8e07bd 109 typedef enum {
brdirais 0:2cb6ce8e07bd 110 ACTION_RESET = ((uint8_t)0x00),
brdirais 0:2cb6ce8e07bd 111 ACTION_COPY = ((uint8_t)0x08)
brdirais 0:2cb6ce8e07bd 112 } motorAction_t;
brdirais 0:2cb6ce8e07bd 113 /**
brdirais 0:2cb6ce8e07bd 114 * @}
brdirais 0:2cb6ce8e07bd 115 */
brdirais 0:2cb6ce8e07bd 116
brdirais 0:2cb6ce8e07bd 117 /** @defgroup Device_States Device States
brdirais 0:2cb6ce8e07bd 118 * @{
brdirais 0:2cb6ce8e07bd 119 */
brdirais 0:2cb6ce8e07bd 120 /// Device states
brdirais 0:2cb6ce8e07bd 121 typedef enum {
brdirais 0:2cb6ce8e07bd 122 ACCELERATING = 0,
brdirais 0:2cb6ce8e07bd 123 DECELERATINGTOSTOP = 1,
brdirais 0:2cb6ce8e07bd 124 DECELERATING = 2,
brdirais 0:2cb6ce8e07bd 125 STEADY = 3,
brdirais 0:2cb6ce8e07bd 126 INDEX_ACCEL = 4,
brdirais 0:2cb6ce8e07bd 127 INDEX_RUN = 5,
brdirais 0:2cb6ce8e07bd 128 INDEX_DECEL = 6,
brdirais 0:2cb6ce8e07bd 129 INDEX_DWELL = 7,
brdirais 0:2cb6ce8e07bd 130 INACTIVE = 8,
brdirais 0:2cb6ce8e07bd 131 STANDBY = 9,
brdirais 0:2cb6ce8e07bd 132 STANDBYTOINACTIVE = 10
brdirais 0:2cb6ce8e07bd 133 } motorState_t;
brdirais 0:2cb6ce8e07bd 134 /**
brdirais 0:2cb6ce8e07bd 135 * @}
brdirais 0:2cb6ce8e07bd 136 */
brdirais 0:2cb6ce8e07bd 137
brdirais 0:2cb6ce8e07bd 138 /** @defgroup Device_Step_mode Device Step mode
brdirais 0:2cb6ce8e07bd 139 * @{
brdirais 0:2cb6ce8e07bd 140 */
brdirais 0:2cb6ce8e07bd 141 /// Stepping options
brdirais 0:2cb6ce8e07bd 142 typedef enum {
brdirais 0:2cb6ce8e07bd 143 STEP_MODE_FULL = ((uint8_t)0x00),
brdirais 0:2cb6ce8e07bd 144 STEP_MODE_HALF = ((uint8_t)0x01),
brdirais 0:2cb6ce8e07bd 145 STEP_MODE_1_4 = ((uint8_t)0x02),
brdirais 0:2cb6ce8e07bd 146 STEP_MODE_1_8 = ((uint8_t)0x03),
brdirais 0:2cb6ce8e07bd 147 STEP_MODE_1_16 = ((uint8_t)0x04),
brdirais 0:2cb6ce8e07bd 148 STEP_MODE_1_32 = ((uint8_t)0x05),
brdirais 0:2cb6ce8e07bd 149 STEP_MODE_1_64 = ((uint8_t)0x06),
brdirais 0:2cb6ce8e07bd 150 STEP_MODE_1_128 = ((uint8_t)0x07),
brdirais 0:2cb6ce8e07bd 151 STEP_MODE_1_256 = ((uint8_t)0x08),
brdirais 0:2cb6ce8e07bd 152 STEP_MODE_UNKNOW = ((uint8_t)0xFE),
brdirais 0:2cb6ce8e07bd 153 STEP_MODE_WAVE = ((uint8_t)0xFF)
brdirais 0:2cb6ce8e07bd 154 } motorStepMode_t;
brdirais 0:2cb6ce8e07bd 155
brdirais 0:2cb6ce8e07bd 156 /**
brdirais 0:2cb6ce8e07bd 157 * @}
brdirais 0:2cb6ce8e07bd 158 */
brdirais 0:2cb6ce8e07bd 159
brdirais 0:2cb6ce8e07bd 160 /** @defgroup Decay_mode Decay mode
brdirais 0:2cb6ce8e07bd 161 * @{
brdirais 0:2cb6ce8e07bd 162 */
brdirais 0:2cb6ce8e07bd 163 /// Decay Mode
brdirais 0:2cb6ce8e07bd 164 typedef enum {
brdirais 0:2cb6ce8e07bd 165 SLOW_DECAY = 0,
brdirais 0:2cb6ce8e07bd 166 FAST_DECAY = 1,
brdirais 0:2cb6ce8e07bd 167 UNKNOW_DECAY = ((uint8_t)0xFF)
brdirais 0:2cb6ce8e07bd 168 } motorDecayMode_t;
brdirais 0:2cb6ce8e07bd 169 /**
brdirais 0:2cb6ce8e07bd 170 * @}
brdirais 0:2cb6ce8e07bd 171 */
brdirais 0:2cb6ce8e07bd 172
brdirais 0:2cb6ce8e07bd 173 /** @defgroup Stop_mode Stop mode
brdirais 0:2cb6ce8e07bd 174 * @{
brdirais 0:2cb6ce8e07bd 175 */
brdirais 0:2cb6ce8e07bd 176 /// Stop mode
brdirais 0:2cb6ce8e07bd 177 typedef enum
brdirais 0:2cb6ce8e07bd 178 {
brdirais 0:2cb6ce8e07bd 179 HOLD_MODE = 0,
brdirais 0:2cb6ce8e07bd 180 HIZ_MODE = 1,
brdirais 0:2cb6ce8e07bd 181 STANDBY_MODE = 2,
brdirais 0:2cb6ce8e07bd 182 UNKNOW_STOP_MODE = ((uint8_t)0xFF)
brdirais 0:2cb6ce8e07bd 183 } motorStopMode_t;
brdirais 0:2cb6ce8e07bd 184 /**
brdirais 0:2cb6ce8e07bd 185 * @}
brdirais 0:2cb6ce8e07bd 186 */
brdirais 0:2cb6ce8e07bd 187
brdirais 0:2cb6ce8e07bd 188 /** @defgroup Torque_mode Torque mode
brdirais 0:2cb6ce8e07bd 189 * @{
brdirais 0:2cb6ce8e07bd 190 */
brdirais 0:2cb6ce8e07bd 191 /// Torque mode
brdirais 0:2cb6ce8e07bd 192 typedef enum
brdirais 0:2cb6ce8e07bd 193 {
brdirais 0:2cb6ce8e07bd 194 ACC_TORQUE = 0,
brdirais 0:2cb6ce8e07bd 195 DEC_TORQUE = 1,
brdirais 0:2cb6ce8e07bd 196 RUN_TORQUE = 2,
brdirais 0:2cb6ce8e07bd 197 HOLD_TORQUE = 3,
brdirais 0:2cb6ce8e07bd 198 CURRENT_TORQUE = 4,
brdirais 0:2cb6ce8e07bd 199 UNKNOW_TORQUE = ((uint8_t)0xFF)
brdirais 0:2cb6ce8e07bd 200 } motorTorqueMode_t;
brdirais 0:2cb6ce8e07bd 201 /**
brdirais 0:2cb6ce8e07bd 202 * @}
brdirais 0:2cb6ce8e07bd 203 */
brdirais 0:2cb6ce8e07bd 204
brdirais 0:2cb6ce8e07bd 205 /** @defgroup Dual_Full_Bridge_Configuration Dual Full Bridge Configuration
brdirais 0:2cb6ce8e07bd 206 * @{
brdirais 0:2cb6ce8e07bd 207 */
brdirais 0:2cb6ce8e07bd 208 ///Dual full bridge configurations for brush DC motors
brdirais 0:2cb6ce8e07bd 209 typedef enum {
brdirais 0:2cb6ce8e07bd 210 PARALLELING_NONE___1_BIDIR_MOTOR_BRIDGE_A__1_BIDIR_MOTOR_BRIDGE_B = 0,
brdirais 0:2cb6ce8e07bd 211 PARALLELING_NONE___1_BIDIR_MOTOR_BRIDGE_A__2_UNDIR_MOTOR_BRIDGE_B = 1,
brdirais 0:2cb6ce8e07bd 212 PARALLELING_NONE___2_UNDIR_MOTOR_BRIDGE_A__1_BIDIR_MOTOR_BRIDGE_B = 2,
brdirais 0:2cb6ce8e07bd 213 PARALLELING_NONE___2_UNDIR_MOTOR_BRIDGE_A__2_UNDIR_MOTOR_BRIDGE_B = 3,
brdirais 0:2cb6ce8e07bd 214 PARALLELING_IN1A_IN2A__1_UNDIR_MOTOR_BRIDGE_A__1_BIDIR_MOTOR_BRIDGE_B = 4,
brdirais 0:2cb6ce8e07bd 215 PARALLELING_IN1A_IN2A__1_UNDIR_MOTOR_BRIDGE_A__2_UNDIR_MOTOR_BRIDGE_B = 5,
brdirais 0:2cb6ce8e07bd 216 PARALLELING_IN1B_IN2B__1_BIDIR_MOTOR_BRIDGE_A__1_UNDIR_MOTOR_BRIDGE_B = 6,
brdirais 0:2cb6ce8e07bd 217 PARALLELING_IN1B_IN2B__2_UNDIR_MOTOR_BRIDGE_A__1_UNDIR_MOTOR_BRIDGE_B = 7,
brdirais 0:2cb6ce8e07bd 218 PARALLELING_IN1A_IN2A__IN1B_IN2B__1_UNDIR_MOTOR_BRIDGE_A__1_UNDIR_MOTOR_BRIDGE_B = 8,
brdirais 0:2cb6ce8e07bd 219 PARALLELING_IN1A_IN2A__IN1B_IN2B__1_BIDIR_MOTOR = 9,
brdirais 0:2cb6ce8e07bd 220 PARALLELING_IN1A_IN1B__IN2A_IN2B__1_UNDIR_MOTOR_BRIDGE_1A__1_UNDIR_MOTOR_BRIDGE_2A = 10,
brdirais 0:2cb6ce8e07bd 221 PARALLELING_IN1A_IN1B__IN2A_IN2B__1_BIDIR_MOTOR = 11,
brdirais 0:2cb6ce8e07bd 222 PARALLELING_ALL_WITH_IN1A___1_UNDIR_MOTOR = 12,
brdirais 0:2cb6ce8e07bd 223 PARALLELING_END_ENUM = 13
brdirais 0:2cb6ce8e07bd 224 } dualFullBridgeConfig_t;
brdirais 0:2cb6ce8e07bd 225 /**
brdirais 0:2cb6ce8e07bd 226 * @}
brdirais 0:2cb6ce8e07bd 227 */
brdirais 0:2cb6ce8e07bd 228
brdirais 0:2cb6ce8e07bd 229 /** @defgroup Motor_Driver_Structure Motor Driver Structure
brdirais 0:2cb6ce8e07bd 230 * @{
brdirais 0:2cb6ce8e07bd 231 */
brdirais 0:2cb6ce8e07bd 232 /// Motor driver structure definition
brdirais 0:2cb6ce8e07bd 233 typedef struct
brdirais 0:2cb6ce8e07bd 234 {
brdirais 0:2cb6ce8e07bd 235
brdirais 0:2cb6ce8e07bd 236 /* Generic */
brdirais 0:2cb6ce8e07bd 237 Status_t (*Init)(void *handle, void *init);
brdirais 0:2cb6ce8e07bd 238 Status_t (*ReadID)(void *handle, uint8_t *id);
brdirais 0:2cb6ce8e07bd 239
brdirais 0:2cb6ce8e07bd 240 /* Interrupts */
brdirais 0:2cb6ce8e07bd 241 /// Function pointer to AttachErrorHandler
brdirais 0:2cb6ce8e07bd 242 void(*AttachErrorHandler)(void *handle, void (*callback)(void *handle, uint16_t error));
brdirais 0:2cb6ce8e07bd 243 /// Function pointer to AttachFlagInterrupt
brdirais 0:2cb6ce8e07bd 244 void (*AttachFlagInterrupt)(void *handle, void (*callback)(void *handle));
brdirais 0:2cb6ce8e07bd 245 /// Function pointer to AttachBusyInterrupt
brdirais 0:2cb6ce8e07bd 246 void (*AttachBusyInterrupt)(void *handle, void (*callback)(void *handle));
brdirais 0:2cb6ce8e07bd 247 /// Function pointer to FlagInterruptHandler
brdirais 0:2cb6ce8e07bd 248 void (*FlagInterruptHandler)(void *handle);
brdirais 0:2cb6ce8e07bd 249
brdirais 0:2cb6ce8e07bd 250 /* Specific */
brdirais 0:2cb6ce8e07bd 251 /// Function pointer to GetAcceleration
brdirais 0:2cb6ce8e07bd 252 uint16_t (*GetAcceleration)(void *handle);
brdirais 0:2cb6ce8e07bd 253 /// Function pointer to GetCurrentSpeed
brdirais 0:2cb6ce8e07bd 254 uint16_t (*GetCurrentSpeed)(void *handle, uint8_t motorId);
brdirais 0:2cb6ce8e07bd 255 /// Function pointer to GetDeceleration
brdirais 0:2cb6ce8e07bd 256 uint16_t (*GetDeceleration)(void *handle);
brdirais 0:2cb6ce8e07bd 257 /// Function pointer to GetDeviceState
brdirais 0:2cb6ce8e07bd 258 motorState_t(*GetDeviceState)(void *handle, uint8_t motorId);
brdirais 0:2cb6ce8e07bd 259 /// Function pointer to GetFwVersion
brdirais 0:2cb6ce8e07bd 260 uint8_t (*GetFwVersion)(void *handle);
brdirais 0:2cb6ce8e07bd 261 /// Function pointer to GetMark
brdirais 0:2cb6ce8e07bd 262 int32_t (*GetMark)(void *handle);
brdirais 0:2cb6ce8e07bd 263 /// Function pointer to GetMaxSpeed
brdirais 0:2cb6ce8e07bd 264 uint16_t (*GetMaxSpeed)(void *handle, uint8_t motorId);
brdirais 0:2cb6ce8e07bd 265 /// Function pointer to GetMinSpeed
brdirais 0:2cb6ce8e07bd 266 uint16_t (*GetMinSpeed)(void *handle, uint8_t motorId);
brdirais 0:2cb6ce8e07bd 267 /// Function pointer to GetPosition
brdirais 0:2cb6ce8e07bd 268 int32_t (*GetPosition)(void *handle);
brdirais 0:2cb6ce8e07bd 269 /// Function pointer to GoHome
brdirais 0:2cb6ce8e07bd 270 void (*GoHome)(void *handle);
brdirais 0:2cb6ce8e07bd 271 /// Function pointer to GoMark
brdirais 0:2cb6ce8e07bd 272 void (*GoMark)(void *handle);
brdirais 0:2cb6ce8e07bd 273 /// Function pointer to GoTo
brdirais 0:2cb6ce8e07bd 274 void (*GoTo)(void *handle, uint8_t deviceId, int32_t motorId);
brdirais 0:2cb6ce8e07bd 275 /// Function pointer to HardStop
brdirais 0:2cb6ce8e07bd 276 void (*HardStop)(void *handle, uint8_t motorId);
brdirais 0:2cb6ce8e07bd 277 /// Function pointer to Move
brdirais 0:2cb6ce8e07bd 278 void (*Move)(void *handle, motorDir_t direction, uint32_t stepCount);
brdirais 0:2cb6ce8e07bd 279 /// Function pointer to ResetAllDevices
brdirais 0:2cb6ce8e07bd 280 void (*ResetAllDevices)(void *handle);
brdirais 0:2cb6ce8e07bd 281 /// Function pointer to Run
brdirais 0:2cb6ce8e07bd 282 void (*Run)(void *handle, uint8_t stepCount, motorDir_t direction);
brdirais 0:2cb6ce8e07bd 283 /// Function pointer to SetAcceleration
brdirais 0:2cb6ce8e07bd 284 bool(*SetAcceleration)(void *handle, uint16_t newAcc);
brdirais 0:2cb6ce8e07bd 285 /// Function pointer to SetDeceleration
brdirais 0:2cb6ce8e07bd 286 bool(*SetDeceleration)(void *handle, uint16_t newDec);
brdirais 0:2cb6ce8e07bd 287 /// Function pointer to SetHome
brdirais 0:2cb6ce8e07bd 288 void (*SetHome)(void *handle);
brdirais 0:2cb6ce8e07bd 289 /// Function pointer to SetMark
brdirais 0:2cb6ce8e07bd 290 void (*SetMark)(void *handle);
brdirais 0:2cb6ce8e07bd 291 /// Function pointer to SetMaxSpeed
brdirais 0:2cb6ce8e07bd 292 bool (*SetMaxSpeed)(void *handle, uint8_t motorId, uint16_t newMaxSpeed);
brdirais 0:2cb6ce8e07bd 293 /// Function pointer to SetMinSpeed
brdirais 0:2cb6ce8e07bd 294 bool (*SetMinSpeed)(void *handle, uint8_t motorId, uint16_t newMinSpeed);
brdirais 0:2cb6ce8e07bd 295 /// Function pointer to SoftStop
brdirais 0:2cb6ce8e07bd 296 bool (*SoftStop)(void *handle);
brdirais 0:2cb6ce8e07bd 297 /// Function pointer to StepClockHandler
brdirais 0:2cb6ce8e07bd 298 void (*StepClockHandler)(void *handle);
brdirais 0:2cb6ce8e07bd 299 /// Function pointer to WaitWhileActive
brdirais 0:2cb6ce8e07bd 300 void (*WaitWhileActive)(void *handle);
brdirais 0:2cb6ce8e07bd 301 /// Function pointer to CmdDisable
brdirais 0:2cb6ce8e07bd 302 void (*CmdDisable)(void *handle, uint8_t bridgeId);
brdirais 0:2cb6ce8e07bd 303 /// Function pointer to CmdEnable
brdirais 0:2cb6ce8e07bd 304 void (*CmdEnable)(void *handle, uint8_t bridgeId);
brdirais 0:2cb6ce8e07bd 305 /// Function pointer to CmdGetParam
brdirais 0:2cb6ce8e07bd 306 uint32_t (*CmdGetParam)(void *handle, uint32_t param);
brdirais 0:2cb6ce8e07bd 307 /// Function pointer to CmdGetStatus
brdirais 0:2cb6ce8e07bd 308 uint16_t (*CmdGetStatus)(void *handle, uint8_t bridgeId);
brdirais 0:2cb6ce8e07bd 309 /// Function pointer to CmdNop
brdirais 0:2cb6ce8e07bd 310 void (*CmdNop)(void *handle);
brdirais 0:2cb6ce8e07bd 311 /// Function pointer to CmdSetParam
brdirais 0:2cb6ce8e07bd 312 void (*CmdSetParam)(void *handle, uint32_t param, uint32_t value);
brdirais 0:2cb6ce8e07bd 313 /// Function pointer to ReadStatusRegister
brdirais 0:2cb6ce8e07bd 314 uint16_t (*ReadStatusRegister)(void *handle);
brdirais 0:2cb6ce8e07bd 315 /// Function pointer to ReleaseReset
brdirais 0:2cb6ce8e07bd 316 void (*ReleaseReset)(void *handle);
brdirais 0:2cb6ce8e07bd 317 /// Function pointer to Reset
brdirais 0:2cb6ce8e07bd 318 void (*Reset)(void *handle);
brdirais 0:2cb6ce8e07bd 319 /// Function pointer to SelectStepMode
brdirais 0:2cb6ce8e07bd 320 void (*SelectStepMode)(void *handle, motorStepMode_t stepMode);
brdirais 0:2cb6ce8e07bd 321 /// Function pointer to SetDirection
brdirais 0:2cb6ce8e07bd 322 void (*SetDirection)(void *handle, motorDir_t direction);
brdirais 0:2cb6ce8e07bd 323 /// Function pointer to CmdGoToDir
brdirais 0:2cb6ce8e07bd 324 void (*CmdGoToDir)(void *handle, motorDir_t direction, int32_t abs_pos);
brdirais 0:2cb6ce8e07bd 325 /// Function pointer to CheckBusyHw
brdirais 0:2cb6ce8e07bd 326 uint8_t (*CheckBusyHw)(void *handle);
brdirais 0:2cb6ce8e07bd 327 /// Function pointer to CheckStatusHw
brdirais 0:2cb6ce8e07bd 328 uint8_t (*CheckStatusHw)(void *handle);
brdirais 0:2cb6ce8e07bd 329 /// Function pointer to CmdGoUntil
brdirais 0:2cb6ce8e07bd 330 void (*CmdGoUntil)(void *handle, motorAction_t action, motorDir_t direction, uint32_t speed);
brdirais 0:2cb6ce8e07bd 331 /// Function pointer to CmdHardHiZ
brdirais 0:2cb6ce8e07bd 332 void (*CmdHardHiZ)(void *handle, uint8_t motorId);
brdirais 0:2cb6ce8e07bd 333 /// Function pointer to CmdReleaseSw
brdirais 0:2cb6ce8e07bd 334 void (*CmdReleaseSw)(void *handle, motorAction_t action, motorDir_t direction);
brdirais 0:2cb6ce8e07bd 335 /// Function pointer to CmdResetDevice
brdirais 0:2cb6ce8e07bd 336 void (*CmdResetDevice)(void *handle);
brdirais 0:2cb6ce8e07bd 337 /// Function pointer to CmdResetPos
brdirais 0:2cb6ce8e07bd 338 void (*CmdResetPos)(void *handle);
brdirais 0:2cb6ce8e07bd 339 /// Function pointer to CmdRun
brdirais 0:2cb6ce8e07bd 340 void (*CmdRun)(void *handle, motorDir_t direction, uint32_t speed);
brdirais 0:2cb6ce8e07bd 341 /// Function pointer to CmdSoftHiZ
brdirais 0:2cb6ce8e07bd 342 void (*CmdSoftHiZ)(void *handle);
brdirais 0:2cb6ce8e07bd 343 /// Function pointer to CmdStepClock
brdirais 0:2cb6ce8e07bd 344 void (*CmdStepClock)(void *handle, motorDir_t direction);
brdirais 0:2cb6ce8e07bd 345 /// Function pointer to FetchAndClearAllStatus
brdirais 0:2cb6ce8e07bd 346 void (*FetchAndClearAllStatus)(void *handle);
brdirais 0:2cb6ce8e07bd 347 /// Function pointer to GetFetchedStatus
brdirais 0:2cb6ce8e07bd 348 uint16_t (*GetFetchedStatus)(void *handle);
brdirais 0:2cb6ce8e07bd 349 /// Function pointer to GetNbDevices
brdirais 0:2cb6ce8e07bd 350 uint8_t (*GetNbDevices)(void *handle);
brdirais 0:2cb6ce8e07bd 351 /// Function pointer to IsDeviceBusy
brdirais 0:2cb6ce8e07bd 352 bool (*IsDeviceBusy)(void *handle);
brdirais 0:2cb6ce8e07bd 353 /// Function pointer to SendQueuedCommands
brdirais 0:2cb6ce8e07bd 354 void (*SendQueuedCommands)(void *handle);
brdirais 0:2cb6ce8e07bd 355 /// Function pointer to QueueCommands
brdirais 0:2cb6ce8e07bd 356 void (*QueueCommands)(void *handle, uint8_t param, int32_t value);
brdirais 0:2cb6ce8e07bd 357 /// Function pointer to WaitForAllDevicesNotBusy
brdirais 0:2cb6ce8e07bd 358 void (*WaitForAllDevicesNotBusy)(void *handle);
brdirais 0:2cb6ce8e07bd 359 /// Function pointer to ErrorHandler
brdirais 0:2cb6ce8e07bd 360 void (*ErrorHandler)(void *handle, uint16_t error);
brdirais 0:2cb6ce8e07bd 361 /// Function pointer to BusyInterruptHandler
brdirais 0:2cb6ce8e07bd 362 void (*BusyInterruptHandler)(void *handle);
brdirais 0:2cb6ce8e07bd 363 /// Function pointer to CmdSoftStop
brdirais 0:2cb6ce8e07bd 364 void (*CmdSoftStop)(void *handle);
brdirais 0:2cb6ce8e07bd 365 /// Function pointer to StartStepClock
brdirais 0:2cb6ce8e07bd 366 void (*StartStepClock)(void *handle);
brdirais 0:2cb6ce8e07bd 367 /// Function pointer to StopStepClock
brdirais 0:2cb6ce8e07bd 368 void (*StopStepClock)(void *handle);
brdirais 0:2cb6ce8e07bd 369 /// Function pointer to SetDualFullBridgeConfig
brdirais 0:2cb6ce8e07bd 370 void (*SetDualFullBridgeConfig)(void *handle, uint8_t newConfig);
brdirais 0:2cb6ce8e07bd 371 /// Function pointer to GetBridgeInputPwmFreq
brdirais 0:2cb6ce8e07bd 372 uint32_t (*GetBridgeInputPwmFreq)(void *handle, uint8_t bridgeId);
brdirais 0:2cb6ce8e07bd 373 /// Function pointer to SetBridgeInputPwmFreq
brdirais 0:2cb6ce8e07bd 374 void (*SetBridgeInputPwmFreq)(void *handle, uint8_t bridgeId, uint32_t newFreq);
brdirais 0:2cb6ce8e07bd 375 /// Function pointer to SetStopMode
brdirais 0:2cb6ce8e07bd 376 void (*SetStopMode)(void *handle, motorStopMode_t stopMode);
brdirais 0:2cb6ce8e07bd 377 /// Function pointer to GetStopMode
brdirais 0:2cb6ce8e07bd 378 motorStopMode_t (*GetStopMode)(void *handle);
brdirais 0:2cb6ce8e07bd 379 /// Function pointer to SetDecayMode
brdirais 0:2cb6ce8e07bd 380 void (*SetDecayMode)(void *handle, motorDecayMode_t decayMode);
brdirais 0:2cb6ce8e07bd 381 /// Function pointer to GetDecayMode
brdirais 0:2cb6ce8e07bd 382 motorDecayMode_t (*GetDecayMode)(void *handle);
brdirais 0:2cb6ce8e07bd 383 /// Function pointer to GetStepMode
brdirais 0:2cb6ce8e07bd 384 motorStepMode_t (*GetStepMode)(void *handle);
brdirais 0:2cb6ce8e07bd 385 /// Function pointer to GetDirection
brdirais 0:2cb6ce8e07bd 386 motorDir_t (*GetDirection)(void *handle);
brdirais 0:2cb6ce8e07bd 387 /// Function pointer to ExitDeviceFromReset
brdirais 0:2cb6ce8e07bd 388 void (*ExitDeviceFromReset)(void *handle);
brdirais 0:2cb6ce8e07bd 389 /// Function pointer to SetTorque
brdirais 0:2cb6ce8e07bd 390 void (*SetTorque)(void *handle, motorTorqueMode_t torqueMode, uint8_t torqueValue);
brdirais 0:2cb6ce8e07bd 391 /// Function pointer to GetTorque
brdirais 0:2cb6ce8e07bd 392 uint8_t (*GetTorque)(void *handle, motorTorqueMode_t torqueMode);
brdirais 0:2cb6ce8e07bd 393 /// Function pointer to SetVRefFreq
brdirais 0:2cb6ce8e07bd 394 void (*SetRefFreq)(void *handle, uint32_t freq);
brdirais 0:2cb6ce8e07bd 395 /// Function pointer to GetVRefFreq
brdirais 0:2cb6ce8e07bd 396 uint32_t (*GetRefFreq)(void *handle);
brdirais 0:2cb6ce8e07bd 397 /// Function pointer to SetVRefDc
brdirais 0:2cb6ce8e07bd 398 void (*SetRefDc)(void *handle, uint8_t RefDc);
brdirais 0:2cb6ce8e07bd 399 /// Function pointer to GetVRefDc
brdirais 0:2cb6ce8e07bd 400 uint8_t (*GetRefDc)(void *handle);
brdirais 0:2cb6ce8e07bd 401 /// Function pointer to SetNbDevices
brdirais 0:2cb6ce8e07bd 402 bool (*SetNbDevices)(void *handle, uint8_t nbDevices);
brdirais 0:2cb6ce8e07bd 403 /// Function pointer to set a parameter
brdirais 0:2cb6ce8e07bd 404 bool (*SetAnalogValue)(void *handle, uint32_t param, float value);
brdirais 0:2cb6ce8e07bd 405 /// Function pointer to get a parameter
brdirais 0:2cb6ce8e07bd 406 float (*GetAnalogValue)(void *handle, uint32_t param);
brdirais 0:2cb6ce8e07bd 407 } MOTOR_VTable_t;
brdirais 0:2cb6ce8e07bd 408
brdirais 0:2cb6ce8e07bd 409 /**
brdirais 0:2cb6ce8e07bd 410
brdirais 0:2cb6ce8e07bd 411 * @}
brdirais 0:2cb6ce8e07bd 412 */
brdirais 0:2cb6ce8e07bd 413
brdirais 0:2cb6ce8e07bd 414 /**
brdirais 0:2cb6ce8e07bd 415 * @}
brdirais 0:2cb6ce8e07bd 416 */
brdirais 0:2cb6ce8e07bd 417
brdirais 0:2cb6ce8e07bd 418 /**
brdirais 0:2cb6ce8e07bd 419 * @}
brdirais 0:2cb6ce8e07bd 420 */
brdirais 0:2cb6ce8e07bd 421
brdirais 0:2cb6ce8e07bd 422 /**
brdirais 0:2cb6ce8e07bd 423 * @}
brdirais 0:2cb6ce8e07bd 424 */
brdirais 0:2cb6ce8e07bd 425
brdirais 0:2cb6ce8e07bd 426 /**
brdirais 0:2cb6ce8e07bd 427 * @}
brdirais 0:2cb6ce8e07bd 428 */
brdirais 0:2cb6ce8e07bd 429
brdirais 0:2cb6ce8e07bd 430 #ifdef __cplusplus
brdirais 0:2cb6ce8e07bd 431 }
brdirais 0:2cb6ce8e07bd 432 #endif
brdirais 0:2cb6ce8e07bd 433
brdirais 0:2cb6ce8e07bd 434 #endif /* __MOTOR_H */
brdirais 0:2cb6ce8e07bd 435
brdirais 0:2cb6ce8e07bd 436 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
brdirais 0:2cb6ce8e07bd 437