viiper_client/devices/keyboard/
output.rs1use crate::wire::DeviceOutput;
4
5#[derive(Debug, Clone, Default)]
6pub struct KeyboardOutput {
7 pub leds: u8,
8}
9
10impl DeviceOutput for KeyboardOutput {
11 fn from_bytes(buf: &[u8]) -> Result<Self, crate::error::ViiperError> {
12 let mut offset = 0;
13 if offset + std::mem::size_of::<u8>() > buf.len() {
14 return Err(crate::error::ViiperError::UnexpectedResponse(
15 "buffer too short".into()
16 ));
17 }
18 let leds = u8::from_le_bytes(
19 buf[offset..offset + std::mem::size_of::<u8>()]
20 .try_into()
21 .unwrap()
22 );
23 offset += std::mem::size_of::<u8>();
24 let _ = offset; Ok(Self {
26 leds,
27 })
28 }
29}