Davide Aliprandi / X-NUCLEO-IHM06A1

Dependencies:   ST_INTERFACES

Fork of X_NUCLEO_IHM06A1 by ST

Committer:
nucleosam
Date:
Thu May 26 15:44:53 2016 +0000
Revision:
0:0ccd34c56c66
Initial version.

Who changed what in which revision?

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