commit-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Commit-gnuradio] r5512 - in grc/branches/jblum_work: examples examples/


From: jblum
Subject: [Commit-gnuradio] r5512 - in grc/branches/jblum_work: examples examples/audio src src/Graphics src/SignalBlockDefs
Date: Mon, 21 May 2007 18:56:14 -0600 (MDT)

Author: jblum
Date: 2007-05-21 18:56:13 -0600 (Mon, 21 May 2007)
New Revision: 5512

Added:
   grc/branches/jblum_work/examples/audio/
   grc/branches/jblum_work/examples/audio/B flat.grc.xml
   grc/branches/jblum_work/examples/audio/phone tones.grc.xml
   grc/branches/jblum_work/examples/variable_sink.grc.xml
Removed:
   grc/branches/jblum_work/examples/B flat.grc.xml
   grc/branches/jblum_work/examples/gmsk.grc.xml
   grc/branches/jblum_work/examples/phone tones.grc.xml
Modified:
   grc/branches/jblum_work/src/Graphics/Dialogs.py
   grc/branches/jblum_work/src/Graphics/USRPDiagnostics.py
   grc/branches/jblum_work/src/Preferences.py
   grc/branches/jblum_work/src/SignalBlockDefs/Sinks.py
Log:
switched param to graphical param in dialogs, finished variable sink, added 
variable sink example, moved audio exampled to audio folder

Deleted: grc/branches/jblum_work/examples/B flat.grc.xml

Copied: grc/branches/jblum_work/examples/audio/B flat.grc.xml (from rev 5511, 
grc/branches/jblum_work/examples/B flat.grc.xml)
===================================================================
--- grc/branches/jblum_work/examples/audio/B flat.grc.xml                       
        (rev 0)
+++ grc/branches/jblum_work/examples/audio/B flat.grc.xml       2007-05-22 
00:56:13 UTC (rev 5512)
@@ -0,0 +1,116 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<flow_graph>
+  <timestamp>1179256591.06</timestamp>
+  <hostname>bowlcut</hostname>
+  <version>0.70 alpha</version>
+  <valid>True</valid>
+  <window_width>800</window_width>
+  <window_height>600</window_height>
+  <vars>
+    <var>
+      <key>samp_rate</key>
+      <value>32000</value>
+      <min/>
+      <max/>
+      <step/>
+    </var>
+    <var>
+      <key>A</key>
+      <value>440</value>
+      <min/>
+      <max/>
+      <step/>
+    </var>
+    <var>
+      <key>n</key>
+      <value>0</value>
+      <min>-4</min>
+      <max>8</max>
+      <step>1</step>
+    </var>
+    <var>
+      <key>volume</key>
+      <value>.1</value>
+      <min>0</min>
+      <max>.5</max>
+      <step>0.005</step>
+    </var>
+  </vars>
+  <signal_blocks>
+    <signal_block>
+      <tag>About</tag>
+      <id>About0</id>
+      <x_coordinate>91</x_coordinate>
+      <y_coordinate>41</y_coordinate>
+      <rotation>0</rotation>
+      <params>
+        <param>B flat</param>
+        <param>Josh Blum</param>
+      </params>
+    </signal_block>
+    <signal_block>
+      <tag>Note</tag>
+      <id>Note0</id>
+      <x_coordinate>30</x_coordinate>
+      <y_coordinate>136</y_coordinate>
+      <rotation>0</rotation>
+      <params>
+        <param>Generate pure musical tones.</param>
+      </params>
+    </signal_block>
+    <signal_block>
+      <tag>Scope Sink</tag>
+      <id>Scope Sink0</id>
+      <x_coordinate>31</x_coordinate>
+      <y_coordinate>251</y_coordinate>
+      <rotation>180</rotation>
+      <params>
+        <param>1</param>
+        <param>Scope</param>
+        <param>$samp_rate</param>
+        <param>1</param>
+        <param>.1</param>
+        <param>.001</param>
+      </params>
+    </signal_block>
+    <signal_block>
+      <tag>Audio Sink</tag>
+      <id>Audio Sink0</id>
+      <x_coordinate>27</x_coordinate>
+      <y_coordinate>429</y_coordinate>
+      <rotation>180</rotation>
+      <params>
+        <param>3</param>
+      </params>
+    </signal_block>
+    <signal_block>
+      <tag>Signal Source</tag>
+      <id>Signal Source0</id>
+      <x_coordinate>411</x_coordinate>
+      <y_coordinate>344</y_coordinate>
+      <rotation>180</rotation>
+      <params>
+        <param>1</param>
+        <param>$samp_rate</param>
+        <param>1</param>
+        <param>$A*2^($n/12)</param>
+        <param>$volume</param>
+        <param>0</param>
+      </params>
+    </signal_block>
+  </signal_blocks>
+  <connections>
+    <connection>
+      <input_signal_block_id>Audio 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>
+    <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>

Copied: grc/branches/jblum_work/examples/audio/phone tones.grc.xml (from rev 
5511, grc/branches/jblum_work/examples/phone tones.grc.xml)
===================================================================
--- grc/branches/jblum_work/examples/audio/phone tones.grc.xml                  
        (rev 0)
+++ grc/branches/jblum_work/examples/audio/phone tones.grc.xml  2007-05-22 
00:56:13 UTC (rev 5512)
@@ -0,0 +1,206 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<flow_graph>
+  <timestamp>1179256705.05</timestamp>
+  <hostname>bowlcut</hostname>
+  <version>0.70 alpha</version>
+  <valid>True</valid>
+  <window_width>1200</window_width>
+  <window_height>800</window_height>
+  <vars>
+    <var>
+      <key>samp_rate</key>
+      <value>32e3</value>
+      <min/>
+      <max/>
+      <step/>
+    </var>
+    <var>
+      <key>volume</key>
+      <value>.1</value>
+      <min>0</min>
+      <max>.5</max>
+      <step>0.005</step>
+    </var>
+    <var>
+      <key>noise</key>
+      <value>.01</value>
+      <min>0</min>
+      <max>.1</max>
+      <step>0.001</step>
+    </var>
+  </vars>
+  <signal_blocks>
+    <signal_block>
+      <tag>Signal Source</tag>
+      <id>Signal Source1</id>
+      <x_coordinate>192</x_coordinate>
+      <y_coordinate>377</y_coordinate>
+      <rotation>90</rotation>
+      <params>
+        <param>1</param>
+        <param>$samp_rate</param>
+        <param>1</param>
+        <param>440</param>
+        <param>1</param>
+        <param>0</param>
+      </params>
+    </signal_block>
+    <signal_block>
+      <tag>Noise Source</tag>
+      <id>Noise Source0</id>
+      <x_coordinate>335</x_coordinate>
+      <y_coordinate>364</y_coordinate>
+      <rotation>90</rotation>
+      <params>
+        <param>1</param>
+        <param>1</param>
+        <param>$noise</param>
+        <param>71</param>
+      </params>
+    </signal_block>
+    <signal_block>
+      <tag>FFT Sink</tag>
+      <id>FFT Sink0</id>
+      <x_coordinate>856</x_coordinate>
+      <y_coordinate>366</y_coordinate>
+      <rotation>270</rotation>
+      <params>
+        <param>1</param>
+        <param>FFT</param>
+        <param>$samp_rate</param>
+        <param>20</param>
+        <param>20</param>
+        <param>512</param>
+        <param>15</param>
+        <param>0</param>
+      </params>
+    </signal_block>
+    <signal_block>
+      <tag>Signal Source</tag>
+      <id>Signal Source0</id>
+      <x_coordinate>34</x_coordinate>
+      <y_coordinate>366</y_coordinate>
+      <rotation>90</rotation>
+      <params>
+        <param>1</param>
+        <param>$samp_rate</param>
+        <param>1</param>
+        <param>350</param>
+        <param>1</param>
+        <param>0</param>
+      </params>
+    </signal_block>
+    <signal_block>
+      <tag>Scope Sink</tag>
+      <id>Scope Sink0</id>
+      <x_coordinate>562</x_coordinate>
+      <y_coordinate>387</y_coordinate>
+      <rotation>270</rotation>
+      <params>
+        <param>1</param>
+        <param>Scope</param>
+        <param>$samp_rate</param>
+        <param>1</param>
+        <param>0</param>
+        <param>0.001</param>
+      </params>
+    </signal_block>
+    <signal_block>
+      <tag>Audio Sink</tag>
+      <id>Audio Sink0</id>
+      <x_coordinate>742</x_coordinate>
+      <y_coordinate>409</y_coordinate>
+      <rotation>270</rotation>
+      <params>
+        <param>3</param>
+      </params>
+    </signal_block>
+    <signal_block>
+      <tag>Multiply Constant</tag>
+      <id>Multiply Constant0</id>
+      <x_coordinate>594</x_coordinate>
+      <y_coordinate>221</y_coordinate>
+      <rotation>0</rotation>
+      <params>
+        <param>1</param>
+        <param>$volume</param>
+      </params>
+    </signal_block>
+    <signal_block>
+      <tag>Add</tag>
+      <id>Add0</id>
+      <x_coordinate>420</x_coordinate>
+      <y_coordinate>133</y_coordinate>
+      <rotation>0</rotation>
+      <params>
+        <param>1</param>
+        <param>3</param>
+      </params>
+    </signal_block>
+    <signal_block>
+      <tag>Note</tag>
+      <id>Note0</id>
+      <x_coordinate>362</x_coordinate>
+      <y_coordinate>58</y_coordinate>
+      <rotation>0</rotation>
+      <params>
+        <param>350 hz + 440 hz + AWGN</param>
+      </params>
+    </signal_block>
+    <signal_block>
+      <tag>About</tag>
+      <id>About0</id>
+      <x_coordinate>71</x_coordinate>
+      <y_coordinate>48</y_coordinate>
+      <rotation>0</rotation>
+      <params>
+        <param>The Famous Phone Tones</param>
+        <param>Josh Blum</param>
+      </params>
+    </signal_block>
+  </signal_blocks>
+  <connections>
+    <connection>
+      <input_signal_block_id>Add0</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>Add0</input_signal_block_id>
+      <input_socket_index>1</input_socket_index>
+      <output_signal_block_id>Signal Source1</output_signal_block_id>
+      <output_socket_index>0</output_socket_index>
+    </connection>
+    <connection>
+      <input_signal_block_id>Multiply Constant0</input_signal_block_id>
+      <input_socket_index>0</input_socket_index>
+      <output_signal_block_id>Add0</output_signal_block_id>
+      <output_socket_index>0</output_socket_index>
+    </connection>
+    <connection>
+      <input_signal_block_id>Audio Sink0</input_signal_block_id>
+      <input_socket_index>0</input_socket_index>
+      <output_signal_block_id>Multiply Constant0</output_signal_block_id>
+      <output_socket_index>0</output_socket_index>
+    </connection>
+    <connection>
+      <input_signal_block_id>Add0</input_signal_block_id>
+      <input_socket_index>2</input_socket_index>
+      <output_signal_block_id>Noise Source0</output_signal_block_id>
+      <output_socket_index>0</output_socket_index>
+    </connection>
+    <connection>
+      <input_signal_block_id>FFT Sink0</input_signal_block_id>
+      <input_socket_index>0</input_socket_index>
+      <output_signal_block_id>Multiply Constant0</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>Multiply Constant0</output_signal_block_id>
+      <output_socket_index>0</output_socket_index>
+    </connection>
+  </connections>
+</flow_graph>

Deleted: grc/branches/jblum_work/examples/gmsk.grc.xml

Deleted: grc/branches/jblum_work/examples/phone tones.grc.xml

Added: grc/branches/jblum_work/examples/variable_sink.grc.xml
===================================================================
--- grc/branches/jblum_work/examples/variable_sink.grc.xml                      
        (rev 0)
+++ grc/branches/jblum_work/examples/variable_sink.grc.xml      2007-05-22 
00:56:13 UTC (rev 5512)
@@ -0,0 +1,168 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<flow_graph>
+  <timestamp>1179795210.8</timestamp>
+  <hostname>tiggle</hostname>
+  <version>0.70 alpha</version>
+  <valid>True</valid>
+  <window_width>1600</window_width>
+  <window_height>1200</window_height>
+  <vars>
+    <var>
+      <key>samp_rate_out</key>
+      <value>100e3</value>
+      <min/>
+      <max/>
+      <step/>
+    </var>
+    <var>
+      <key>samp_rate_in</key>
+      <value>100e3</value>
+      <min/>
+      <max/>
+      <step/>
+    </var>
+    <var>
+      <key>output</key>
+      <value>0</value>
+      <min/>
+      <max/>
+      <step/>
+    </var>
+    <var>
+      <key>input</key>
+      <value>0</value>
+      <min>-100</min>
+      <max>100</max>
+      <step>2.0</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>Variable Sink Test</param>
+        <param>Josh Blum</param>
+      </params>
+    </signal_block>
+    <signal_block>
+      <tag>Note</tag>
+      <id>Note0</id>
+      <x_coordinate>220</x_coordinate>
+      <y_coordinate>15</y_coordinate>
+      <rotation>0</rotation>
+      <params>
+        <param>Sink writes to the output variable.</param>
+      </params>
+    </signal_block>
+    <signal_block>
+      <tag>Numerical Sink</tag>
+      <id>Numerical Sink1</id>
+      <x_coordinate>506</x_coordinate>
+      <y_coordinate>63</y_coordinate>
+      <rotation>0</rotation>
+      <params>
+        <param>1</param>
+        <param>Input</param>
+        <param>Units</param>
+        <param>$samp_rate_in</param>
+        <param>0.0</param>
+        <param>-100</param>
+        <param>100</param>
+        <param>1.0</param>
+        <param>6</param>
+        <param>50</param>
+        <param>15</param>
+        <param>0</param>
+        <param>0</param>
+      </params>
+    </signal_block>
+    <signal_block>
+      <tag>Numerical Sink</tag>
+      <id>Numerical Sink0</id>
+      <x_coordinate>294</x_coordinate>
+      <y_coordinate>213</y_coordinate>
+      <rotation>0</rotation>
+      <params>
+        <param>1</param>
+        <param>Output</param>
+        <param>Units</param>
+        <param>$samp_rate_out</param>
+        <param>0.0</param>
+        <param>-100</param>
+        <param>100</param>
+        <param>1.0</param>
+        <param>6</param>
+        <param>50</param>
+        <param>15</param>
+        <param>0</param>
+        <param>0</param>
+      </params>
+    </signal_block>
+    <signal_block>
+      <tag>Signal Source</tag>
+      <id>Signal Source0</id>
+      <x_coordinate>41</x_coordinate>
+      <y_coordinate>123</y_coordinate>
+      <rotation>0</rotation>
+      <params>
+        <param>1</param>
+        <param>$samp_rate_in</param>
+        <param>0</param>
+        <param>0</param>
+        <param>0</param>
+        <param>$input</param>
+      </params>
+    </signal_block>
+    <signal_block>
+      <tag>Signal Source</tag>
+      <id>Signal Source1</id>
+      <x_coordinate>32</x_coordinate>
+      <y_coordinate>326</y_coordinate>
+      <rotation>0</rotation>
+      <params>
+        <param>1</param>
+        <param>$samp_rate_out</param>
+        <param>0</param>
+        <param>0</param>
+        <param>0</param>
+        <param>$output</param>
+      </params>
+    </signal_block>
+    <signal_block>
+      <tag>Variable Sink</tag>
+      <id>Variable Sink0</id>
+      <x_coordinate>303</x_coordinate>
+      <y_coordinate>81</y_coordinate>
+      <rotation>0</rotation>
+      <params>
+        <param>1</param>
+        <param>output</param>
+        <param>$samp_rate_in</param>
+      </params>
+    </signal_block>
+  </signal_blocks>
+  <connections>
+    <connection>
+      <input_signal_block_id>Numerical Sink0</input_signal_block_id>
+      <input_socket_index>0</input_socket_index>
+      <output_signal_block_id>Signal Source1</output_signal_block_id>
+      <output_socket_index>0</output_socket_index>
+    </connection>
+    <connection>
+      <input_signal_block_id>Variable 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>
+    <connection>
+      <input_signal_block_id>Numerical 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/Graphics/Dialogs.py
===================================================================
--- grc/branches/jblum_work/src/Graphics/Dialogs.py     2007-05-21 06:53:11 UTC 
(rev 5511)
+++ grc/branches/jblum_work/src/Graphics/Dialogs.py     2007-05-22 00:56:13 UTC 
(rev 5512)
@@ -28,7 +28,7 @@
 import gtk
 from DataType import *
 from Constants import *
-from Elements import Param
+from Elements import GraphicalParam
 import Preferences
 
 class TextDisplay(gtk.TextView):
@@ -90,8 +90,8 @@
                self.original_dimensions = width,height = 
self.flow_graph.get_size_request()    # get the window dimensions             
                self.width = Int(width, min=MIN_WINDOW_WIDTH, 
max=MAX_WINDOW_WIDTH)
                self.height = Int(height, min=MIN_WINDOW_HEIGHT, 
max=MAX_WINDOW_HEIGHT)
-               self.vbox.pack_start(Param('width (pixels)', 
self.width).get_input_object(), False)
-               self.vbox.pack_start(Param('height (pixels)', 
self.height).get_input_object(), False)   
+               self.vbox.pack_start(GraphicalParam('width (pixels)', 
self.width).get_input_object(), False)
+               self.vbox.pack_start(GraphicalParam('height (pixels)', 
self.height).get_input_object(), False)  
                
        def run(self):
                ''' Return the new dimensions rather than a response.
@@ -181,7 +181,7 @@
                                                                                
('Modify Data Type', 'Down'),
                                                                                
('Add a Socket', '+'),
                                                                                
('Remove a Socket', '-'),
-                                                                               
('Close Params Dialog', 'Esc'),
+                                                                               
('Close GraphicalParams Dialog', 'Esc'),
                                                                                
('Flow Graph Run', 'F5'),
                                                                                
('Flow Graph Stop', 'F7'),
                                                                                
('Screen Shot', 'PrintScreen'),):

Modified: grc/branches/jblum_work/src/Graphics/USRPDiagnostics.py
===================================================================
--- grc/branches/jblum_work/src/Graphics/USRPDiagnostics.py     2007-05-21 
06:53:11 UTC (rev 5511)
+++ grc/branches/jblum_work/src/Graphics/USRPDiagnostics.py     2007-05-22 
00:56:13 UTC (rev 5512)
@@ -26,7 +26,7 @@
 pygtk.require('2.0')
 import gtk
 from Actions import USRP_DIAGNOSTICS_DISPLAY,get_action_from_name
-from Elements import Param
+from Elements import GraphicalParam
 from DataType import *
 from Dialogs import TextDisplay
 
@@ -51,9 +51,9 @@
                                                                                
('Side B:0', (1, 0)),
                                                                                
('Side A:1', (0, 1)), 
                                                                                
('Side B:1', (1, 1)),])
-               self.vbox.pack_start(Param('Unit Number', 
self.USRP_number).get_input_object(), False)
-               self.vbox.pack_start(Param('Transmit/Receive', 
self.USRP_type).get_input_object(), False)
-               self.vbox.pack_start(Param('Side:Subdevice', 
self.USRP_subdev).get_input_object(), False)
+               self.vbox.pack_start(GraphicalParam('Unit Number', 
self.USRP_number).get_input_object(), False)
+               self.vbox.pack_start(GraphicalParam('Transmit/Receive', 
self.USRP_type).get_input_object(), False)
+               self.vbox.pack_start(GraphicalParam('Side:Subdevice', 
self.USRP_subdev).get_input_object(), False)
                self.diagnose_button = gtk.Button('Query')
                self.diagnose_button.connect('clicked', self.diagnose_usrp)
                self.diagnose_button.show()

Modified: grc/branches/jblum_work/src/Preferences.py
===================================================================
--- grc/branches/jblum_work/src/Preferences.py  2007-05-21 06:53:11 UTC (rev 
5511)
+++ grc/branches/jblum_work/src/Preferences.py  2007-05-22 00:56:13 UTC (rev 
5512)
@@ -19,23 +19,23 @@
 """
        Preferences.py 
        Josh Blum
-       Holds global preferences stored as Params.
+       Holds global preferences stored as GraphicalParams.
 """
 
 from DataType import Bool,FileOpen,Enum,Int
-from Elements import Param
+from Elements import GraphicalParam
 import time,socket #for tagging saved files
 from Constants import *
 import ParseXML
 import Messages
 
-CONNECTION_CHECKING_PREF = Param('Connection Checking', Bool(true='Match Data 
Types', false='Ignore Data Types', default=True))
-PARAM_CHECKING_PREF = Param('Parameter Checking', Bool(true='Verify 
Parameters', false='Ignore Invalid Params', default=True))
-SOCKET_CHECKING_PREF = Param('Socket Checking', Bool(true='Require 
Connections', false='Allow Open Sockets', default=True))
-RESTORE_FLOW_GRAPH_PREF = Param('Restore Flow Graph', Bool(true='Overwrite 
Default Flow Graph', false='Keep Default Flow Graph', default=True))
-DEFAULT_FLOW_GRAPH_PREF = Param('Default Flow Graph', FileOpen('', 
allow_blank=True))
-SNAP_TO_GRID_PREF = Param('Snap to Grid', Bool(true='On', false='Off', 
default=False))
-GRID_SIZE_PREF = Param('Grid Size (pixels)', Enum([
+CONNECTION_CHECKING_PREF = GraphicalParam('Connection Checking', 
Bool(true='Match Data Types', false='Ignore Data Types', default=True))
+PARAM_CHECKING_PREF = GraphicalParam('GraphicalParameter Checking', 
Bool(true='Verify GraphicalParameters', false='Ignore Invalid GraphicalParams', 
default=True))
+SOCKET_CHECKING_PREF = GraphicalParam('Socket Checking', Bool(true='Require 
Connections', false='Allow Open Sockets', default=True))
+RESTORE_FLOW_GRAPH_PREF = GraphicalParam('Restore Flow Graph', 
Bool(true='Overwrite Default Flow Graph', false='Keep Default Flow Graph', 
default=True))
+DEFAULT_FLOW_GRAPH_PREF = GraphicalParam('Default Flow Graph', FileOpen('', 
allow_blank=True))
+SNAP_TO_GRID_PREF = GraphicalParam('Snap to Grid', Bool(true='On', 
false='Off', default=False))
+GRID_SIZE_PREF = GraphicalParam('Grid Size (pixels)', Enum([
        ('10 pixels', 10), 
        ('20 pixels', 20), 
        ('30 pixels', 30),
@@ -46,10 +46,10 @@
        ('80 pixels', 80),
        ('90 pixels', 90),
        ('100 pixels', 100),], 2))
-SHOW_GRID_PREF = Param('Grid Points', Bool(true='Show Grid', false='Hide 
Grid', default=False))
-REPORTS_WIN_SHOW_PREF = Param('Reports Window', Bool(true='Show Reports 
Window', false='Hide Reports Window', default=True))
-MAIN_WINDOW_WIDTH_PREF = Param('Main Window Width', 
Int(DEFAULT_MAIN_WINDOW_WIDTH))
-MAIN_WINDOW_HEIGHT_PREF = Param('Main Window Height', 
Int(DEFAULT_MAIN_WINDOW_HEIGHT))
+SHOW_GRID_PREF = GraphicalParam('Grid Points', Bool(true='Show Grid', 
false='Hide Grid', default=False))
+REPORTS_WIN_SHOW_PREF = GraphicalParam('Reports Window', Bool(true='Show 
Reports Window', false='Hide Reports Window', default=True))
+MAIN_WINDOW_WIDTH_PREF = GraphicalParam('Main Window Width', 
Int(DEFAULT_MAIN_WINDOW_WIDTH))
+MAIN_WINDOW_HEIGHT_PREF = GraphicalParam('Main Window Height', 
Int(DEFAULT_MAIN_WINDOW_HEIGHT))
 
 ###########################################################################
 #      List of Preferences

Modified: grc/branches/jblum_work/src/SignalBlockDefs/Sinks.py
===================================================================
--- grc/branches/jblum_work/src/SignalBlockDefs/Sinks.py        2007-05-21 
06:53:11 UTC (rev 5511)
+++ grc/branches/jblum_work/src/SignalBlockDefs/Sinks.py        2007-05-22 
00:56:13 UTC (rev 5512)
@@ -79,20 +79,83 @@
                d_addr.parse(), d_port.parse(), 
                size.parse())
                        
+#######################################################################################
+##     Variable Sink definition and thread class
+#######################################################################################
+       
+import threading
+import Variables
+import Numeric
+       
+class VariableSinkThread(threading.Thread):
+       """ This thread will read the vector sink at the sampling rate,
+               write the numeric value back to the variable,
+               and re-parse the flow graph's callbacks.        """
+       def __init__(self, fg, var_key, msgq):
+               """ Create a new variable sink thread.  """
+               self.fg = fg
+               self.var_key = var_key
+               self.msgq = msgq
+               #       make sure that the variable exists and that it has no 
range     #
+               if not Variables.has_key(self.var_key):
+                       raise Exception('Error: variable "%s" does not 
exist!'%self.var_key)                    
+               elif Variables.get_values(self.var_key)[1] != '':
+                       raise Exception('Error: variable "%s" has a 
range!'%self.var_key)               
+               threading.Thread.__init__(self)
+               print 'Created variable sink thread for variable "%s"'%var_key
+                               
+       def run(self):
+               """ In a endless while loop: read the vector sink,
+                       write to the variable, and parse the callbacks. """
+               while True:
+                       try:            
+                               msg = self.msgq.delete_head()  # blocking read 
of message queue
+                               itemsize = int(msg.arg1())
+                               nitems = int(msg.arg2())                        
        
+                               s = msg.to_string()            # get the body 
of the msg as a string                            
+                               # There may be more than one number in the 
message.
+                               # If so, we take only the last one
+                               if nitems > 1:
+                                       start = itemsize * (nitems - 1)
+                                       s = s[start:start+itemsize]
+                               
+                               #       parse the data to a complex or 
float/int string #
+                               complex_data = Numeric.fromstring (s, 
Numeric.Float32)
+                               if len(complex_data) == 2: new_value = "%f + 
%fj"%(complex_data[0], complex_data[1])
+                               else: new_value = "%f"%(complex_data[0],) 
+                               
+                               old_value = Variables.get_value(self.var_key)
+                               # write the new value #                 
+                               try: 
+                                       Variables.unregister(self.var_key)
+                                       Variables.register(self.var_key, 
new_value)                             
+                               except: 
+                                       print "error registering"               
                                
+                                       Variables.register(self.var_key, 
old_value)     #error registering, restore variable
+                               #       parse the call backs    #               
                
+                               self.fg.parse_callbacks()       
+                       except: break                   
+               
 def VariableSink(sb):
-       enum_all_vector_data_types = Enum([('Complex Vector', 
(gr.vector_sink_c, ComplexVector(), Complex())),
-                                                                       ('Float 
Vector', (gr.vector_sink_f, FloatVector(), Float())),
-                                                                       ('Int 
Vector', (gr.vector_sink_i, IntVector(), Int())),
-                                                                       ('Short 
Vector', (gr.vector_sink_s, ShortVector(), Short())),
-                                                                       ('Byte 
Vector', (gr.vector_sink_b, ByteVector(), Byte()))], 1)#index of 1 makes the 
default float
-       sb.add_input_socket('in', Variable(enum_all_vector_data_types, index=2))
-       sb.add_param('Type', enum_all_vector_data_types, False, type=True)
+       type = Enum(all_choices, 1)
+       sb.add_input_socket('in', Variable(type))
+       sb.add_param('Type', type, False, type=True)
        sb.add_param('Variable', VariableKeySelector()) 
+       sb.add_param('Samp Rate', Float(default_samp_rate))
        sb.set_docs('''\
-**** Not implemented yet, do not use ***
-The Variable Sink implements a vector sink. \
-A thread reads the vector sink and writes to the variable. \
+A thread reads a message sink and writes to the variable. \
 The variable cannot have a range. \
-The variable must be specified using its name without the "$" symbol.''')      
-       return sb, lambda fg, type, vector, repeat: type.parse()[0]()   
-               
\ No newline at end of file
+The variable must be specified using its name without the "$" symbol. \
+The variable sink has a throttle automatically attatched to it at runtime to 
save the CPU.''') 
+       def make(fg, type, var_key, samp_rate):
+               msgq = gr.msg_queue(1)  #msg size of 1
+               block = gr.message_sink(type.parse().get_num_bytes(), msgq, 
True)
+               var_sink_thread = VariableSinkThread(fg, var_key.parse(), msgq)
+               var_sink_thread.start() #the thread begins
+               th = gr.throttle(type.parse().get_num_bytes(), 
samp_rate.parse())
+               fg.connect(th, block)
+               return th
+       return sb, make
+       
+       
+       
\ No newline at end of file





reply via email to

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