Creating Your First Block

This tutorial will guide you through creating your first block with the Embedded Python Block. The previous tutorial is here: Streams and Vectors

The example block we are creating will either add or multiply the two blocks based on an input parameter.

Opening Code Editor
The Embedded Python Block is a tool to quickly prototype a block within a flowgraph. Search for the Python Block and add it to the workspace:



Double-click the box to edit the properties. The Embedded Python Block has two properties,
 * 1) Code, a click-box which contains a link to the Python code for the block and
 * 2) Example_Param, an input parameter to the block.

Click on Open in Editor to edit the Python code:



You will be prompted with another choice for which editor to use to write the Python code. Click Use Default:



An editor window will then display the Python code for the Embedded Python Block:



Components of a Python Block
There are three important sections in the Python block code:
 * 1) import statements in green
 * 2) __init__ function in orange
 * 3) work function in red



The import statement includes the NumPy and GNU Radio libraries.

The __init__ statement:
 * 1) Accepts the example_param parameter with a default argument of 1.0
 * 2) Declares the block to have a np.complex64 input and output, which is the GNU Radio Complex Float 32 data type
 * 3) Stores the self.example_param variable from the input parameter

The work function:
 * 1) Has the input input_items and output output_items parameters
 * 2) Applies a mathematical operation to input_items and stores the result in output_items
 * 3) Returns the number of samples produced

Changing Parameter Name
The first step will be to rename example_param to additionFlag to be more descriptive. From the editor menu select Find and Replace:



Enter example_param under Find, and additionFlag under Replace with, and then click Replace All:



The parameter will be changed and the Python code will then look like this:



Now change the default value to be True:



Save the file:



Return back to the GRC window and it will show that the block now displays the Additionflag parameter instead of example_param:



Editing Block Inputs
The default block has a single input and a single output, however we need two inputs for the block. To add an input, add a second np.complex64 to the in_sig list:



Save the file. GRC will now display the block with a second input:



Editing Work Function
Now that the variable name has been changed the work function needs to be re-written to provide the desired functionality.

The pseudo code for the Python block is:

if (additionFlag is True) then add the two inputs else then multiply the two inputs