Skip to content

micropython/usb/usb-device/usb/device/core.py: Add alternate setting support plus a few fixes and improvements.#1031

Open
HLammers wants to merge 3 commits intomicropython:masterfrom
HLammers:master
Open

micropython/usb/usb-device/usb/device/core.py: Add alternate setting support plus a few fixes and improvements.#1031
HLammers wants to merge 3 commits intomicropython:masterfrom
HLammers:master

Conversation

@HLammers
Copy link

@HLammers HLammers commented Jul 5, 2025

Summary

  • Added bAlternateSetting as argument to Descriptor.interface, because it is used for USB MIDI 2.0
  • Fixed the loop reserving other string indexes used by built-in drivers while len(strs) < builtin_driver.str_max: to while len(strs) < builtin\_driver.str\_max - 1: (row 169) because str_max equals to one more than the highest string descriptor index value used by any built-in descriptor according to the docs and added a comment that this loop is probably unnecessary or even wrong
  • Removed import time (not used)
  • Removed unused/duplicate _Device.config argument config_str
  • Some code optimisations (in particular to the Buffer class)

Testing

  • Tested with micropython/usb/examples/device/midi_example.py
  • Tested the Buffer class with micropython/usb/usb-device/usb/device/tests/test_core_buffer.py
  • Tested with a soon to be made public multi-port MIDI module draft which adds port names to strs

Trade-offs and Alternatives

None

HLammers added 3 commits July 5, 2025 11:49
⦁	Removed `import time` (not used)
⦁	Removed unused/duplicate `_Device.config` argument `config_str`
⦁	Fixed the loop reserving other string indexes used by built-in drivers `while len(strs) < builtin_driver.str_max:` to `while len(strs) < builtin\_driver.str\_max - 1:` (row 169)because str_max equals to one more than the highest string descriptor index value used by any built-in descriptor according to the [docs](https://docs.micropython.org/en/latest/library/machine.USBDevice.html) and added a comment that this loop is probably unnecessary or even wrong
⦁	Added `bAlternateSetting` as argument to `Descriptor.interface`, because it is used for USB MIDI 2.0
⦁	Some code optimisations
Update fromatting
@HLammers HLammers changed the title micropython/usb/usb-device/usb/device/core.[: Add alternate setting support plus a few fixes and improvements. Jul 5, 2025
@HLammers
Copy link
Author

HLammers commented Jul 8, 2025

The updated version of core.py is used in this project, which also shows that it is working: https://github.com/orgs/micropython/discussions/17640

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

1 participant