summaryrefslogtreecommitdiff
path: root/gr-blocks/grc
diff options
context:
space:
mode:
authorJaredD <jareddpub@gmail.com>2021-07-19 04:41:18 -0600
committerGitHub <noreply@github.com>2021-07-19 06:41:18 -0400
commit15a8cce4dadaa895081d1d9816f37e65117cffb5 (patch)
tree4be2473cc5ed302e2b2d859f436fd0f101e79ab4 /gr-blocks/grc
parentfbab6c383d6f86ab0de42a90a9182d22637a5b96 (diff)
blocks: add matrix interleaver block
* blocks: add matrix interleaver block Matrix interleaver including qa test and example The matrix interleaver is a hierarchical block that pairs a base deinterleave block that effectively writes samples into "rows" (1 block of samples per output) and a base interleave block that outputs samples iteratively from each input like "columns". Signed-off-by: Jared Dulmage <jared.dulmage@caliola.com> Add grc file and update blocks.tree.yml. Fix module for matrix interleaver example Signed-off-by: Jared Dulmage <jared.dulmage@caliola.com> * Update py file docs and license block Co-authored-by: Jared Dulmage <jared.dulmage@caliola.com>
Diffstat (limited to 'gr-blocks/grc')
-rw-r--r--gr-blocks/grc/blocks.tree.yml1
-rw-r--r--gr-blocks/grc/blocks_matrix_interleaver.block.yml63
2 files changed, 64 insertions, 0 deletions
diff --git a/gr-blocks/grc/blocks.tree.yml b/gr-blocks/grc/blocks.tree.yml
index 5fb790efd1..48540f7b72 100644
--- a/gr-blocks/grc/blocks.tree.yml
+++ b/gr-blocks/grc/blocks.tree.yml
@@ -122,6 +122,7 @@
- blocks_stream_to_vector_decimator
- blocks_vector_to_stream
- blocks_vector_to_streams
+ - blocks_matrix_interleaver
- blocks_patterned_interleaver
- blocks_endian_swap
- blocks_vector_insert_x
diff --git a/gr-blocks/grc/blocks_matrix_interleaver.block.yml b/gr-blocks/grc/blocks_matrix_interleaver.block.yml
new file mode 100644
index 0000000000..d2a664a361
--- /dev/null
+++ b/gr-blocks/grc/blocks_matrix_interleaver.block.yml
@@ -0,0 +1,63 @@
+id: blocks_matrix_interleaver
+label: Matrix Interleaver
+flags: [ python ]
+
+templates:
+ imports: from gnuradio import blocks
+ make: |-
+ blocks.matrix_interleaver(
+ itemsize=${ type.size } * ${ vlen }, rows=${ rows }, cols=${ cols }, deint=${ deint }
+ )
+ callbacks:
+ - set_rowsandcols(${ rows }, ${ cols }, ${ deint })
+
+parameters:
+- id: type
+ label: IO Type
+ dtype: enum
+ options: [complex, float, int, short, byte]
+ option_attributes:
+ size: [gr.sizeof_gr_complex, gr.sizeof_float, gr.sizeof_int, gr.sizeof_short, gr.sizeof_char]
+ hide: part
+- id: vlen
+ label: Vec Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+- id: rows
+ label: Rows
+ dtype: int
+ default: '1'
+ hide: none
+- id: cols
+ label: Columns
+ dtype: int
+ default: '1'
+ hide: none
+- id: deint
+ label: Deinterleave
+ dtype: bool
+ options: [True, False]
+ default: False
+ hide: none
+
+inputs:
+- label: in
+ dtype: ${ type }
+ vlen: ${ vlen }
+
+outputs:
+- label: out
+ dtype: ${ type }
+ vlen: ${ vlen }
+
+asserts:
+- ${ vlen > 0 }
+
+documentation: 'Jared Dulmage
+
+ Block interleaver reads inputs into rows and writes outputs by cols
+
+ python/matrix_interleaver.py'
+
+file_format: 1