Generate packet from struct
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user