Skip to main content

netget/server/usb/
mod.rs

1//! USB protocol implementations
2//!
3//! This module provides virtual USB device protocols using USB/IP. Each is its
4//! own Cargo feature, and each enables the shared `usb-common` feature that
5//! gates `common` (USB constant tables) and `descriptors` (descriptor builders):
6//!
7//! - usb-keyboard: HID Keyboard device
8//! - usb-mouse: HID Mouse device
9//! - usb-serial: CDC ACM Serial device
10//! - usb-msc: Mass Storage Class device (flash drive/disk)
11//! - usb-fido2: FIDO2/U2F Security Key device
12//! - usb-smartcard: Smart Card (CCID) device over USB/IP (no external daemon)
13//!
14//! The separate `usb` feature is the USB *client* (`nusb`) in `src/client/usb`,
15//! not a server, and does not build anything in this module.
16
17#[cfg(all(unix, feature = "libusb"))]
18pub mod common;
19
20#[cfg(all(unix, feature = "libusb"))]
21pub mod descriptors;
22
23/// The USB/IP message screen every USB server runs the `usbip` crate behind.
24#[cfg(all(unix, feature = "libusb"))]
25pub mod guard;
26
27#[cfg(all(unix, feature = "libusb"))]
28pub mod keyboard;
29
30#[cfg(all(unix, feature = "libusb"))]
31pub mod mouse;
32
33#[cfg(all(unix, feature = "libusb"))]
34pub mod serial;
35
36#[cfg(all(unix, feature = "libusb"))]
37pub mod msc;
38
39#[cfg(all(unix, feature = "libusb"))]
40pub mod fido2;
41
42#[cfg(all(unix, feature = "libusb"))]
43pub mod smartcard;
44
45// Re-export protocol implementations
46#[cfg(all(unix, feature = "libusb"))]
47pub use keyboard::UsbKeyboardProtocol;
48
49#[cfg(all(unix, feature = "libusb"))]
50pub use mouse::UsbMouseProtocol;
51
52#[cfg(all(unix, feature = "libusb"))]
53pub use serial::actions::UsbSerialProtocol;
54
55#[cfg(all(unix, feature = "libusb"))]
56pub use msc::UsbMscProtocol;
57
58#[cfg(all(unix, feature = "libusb"))]
59pub use fido2::actions::UsbFido2Protocol;
60
61#[cfg(all(unix, feature = "libusb"))]
62pub use smartcard::actions::UsbSmartCardProtocol;