readme, doc comments, clippies
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
# usbd-uac2
|
||||
|
||||
USB Audio Class 2.0
|
||||
|
||||
This crate provides a USB Audio Class 2.0 implementation for
|
||||
[usb-device](https://crates.io/crates/usb-device). It implements all
|
||||
required elements of the specification, however many controls are not
|
||||
implemented (e.g. mixers, effects).
|
||||
|
||||
Device behaviour is driven by implementing the `ClockSource` and
|
||||
`AudioHandler` traits to configure the audio pipeline and source/sink data
|
||||
to/from USB.
|
||||
|
||||
Example (creates a UAC2 device with in and out streams):
|
||||
|
||||
```rust
|
||||
let mut audio = YourTraitImpl {...};
|
||||
|
||||
let config = UsbAudioClassConfig::new(usb_speed, FunctionCode::IoBox, &mut audio)
|
||||
// base_id is USB entity ID, id 1 is always taken by the clock source, and each stream builds 2 entities
|
||||
.with_output_config(TerminalConfig::builder().base_id(2).build())
|
||||
.with_input_config(TerminalConfig::builder().base_id(4).build());
|
||||
|
||||
let mut uac2 = config.build(&usb_bus).unwrap();
|
||||
|
||||
let mut usb_dev = usbd_uac2::builder(&usb_bus, UsbVidPid(0x1209, 0x0001))
|
||||
.strings(&[StringDescriptors::default()
|
||||
.manufacturer("usbd_uac2")
|
||||
.product("example")])
|
||||
.unwrap()
|
||||
.max_packet_size_0(64) // Required to be 64 on HS
|
||||
.unwrap()
|
||||
.build();
|
||||
```
|
||||
|
||||
No work needs to be done in the poll loop, the class implementation will
|
||||
call your trait callbacks as required, just call the usb poll as usual:
|
||||
|
||||
```rust
|
||||
loop {
|
||||
usb_dev.poll(&mut [&mut uac2]);
|
||||
}
|
||||
```
|
||||
|
||||
See the trait documentation or examples for additional details.
|
||||
Reference in New Issue
Block a user