diff options
| -rw-r--r-- | embassy-usb/README.md | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/embassy-usb/README.md b/embassy-usb/README.md index da656e8e9..7411fcf52 100644 --- a/embassy-usb/README.md +++ b/embassy-usb/README.md | |||
| @@ -1,6 +1,28 @@ | |||
| 1 | # embassy-usb | 1 | # embassy-usb |
| 2 | 2 | ||
| 3 | TODO crate description | 3 | Async USB device stack for embedded devices in Rust. |
| 4 | |||
| 5 | ## Features | ||
| 6 | |||
| 7 | - Native async. | ||
| 8 | - Fully lock-free: endpoints are separate objects that can be used independently without needing a central mutex. If the driver supports it, they can even be used from different priority levels. | ||
| 9 | - Suspend/resume, remote wakeup. | ||
| 10 | - USB composite devices. | ||
| 11 | - Ergonomic descriptor builder. | ||
| 12 | - Ready-to-use implementations for a few USB classes (note you can still implement any class yourself oustide the crate). | ||
| 13 | - Serial ports (CDC ACM) | ||
| 14 | - Ethernet (CDC NCM) | ||
| 15 | - Human Interface Devices (HID) | ||
| 16 | - MIDI | ||
| 17 | |||
| 18 | ## Adding support for new hardware | ||
| 19 | |||
| 20 | To add `embassy-usb` support for new hardware (i.e. a new MCU chip), you have to write a driver that implements | ||
| 21 | the [`embassy-usb-driver`](https://crates.io/crates/embassy-usb-driver) traits. | ||
| 22 | |||
| 23 | Driver crates should depend only on `embassy-usb-driver`, not on the main `embassy-usb` crate. | ||
| 24 | This allows existing drivers to continue working for newer `embassy-usb` major versions, without needing an update, if the driver | ||
| 25 | trait has not had breaking changes. | ||
| 4 | 26 | ||
| 5 | ## Configuration | 27 | ## Configuration |
| 6 | 28 | ||
