[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Commit-gnuradio] r5827 - in grc/branches/jblum_work: examples src src/S
From: |
jblum |
Subject: |
[Commit-gnuradio] r5827 - in grc/branches/jblum_work: examples src src/SignalBlockDefs |
Date: |
Sun, 24 Jun 2007 14:57:00 -0600 (MDT) |
Author: jblum
Date: 2007-06-24 14:57:00 -0600 (Sun, 24 Jun 2007)
New Revision: 5827
Added:
grc/branches/jblum_work/examples/selector.grc.xml
Modified:
grc/branches/jblum_work/examples/valve.grc.xml
grc/branches/jblum_work/src/ExecFlowGraph.py
grc/branches/jblum_work/src/SignalBlockDefs/Misc.py
grc/branches/jblum_work/src/SignalBlockDefs/Operators.py
grc/branches/jblum_work/src/SignalBlockDefs/SignalBlockTree.py
Log:
created selector block as a meta-block
Added: grc/branches/jblum_work/examples/selector.grc.xml
===================================================================
--- grc/branches/jblum_work/examples/selector.grc.xml
(rev 0)
+++ grc/branches/jblum_work/examples/selector.grc.xml 2007-06-24 20:57:00 UTC
(rev 5827)
@@ -0,0 +1,247 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<flow_graph>
+ <timestamp>1182711123.75</timestamp>
+ <hostname>tiggle</hostname>
+ <version>0.70 alpha</version>
+ <valid>True</valid>
+ <window_width>1600</window_width>
+ <window_height>800</window_height>
+ <vars>
+ <var>
+ <key>samp_rate_in</key>
+ <value>5e3</value>
+ <min/>
+ <max/>
+ <step/>
+ </var>
+ <var>
+ <key>samp_rate_out</key>
+ <value>100e3</value>
+ <min/>
+ <max/>
+ <step/>
+ </var>
+ <var>
+ <key>index</key>
+ <value>1</value>
+ <min>-1</min>
+ <max>1</max>
+ <step>1</step>
+ </var>
+ <var>
+ <key>packet_len</key>
+ <value>128</value>
+ <min/>
+ <max/>
+ <step/>
+ </var>
+ </vars>
+ <signal_blocks>
+ <signal_block>
+ <tag>PSK Modulator</tag>
+ <id>PSK Modulator0</id>
+ <x_coordinate>792</x_coordinate>
+ <y_coordinate>342</y_coordinate>
+ <rotation>0</rotation>
+ <params>
+ <param>1</param>
+ <param>2</param>
+ <param>0.35</param>
+ <param>0</param>
+ </params>
+ </signal_block>
+ <signal_block>
+ <tag>Scope Sink</tag>
+ <id>Scope Sink0</id>
+ <x_coordinate>14</x_coordinate>
+ <y_coordinate>405</y_coordinate>
+ <rotation>180</rotation>
+ <params>
+ <param>1</param>
+ <param>Input </param>
+ <param>$samp_rate_in</param>
+ <param>1</param>
+ <param>0</param>
+ <param>0.001</param>
+ </params>
+ </signal_block>
+ <signal_block>
+ <tag>GMSK Modulator</tag>
+ <id>GMSK Modulator0</id>
+ <x_coordinate>804</x_coordinate>
+ <y_coordinate>58</y_coordinate>
+ <rotation>0</rotation>
+ <params>
+ <param>2</param>
+ <param>0.35</param>
+ </params>
+ </signal_block>
+ <signal_block>
+ <tag>Constellation Sink</tag>
+ <id>Constellation Sink0</id>
+ <x_coordinate>1292</x_coordinate>
+ <y_coordinate>230</y_coordinate>
+ <rotation>0</rotation>
+ <params>
+ <param>Ouput Constellation</param>
+ <param>$samp_rate_out</param>
+ <param>1</param>
+ <param>0</param>
+ </params>
+ </signal_block>
+ <signal_block>
+ <tag>Note</tag>
+ <id>Note0</id>
+ <x_coordinate>619</x_coordinate>
+ <y_coordinate>261</y_coordinate>
+ <rotation>0</rotation>
+ <params>
+ <param>0=gmsk, 1=dqpsk, -1=disconnected</param>
+ </params>
+ </signal_block>
+ <signal_block>
+ <tag>About</tag>
+ <id>About0</id>
+ <x_coordinate>633</x_coordinate>
+ <y_coordinate>176</y_coordinate>
+ <rotation>0</rotation>
+ <params>
+ <param>Selecting Between Modulators</param>
+ <param>Josh Blum</param>
+ </params>
+ </signal_block>
+ <signal_block>
+ <tag>Signal Source</tag>
+ <id>Signal Source0</id>
+ <x_coordinate>12</x_coordinate>
+ <y_coordinate>11</y_coordinate>
+ <rotation>0</rotation>
+ <params>
+ <param>1</param>
+ <param>$samp_rate_in</param>
+ <param>1</param>
+ <param>500</param>
+ <param>1</param>
+ <param>0</param>
+ </params>
+ </signal_block>
+ <signal_block>
+ <tag>Selector</tag>
+ <id>Selector0</id>
+ <x_coordinate>264</x_coordinate>
+ <y_coordinate>68</y_coordinate>
+ <rotation>0</rotation>
+ <params>
+ <param>1</param>
+ <param>0</param>
+ <param>$index</param>
+ <param>1</param>
+ <param>2</param>
+ <param>1</param>
+ </params>
+ </signal_block>
+ <signal_block>
+ <tag>Packet Modulator</tag>
+ <id>Packet Modulator1</id>
+ <x_coordinate>524</x_coordinate>
+ <y_coordinate>24</y_coordinate>
+ <rotation>0</rotation>
+ <params>
+ <param>1</param>
+ <param>0</param>
+ <param>2</param>
+ <param>$packet_len</param>
+ <param/>
+ <param>0</param>
+ <param>1</param>
+ </params>
+ </signal_block>
+ <signal_block>
+ <tag>Packet Modulator</tag>
+ <id>Packet Modulator0</id>
+ <x_coordinate>377</x_coordinate>
+ <y_coordinate>325</y_coordinate>
+ <rotation>0</rotation>
+ <params>
+ <param>1</param>
+ <param>2</param>
+ <param>2</param>
+ <param>$packet_len</param>
+ <param/>
+ <param>0</param>
+ <param>1</param>
+ </params>
+ </signal_block>
+ <signal_block>
+ <tag>Selector</tag>
+ <id>Selector1</id>
+ <x_coordinate>1072</x_coordinate>
+ <y_coordinate>332</y_coordinate>
+ <rotation>0</rotation>
+ <params>
+ <param>0</param>
+ <param>$index</param>
+ <param>0</param>
+ <param>2</param>
+ <param>1</param>
+ <param>1</param>
+ </params>
+ </signal_block>
+ </signal_blocks>
+ <connections>
+ <connection>
+ <input_signal_block_id>Selector0</input_signal_block_id>
+ <input_socket_index>0</input_socket_index>
+ <output_signal_block_id>Signal Source0</output_signal_block_id>
+ <output_socket_index>0</output_socket_index>
+ </connection>
+ <connection>
+ <input_signal_block_id>Packet Modulator0</input_signal_block_id>
+ <input_socket_index>0</input_socket_index>
+ <output_signal_block_id>Selector0</output_signal_block_id>
+ <output_socket_index>1</output_socket_index>
+ </connection>
+ <connection>
+ <input_signal_block_id>Packet Modulator1</input_signal_block_id>
+ <input_socket_index>0</input_socket_index>
+ <output_signal_block_id>Selector0</output_signal_block_id>
+ <output_socket_index>0</output_socket_index>
+ </connection>
+ <connection>
+ <input_signal_block_id>GMSK Modulator0</input_signal_block_id>
+ <input_socket_index>0</input_socket_index>
+ <output_signal_block_id>Packet Modulator1</output_signal_block_id>
+ <output_socket_index>0</output_socket_index>
+ </connection>
+ <connection>
+ <input_signal_block_id>PSK Modulator0</input_signal_block_id>
+ <input_socket_index>0</input_socket_index>
+ <output_signal_block_id>Packet Modulator0</output_signal_block_id>
+ <output_socket_index>0</output_socket_index>
+ </connection>
+ <connection>
+ <input_signal_block_id>Selector1</input_signal_block_id>
+ <input_socket_index>0</input_socket_index>
+ <output_signal_block_id>GMSK Modulator0</output_signal_block_id>
+ <output_socket_index>0</output_socket_index>
+ </connection>
+ <connection>
+ <input_signal_block_id>Selector1</input_signal_block_id>
+ <input_socket_index>1</input_socket_index>
+ <output_signal_block_id>PSK Modulator0</output_signal_block_id>
+ <output_socket_index>0</output_socket_index>
+ </connection>
+ <connection>
+ <input_signal_block_id>Constellation Sink0</input_signal_block_id>
+ <input_socket_index>0</input_socket_index>
+ <output_signal_block_id>Selector1</output_signal_block_id>
+ <output_socket_index>0</output_socket_index>
+ </connection>
+ <connection>
+ <input_signal_block_id>Scope Sink0</input_signal_block_id>
+ <input_socket_index>0</input_socket_index>
+ <output_signal_block_id>Signal Source0</output_signal_block_id>
+ <output_socket_index>0</output_socket_index>
+ </connection>
+ </connections>
+</flow_graph>
Modified: grc/branches/jblum_work/examples/valve.grc.xml
===================================================================
--- grc/branches/jblum_work/examples/valve.grc.xml 2007-06-24 07:11:44 UTC
(rev 5826)
+++ grc/branches/jblum_work/examples/valve.grc.xml 2007-06-24 20:57:00 UTC
(rev 5827)
@@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?>
<flow_graph>
- <timestamp>1182271498.47</timestamp>
+ <timestamp>1182711684.9</timestamp>
<hostname>tiggle</hostname>
<version>0.70 alpha</version>
<valid>True</valid>
@@ -37,14 +37,47 @@
</var>
<var>
<key>open</key>
- <value>1</value>
- <min>0</min>
- <max>1</max>
+ <value>0</value>
+ <min>-1</min>
+ <max>0</max>
<step>1</step>
</var>
</vars>
<signal_blocks>
<signal_block>
+ <tag>About</tag>
+ <id>About0</id>
+ <x_coordinate>20</x_coordinate>
+ <y_coordinate>20</y_coordinate>
+ <rotation>0</rotation>
+ <params>
+ <param>Valve Demonstration</param>
+ <param>Josh Blum</param>
+ </params>
+ </signal_block>
+ <signal_block>
+ <tag>Valve</tag>
+ <id>Valve0</id>
+ <x_coordinate>270</x_coordinate>
+ <y_coordinate>150</y_coordinate>
+ <rotation>0</rotation>
+ <params>
+ <param>1</param>
+ <param>$open</param>
+ <param>1</param>
+ </params>
+ </signal_block>
+ <signal_block>
+ <tag>Note</tag>
+ <id>Note0</id>
+ <x_coordinate>255</x_coordinate>
+ <y_coordinate>42</y_coordinate>
+ <rotation>0</rotation>
+ <params>
+ <param>The valve is open and the data flow is allowed when open is
0.</param>
+ </params>
+ </signal_block>
+ <signal_block>
<tag>Signal Source</tag>
<id>Signal Source0</id>
<x_coordinate>47</x_coordinate>
@@ -61,13 +94,13 @@
</signal_block>
<signal_block>
<tag>Scope Sink</tag>
- <id>Scope Sink0</id>
- <x_coordinate>276</x_coordinate>
- <y_coordinate>405</y_coordinate>
- <rotation>180</rotation>
+ <id>Scope Sink1</id>
+ <x_coordinate>241</x_coordinate>
+ <y_coordinate>248</y_coordinate>
+ <rotation>0</rotation>
<params>
<param>1</param>
- <param>Scope</param>
+ <param>Input</param>
<param>$samp_rate</param>
<param>1</param>
<param>0</param>
@@ -75,39 +108,20 @@
</params>
</signal_block>
<signal_block>
- <tag>About</tag>
- <id>About0</id>
- <x_coordinate>20</x_coordinate>
- <y_coordinate>20</y_coordinate>
- <rotation>0</rotation>
+ <tag>Scope Sink</tag>
+ <id>Scope Sink0</id>
+ <x_coordinate>276</x_coordinate>
+ <y_coordinate>405</y_coordinate>
+ <rotation>180</rotation>
<params>
- <param>Valve Demonstration</param>
- <param>Josh Blum</param>
- </params>
- </signal_block>
- <signal_block>
- <tag>Valve</tag>
- <id>Valve0</id>
- <x_coordinate>270</x_coordinate>
- <y_coordinate>150</y_coordinate>
- <rotation>0</rotation>
- <params>
<param>1</param>
+ <param>Output</param>
<param>$samp_rate</param>
- <param>$open</param>
<param>1</param>
+ <param>0</param>
+ <param>0.001</param>
</params>
</signal_block>
- <signal_block>
- <tag>Note</tag>
- <id>Note0</id>
- <x_coordinate>255</x_coordinate>
- <y_coordinate>42</y_coordinate>
- <rotation>0</rotation>
- <params>
- <param>The valve is open and the data flow is allowed when open is
1.</param>
- </params>
- </signal_block>
</signal_blocks>
<connections>
<connection>
@@ -122,5 +136,11 @@
<output_signal_block_id>Valve0</output_signal_block_id>
<output_socket_index>0</output_socket_index>
</connection>
+ <connection>
+ <input_signal_block_id>Scope Sink1</input_signal_block_id>
+ <input_socket_index>0</input_socket_index>
+ <output_signal_block_id>Signal Source0</output_signal_block_id>
+ <output_socket_index>0</output_socket_index>
+ </connection>
</connections>
</flow_graph>
Modified: grc/branches/jblum_work/src/ExecFlowGraph.py
===================================================================
--- grc/branches/jblum_work/src/ExecFlowGraph.py 2007-06-24 07:11:44 UTC
(rev 5826)
+++ grc/branches/jblum_work/src/ExecFlowGraph.py 2007-06-24 20:57:00 UTC
(rev 5827)
@@ -93,6 +93,14 @@
output_socket_index = int(find_data(connection,
'output_socket_index'))
input_signal_block =
signal_blocks_dict[input_signal_block_id]
output_signal_block =
signal_blocks_dict[output_signal_block_id]
+ #start handle meta blocks
+ if hasattr(input_signal_block, 'meta_block'):
+ input_signal_block,input_socket_index = \
+
input_signal_block.get_input_block(input_socket_index)
+ if hasattr(output_signal_block, 'meta_block'):
+ output_signal_block,output_socket_index = \
+
output_signal_block.get_output_block(output_socket_index)
+ #end handle meta blocks
self.connect(# use this flow graph's connect method
#
(output_signal_block, output_socket_index),
(input_signal_block, input_socket_index))
Modified: grc/branches/jblum_work/src/SignalBlockDefs/Misc.py
===================================================================
--- grc/branches/jblum_work/src/SignalBlockDefs/Misc.py 2007-06-24 07:11:44 UTC
(rev 5826)
+++ grc/branches/jblum_work/src/SignalBlockDefs/Misc.py 2007-06-24 20:57:00 UTC
(rev 5827)
@@ -20,10 +20,11 @@
#These blocks were not categorized. Try to keep the number of misc blocks
small.
address@hidden Josh Blum
+import time
import gnuradio.gr.gr_threading as threading
from DataTypes import *
from gnuradio import gr,blks
-from SignalBlockConstants import
default_samp_rate,all_choices,DEFAULT_QUEUE_LIMIT,ThrottleHelper
+from SignalBlockConstants import
default_samp_rate,all_choices,DEFAULT_QUEUE_LIMIT,ThrottleHelper,MAX_NUM_SOCKETS
def Throttle(sb):
fcn = gr.throttle
@@ -86,74 +87,116 @@
return sb, lambda *args: None
#######################################################################################
-## Valve Def, Hier Block, and Helper Thread
+## Selector Def, and Helper Thread
#######################################################################################
-class ValveThread(threading.Thread):
+class SelectorThread(threading.Thread):
"""Thread to forward data between the input message queue and the
output message queue."""
- def __init__(self, valve_helper):
+ ##special attr to tell builder that this is not a gr block
+ meta_block = True
+ def __init__(self, item_size, input_index, output_index):
"""!
- ValveThread contructor.
- @param valve_helper the valve helper block
- """
- self.valve_helper = valve_helper
+ SelectorThread contructor.
+ @param item_size the size of the gr data stream in bytes
+ @param input_index the input index to read messages
+ @param output_index the output index to write messages
+ """
+ ##dict to map input indexes to output queues
+ self.queues_out = dict()
+ ##dict to map output indexes to input queues
+ self.queues_in = dict()
+ self.set_input_index(input_index)
+ self.set_output_index(output_index)
+ self.item_size = item_size
threading.Thread.__init__(self)
self.setDaemon(1)
self.keep_running = True
self.start()
- print 'Created valve thread.'
+ print 'Created selector thread.'
- def run(self):
- """In an endless while loop: read the msgq_out and write to the
msgq_in when closed."""
- while self.keep_running:
- msg = self.valve_helper.msgq_out.delete_head()
#blocking read of message queue
- if self.valve_helper.open:
self.valve_helper.msgq_in.insert_tail(msg) #forward message
- else: del msg #delete the message
-
-class ValveHelper(gr.hier_block):
- """A hier block used to intercept data from a message sink,
- and relay it to a message source based on the state of the valve:
open/closed."""
- def __init__(self, fg, item_size, open):
+ def set_input_index(self, input_index):
"""!
- ValveHelper constructor.
- @param fg the gr flow graph
- @param item_size the size of the gr data stream in bytes
- @param open the valve is open if bool(open) evaluates true
+ Set the input index.
+ @param input_index the new input index (int)
"""
- self.set_open(open)
- #create blocks
- self.msgq_out = gr.msg_queue(DEFAULT_QUEUE_LIMIT)
- msg_sink = gr.message_sink(item_size, self.msgq_out, False)
- msg_source = gr.message_source(item_size, DEFAULT_QUEUE_LIMIT)
- self.msgq_in = msg_source.msgq()
- #connect blocks
- gr.hier_block.__init__(self, fg, msg_sink, msg_source)
- #start the thread
- ValveThread(self)
+ self.input_index = input_index
- def set_open(self, open):
+ def set_output_index(self, output_index):
"""!
- Set the open state of the valve.
- @param open the new open state
+ Set the output index.
+ @param output_index the new output index (int)
"""
- self.open = open
+ self.output_index = output_index
+
+ def get_input_block(self, input_index):
+ """!
+ Create a new message sink and add its queue to the queues out
dict.
+ @param input_index the input index for the message sink
+ @return a gr message sink,connection index
+ """
+ msgq = gr.msg_queue(DEFAULT_QUEUE_LIMIT)
+ msg_sink = gr.message_sink(self.item_size, msgq, False)
+ self.queues_out[input_index] = msgq
+ return msg_sink,0
+
+ def get_output_block(self, output_index):
+ """!
+ Create a new message source and add its queue to the queues in
dict.
+ @param output_index the output index for the message source
+ @return a gr message source,connection index
+ """
+ msg_source = gr.message_source(self.item_size,
DEFAULT_QUEUE_LIMIT)
+ self.queues_in[output_index] = msg_source.msgq()
+ return msg_source,0
+
+ def run(self):
+ """In an endless while loop: read the msgq_out and write to the
msgq_in."""
+ while self.keep_running:
+ input_index = self.input_index
+ output_index = self.output_index
+ if self.queues_out.has_key(input_index):
+ msg =
self.queues_out[input_index].delete_head() #blocking read of message
queue
+ if self.queues_in.has_key(output_index):
+
self.queues_in[output_index].insert_tail(msg) #forward message
+ else: del msg #delete the message
+ else: time.sleep(.001) #sleep 1 ms
+def Selector(sb):
+ type = Enum(all_choices, 1)
+ vlen = Int(1, min=1)
+ sb.add_input_socket('in', Variable(type), vlen=vlen)
+ sb.add_output_socket('out', Variable(type), vlen=vlen)
+ sb.add_param('Type', type, False, type=True)
+ sb.add_param('Input Index', Int(0), variable=True)
+ sb.add_param('Output Index', Int(0), variable=True)
+ sb.add_param('Num Inputs', Int(1, min=1, max=MAX_NUM_SOCKETS),
+ show_label=False, input_sockets_controller=True)
+ sb.add_param('Num Outputs', Int(1, min=1, max=MAX_NUM_SOCKETS),
+ show_label=False, output_sockets_controller=True)
+ sb.add_param('Vector Length', vlen)
+ sb.set_docs('''Forward data from the input index to the output
index.''')
+ def make(fg, type, input_index, output_index, num_inputs, num_outputs,
vlen):
+ item_size = type.parse().get_num_bytes()*vlen.parse()
+ block = SelectorThread(item_size, input_index.parse(),
output_index.parse())
+ fg.add_callback(block.set_input_index, input_index)
+ fg.add_callback(block.set_output_index, output_index)
+ return block
+ return sb, make
+
def Valve(sb):
type = Enum(all_choices, 1)
vlen = Int(1, min=1)
sb.add_input_socket('in', Variable(type), vlen=vlen)
sb.add_output_socket('out', Variable(type), vlen=vlen)
sb.add_param('Type', type, False, type=True)
- sb.add_param('Sampling Rate', Float(default_samp_rate))
- sb.add_param('Open', Int(1), variable=True)
+ sb.add_param('Open', Int(0), variable=True)
sb.add_param('Vector Length', vlen)
- sb.set_docs('''\
-When open is 1, the valve will forward data.
-The valve has a throttle automatically attatched to it at runtime to save the
CPU.
-''')
- def make(fg, type, samp_rate, open, vlen):
+ sb.set_docs('''When open is 0, the valve will forward data.''')
+ def make(fg, type, open, vlen):
item_size = type.parse().get_num_bytes()*vlen.parse()
- block = ValveHelper(fg, item_size, open.parse())
- fg.add_callback(block.set_open, open)
- return ThrottleHelper(fg, item_size, samp_rate.parse(), block,
True)
+ block = SelectorThread(item_size, 0, open.parse())
+ fg.add_callback(block.set_output_index, open)
+ return block
return sb, make
+
+
\ No newline at end of file
Modified: grc/branches/jblum_work/src/SignalBlockDefs/Operators.py
===================================================================
--- grc/branches/jblum_work/src/SignalBlockDefs/Operators.py 2007-06-24
07:11:44 UTC (rev 5826)
+++ grc/branches/jblum_work/src/SignalBlockDefs/Operators.py 2007-06-24
20:57:00 UTC (rev 5827)
@@ -27,37 +27,43 @@
variable_inputs_doc_string = '''2 <= Num Inputs <= %d.'''%MAX_NUM_SOCKETS
def Add(sb):
- type = Enum([('Complex', (gr.add_cc, Complex())),
- ('Float', (gr.add_ff, Float())),
- ('Int', (gr.add_ii, Int())),
- ('Short', (gr.add_ss, Short())),], 1)
+ type = Enum([
+ ('Complex', (gr.add_cc, Complex())),
+ ('Float', (gr.add_ff, Float())),
+ ('Int', (gr.add_ii, Int())),
+ ('Short', (gr.add_ss, Short())),
+ ], 1)
sb.add_input_socket('in', Variable(type, index=1))
sb.add_output_socket('out', Variable(type, index=1))
sb.add_param('Type', type, False, type=True)
sb.add_param('Num Inputs', Int(2, min=2, max=MAX_NUM_SOCKETS),
- show_label=False,
input_sockets_controller=True)
+ show_label=False, input_sockets_controller=True)
sb.set_docs(variable_inputs_doc_string)
return sb, lambda fg, type, num_inputs: type.parse()[0]()
def AddVector(sb):
- type = Enum([('Complex Vector', (gr.add_vcc, ComplexVector())),
- ('Float Vector', (gr.add_vff,
FloatVector())),
- ('Int Vector', (gr.add_vii,
IntVector())),
- ('Short Vector', (gr.add_vss,
ShortVector())),], 1)
+ type = Enum([
+ ('Complex Vector', (gr.add_vcc, ComplexVector())),
+ ('Float Vector', (gr.add_vff, FloatVector())),
+ ('Int Vector', (gr.add_vii, IntVector())),
+ ('Short Vector', (gr.add_vss, ShortVector())),
+ ], 1)
sb.add_input_socket('vin', Variable(type, index=1))
sb.add_output_socket('vout', Variable(type, index=1))
sb.add_param('Type', type, False, type=True)
sb.add_param('Num Inputs', Int(2, min=2, max=MAX_NUM_SOCKETS),
- show_label=False,
input_sockets_controller=True)
+ show_label=False, input_sockets_controller=True)
sb.add_param('Items / Block', Int(1, min=1))
sb.set_docs(variable_inputs_doc_string)
return sb, lambda fg, type, num_inputs, items_per_block:
type.parse()[0](items_per_block.parse())
def AddConstant(sb):
- type = Enum([('Complex', (gr.add_const_cc, Complex())),
- ('Float', (gr.add_const_ff, Float())),
- ('Int', (gr.add_const_ii, Int())),
- ('Short', (gr.add_const_ss,
Short())),], 1)
+ type = Enum([
+ ('Complex', (gr.add_const_cc, Complex())),
+ ('Float', (gr.add_const_ff, Float())),
+ ('Int', (gr.add_const_ii, Int())),
+ ('Short', (gr.add_const_ss, Short())),
+ ], 1)
sb.add_input_socket('in', Variable(type, index=1))
sb.add_output_socket('out', Variable(type, index=1))
sb.add_param('Type', type, False, type=True)
@@ -69,10 +75,12 @@
return sb, make
def AddConstantVector(sb):
- type = Enum([('Complex Vector', (gr.add_const_vcc, ComplexVector())),
- ('Float Vector', (gr.add_const_vff,
FloatVector())),
- ('Int Vector', (gr.add_const_vii,
IntVector())),
- ('Short Vector', (gr.add_const_vss,
ShortVector())),], 1)
+ type = Enum([
+ ('Complex Vector', (gr.add_const_vcc, ComplexVector())),
+ ('Float Vector', (gr.add_const_vff, FloatVector())),
+ ('Int Vector', (gr.add_const_vii, IntVector())),
+ ('Short Vector', (gr.add_const_vss, ShortVector())),
+ ], 1)
sb.add_input_socket('vin', Variable(type, index=1))
sb.add_output_socket('vout', Variable(type, index=1))
sb.add_param('Type', type, False, type=True)
@@ -84,37 +92,43 @@
return sb, make
def Multiply(sb):
- type = Enum([('Complex', (gr.multiply_cc, Complex())),
- ('Float', (gr.multiply_ff, Float())),
- ('Int', (gr.multiply_ii, Int())),
- ('Short', (gr.multiply_ss, Short())),],
1)
+ type = Enum([
+ ('Complex', (gr.multiply_cc, Complex())),
+ ('Float', (gr.multiply_ff, Float())),
+ ('Int', (gr.multiply_ii, Int())),
+ ('Short', (gr.multiply_ss, Short())),
+ ], 1)
sb.add_input_socket('in', Variable(type, index=1))
sb.add_output_socket('out', Variable(type, index=1))
sb.add_param('Type', type, False, type=True)
sb.add_param('Num Inputs', Int(2, min=2, max=MAX_NUM_SOCKETS),
- show_label=False,
input_sockets_controller=True)
+ show_label=False, input_sockets_controller=True)
sb.set_docs(variable_inputs_doc_string)
return sb, lambda fg, type, num_inputs: type.parse()[0]()
def MultiplyVector(sb):
- type = Enum([('Complex Vector', (gr.multiply_vcc, ComplexVector())),
- ('Float Vector', (gr.multiply_vff,
FloatVector())),
- ('Int Vector', (gr.multiply_vii,
IntVector())),
- ('Short Vector', (gr.multiply_vss,
ShortVector())),], 1)
+ type = Enum([
+ ('Complex Vector', (gr.multiply_vcc, ComplexVector())),
+ ('Float Vector', (gr.multiply_vff, FloatVector())),
+ ('Int Vector', (gr.multiply_vii, IntVector())),
+ ('Short Vector', (gr.multiply_vss, ShortVector())),
+ ], 1)
sb.add_input_socket('vin', Variable(type, index=1))
sb.add_output_socket('vout', Variable(type, index=1))
sb.add_param('Type', type, False, type=True)
sb.add_param('Num Inputs', Int(2, min=2, max=MAX_NUM_SOCKETS),
- show_label=False,
input_sockets_controller=True)
+ show_label=False, input_sockets_controller=True)
sb.add_param('Items / Block', Int(1, min=1))
sb.set_docs(variable_inputs_doc_string)
return sb, lambda fg, type, num_inputs, items_per_block:
type.parse()[0](items_per_block.parse())
def MultiplyConstant(sb):
- type = Enum([('Complex', (gr.multiply_const_cc, Complex())),
- ('Float', (gr.multiply_const_ff,
Float())),
- ('Int', (gr.multiply_const_ii, Int())),
- ('Short', (gr.multiply_const_ss,
Short())),], 1)
+ type = Enum([
+ ('Complex', (gr.multiply_const_cc, Complex())),
+ ('Float', (gr.multiply_const_ff, Float())),
+ ('Int', (gr.multiply_const_ii, Int())),
+ ('Short', (gr.multiply_const_ss, Short())),
+ ], 1)
sb.add_input_socket('in', Variable(type, index=1))
sb.add_output_socket('out', Variable(type, index=1))
sb.add_param('Type', type, False, type=True)
@@ -126,10 +140,12 @@
return sb, make
def MultiplyConstantVector(sb):
- type = Enum([('Complex Vector', (gr.multiply_const_vcc,
ComplexVector())),
- ('Float Vector',
(gr.multiply_const_vff, FloatVector())),
- ('Int Vector', (gr.multiply_const_vii,
IntVector())),
- ('Short Vector',
(gr.multiply_const_vss, ShortVector())),], 1)
+ type = Enum([
+ ('Complex Vector', (gr.multiply_const_vcc, ComplexVector())),
+ ('Float Vector', (gr.multiply_const_vff, FloatVector())),
+ ('Int Vector', (gr.multiply_const_vii, IntVector())),
+ ('Short Vector', (gr.multiply_const_vss, ShortVector())),
+ ], 1)
sb.add_input_socket('vin', Variable(type, index=1))
sb.add_output_socket('vout', Variable(type, index=1))
sb.add_param('Type', type, False, type=True)
@@ -141,30 +157,34 @@
return sb, make
def Subtract(sb):
- type = Enum([('Complex', (gr.sub_cc, Complex())),
- ('Float', (gr.sub_ff, Float())),
- ('Int', (gr.sub_ii, Int())),
- ('Short', (gr.sub_ss, Short())),], 1)
+ type = Enum([
+ ('Complex', (gr.sub_cc, Complex())),
+ ('Float', (gr.sub_ff, Float())),
+ ('Int', (gr.sub_ii, Int())),
+ ('Short', (gr.sub_ss, Short())),
+ ], 1)
sb.add_input_socket('in', Variable(type, index=1))
sb.add_input_socket('-in', Variable(type, index=1))
sb.add_output_socket('out', Variable(type, index=1))
sb.add_param('Type', type, False, type=True)
sb.add_param('Num Inputs', Int(2, min=2, max=MAX_NUM_SOCKETS),
- show_label=False,
input_sockets_controller=True)
+ show_label=False, input_sockets_controller=True)
sb.set_docs(variable_inputs_doc_string)
return sb, lambda fg, type, num_inputs: type.parse()[0]()
def Divide(sb):
- type = Enum([('Complex', (gr.divide_cc, Complex())),
- ('Float', (gr.divide_ff, Float())),
- ('Int', (gr.divide_ii, Int())),
- ('Short', (gr.divide_ss, Short())),],
1)
+ type = Enum([
+ ('Complex', (gr.divide_cc, Complex())),
+ ('Float', (gr.divide_ff, Float())),
+ ('Int', (gr.divide_ii, Int())),
+ ('Short', (gr.divide_ss, Short())),
+ ], 1)
sb.add_input_socket('in', Variable(type, index=1))
sb.add_input_socket('/in', Variable(type, index=1))
sb.add_output_socket('out', Variable(type, index=1))
sb.add_param('Type', type, False, type=True)
sb.add_param('Num Inputs', Int(2, min=2, max=MAX_NUM_SOCKETS),
- show_label=False,
input_sockets_controller=True)
+ show_label=False, input_sockets_controller=True)
sb.set_docs(variable_inputs_doc_string)
return sb, lambda fg, type, num_inputs: type.parse()[0]()
Modified: grc/branches/jblum_work/src/SignalBlockDefs/SignalBlockTree.py
===================================================================
--- grc/branches/jblum_work/src/SignalBlockDefs/SignalBlockTree.py
2007-06-24 07:11:44 UTC (rev 5826)
+++ grc/branches/jblum_work/src/SignalBlockDefs/SignalBlockTree.py
2007-06-24 20:57:00 UTC (rev 5827)
@@ -179,6 +179,7 @@
('Misc', [
('Throttle', Misc.Throttle),
('Valve', Misc.Valve),
+ ('Selector', Misc.Selector),
('Head', Misc.Head),
('Skip Head', Misc.SkipHead),
('RMS', Misc.RMS),
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Commit-gnuradio] r5827 - in grc/branches/jblum_work: examples src src/SignalBlockDefs,
jblum <=