Dario Nieuwenhuis
5fd55f9529
usb: parse request in embassy-usb instead of the driver.
2022-05-12 18:14:48 +02:00
Dario Nieuwenhuis
6af5f8eb2d
usb: merge alloc_control_pipe
and into_bus
into start
.
...
This prevents calling `alloc_control_pipe` twice at compile time, which was
always an error.
2022-05-10 17:30:07 +02:00
Dario Nieuwenhuis
02ae1138e1
usb: merge Control logic into main code.
...
Now that control stuff is called from just one place, there's
no need to keep it as a separate struct.
2022-05-09 03:43:24 +02:00
Dario Nieuwenhuis
7ed462a657
usb: simplify control in/out handlng, calling response from a single place.
2022-05-09 02:11:02 +02:00
Dario Nieuwenhuis
2e104170de
usb: remove address arg from endpoint allocation.
2022-05-09 02:07:48 +02:00
Dario Nieuwenhuis
0476f6b55b
usb: add support for custom string descriptors.
2022-04-23 04:40:57 +02:00
Dario Nieuwenhuis
7c6a88f3dd
usb: set the interface handler in InterfaceBuilder.
2022-04-23 01:29:19 +02:00
Dario Nieuwenhuis
092c2b7dfe
usb: builtin handling of interface alternate settings
...
The stack reads its own descriptors to figure out which endpoints
are used in which alt settings, and enables/disables them as needed.
The ControlHandler has a callback so it can get notified of alternate
setting changes, which is purely informative (it doesn't have to do anything).
2022-04-23 01:11:10 +02:00
Dario Nieuwenhuis
50d257cc7c
usb: improved descriptor building API
...
The same API call allocates interfaces/endpoints/etc and writes their descriptors.
This means less API calls, and less possibility to screw things up.
DescriptorWriter is now private.
2022-04-16 04:30:31 +02:00
Dario Nieuwenhuis
1bf7b4d6c3
usb: rename UsbDeviceBuilder -> Builder.
2022-04-16 04:14:20 +02:00
Dario Nieuwenhuis
94090e068e
usb: fix wrong logging of CONTROL OUT data.
2022-04-15 18:45:52 +02:00
alexmoon
b0725c14d3
Split UsbDevice::run into run and run_until_suspend
2022-04-13 16:04:31 -04:00
alexmoon
ff7c6b350e
Remove channel and make run future cancelable
2022-04-13 14:55:02 -04:00
alexmoon
1d875fab2d
Use embassy::util::select3
2022-04-13 14:55:02 -04:00
alexmoon
2915e858ba
Make Driver::disable async and fix comment
2022-04-13 14:55:02 -04:00
alexmoon
7fde3abd5d
Remote wakeup bug fixes
2022-04-13 14:55:02 -04:00
alexmoon
f5656e3544
Add DeviceStateHandler, DeviceCommand channel, and remote wakeup support
2022-04-13 14:55:02 -04:00
alexmoon
e867364d42
Unify ReadError and WriteError into EndpointError
2022-04-09 01:48:17 +02:00
alexmoon
6abbfa9a92
Async-ify Driver::enable and UsbDeviceBuilder::build
2022-04-07 10:51:26 -04:00
Dario Nieuwenhuis
22a47aeeb2
usb: abort control data in/out on reset or when receiving another SETUP.
...
This removes the horrible timeout hack.
2022-04-06 05:38:11 +02:00
Dario Nieuwenhuis
f6d11dfba5
usb: fix slow enumeration with EP0 max_packet_size of 8 or 16.
2022-04-06 05:38:11 +02:00
alexmoon
2ce435dc34
Add basic device state handling for endpoints.
2022-04-06 05:38:11 +02:00
alexmoon
99f95a33c3
Simplify hid output report handling
2022-04-06 05:38:11 +02:00
alexmoon
c8ad82057d
Reduce memory overhead and simplify logic for merging endpoint and control request output reports.
2022-04-06 05:38:11 +02:00
Dario Nieuwenhuis
8fe3b44d82
usb: log on reset, resume, suspend
2022-04-06 05:38:11 +02:00
Dario Nieuwenhuis
522a87ae42
usb: centralize all control logging in control.rs
2022-04-06 05:38:11 +02:00
alexmoon
f5ba022257
Refactor ControlPipe to use the typestate pattern for safety
2022-04-06 05:38:11 +02:00
alexmoon
77e0aca03b
Move data chunking from the driver to the lib
2022-04-06 05:38:11 +02:00
Dario Nieuwenhuis
a435d78cf7
usb: cleanup and simplify error handling.
2022-04-06 05:38:11 +02:00
Dario Nieuwenhuis
60d3d11197
usb: cleanup logging.
2022-04-06 05:38:11 +02:00
Dario Nieuwenhuis
d1e4b3d7d5
usb: add -usb-serial crate, fix warnings and stable build.
2022-04-06 05:38:11 +02:00
alexmoon
d40ebcccf6
Add handlers for standard reqs to ControlHandler
2022-04-06 05:38:11 +02:00
alexmoon
13370c28db
Add a control_buf to UsbDevice
2022-04-06 05:38:11 +02:00
alexmoon
c53bb7394a
Switch to ControlHandler owned bufs for control_in()
2022-04-06 05:38:11 +02:00
Dario Nieuwenhuis
d7b1f8ca57
usb: update docs on ControlHandler.
2022-04-06 05:38:11 +02:00
Dario Nieuwenhuis
e99a3a1da4
usb: simplify buffer handling for Control IN transfers.
2022-04-06 05:38:11 +02:00
Dario Nieuwenhuis
bfce731982
usb: nicer names for control structs.
2022-04-06 05:38:11 +02:00
Dario Nieuwenhuis
2b547f311e
usb: move all control-related stuff to mod control
.
2022-04-06 05:38:11 +02:00
Dario Nieuwenhuis
15cc97d794
usb: associate ControlHandlers with interfaces, automatically route requests.
2022-04-06 05:38:11 +02:00
Dario Nieuwenhuis
3412e5dc4a
usb: cleanup giant matches in control code.
2022-04-06 05:38:11 +02:00
Dario Nieuwenhuis
a2f5763a67
usb: add add_class
to builder, so that FooBarClass::new(&mut builder)
can set up everything.
2022-04-06 05:38:11 +02:00
alexmoon
52c622b1cd
Use trait objects instead of generics for UsbDevice::classes
2022-04-06 05:38:11 +02:00
alexmoon
bdc6e0481c
Add support for USB classes handling control requests.
2022-04-06 05:38:11 +02:00
Dario Nieuwenhuis
0320500f0f
Working CDC-ACM device->host
2022-04-06 05:38:11 +02:00
Dario Nieuwenhuis
77ceced036
Working CDC-ACM host->device
2022-04-06 05:38:11 +02:00
Dario Nieuwenhuis
37598a5b37
wip: experimental async usb stack
2022-04-06 05:38:11 +02:00