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<()>;
17
18static POWERED_SIGNAL: rktk::utils::Signal<()> = rktk::utils::Signal::new();
19
20static SUSPENDED: AtomicBool = AtomicBool::new(false);
21
22pub use builder::CommonUsbReporterBuilder;
23pub use embassy_usb::Config as UsbDriverConfig;
25
26pub struct CommonUsbDriverConfig<D: embassy_usb::driver::Driver<'static>> {
28 pub driver: D,
30 pub driver_config: UsbDriverConfig<'static>,
32 pub mouse_poll_interval: u8,
34 pub keyboard_poll_interval: u8,
36 #[cfg(feature = "defmt-usb")]
39 pub defmt_usb_use_dtr: bool,
40}
41
42impl<D: embassy_usb::driver::Driver<'static>> CommonUsbDriverConfig<D> {
43 pub fn new(driver: D, mut driver_config: UsbDriverConfig<'static>) -> Self {
49 driver_config.supports_remote_wakeup = cfg!(feature = "usb-remote-wakeup");
50 Self {
51 driver_config,
52 mouse_poll_interval: 1,
53 keyboard_poll_interval: 1,
54 driver,
55 #[cfg(feature = "defmt-usb")]
56 defmt_usb_use_dtr: true,
57 }
58 }
59}