1pub mod api;
5pub mod messages;
6
7pub mod interface_numbers {
8 pub const LEGACY_HID: u8 = 0;
9 pub const MASS_STORAGE: u8 = 1;
10 pub const CTAP_HID: u8 = 2;
11 pub const USB_DEBUG: u8 = 3;
12 pub const LOG_USB_SERIAL_CONTROL: u8 = 4;
13 pub const LOG_USB_SERIAL_DATA: u8 = 5;
14}
15
16pub const MAJ_DEV_VERSION: u8 = 1;
17pub const MIN_DEV_VERSION: u8 = 0;
18pub const BLD_DEV_VERSION: u8 = 1;
19
20#[derive(Debug, Clone, server::Message, rkyv::Archive, rkyv::Serialize, rkyv::Deserialize)]
21pub struct SetupPacket {
22 pub request_type: u8,
23 pub request: u8,
24 pub value: u16,
25 pub index: u16,
26 pub length: u16,
27}
28
29impl SetupPacket {
30 pub fn from_bytes(setup_data: &[u8]) -> Self {
31 SetupPacket {
32 request_type: setup_data[0],
33 request: setup_data[1],
34 value: u16::from_le_bytes(setup_data[2..4].try_into().unwrap()),
35 index: u16::from_le_bytes(setup_data[4..6].try_into().unwrap()),
36 length: u16::from_le_bytes(setup_data[6..8].try_into().unwrap()),
37 }
38 }
39}