Convert RawPacket into ImprovPacket
This commit is contained in:
parent
e63d279229
commit
8f6fbb4778
@ -185,6 +185,23 @@ impl RawPacket {
|
||||
}
|
||||
}
|
||||
|
||||
pub enum ImprovPacket {
|
||||
CurrentStateResponse(CurrentStateResponse),
|
||||
RequestCurrentStateCommand(RequestCurrentStateCommand),
|
||||
}
|
||||
|
||||
impl ImprovPacket {
|
||||
pub fn try_from_raw_packet(raw_packet: &RawPacket) -> Result<Self, &str> {
|
||||
match raw_packet.r#type {
|
||||
PacketType::CurrentState => Ok(ImprovPacket::CurrentStateResponse(CurrentStateResponse::try_from_raw_packet(raw_packet)?)),
|
||||
//PacketType::ErrorState => _,
|
||||
//PacketType::RPCCommand => _,
|
||||
//PacketType::RPCResult => _,
|
||||
_ => Err("Conversion into packet type {} not implemented"),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub struct CurrentStateResponse {
|
||||
pub current_state: CurrentState,
|
||||
}
|
||||
|
@ -11,14 +11,13 @@ use hex;
|
||||
use improv_setup::improv::{
|
||||
IMPROV_HEADER,
|
||||
IMPROV_VERSION,
|
||||
PacketType,
|
||||
RPCCommand,
|
||||
CurrentState,
|
||||
calculate_checksum,
|
||||
ImprovDataToPacket,
|
||||
ImprovDataFromPacket,
|
||||
RawPacket,
|
||||
CurrentStateResponse,
|
||||
ImprovPacket,
|
||||
RequestCurrentStateCommand,
|
||||
};
|
||||
use log::{
|
||||
@ -149,9 +148,7 @@ async fn main() -> Result<()>{
|
||||
// type
|
||||
println!("Type: {}", &raw_packet.r#type);
|
||||
|
||||
if raw_packet.r#type == PacketType::CurrentState {
|
||||
let current_state_response = CurrentStateResponse::try_from_raw_packet(&raw_packet).unwrap();
|
||||
|
||||
if let ImprovPacket::CurrentStateResponse(current_state_response) = ImprovPacket::try_from_raw_packet(&raw_packet).unwrap() {
|
||||
println!("Current state: {}", ¤t_state_response.current_state);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user