Skip to main content

viiper_client/devices/xbox360/
output.rs

1// This file is auto-generated by VIIPER codegen. DO NOT EDIT.
2
3use crate::wire::DeviceOutput;
4
5#[derive(Debug, Clone, Default)]
6pub struct Xbox360Output {
7    pub left: u8,
8    pub right: u8,
9}
10
11impl DeviceOutput for Xbox360Output {
12    fn from_bytes(buf: &[u8]) -> Result<Self, crate::error::ViiperError> {
13        let mut offset = 0;
14        if offset + std::mem::size_of::<u8>() > buf.len() {
15            return Err(crate::error::ViiperError::UnexpectedResponse(
16                "buffer too short".into()
17            ));
18        }
19        let left = u8::from_le_bytes(
20            buf[offset..offset + std::mem::size_of::<u8>()]
21                .try_into()
22                .unwrap()
23        );
24        offset += std::mem::size_of::<u8>();
25        if offset + std::mem::size_of::<u8>() > buf.len() {
26            return Err(crate::error::ViiperError::UnexpectedResponse(
27                "buffer too short".into()
28            ));
29        }
30        let right = u8::from_le_bytes(
31            buf[offset..offset + std::mem::size_of::<u8>()]
32                .try_into()
33                .unwrap()
34        );
35        offset += std::mem::size_of::<u8>();
36        let _ = offset; // Suppress unused warning for last field
37        Ok(Self {
38            left,
39            right,
40        })
41    }
42}