Skip to content

Commit 5d0584a

Browse files
committed
pybricks.robotics.Car: Validate input args.
Fixes pybricks/support#1502
1 parent f1a1c4f commit 5d0584a

File tree

2 files changed

+16
-0
lines changed

2 files changed

+16
-0
lines changed

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,11 @@
44

55
## [Unreleased]
66

7+
### Changed
8+
- Additional error checking in `pybricks.robotics.Car` setup ([support#1502]).
9+
10+
[support#1502]: https://github.com/pybricks/support/issues/1502
11+
712
## [3.4.0b3] - 2024-03-05
813

914
### Added

pybricks/robotics/pb_type_car.c

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,17 @@ STATIC mp_obj_t pb_type_Car_make_new(const mp_obj_type_t *type, size_t n_args, s
9494
self->n_drive = 1;
9595
}
9696

97+
for (size_t i = 0; i < self->n_drive; i++) {
98+
if (self->srv_drive[i] == self->srv_steer) {
99+
mp_raise_msg(&mp_type_ValueError, MP_ERROR_TEXT("drive_motors and steer_motor must be different"));
100+
}
101+
for (size_t j = i + 1; j < self->n_drive; j++) {
102+
if (self->srv_drive[i] == self->srv_drive[j]) {
103+
mp_raise_msg(&mp_type_ValueError, MP_ERROR_TEXT("drive_motors must be unique"));
104+
}
105+
}
106+
}
107+
97108
// Find left and right end of steering range.
98109
int32_t angle_left = run_until_stalled_blocking(self->srv_steer, PBIO_DIRECTION_COUNTERCLOCKWISE, torque_limit_in);
99110
int32_t angle_right = run_until_stalled_blocking(self->srv_steer, PBIO_DIRECTION_CLOCKWISE, torque_limit_in);

0 commit comments

Comments
 (0)