Stream CRC32: Difference between revisions

From GNU Radio
Jump to navigation Jump to search
(Created page with "Category:Block Docs Category:Stub Docs This is the template for the "Page-per-block Docs". This first section should describe what the block...")
 
 
(6 intermediate revisions by 2 users not shown)
Line 1: Line 1:
[[Category:Block Docs]]
[[Category:Block Docs]]
[[Category:Stub Docs]]
Byte-stream CRC block.
This is the template for the [[:Category:Block_Docs|"Page-per-block Docs"]].  This first section should describe what the block does and how to use it, using however many paragraphs necessary.  Note that the title of the wiki page should match the block's name in GRC, i.e. the one defined in the block's .grc file.  Look at the [[FFT]] Block for a good example.


As this is a basic template, it's also in the [[:Category:Stub_Docs|"Stub Docs category"]]. Please improve it.
; Input: stream of bytes, which form a packet. The first byte of the packet has a tag with key "length" and the value being the number of bytes in the packet.
 
; Output: The same bytes as incoming, but trailing a CRC32 of the packet. The tag is re-set to the new length.


== Parameters ==
== Parameters ==
(''R''): <span class="plainlinks">[https://wiki.gnuradio.org/index.php/GNURadioCompanion#Variable_Controls ''Run-time adjustable'']</span>


; Param 1 (''R'')
; Mode
: Description of parameter, provide any tips or recommended values.  Note that the name of the parameter above should match the param's label that shows up in grc (e.g. Sample Rate).
: Set to true if you want to check CRC, false to create CRC.


; Param 2
; Length tag name
: blah blah blah
: Length tag key for the tagged stream.
 
; Packed
: If the data is packed or unpacked bits.


== Example Flowgraph ==
== Example Flowgraph ==


Insert description of flowgraph here, then show a screenshot of the flowgraph and the output if there is an interesting GUI. Currently we have no standard method of uploading the actual flowgraph to the wiki or git repo, unfortunately.  The plan is to have an example flowgraph showing how the block might be used, for every block, and the flowgraphs will live in the git repo.
The following flowgraph adds tags to the output of the signal source. This is done because Stream CRC32 is a tagged stream block and needs a Length tag key.
 
[[File:Stream_crc32_flowgraph.PNG]]
 
The data plot after CRC32 is as follows. As seen, a CRC has been added at the end of each packet and the packet length tag has been updated from 100 bytes to 104 bytes, where the extra 4 bytes are for the CRC.
 
[[File:Stream_crc32_output.PNG|1000px]]


== Source Files ==
== Source Files ==


; C++ files
; C++ files
: [https://github.com/gnuradio/gnuradio TODO]
: [https://github.com/gnuradio/gnuradio/blob/main/gr-digital/lib/crc32_bb_impl.cc crc32_bb_impl.cc]


; Header files
; Header files
: [https://github.com/gnuradio/gnuradio TODO]
: [https://github.com/gnuradio/gnuradio/blob/main/gr-digital/lib/crc32_bb_impl.h crc32_bb_impl.h]


; Public header files
; Public header files
: [https://github.com/gnuradio/gnuradio TODO]
: [https://github.com/gnuradio/gnuradio/blob/main/gr-digital/include/gnuradio/digital/crc32_bb.h crc32_bb.h]


; Block definition
; Block definition
: [https://github.com/gnuradio/gnuradio TODO]
: [https://github.com/gnuradio/gnuradio/blob/main/gr-digital/grc/digital_crc32_bb.block.yml digital_crc32_bb.block.yml]

Latest revision as of 06:42, 27 January 2022

Byte-stream CRC block.

Input
stream of bytes, which form a packet. The first byte of the packet has a tag with key "length" and the value being the number of bytes in the packet.
Output
The same bytes as incoming, but trailing a CRC32 of the packet. The tag is re-set to the new length.

Parameters

Mode
Set to true if you want to check CRC, false to create CRC.
Length tag name
Length tag key for the tagged stream.
Packed
If the data is packed or unpacked bits.

Example Flowgraph

The following flowgraph adds tags to the output of the signal source. This is done because Stream CRC32 is a tagged stream block and needs a Length tag key.

Stream crc32 flowgraph.PNG

The data plot after CRC32 is as follows. As seen, a CRC has been added at the end of each packet and the packet length tag has been updated from 100 bytes to 104 bytes, where the extra 4 bytes are for the CRC.

Stream crc32 output.PNG

Source Files

C++ files
crc32_bb_impl.cc
Header files
crc32_bb_impl.h
Public header files
crc32_bb.h
Block definition
digital_crc32_bb.block.yml