Skip to content

Commit e997fdb

Browse files
committed
Upgraded byte
Fixed an issue with zero length reads in Acknowledge frames.
1 parent 52115ef commit e997fdb

File tree

2 files changed

+20
-2
lines changed

2 files changed

+20
-2
lines changed

Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ keywords = ["WPAN"]
2121
[dependencies]
2222
hash32 = "0.2.1"
2323
hash32-derive = "0.1"
24-
byte = "0.2.4"
24+
byte = "0.2.7"
2525
defmt = { version = ">=0.2.0,<0.4", optional = true }
2626

2727
[dependencies.ccm]

src/mac/frame/mod.rs

+19-1
Original file line numberDiff line numberDiff line change
@@ -345,7 +345,6 @@ impl<'a> TryRead<'a, FooterMode> for Frame<'a> {
345345
if header.has_security() {
346346
return Err(DecodeError::SecurityEnabled)?;
347347
}
348-
349348
let (payload, footer) = match mode {
350349
FooterMode::None => (
351350
bytes.read_with(offset, Bytes::Len(bytes.len() - *offset))?,
@@ -561,6 +560,24 @@ mod tests {
561560
Address, ExtendedAddress, FrameVersion, PanId, ShortAddress,
562561
};
563562

563+
#[test]
564+
fn decode_ver0_ack() {
565+
let data = [0x02, 0x00, 0x04];
566+
567+
let frame: Frame = data.read_with(&mut 0, FooterMode::None).unwrap();
568+
let hdr = frame.header;
569+
assert_eq!(hdr.frame_type, FrameType::Acknowledgement);
570+
assert_eq!(hdr.has_security(), false);
571+
assert_eq!(hdr.frame_pending, false);
572+
assert_eq!(hdr.ack_request, false);
573+
assert_eq!(hdr.pan_id_compress, false);
574+
assert_eq!(hdr.version, FrameVersion::Ieee802154_2003);
575+
assert_eq!(frame.header.destination, None);
576+
assert_eq!(frame.header.source, None);
577+
assert_eq!(frame.header.seq, 4);
578+
assert_eq!(frame.payload.len(), 0);
579+
}
580+
564581
#[test]
565582
fn decode_ver0_pan_id_compression() {
566583
let data = [
@@ -624,6 +641,7 @@ mod tests {
624641
))
625642
);
626643
assert_eq!(frame.header.seq, 139);
644+
assert_eq!(frame.payload.len(), 3);
627645
}
628646

629647
#[test]

0 commit comments

Comments
 (0)