What's Changed
- *BREAKING*: Main API changed. No need to create separate definition and parser objects any more. Create only a
definition from your XTCE document and instead of `my_parser.generator`, use `my_packet_definition.packet_generator`.
- *BREAKING*: Removed CSV-based packet definition support. We may indirectly support this in the future via
a utility for converting CSV definitions to XTCE.
- *BREAKING*: Separated out logical pieces into separate modules rather than everything
living within the xtcedef module. This means user imports may be different now.
- *BREAKING*: Replace `bitstring` objects with native Python bytes objects
- Remove dependency on the `bitstring` library
- Much faster parsing speed
- Users that are passing `bitstring.ConstBitStream` objects to `generator` will need to pass a
binary filelike object instead
- *BREAKING*: The ``ParsedDataItem`` class has been removed and the derived values are being returned now.
The ``raw_value`` is stored as an attribute on the returned object. The other items can be accessed
through the packet definition object ``my_packet_definition.named_parameters["my_item"].short_description``
- *BREAKING*: The return type of BinaryDataEncoding is now the raw bytes.
To get the previous behavior you can convert the data to an integer and then format it as a binary string.
``f"{int.from_bytes(data, byteorder='big'):0{len(data)*8}b}"``
- *BREAKING*: Removed `word_size` kwarg from packet generator method.
We expect all binary data to be integer number of bytes.
- *BREAKING*: Changed `packet_generator` kwarg `skip_header_bits` to `skip_header_bytes`.
- Fixed incorrect parsing of StringDataEncoding elements. Raw string values are now returned as byte buffers.
Derived string values contain python string objects.
- The ``CCSDSPacket`` class is now a dictionary subclass, enabling direct lookup of items from the Packet itself.
- A ``RawPacketData`` class has been added that is a subclass of bytes. It keeps track of the current
parsing location and enables reading of bit lengths as integers or raw bytes.
- Fix EnumeratedParameterType to handle duplicate labels
- Add error reporting for unsupported and invalid parameter types
- Add support for MIL-1750A floats (32-bit only)
New Contributors
* laspsandoval made their first contribution in https://github.com/medley56/space_packet_parser/pull/50
* cgobat made their first contribution in https://github.com/medley56/space_packet_parser/pull/18
**Full Changelog**: https://github.com/medley56/space_packet_parser/compare/4.2.0...5.0.0