rktk_drivers_common/usb/
mod.rs1use core::sync::atomic::AtomicBool;
4
5mod builder;
6#[cfg(feature = "defmt-usb")]
7mod defmt_logger;
8mod driver;
9mod handler;
10mod raw_hid;
11mod rrp;
12mod task;
13
14#[cfg(feature = "usb-remote-wakeup")]
15type RemoteWakeupSignal = rktk::utils::Signal<()>;
16type ReadySignal = rktk::utils::Signal<()>;
17static SUSPENDED: AtomicBool = AtomicBool::new(false);
18
19pub use builder::CommonUsbReporterBuilder;
20pub use embassy_usb::Config as UsbDriverConfig;
22
23pub struct CommonUsbDriverConfig<D: embassy_usb::driver::Driver<'static>> {
25 pub driver: D,
27 pub driver_config: UsbDriverConfig<'static>,
29 pub mouse_poll_interval: u8,
31 pub keyboard_poll_interval: u8,
33 #[cfg(feature = "defmt-usb")]
36 pub defmt_usb_use_dtr: bool,
37}
38
39impl<D: embassy_usb::driver::Driver<'static>> CommonUsbDriverConfig<D> {
40 pub fn new(driver: D, mut driver_config: UsbDriverConfig<'static>) -> Self {
46 driver_config.supports_remote_wakeup = cfg!(feature = "usb-remote-wakeup");
47 Self {
48 driver_config,
49 mouse_poll_interval: 1,
50 keyboard_poll_interval: 1,
51 driver,
52 #[cfg(feature = "defmt-usb")]
53 defmt_usb_use_dtr: true,
54 }
55 }
56}