feat(transmission): improve error handling for invalid byte sequences

Refactored Protocol300Transmission parsing to provide more detailed error information when encountering invalid byte sequences. Changed the error variant from `InvalidByte` to `InvalidBytes` which now includes the problematic byte slice, enabling better debugging. Updated the match arm to capture the byte slice as `b` instead of using a wildcard, and modified the error logging to reflect these changes. The lifetime parameter was added to the `FromBytesError` enum to support the byte slice reference.
This commit is contained in:
2026-01-18 19:16:03 +01:00
parent 7e3d16ad6a
commit 9072ae01ad

View File

@@ -41,11 +41,11 @@ impl Protocol300Transmission {
[0x15] => Ok(Self::Nack),
[0x16, 0x00, 0x00] => Ok(Self::Init),
[0x41, ..] => Ok(Self::Message(Protocol300Message::try_from_bytes(bytes)?)),
_ => {
b => {
error!("Failed to parse Protocol300 transmission: invalid byte sequence (length: {}, first byte: 0x{:02X})",
bytes.len(),
bytes.first().unwrap_or(&0x00));
Err(FromBytesError::InvalidByte)
Err(FromBytesError::InvalidBytes(b))
},
}
}
@@ -75,11 +75,11 @@ impl Protocol300Transmission {
/// Errors that can occur when getting a Protocol 300 Transmission from bytes
#[derive(Error, Debug, PartialEq, Eq)]
pub enum FromBytesError{
pub enum FromBytesError<'a>{
#[error("Failed to parse message")]
MessageParsing(#[from] message::MessageDecodingError),
#[error("Invalid bytes in vec")]
InvalidByte
InvalidBytes(&'a [u8])
}