Skip to content

Add a timeout to USB operations - #43

Open
ArthurHeymans wants to merge 5 commits into
mainfrom
TimeoutOps
Open

Add a timeout to USB operations#43
ArthurHeymans wants to merge 5 commits into
mainfrom
TimeoutOps

Conversation

@ArthurHeymans

Copy link
Copy Markdown
Contributor

If the host decides to halt an operation we want to get back into a state
where we can accept further commands.

ArthurHeymans and others added 5 commits December 17, 2025 10:19
Signed-off-by: Arthur Heymans <arthur@aheymans.xyz>
This increases readability as indentation is reduced.

Signed-off-by: Arthur Heymans <arthur@aheymans.xyz>
Signed-off-by: Arthur Heymans <arthur@aheymans.xyz>
…board

Replace the static `Serprog` struct with a trait-based approach where
SPI pins are only configured as outputs during actual SPI operations:

- Add `SpiDeviceProvider` trait for on-demand SPI device creation
- Add `SpiCsGuard` trait for guards that provide SPI+CS access
- Add `LedProvider` trait with blanket impl for any `OutputPin`
- Replace `Serprog::run_loop()` with free function `run_loop()`
- Store SPI frequency and pass to provider on each acquire

Pin cleanup on drop:
- Embassy SPI/Output do NOT auto-reset pins to input mode
- Each platform implements custom guard with explicit pin reset
- RP2040: Set funcsel to NULL and reset pad control
- STM32: Use Flex drop to set pins to analog mode

This prevents the serprog microcontroller from driving the SPI pins
when idle, allowing the target mainboard to boot normally with the
programmer attached.

🤖 Generated with [eca](https://eca.dev)

Co-Authored-By: eca <noreply@eca.dev>
If the host decides to halt an operation previously we needed to reset
the device. Now we have a reasonable timeout upon which the device goes
back to a state in which it can accept further commands.

Signed-off-by: Arthur Heymans <arthur@aheymans.xyz>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants