Skip to content

[Feature] Short term roadmap to multi program support #2193

@laurensvalk

Description

@laurensvalk

We have an unreleased, reasonably practical solution to conveniently store multiple programs on the hub.

We haven't released it because it has some limitations and isn't quite as ambitious as some of our longer term plans.

But since this is such an essential and frequently requested feature, I'm beginning to think we should work towards releasing the simplified version for now. What are your thoughts?

What it does
Essentially the following. See here for more details.

Image

It is a fairly minimalist UI, but it has some advantages:

  • You can see everything in one glance.
  • You can still see your program choice after you start.
  • Fast. No fancy scroll animations.
  • You can operate this with your eyes closed, or with the hub hidden. (Since it doesn't wrap around.)

Limitations

  • Limited to 5 slots. (Naturally, you can still access buttons like you normally do to make more "menus" if you want)
  • There is no additional UI in the Pybricks Code editor. Your code just goes into the slot that is selected on the hub.
  • Secondary storage is not implemented. So if you make 5 giant programs you'll have a bit less RAM to operate. (On the other hand, this is no less than the current situation).
  • The warning about "program too big" will not work correctly, since it doesn't know how much space is used.
  • There isn't a UI to easily delete programs (or everything).

Implementation

  • On the firmware side, it is mainly a matter of activating one build flag. Since we've made a lot of changes, we could branch this off of the last stable firmware.
  • Perhaps we should add a UI to easily erase all data. Perhaps something like holding left and right while booting.
  • On Pybricks Code, we need to revert adding the payload for program ID when downloading a program instead of always sending 0. In the current protocol, the payload is already optional, so this isn't breaking the protocol.

Metadata

Metadata

Assignees

No one assigned

    Labels

    software: pybricks-codeIssues with https://code.pybricks.com applicationsoftware: pybricks-micropythonIssues with Pybricks MicroPython firmware (or EV3 runtime)

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions