Difference between revisions of "Vector Source"

From GNU Radio
Jump to: navigation, 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...")
 
(Parameters)
 
(5 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
[[Category:Block Docs]]
 
[[Category:Block Docs]]
[[Category:Stub Docs]]
+
Source that streams items based on the input vector. This block produces a stream of samples based on an input vector. In C++, this is a std::vector<T>, and in Python, this is either a list or tuple. The data can repeat infinitely until the flowgraph is terminated by some other event or, the default, run the data once and stop.
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.
+
The vector source can also produce stream tags with the data. Pass in a vector of gr::tag_t objects and they will be emitted based on the specified offset of the tag.
 +
 
 +
GNU Radio provides a utility Python module in gr.tag_utils to convert between tags and Python objects: gr.tag_utils.python_to_tag.
  
 
== Parameters ==
 
== Parameters ==
 
(''R''): <span class="plainlinks">[https://wiki.gnuradio.org/index.php/GNURadioCompanion#Variable_Controls ''Run-time adjustable'']</span>
 
(''R''): <span class="plainlinks">[https://wiki.gnuradio.org/index.php/GNURadioCompanion#Variable_Controls ''Run-time adjustable'']</span>
  
; Param 1 (''R'')
+
; Vector (''R'')
: 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).
+
: Vector to be generated
 +
 
 +
; Tags (''R'')
 +
: In Python, we can create tags as Python lists (or tuples) using the list structure [int offset, pmt key, pmt value, pmt srcid]. It is important to define the list/tuple with the values in the correct order and with the correct data type. A python dictionary can also be used using the keys: "offset", "key", "value", and "srcid" with the same data types as for the lists.
 +
: When given a list of tags, the vector source will emit the tags repeatedly by updating the offset relative to the vector stream length. That is, if the vector has 500 items and a tag has an offset of 0, that tag will be placed on item 0, 500, 1000, 1500, etc.
 +
: In GnuRadio-Companion, make sure to define a "Tag Object" block for each tag. Your input to the "Tags" parameter will be a list of block ids, like seen below in the screenshots. The offset in the vector is decided by the tag object.
 +
 
 +
; Repeat
 +
: Whether or not to repeat the vector when it's done
  
; Param 2
+
; Vec Length
: blah blah blah
+
: Length of the '''output''' vector, i.e. if set to 1 then it will output just a normal stream.
  
 
== Example Flowgraph ==
 
== Example Flowgraph ==
 +
In the following example, I (perhaps misguidedly) was using a 0 and a 1 output in a stream to control another block.
 +
 +
[[File:Vector_source_with_tags.png]]
 +
 +
  
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.
+
[[File:Tag_object_block_properties_box.png]][[File:Vector_source_with_tags_properties_box.png]]
  
 
== Source Files ==
 
== Source Files ==

Latest revision as of 19:35, 8 June 2020

Source that streams items based on the input vector. This block produces a stream of samples based on an input vector. In C++, this is a std::vector<T>, and in Python, this is either a list or tuple. The data can repeat infinitely until the flowgraph is terminated by some other event or, the default, run the data once and stop.

The vector source can also produce stream tags with the data. Pass in a vector of gr::tag_t objects and they will be emitted based on the specified offset of the tag.

GNU Radio provides a utility Python module in gr.tag_utils to convert between tags and Python objects: gr.tag_utils.python_to_tag.

Parameters[edit]

(R): Run-time adjustable

Vector (R)
Vector to be generated
Tags (R)
In Python, we can create tags as Python lists (or tuples) using the list structure [int offset, pmt key, pmt value, pmt srcid]. It is important to define the list/tuple with the values in the correct order and with the correct data type. A python dictionary can also be used using the keys: "offset", "key", "value", and "srcid" with the same data types as for the lists.
When given a list of tags, the vector source will emit the tags repeatedly by updating the offset relative to the vector stream length. That is, if the vector has 500 items and a tag has an offset of 0, that tag will be placed on item 0, 500, 1000, 1500, etc.
In GnuRadio-Companion, make sure to define a "Tag Object" block for each tag. Your input to the "Tags" parameter will be a list of block ids, like seen below in the screenshots. The offset in the vector is decided by the tag object.
Repeat
Whether or not to repeat the vector when it's done
Vec Length
Length of the output vector, i.e. if set to 1 then it will output just a normal stream.

Example Flowgraph[edit]

In the following example, I (perhaps misguidedly) was using a 0 and a 1 output in a stream to control another block.

Vector source with tags.png


Tag object block properties box.pngVector source with tags properties box.png

Source Files[edit]

C++ files
TODO
Header files
TODO
Public header files
TODO
Block definition
TODO