@@ -102,8 +102,6 @@ enum stepper_event {
102
102
STEPPER_EVENT_RIGHT_END_STOP_DETECTED = 3 ,
103
103
/** Stepper has stopped */
104
104
STEPPER_EVENT_STOPPED = 4 ,
105
- /** Fault with the stepper controller detected */
106
- STEPPER_EVENT_FAULT_DETECTED = 5 ,
107
105
};
108
106
109
107
/**
@@ -177,13 +175,26 @@ typedef int (*stepper_get_actual_position_t)(const struct device *dev, int32_t *
177
175
typedef void (* stepper_event_callback_t )(const struct device * dev , const enum stepper_event event ,
178
176
void * user_data );
179
177
178
+ /**
179
+ * @brief Callback function for stepper fault events
180
+ */
181
+ typedef void (* stepper_fault_callback_t )(const struct device * dev , void * user_data );
182
+
180
183
/**
181
184
* @brief Set the callback function to be called when a stepper event occurs
182
185
*
183
186
* @see stepper_set_event_callback() for details.
184
187
*/
185
188
typedef int (* stepper_set_event_callback_t )(const struct device * dev ,
186
189
stepper_event_callback_t callback , void * user_data );
190
+
191
+ /**
192
+ * @brief Set the callback function to be called when a stepper fault occurs
193
+ *
194
+ * @see stepper_set_fault_callback() for details.
195
+ */
196
+ typedef int (* stepper_set_fault_callback_t )(const struct device * dev ,
197
+ stepper_fault_callback_t callback , void * user_data );
187
198
/**
188
199
* @brief Set the time interval between steps in nanoseconds.
189
200
*
@@ -236,6 +247,8 @@ __subsystem struct stepper_driver_api {
236
247
stepper_get_micro_step_res_t get_micro_step_res ;
237
248
stepper_set_direction_t set_direction ;
238
249
stepper_step_t step ;
250
+ stepper_set_fault_callback_t set_fault_cb ;
251
+
239
252
stepper_set_reference_position_t set_reference_position ;
240
253
stepper_get_actual_position_t get_actual_position ;
241
254
stepper_set_event_callback_t set_event_callback ;
@@ -393,6 +406,33 @@ static inline int z_impl_stepper_get_micro_step_res(const struct device *dev,
393
406
return api -> get_micro_step_res (dev , resolution );
394
407
}
395
408
409
+ /**
410
+ * @brief Set the callback function to be called when a stepper fault occurs
411
+ *
412
+ * @param dev pointer to the stepper driver instance
413
+ * @param callback Callback function to be called when a stepper fault occurs
414
+ * passing NULL will disable the callback
415
+ * @param user_data User data to be passed to the callback function
416
+ *
417
+ * @retval -ENOSYS If not implemented by device driver
418
+ * @retval 0 Success
419
+ */
420
+ __syscall int stepper_set_fault_callback (const struct device * dev ,
421
+ stepper_fault_callback_t callback , void * user_data );
422
+
423
+ static inline int z_impl_stepper_set_fault_callback (const struct device * dev ,
424
+ stepper_fault_callback_t callback ,
425
+ void * user_data )
426
+ {
427
+ const struct stepper_driver_api * api = (const struct stepper_driver_api * )dev -> api ;
428
+
429
+ if (api -> set_fault_cb == NULL ) {
430
+ return - ENOSYS ;
431
+ }
432
+
433
+ return api -> set_fault_cb (dev , callback , user_data );
434
+ }
435
+
396
436
/**
397
437
* @brief Set the reference position of the stepper
398
438
*
0 commit comments