drivers: stepper: gpio: refactor work rescheduling logic
update remaining steps should just update the remaining steps, rescheduling should happen after updating steps and hence is moved to position mode task which is also in coherence with velocity mode task Signed-off-by: Jilay Pandya <jilay.pandya@outlook.com>
This commit is contained in:
parent
150cd56643
commit
82c6add9b1
1 changed files with 13 additions and 12 deletions
|
@ -107,20 +107,14 @@ static void update_coil_charge(const struct device *dev)
|
|||
}
|
||||
}
|
||||
|
||||
static void update_remaining_steps(struct gpio_stepper_data *data)
|
||||
static void update_remaining_steps(const struct device *dev)
|
||||
{
|
||||
struct gpio_stepper_data *data = dev->data;
|
||||
|
||||
if (data->step_count > 0) {
|
||||
data->step_count--;
|
||||
(void)k_work_reschedule(&data->stepper_dwork, K_NSEC(data->delay_in_ns));
|
||||
} else if (data->step_count < 0) {
|
||||
data->step_count++;
|
||||
(void)k_work_reschedule(&data->stepper_dwork, K_NSEC(data->delay_in_ns));
|
||||
} else {
|
||||
if (!data->callback) {
|
||||
LOG_WRN_ONCE("No callback set");
|
||||
return;
|
||||
}
|
||||
data->callback(data->dev, STEPPER_EVENT_STEPS_COMPLETED, data->event_cb_user_data);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -141,11 +135,18 @@ static void position_mode_task(const struct device *dev)
|
|||
{
|
||||
struct gpio_stepper_data *data = dev->data;
|
||||
|
||||
if (data->step_count) {
|
||||
update_remaining_steps(dev);
|
||||
(void)stepper_motor_set_coil_charge(dev);
|
||||
update_coil_charge(dev);
|
||||
if (data->step_count) {
|
||||
(void)k_work_reschedule(&data->stepper_dwork, K_NSEC(data->delay_in_ns));
|
||||
} else {
|
||||
if (data->callback) {
|
||||
data->callback(data->dev, STEPPER_EVENT_STEPS_COMPLETED,
|
||||
data->event_cb_user_data);
|
||||
}
|
||||
(void)k_work_cancel_delayable(&data->stepper_dwork);
|
||||
}
|
||||
update_remaining_steps(dev->data);
|
||||
}
|
||||
|
||||
static void velocity_mode_task(const struct device *dev)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue