Repository navigation
0.5.0
Added
- Allocation-free
FormatAFrame/FormatABytesviews for wireless CRC-normalized bytes, and a lazyDecryptedBytesAPI on core encrypted payloads. AES-CBC works one block at a time without a full plaintext buffer; existing buffer-writing APIs remain compatible. DataFieldCoding::data_size, which reports the byte length of a data field from the DIF alone, without decoding its contents.
Changed
- Breaking:
ValueInformation<'a>now borrows frame bytes and exposeslabels()andunits()iterators instead of public collection fields.has_label()andfirst_unit()provide common lookups. Struct literal construction is no longer supported.ProcessedDataRecordHeader<'a>now carries the frame lifetime as well. Debug and serialized output are unchanged. - Breaking:
wireless_mbus_link_layer::FrameErrorgained anInvalidManufacturerCode { code }variant.
Removed
- The
arrayvecdependency andDeserializeimplementations forValueInformationandProcessedDataRecordHeader.
Fixed
- Manufacturer fields with bit 15 set (for example
A697, which isITWplus the flag) now decode to their three letters instead of failing. Wireless telegrams from those meters were reported asTooShortand dropped. The flag itself is kept inManufacturerId::is_unique_globally. (#126) - VIFEs following the
7Fhmanufacturer escape are no longer decoded against the standard VIFE table. Vendor bytes that happened to fall in the multiplicative-correction range corrupted the decimal scale exponent, so affected records (for example ABB B21 energy) decoded orders of magnitude off. - BCD values carrying the EN 13757-3
Fhsign marker in their most significant digit now decode as negative numbers instead of being rejected as invalid BCD. Frames from Sensus/SLB and Landis+Gyr meters reporting a negative temperature difference now parse. - A data record whose contents cannot be decoded no longer discards the rest of the frame. The record is still reported as an error, but the iterator steps over it by its declared length and continues, so the records behind it are recovered.
- Valid VIFE chains producing more than ten labels or units no longer panic.
Packages
All artifacts are released at 0.5.0:
- crates.io:
m-bus-core,wired-mbus-link-layer,wireless-mbus-link-layer,m-bus-application-layer,m-bus-parser(tagv0.5.0) andm-bus-parser-cli(tagcli-v0.5.0). - npm:
m-bus-parser-wasm-pack(tagwasm-v0.5.0), which also redeploys the website WASM bundle. - PyPI:
pymbusparserwheels and sdist (tagpython-v0.5.0).
Full changelog: v0.4.3...v0.5.0