#[inline]
pub fn get_descriptor_device(w_length: u16) -> [u8; 8] {
[
0x80, 6, 0x00,
0x01, 0x00,
0x00, w_length as u8,
(w_length >> 8) as u8,
]
}
#[inline]
pub fn set_address(addr: u8) -> [u8; 8] {
[
0x00,
5, addr,
0,
0,
0,
0,
0,
]
}
#[inline]
pub fn get_configuration() -> [u8; 8] {
[
0x80,
8, 0x00,
0x00,
0x00,
0x00,
0x01,
0x00,
]
}
#[inline]
pub fn set_configuration(cfg: u8) -> [u8; 8] {
[
0x00,
9, cfg,
0,
0,
0,
0,
0,
]
}
#[inline]
pub fn hub_set_port_feature(port: u16, feature: u16) -> [u8; 8] {
[
0x23,
0x03, feature as u8,
(feature >> 8) as u8,
port as u8,
(port >> 8) as u8,
0,
0,
]
}
#[inline]
pub fn hub_clear_port_feature(port: u16, feature: u16) -> [u8; 8] {
[
0x23,
0x01, feature as u8,
(feature >> 8) as u8,
port as u8,
(port >> 8) as u8,
0,
0,
]
}
pub const HUB_PORT_FEATURE_CONNECTION: u16 = 0;
pub const HUB_PORT_FEATURE_ENABLE: u16 = 1;
pub const HUB_PORT_FEATURE_RESET: u16 = 4;
pub const HUB_PORT_FEATURE_POWER: u16 = 8;
pub const HUB_PORT_FEATURE_C_CONNECTION: u16 = 16;
pub const HUB_PORT_FEATURE_C_ENABLE: u16 = 17;
pub const HUB_PORT_FEATURE_C_RESET: u16 = 20;
pub const USB_DT_CONFIGURATION: u8 = 2;
pub const USB_DT_HUB: u8 = 0x29;
#[inline]
pub fn get_descriptor_configuration(cfg_index: u8, w_length: u16) -> [u8; 8] {
[
0x80,
6, cfg_index,
USB_DT_CONFIGURATION,
0x00,
0x00,
w_length as u8,
(w_length >> 8) as u8,
]
}
#[inline]
pub fn get_descriptor_hub(w_length: u16) -> [u8; 8] {
[
0xA0,
6,
0x00,
USB_DT_HUB,
0x00,
0x00,
w_length as u8,
(w_length >> 8) as u8,
]
}
#[inline]
pub fn hub_get_port_status(port: u16) -> [u8; 8] {
[
0xA3,
0, 0,
0,
port as u8,
(port >> 8) as u8,
4,
0,
]
}
#[inline]
pub fn set_interface(alt: u8, interface: u8) -> [u8; 8] {
[
0x01,
0x0b, alt,
0,
interface,
0,
0,
0,
]
}