Skip to content

Commit

Permalink
src: decoder: Fix: Add checksum validation and return parsing error w…
Browse files Browse the repository at this point in the history
…ith failed message
  • Loading branch information
RaulTrombin committed Apr 4, 2024
1 parent e01764d commit eae4edb
Showing 1 changed file with 5 additions and 2 deletions.
7 changes: 5 additions & 2 deletions src/decoder.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ use crate::message::{ProtocolMessage, HEADER};
pub enum ParseError {
InvalidStartByte,
IncompleteData,
ChecksumError,
ChecksumError(ProtocolMessage),
}

#[derive(Debug)]
Expand Down Expand Up @@ -89,9 +89,12 @@ impl Decoder {
self.buffer.push(byte);
if self.buffer.len() == 2 {
self.message.checksum = u16::from_le_bytes([self.buffer[0], self.buffer[1]]);
self.reset();
let message = self.message.clone();
self.message = ProtocolMessage::new();
self.reset();
if !message.has_valid_crc() {
return DecoderResult::Error(ParseError::ChecksumError(message));
}
return DecoderResult::Success(message);
}
return DecoderResult::InProgress;
Expand Down

0 comments on commit eae4edb

Please sign in to comment.