summaryrefslogtreecommitdiff
path: root/grc/data/platforms/python/flow_graph.tmpl
diff options
context:
space:
mode:
Diffstat (limited to 'grc/data/platforms/python/flow_graph.tmpl')
-rw-r--r--grc/data/platforms/python/flow_graph.tmpl195
1 files changed, 195 insertions, 0 deletions
diff --git a/grc/data/platforms/python/flow_graph.tmpl b/grc/data/platforms/python/flow_graph.tmpl
new file mode 100644
index 000000000..2341ef46f
--- /dev/null
+++ b/grc/data/platforms/python/flow_graph.tmpl
@@ -0,0 +1,195 @@
+#!/usr/bin/env python
+########################################################
+##Cheetah template - gnuradio_python
+##
+##@param imports the import statements
+##@param flow_graph the flow_graph
+##@param variables the variable blocks
+##@param controls the variables with gui controls
+##@param parameters the paramater blocks
+##@param blocks the signal blocks
+##@param connections the connections
+##@param generate_options the type of flow graph
+##@param var_id2expr variable id map to expression
+##@param var_id2deps variable id map to direct dependencies
+##@param var_id2cbs variable id map to callback strings
+########################################################
+#import time
+#set $DIVIDER = '#'*50
+$DIVIDER
+# Gnuradio Python Flow Graph
+$('# Title: %s'%$flow_graph.get_option('title'))
+$('# Author: %s'%$flow_graph.get_option('author'))
+$('# Description: %s'%$flow_graph.get_option('description'))
+$('# Generated: %s'%time.ctime())
+$DIVIDER
+
+########################################################
+##Create Imports
+########################################################
+#for $imp in $imports
+$imp
+#end for
+
+########################################################
+##Create Class
+## Write the class declaration for a top or hier block.
+## The parameter names are the arguments to __init__.
+## Determine the absolute icon path (wx gui only).
+## Setup the IO signature (hier block only).
+########################################################
+#set $class_name = $flow_graph.get_option('id')
+#set $param_str = ', '.join(['self'] + ['%s=%s'%(param.get_id(), param.get_make()) for param in $parameters])
+#if $generate_options == 'wx_gui'
+ #from gnuradio.grc.platforms.base.Constants import DATA_DIR
+ #from gnuradio.grc.gui.Constants import MAIN_WINDOW_PREFIX
+class $(class_name)(grc_wxgui.top_block_gui):
+
+ def __init__($param_str):
+ grc_wxgui.top_block_gui.__init__(
+ self,
+ title="$MAIN_WINDOW_PREFIX - Executing: $flow_graph.get_option('title')",
+ icon="$(os.path.join($DATA_DIR, 'grc-icon-32.png'))",
+ )
+#elif $generate_options == 'no_gui'
+class $(class_name)(gr.top_block):
+
+ def __init__($param_str):
+ gr.top_block.__init__(self, "$flow_graph.get_option('title')")
+#elif $generate_options == 'hb'
+ #set $in_sig = $flow_graph.get_input_signature()
+ #set $out_sig = $flow_graph.get_output_signature()
+class $(class_name)(gr.hier_block2):
+
+ def __init__($param_str):
+ gr.hier_block2.__init__(
+ self,
+ "$flow_graph.get_option('title')",
+ gr.io_signature($in_sig.nports, $in_sig.nports, $in_sig.size*$in_sig.vlen),
+ gr.io_signature($out_sig.nports, $out_sig.nports, $out_sig.size*$out_sig.vlen),
+ )
+#end if
+########################################################
+##Create Parameters
+## Set the parameter to a property of self..
+########################################################
+#if $parameters
+
+ $DIVIDER
+ # Parameters
+ $DIVIDER
+#end if
+#for $param in $parameters
+ self.$param.get_id() = $param.get_id()
+#end for
+########################################################
+##Create Variables
+## Set the variable to a property of self.
+## Write the first line of the variable make.
+########################################################
+#if $variables
+
+ $DIVIDER
+ # Variables
+ $DIVIDER
+#end if
+#for $var in $variables
+ #set $code = $var.get_make().splitlines()[0]
+ self.$var.get_id() = $var.get_id() = $code
+#end for
+########################################################
+##Create Controls
+## Write the variable make (excluding first line).
+## Indent each line with 2 tabs.
+########################################################
+#if $controls
+
+ $DIVIDER
+ # Controls
+ $DIVIDER
+#end if
+#for $ctrl in $controls
+ #set $code = '\n\t\t'.join($ctrl.get_make().splitlines()[1:])
+ $code
+#end for
+########################################################
+##Create Blocks
+## Write the block make, and indent with 2 tabs.
+########################################################
+#if $blocks
+
+ $DIVIDER
+ # Blocks
+ $DIVIDER
+#end if
+#for $blk in filter(lambda b: b.get_make(), $blocks)
+ #set $code = '\n\t\t'.join($blk.get_make().splitlines())
+ $("self.%s = %s"%($blk.get_id(), $code))
+#end for
+########################################################
+##Create Connections
+## The port name should be the id of the parent block.
+## However, port names for IO pads should be self.
+########################################################
+#if $connections
+
+ $DIVIDER
+ # Connections
+ $DIVIDER
+#end if
+#for $con in $connections
+ #set $source = $con.get_source()
+ #set $sink = $con.get_sink()
+ #if $source.get_parent().get_key() == 'pad_source'
+ #set $source_name = 'self'
+ #else
+ #set $source_name = 'self.' + $source.get_parent().get_id()
+ #end if
+ #if $sink.get_parent().get_key() == 'pad_sink'
+ #set $sink_name = 'self'
+ #else
+ #set $sink_name = 'self.' + $sink.get_parent().get_id()
+ #end if
+ $("self.connect((%s, %s), (%s, %s))"%(
+ $source_name,
+ $source.get_key(),
+ $sink_name,
+ $sink.get_key(),
+ )
+ )
+#end for
+
+########################################################
+##Create Callbacks
+## Write a set method for this variable that calls the callbacks
+## and sets the direct variable dependencies.
+########################################################
+#for $var in $parameters + $variables
+ #set $id = $var.get_id()
+ def set_$(id)(self, $id):
+ self.$id = $id
+ #for $dep in $var_id2deps[$id]
+ self.set_$(dep)($var_id2expr[$dep])
+ #end for
+ #for $callback in $var_id2cbs[$id]
+ self.$callback
+ #end for
+
+#end for
+########################################################
+##Create Main
+## For top block code, generate a main routine.
+## Instantiate the top block and run as gui or cli.
+########################################################
+#if $generate_options != 'hb'
+if __name__ == '__main__':
+ tb = $(class_name)()
+ #if $generate_options == 'wx_gui'
+ tb.Run()
+ #elif $generate_options == 'no_gui'
+ tb.start()
+ raw_input('Press Enter to quit: ')
+ tb.stop()
+ #end if
+#end if
+