Skip to content

Commit 94656df

Browse files
committed
pbio/servo: Return PBIO_ERROR_NO_DEV on stopped controller.
In practice, the only way this can happen is by unplugging motors. Returning "no device" is more helpful than a permission error.
1 parent 368c02c commit 94656df

2 files changed

Lines changed: 14 additions & 14 deletions

File tree

lib/pbio/src/drivebase.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -409,7 +409,7 @@ pbio_error_t pbio_drivebase_stop(pbio_drivebase_t *db, pbio_control_on_completio
409409

410410
// Don't allow new user command if update loop not registered.
411411
if (!pbio_drivebase_update_loop_is_running(db)) {
412-
return PBIO_ERROR_INVALID_OP;
412+
return PBIO_ERROR_NO_DEV;
413413
}
414414

415415
// We're asked to stop, so continuing makes no sense.
@@ -555,7 +555,7 @@ static pbio_error_t pbio_drivebase_drive_relative(pbio_drivebase_t *db, int32_t
555555

556556
// Don't allow new user command if update loop not registered.
557557
if (!pbio_drivebase_update_loop_is_running(db)) {
558-
return PBIO_ERROR_INVALID_OP;
558+
return PBIO_ERROR_NO_DEV;
559559
}
560560

561561
// Stop servo control in case it was running.
@@ -666,7 +666,7 @@ pbio_error_t pbio_drivebase_drive_curve(pbio_drivebase_t *db, int32_t radius, in
666666
pbio_error_t pbio_drivebase_drive_turn(pbio_drivebase_t *db, int32_t angle, bool absolute, pbio_control_on_completion_t on_completion) {
667667
// Don't allow new user command if update loop not registered.
668668
if (!pbio_drivebase_update_loop_is_running(db)) {
669-
return PBIO_ERROR_INVALID_OP;
669+
return PBIO_ERROR_NO_DEV;
670670
}
671671

672672
// Stop servo control in case it was running.
@@ -799,7 +799,7 @@ static pbio_error_t pbio_drivebase_drive_time_common(pbio_drivebase_t *db, int32
799799

800800
// Don't allow new user command if update loop not registered.
801801
if (!pbio_drivebase_update_loop_is_running(db)) {
802-
return PBIO_ERROR_INVALID_OP;
802+
return PBIO_ERROR_NO_DEV;
803803
}
804804

805805
// Stop servo control in case it was running.
@@ -1043,7 +1043,7 @@ pbio_error_t pbio_drivebase_set_drive_settings(pbio_drivebase_t *db, int32_t dri
10431043
* @param [in] db The servo instance.
10441044
* @param [out] stalled True if stalled, false if not.
10451045
* @param [out] stall_duration For how long it has been stalled (ms).
1046-
* @return Error code. ::PBIO_ERROR_INVALID_OP if update
1046+
* @return Error code. ::PBIO_ERROR_NO_DEV if update
10471047
* loop not running, else ::PBIO_SUCCESS
10481048
*/
10491049
pbio_error_t pbio_drivebase_is_stalled(pbio_drivebase_t *db, bool *stalled, uint32_t *stall_duration) {
@@ -1052,7 +1052,7 @@ pbio_error_t pbio_drivebase_is_stalled(pbio_drivebase_t *db, bool *stalled, uint
10521052
if (!pbio_drivebase_update_loop_is_running(db)) {
10531053
*stalled = false;
10541054
*stall_duration = 0;
1055-
return PBIO_ERROR_INVALID_OP;
1055+
return PBIO_ERROR_NO_DEV;
10561056
}
10571057

10581058
pbio_error_t err;

lib/pbio/src/servo.c

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -463,7 +463,7 @@ pbio_error_t pbio_servo_get_state_user(pbio_servo_t *srv, int32_t *angle, int32_
463463

464464
// Don't allow user command if update loop not registered.
465465
if (!pbio_servo_update_loop_is_running(srv)) {
466-
return PBIO_ERROR_INVALID_OP;
466+
return PBIO_ERROR_NO_DEV;
467467
}
468468

469469
// Get servo state.
@@ -536,7 +536,7 @@ pbio_error_t pbio_servo_stop(pbio_servo_t *srv, pbio_control_on_completion_t on_
536536

537537
// Don't allow new user command if update loop not registered.
538538
if (!pbio_servo_update_loop_is_running(srv)) {
539-
return PBIO_ERROR_INVALID_OP;
539+
return PBIO_ERROR_NO_DEV;
540540
}
541541

542542
// Stop parent object that uses this motor, if any.
@@ -591,7 +591,7 @@ static pbio_error_t pbio_servo_run_time_common(pbio_servo_t *srv, int32_t speed,
591591

592592
// Don't allow new user command if update loop not registered.
593593
if (!pbio_servo_update_loop_is_running(srv)) {
594-
return PBIO_ERROR_INVALID_OP;
594+
return PBIO_ERROR_NO_DEV;
595595
}
596596

597597
// Stop parent object that uses this motor, if any.
@@ -691,7 +691,7 @@ pbio_error_t pbio_servo_run_target(pbio_servo_t *srv, int32_t speed, int32_t tar
691691

692692
// Don't allow new user command if update loop not registered.
693693
if (!pbio_servo_update_loop_is_running(srv)) {
694-
return PBIO_ERROR_INVALID_OP;
694+
return PBIO_ERROR_NO_DEV;
695695
}
696696

697697
// Stop parent object that uses this motor, if any.
@@ -741,7 +741,7 @@ pbio_error_t pbio_servo_run_angle(pbio_servo_t *srv, int32_t speed, int32_t angl
741741

742742
// Don't allow new user command if update loop not registered.
743743
if (!pbio_servo_update_loop_is_running(srv)) {
744-
return PBIO_ERROR_INVALID_OP;
744+
return PBIO_ERROR_NO_DEV;
745745
}
746746

747747
// Stop parent object that uses this motor, if any.
@@ -786,7 +786,7 @@ pbio_error_t pbio_servo_track_target(pbio_servo_t *srv, int32_t target) {
786786

787787
// Don't allow new user command if update loop not registered.
788788
if (!pbio_servo_update_loop_is_running(srv)) {
789-
return PBIO_ERROR_INVALID_OP;
789+
return PBIO_ERROR_NO_DEV;
790790
}
791791

792792
// Stop parent object that uses this motor, if any.
@@ -816,7 +816,7 @@ pbio_error_t pbio_servo_is_stalled(pbio_servo_t *srv, bool *stalled, uint32_t *s
816816
if (!pbio_servo_update_loop_is_running(srv)) {
817817
*stalled = false;
818818
*stall_duration = 0;
819-
return PBIO_ERROR_INVALID_OP;
819+
return PBIO_ERROR_NO_DEV;
820820
}
821821

822822
// If control is active, this provides the most accurate stall detection.
@@ -856,7 +856,7 @@ pbio_error_t pbio_servo_get_load(pbio_servo_t *srv, int32_t *load) {
856856
// Don't allow access if update loop not registered.
857857
if (!pbio_servo_update_loop_is_running(srv)) {
858858
*load = 0;
859-
return PBIO_ERROR_INVALID_OP;
859+
return PBIO_ERROR_NO_DEV;
860860
}
861861

862862
// Get passive actuation type.

0 commit comments

Comments
 (0)