Generate packet from struct

This commit is contained in:
2024-10-30 22:03:13 +01:00
parent 1be1defc35
commit 7b7c85f976
2 changed files with 32 additions and 9 deletions

View File

@@ -104,6 +104,21 @@ pub fn calculate_checksum(data: &[u8]) -> u8 {
return checksum;
}
pub trait ImprovDataToPacket {
const packet_type: PacketType;
fn to_bytes(&self) -> Vec<u8>;
fn to_packet(&self) -> ImprovPacket {
return ImprovPacket {
version: IMPROV_VERSION,
r#type: Self::packet_type,
data: self.to_bytes().to_vec(),
}
}
}
pub struct ImprovPacket {
pub version: u8,
pub r#type: PacketType,
@@ -163,3 +178,17 @@ impl ImprovPacket {
return out;
}
}
pub struct RequestCurrentStateCommand {
}
impl ImprovDataToPacket for RequestCurrentStateCommand {
const packet_type: PacketType = PacketType::RPCCommand;
fn to_bytes(self: &Self) -> Vec<u8> {
let mut out = Vec::new();
out.push(RPCCommand::RequestCurrentState as u8);
out.push(0x00); // rpc command payload length
return out;
}
}