use crate::{Result, mouse::{packet::MousePacket, polling_rate::PollingRate}};
use std::io::Write;
pub const POLLING_PACKET_HEADER: [u8; 3] = [0x00, 0x04, 0x00];
#[derive(Clone)]
pub struct PollingPacket(pub PollingRate);
impl From<u16> for PollingPacket {
fn from(value: u16) -> Self {
Self(PollingRate(value))
}
}
impl MousePacket for PollingPacket {
fn serialize(&self) -> Result<Vec<u8>> {
let mut buffer = Vec::with_capacity(3 + 1);
let _ = buffer.write(&POLLING_PACKET_HEADER)?;
let _ = buffer.write(&[self.0.encode()?])?;
Ok(buffer)
}
}