Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Introduction
The PDUs in IEEE1278.1-2012 contain structured, hierarchical records, of which three kinds can be identified:
A. fixed-size records, with a fixed marshalled size that is known upfront, and record fields have octet-multiple sizes
B. variable-size records, with a variable marshalled size that is not known upfront, and is typically included in one of the record fields as a length or count.
C. fixed-size bitfield enums/records, with fields that are non-octet-multiple sizes
This is a first attempt at implementing the last category (C), involving record fields with non-octet-multiple sizes.
All tests pass so far.
Changes
New method for reading bytes from stream
DataInputStream
andDataOutputStream
getread_bytes()
andwrite_byte()
methods respectively that allow reading an arbitrary number of raw bytes from the stream , and writing a byte sequence of arbitrary size to the stream.New namespace,
record
The new classes are in a separate file, record.py, to avoid dumping its required imports into dis7.
If this namespacing arrangement is preferable I will gradually migrate other records over to this module as I work on them as well. This will leave dis7.py primarily for PDU classes.
Sample bitfield class definitions
In record.py are a bitfield class factory function,
bitfield()
, and two sample classes,SpreadSpectrum
andNetId
. I have also pushed a small change to dis7.py, which affectsModulationType
(which usesSpreadSpectrum
) and thus theTransmitterPdu
class as well.Minor bugfix
Also included is a small fix to SignalPdu, left over from #56.
Requests
Since this PR proposes an interface for bitfields, I would prefer to merge it into a
testing
branch first and keep it apart frommaster
until sufficient time has passed for users and contributors to give it a run.If this is okay, please reject this PR and I will make another one for
testing
branch after it is created.Related/affected issues/PRs
marshalledSize()
method that returns the bytesize of the complete record. Consider this an experiment for that proposal as well.marshalledSize()
method, will make Boundary padding for records and PDUs #53 easier as it provides an easy way to obtain the length of records.SpreadSpectrum
completes the implementation ofModulationType
, which means thattestTransmitterPdu.py
can now incorporate themodulationType
attribute into its testing as well (it currently stops atpower
)