rktk/drivers/interface/
reporter.rs1use usbd_hid::descriptor::{KeyboardReport, MediaKeyboardReport, MouseReport};
2
3pub trait ReporterDriver {
4 type Error: super::Error;
5
6 async fn wait_ready(&self) {}
7
8 async fn recv_keyboard_report(&self) -> Result<u8, Self::Error> {
10 let _: () = core::future::pending().await;
11 unreachable!()
12 }
13
14 fn try_send_keyboard_report(&self, _report: KeyboardReport) -> Result<(), Self::Error>;
15
16 fn try_send_media_keyboard_report(
17 &self,
18 _report: MediaKeyboardReport,
19 ) -> Result<(), Self::Error>;
20 fn try_send_mouse_report(&self, _report: MouseReport) -> Result<(), Self::Error>;
21
22 async fn send_rrp_data(&self, _data: &[u8]) -> Result<(), Self::Error>;
23 async fn recv_rrp_data(&self, _buf: &mut [u8]) -> Result<usize, Self::Error> {
24 let _: () = core::future::pending().await;
25 unreachable!()
26 }
27
28 async fn send_raw_hid_data(&self, _data: &[u8]) -> Result<(), Self::Error> {
29 Ok(())
30 }
31 async fn recv_raw_hid_data(&self, _buf: &mut [u8]) -> Result<usize, Self::Error> {
32 let _: () = core::future::pending().await;
33 unreachable!()
34 }
35
36 fn wakeup(&self) -> Result<bool, Self::Error>;
44}
45
46#[derive(Debug, Clone, Copy, PartialEq, Eq)]
47#[cfg_attr(feature = "defmt", derive(defmt::Format))]
48pub enum Output {
49 Usb,
50 Ble,
51}
52
53super::generate_builder!(ReporterDriver);