commit-gnuradio
[Top][All Lists]
Advanced

[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),      





reply via email to

[Prev in Thread] Current Thread [Next in Thread]