a0f1b0ee01
Split embassy crate into embassy-executor, embassy-util.
2022-07-29 23:40:36 +02:00
8d71a358c8
Build in a new Unpowered state
...
Replaces the sub-state of representing being being available. Power states also now set enable/disable directly too, which simplifies code.
2022-07-08 15:30:15 +10:00
4a8f117f25
Puts in the machinery to handle power detected/removed
2022-07-07 10:08:57 +10:00
c46e9b6cfc
Introduces EnabledUsbDevice
...
EnabledUsbDevice is a wrapper around the UsbDevice where their enablement is also subject to external events, such as POWER events for nRF. It is introduced generically to support other platforms should they also require external signalling for enablement.
2022-07-07 10:08:57 +10:00
948bb93dc2
docs: Add $COMMIT to git srclinks.
2022-06-26 23:55:38 +02:00
a8703b7598
Run rustfmt.
2022-06-12 22:22:31 +02:00
39ab599eed
usb: set default max_packet_size_0 to 64.
...
Supported chips can always do 64 bytes, 8 bytes seems to be more rare.
We can add a way for the driver to specify the default in the future.
2022-05-31 02:01:22 +02:00
a7383840e7
usb: make ControlPipe accept, reject async.
2022-05-30 00:35:27 +02:00
883e28a0fb
usb: add first, last params to ControlPipe data_in, data_out.
2022-05-30 00:08:28 +02:00
1ec2e5672f
usb: remove is_stalled, set_stalled from Endpoint.
...
They're unused, and I believe it's not allowed for classes to
stall EPs on their own?
2022-05-30 00:07:15 +02:00
98d8c9373d
usb: delay bus.set_address() to after ending the control transfer.
2022-05-30 00:03:36 +02:00
5fd55f9529
usb: parse request in embassy-usb instead of the driver.
2022-05-12 18:14:48 +02:00
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
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
7ed462a657
usb: simplify control in/out handlng, calling response from a single place.
2022-05-09 02:11:02 +02:00
2e104170de
usb: remove address arg from endpoint allocation.
2022-05-09 02:07:48 +02:00
0476f6b55b
usb: add support for custom string descriptors.
2022-04-23 04:40:57 +02:00
7c6a88f3dd
usb: set the interface handler in InterfaceBuilder.
2022-04-23 01:29:19 +02:00
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
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
1bf7b4d6c3
usb: rename UsbDeviceBuilder -> Builder.
2022-04-16 04:14:20 +02:00
94090e068e
usb: fix wrong logging of CONTROL OUT data.
2022-04-15 18:45:52 +02:00
b0725c14d3
Split UsbDevice::run into run and run_until_suspend
2022-04-13 16:04:31 -04:00
ff7c6b350e
Remove channel and make run future cancelable
2022-04-13 14:55:02 -04:00
1d875fab2d
Use embassy::util::select3
2022-04-13 14:55:02 -04:00
2915e858ba
Make Driver::disable async and fix comment
2022-04-13 14:55:02 -04:00
7fde3abd5d
Remote wakeup bug fixes
2022-04-13 14:55:02 -04:00
f5656e3544
Add DeviceStateHandler, DeviceCommand channel, and remote wakeup support
2022-04-13 14:55:02 -04:00
e867364d42
Unify ReadError and WriteError into EndpointError
2022-04-09 01:48:17 +02:00
6abbfa9a92
Async-ify Driver::enable and UsbDeviceBuilder::build
2022-04-07 10:51:26 -04:00
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
f6d11dfba5
usb: fix slow enumeration with EP0 max_packet_size of 8 or 16.
2022-04-06 05:38:11 +02:00
fa9eadcee9
Add docserver metadata.
2022-04-06 05:38:11 +02:00
2ce435dc34
Add basic device state handling for endpoints.
2022-04-06 05:38:11 +02:00
99f95a33c3
Simplify hid output report handling
2022-04-06 05:38:11 +02:00
c8ad82057d
Reduce memory overhead and simplify logic for merging endpoint and control request output reports.
2022-04-06 05:38:11 +02:00
8fe3b44d82
usb: log on reset, resume, suspend
2022-04-06 05:38:11 +02:00
522a87ae42
usb: centralize all control logging in control.rs
2022-04-06 05:38:11 +02:00
f5ba022257
Refactor ControlPipe to use the typestate pattern for safety
2022-04-06 05:38:11 +02:00
77e0aca03b
Move data chunking from the driver to the lib
2022-04-06 05:38:11 +02:00
a435d78cf7
usb: cleanup and simplify error handling.
2022-04-06 05:38:11 +02:00
60d3d11197
usb: cleanup logging.
2022-04-06 05:38:11 +02:00
d1e4b3d7d5
usb: add -usb-serial crate, fix warnings and stable build.
2022-04-06 05:38:11 +02:00
d40ebcccf6
Add handlers for standard reqs to ControlHandler
2022-04-06 05:38:11 +02:00
13370c28db
Add a control_buf to UsbDevice
2022-04-06 05:38:11 +02:00
c53bb7394a
Switch to ControlHandler owned bufs for control_in()
2022-04-06 05:38:11 +02:00
d7b1f8ca57
usb: update docs on ControlHandler.
2022-04-06 05:38:11 +02:00
e99a3a1da4
usb: simplify buffer handling for Control IN transfers.
2022-04-06 05:38:11 +02:00
bfce731982
usb: nicer names for control structs.
2022-04-06 05:38:11 +02:00
2b547f311e
usb: move all control-related stuff to mod control
.
2022-04-06 05:38:11 +02:00