Skip to content

Commit 8a52c95

Browse files
committed
pbdrv/legodev: Refactor LEGO device abstraction.
This is a major overhaul of the lego device interface to clean up many longstanding hacks and simplify maintenance of present and future platforms, including EV3 and NXT. It is also a first step towards generalizing ioports, of which legodev will be one mode.
1 parent 3317369 commit 8a52c95

File tree

152 files changed

+4206
-4747
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

152 files changed

+4206
-4747
lines changed

.vscode/launch.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,6 @@
208208
"options": [
209209
"drv/bluetooth/test_btstack_run_loop_contiki_timer",
210210
"drv/bluetooth/test_btstack_run_loop_contiki_poll",
211-
"drv/counter/test_counter_get",
212211
"drv/pwm/test_pwm_get",
213212
"drv/pwm/test_pwm_set_duty",
214213
"src/angle/test_scaling",

CHANGELOG.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,18 @@
44

55
## [Unreleased]
66

7+
### Added
8+
- Added `'modes'` entry to the dictionary returned by `PUPDevice.info()`. It
9+
is a tuple of `(name, num_values, data_type)` tuples for each available mode.
10+
11+
### Changed
12+
- Changed internal drivers for LEGO devices on all platforms.
13+
714
### Fixed
815
- Fixed hub will not power off when Bluetooth chip crashes on City and Technic hubs ([support#1095]).
916

1017
[support#1095]: https://github.com/pybricks/support/issues/1095
1118

12-
1319
## [3.3.0b6] - 2023-06-02
1420

1521
### Added

bricks/_common/sources.mk

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ PYBRICKS_PYBRICKS_SRC_C = $(addprefix pybricks/,\
2929
common/pb_type_colorlight_internal.c \
3030
common/pb_type_control.c \
3131
common/pb_type_dcmotor.c \
32+
common/pb_type_device.c \
3233
common/pb_type_imu.c \
3334
common/pb_type_keypad.c \
3435
common/pb_type_lightarray.c \
@@ -59,7 +60,6 @@ PYBRICKS_PYBRICKS_SRC_C = $(addprefix pybricks/,\
5960
iodevices/pb_type_iodevices_analogsensor.c \
6061
iodevices/pb_type_iodevices_ev3devsensor.c \
6162
iodevices/pb_type_iodevices_i2cdevice.c \
62-
iodevices/pb_type_iodevices_lumpdevice.c \
6363
iodevices/pb_type_iodevices_lwp3device.c \
6464
iodevices/pb_type_iodevices_pupdevice.c \
6565
iodevices/pb_type_iodevices_uartdevice.c \
@@ -105,8 +105,6 @@ PYBRICKS_PYBRICKS_SRC_C = $(addprefix pybricks/,\
105105
util_mp/pb_type_enum.c \
106106
util_pb/pb_color_map.c \
107107
util_pb/pb_conversions.c \
108-
util_pb/pb_device_ev3dev.c \
109-
util_pb/pb_device_nxt.c \
110108
util_pb/pb_error.c \
111109
util_pb/pb_serial_ev3dev.c \
112110
util_pb/pb_task.c \
@@ -146,28 +144,26 @@ PBIO_SRC_C = $(addprefix lib/pbio/,\
146144
drv/clock/clock_test.c \
147145
drv/clock/clock_virtual.c \
148146
drv/core.c \
149-
drv/counter/counter_core.c \
150147
drv/counter/counter_ev3dev_stretch_iio.c \
151-
drv/counter/counter_lpf2.c \
152-
drv/counter/counter_nxt.c \
153148
drv/counter/counter_stm32f0_gpio_quad_enc.c \
154149
drv/counter/counter_virtual_cpython.c \
155-
drv/counter/counter_virtual_simulation.c \
156150
drv/gpio/gpio_stm32f0.c \
157151
drv/gpio/gpio_stm32f4.c \
158152
drv/gpio/gpio_stm32l4.c \
159153
drv/imu/imu_lsm6ds3tr_c_stm32.c \
160-
drv/ioport/ioport_ev3dev_stretch.c \
161-
drv/ioport/ioport_lpf2.c \
162-
drv/ioport/ioport_nxt.c \
163-
drv/ioport/ioport_test.c \
164-
drv/ioport/ioport_virtual_cpython.c \
154+
drv/ioport/ioport_pup.c \
165155
drv/led/led_array_pwm.c \
166156
drv/led/led_array.c \
167157
drv/led/led_core.c \
168158
drv/led/led_dual.c \
169159
drv/led/led_pwm.c \
170160
drv/led/led_virtual.c \
161+
drv/legodev/legodev_ev3dev.c \
162+
drv/legodev/legodev_nxt.c \
163+
drv/legodev/legodev_pup.c \
164+
drv/legodev/legodev_pup_uart.c \
165+
drv/legodev/legodev_test.c \
166+
drv/legodev/legodev_virtual.c \
171167
drv/motor_driver/motor_driver_ev3dev_stretch.c \
172168
drv/motor_driver/motor_driver_hbridge_pwm.c \
173169
drv/motor_driver/motor_driver_nxt.c \
@@ -205,7 +201,6 @@ PBIO_SRC_C = $(addprefix lib/pbio/,\
205201
src/imu.c \
206202
src/int_math.c \
207203
src/integrator.c \
208-
src/iodev.c \
209204
src/light/animation.c \
210205
src/light/color_light.c \
211206
src/light/light_matrix.c \
@@ -222,7 +217,6 @@ PBIO_SRC_C = $(addprefix lib/pbio/,\
222217
src/tacho.c \
223218
src/task.c \
224219
src/trajectory.c \
225-
src/uartdev.c \
226220
src/util.c \
227221
sys/battery.c \
228222
sys/bluetooth.c \

bricks/cityhub/mpconfigport.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
#define PYBRICKS_PY_PARAMETERS (1)
3535
#define PYBRICKS_PY_PARAMETERS_BUTTON (1)
3636
#define PYBRICKS_PY_PARAMETERS_ICON (0)
37+
#define PYBRICKS_PY_DEVICES (1)
3738
#define PYBRICKS_PY_PUPDEVICES (1)
3839
#define PYBRICKS_PY_ROBOTICS (1)
3940
#define PYBRICKS_PY_ROBOTICS_DRIVEBASE_GYRO (0)

bricks/debug/mpconfigport.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
#define PYBRICKS_PY_COMMON_CONTROL (0)
1717
#define PYBRICKS_PY_COMMON_IMU (0)
1818
#define PYBRICKS_PY_COMMON_KEYPAD (1)
19-
#define PYBRICKS_PY_COMMON_LIGHT_ARRAY (1)
19+
#define PYBRICKS_PY_COMMON_LIGHT_ARRAY (0)
2020
#define PYBRICKS_PY_COMMON_LIGHT_MATRIX (0)
2121
#define PYBRICKS_PY_COMMON_MOTORS (0)
2222
#define PYBRICKS_PY_COMMON_SPEAKER (0)
@@ -31,7 +31,8 @@
3131
#define PYBRICKS_PY_PARAMETERS (1)
3232
#define PYBRICKS_PY_PARAMETERS_BUTTON (1)
3333
#define PYBRICKS_PY_PARAMETERS_ICON (0)
34-
#define PYBRICKS_PY_PUPDEVICES (1)
34+
#define PYBRICKS_PY_DEVICES (0)
35+
#define PYBRICKS_PY_PUPDEVICES (0)
3536
#define PYBRICKS_PY_ROBOTICS (0)
3637
#define PYBRICKS_PY_TOOLS (1)
3738

bricks/essentialhub/mpconfigport.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
#define PYBRICKS_PY_PARAMETERS (1)
3636
#define PYBRICKS_PY_PARAMETERS_BUTTON (1)
3737
#define PYBRICKS_PY_PARAMETERS_ICON (0)
38+
#define PYBRICKS_PY_DEVICES (1)
3839
#define PYBRICKS_PY_PUPDEVICES (1)
3940
#define PYBRICKS_PY_ROBOTICS (1)
4041
#define PYBRICKS_PY_ROBOTICS_DRIVEBASE_GYRO (1)

bricks/ev3dev/brickconfig.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
#define PYBRICKS_PY_PARAMETERS (1)
4040
#define PYBRICKS_PY_PARAMETERS_BUTTON (1)
4141
#define PYBRICKS_PY_PARAMETERS_ICON (0)
42-
#define PYBRICKS_PY_PUPDEVICES (0)
42+
#define PYBRICKS_PY_DEVICES (1)
4343
#define PYBRICKS_PY_ROBOTICS (1)
4444
#define PYBRICKS_PY_ROBOTICS_DRIVEBASE_SPIKE (0)
4545
#define PYBRICKS_PY_TOOLS (1)

bricks/movehub/mpconfigport.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
#define PYBRICKS_PY_PARAMETERS (1)
3131
#define PYBRICKS_PY_PARAMETERS_BUTTON (1)
3232
#define PYBRICKS_PY_PARAMETERS_ICON (0)
33+
#define PYBRICKS_PY_DEVICES (1)
3334
#define PYBRICKS_PY_PUPDEVICES (1)
3435
#define PYBRICKS_PY_ROBOTICS (1)
3536
#define PYBRICKS_PY_ROBOTICS_DRIVEBASE_GYRO (0)

bricks/nxt/mpconfigport.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
#define PYBRICKS_PY_PARAMETERS (1)
3737
#define PYBRICKS_PY_PARAMETERS_BUTTON (1)
3838
#define PYBRICKS_PY_PARAMETERS_ICON (0)
39-
#define PYBRICKS_PY_PUPDEVICES (0)
39+
#define PYBRICKS_PY_DEVICES (1)
4040
#define PYBRICKS_PY_ROBOTICS (1)
4141
#define PYBRICKS_PY_ROBOTICS_DRIVEBASE_GYRO (0)
4242
#define PYBRICKS_PY_ROBOTICS_DRIVEBASE_SPIKE (0)

bricks/primehub/mpconfigport.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
#define PYBRICKS_PY_PARAMETERS (1)
3737
#define PYBRICKS_PY_PARAMETERS_BUTTON (1)
3838
#define PYBRICKS_PY_PARAMETERS_ICON (1)
39+
#define PYBRICKS_PY_DEVICES (1)
3940
#define PYBRICKS_PY_PUPDEVICES (1)
4041
#define PYBRICKS_PY_ROBOTICS (1)
4142
#define PYBRICKS_PY_ROBOTICS_DRIVEBASE_GYRO (1)

0 commit comments

Comments
 (0)