CRCStack

class baseband.base.utils.CRCStack(polynomial)[source] [edit on github]

Bases: CRC

Cyclic Redundancy Check for a bitstream.

See https://en.wikipedia.org/wiki/Cyclic_redundancy_check

Once initialised, the instance can be used as a function that calculates the CRC, or one can use the check method to verify that the CRC at the end of a stream is correct.

This class is specifically for arrays in which multiple bit streams occupy different bit levels, and the dimension is treated as the index into the bits. A single stream would thus be of type bool. Unsigned integers represent multiple streams. E.g., for a 64-track Mark 4 header, the stream would be an array of np.uint64 words.

Parameters:
polynomialint

Binary encoded CRC divisor. For instance, that used by Mark 4 headers is 0x180f, or x^12 + x^11 + x^3 + x^2 + x + 1.

See also

baseband.base.utils.CRC

for calculating CRC for a single value or an array of values.

Methods Summary

__call__(stream)

Calculate CRC for the given stream.

check(stream)

Check that the CRC at the end of athe stream is correct.

Methods Documentation

__call__(stream) [edit on github]

Calculate CRC for the given stream.

Parameters:
streamint or array of unsigned int

The integer (or array of integers) to calculate the CRC for.

Returns:
crcint or array

If an array, the crc will have the same dtype as the input stream.

check(stream)[source] [edit on github]

Check that the CRC at the end of athe stream is correct.

Parameters:
streamint or array of unsigned int

For an integer, the value is the stream to check the CRC for. For arrays, the dimension is treated as the index into the bits. A single stream would thus be of type bool. Unsigned integers represent multiple streams. E.g., for a 64-track Mark 4 header, the stream would be an array of np.uint64 words.

Returns:
okbool

True if the calculated CRC is all zero (which should be the case if the CRC at the end of the stream is correct).