Skip to main content

usbd_storage/
lib.rs

1//! USB Mass Storage implementation for [usb-device]
2//!
3//! # Subclasses:
4//! * [SCSI] - SCSI device
5//! * [UFI] - USB Floppy Interface
6//! * [Vendor Specific subclass] - implement [Transport] trait
7//!
8//! # Transports:
9//! * [Bulk Only]
10//! * [Vendor Specific Transport]
11//!
12//! # Features
13//! | Feature | Description                           |
14//! | ------- |---------------------------------------|
15//! | `bbb` | Include Bulk Only Transport           |
16//! | `scsi` | Include SCSI subclass                 |
17//! | `ufi` | Include USB Floppy Interface subclass |
18//! | `defmt` | Enable logging via [defmt](https://crates.io/crates/defmt) crate |
19//!
20//! [usb-device]: https://crates.io/crates/usb-device
21//! [Vendor Specific subclass]: crate::subclass
22//! [Vendor Specific Transport]: crate::transport
23//! [Transport]: crate::transport::Transport
24
25// Link the feature-gated modules when present, falling back to the parent module
26// otherwise so the crate docs resolve regardless of enabled features.
27#![cfg_attr(feature = "scsi", doc = "[SCSI]: crate::subclass::scsi")]
28#![cfg_attr(not(feature = "scsi"), doc = "[SCSI]: crate::subclass")]
29#![cfg_attr(feature = "ufi", doc = "[UFI]: crate::subclass::ufi")]
30#![cfg_attr(not(feature = "ufi"), doc = "[UFI]: crate::subclass")]
31#![cfg_attr(feature = "bbb", doc = "[Bulk Only]: crate::transport::bbb")]
32#![cfg_attr(not(feature = "bbb"), doc = "[Bulk Only]: crate::transport")]
33#![cfg_attr(not(test), no_std)]
34
35#[cfg(feature = "bbb")]
36pub(crate) mod buffer;
37pub(crate) mod fmt;
38pub mod subclass;
39pub mod transport;
40
41/// USB Mass Storage Class code
42pub const CLASS_MASS_STORAGE: u8 = 0x08;