commit-gnuradio
[Top][All Lists]
Advanced

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

[Commit-gnuradio] r3454 - gnuradio/trunk/gr-wxgui/src/python


From: jcorgan
Subject: [Commit-gnuradio] r3454 - gnuradio/trunk/gr-wxgui/src/python
Date: Thu, 31 Aug 2006 00:30:59 -0600 (MDT)

Author: jcorgan
Date: 2006-08-31 00:30:59 -0600 (Thu, 31 Aug 2006)
New Revision: 3454

Modified:
   gnuradio/trunk/gr-wxgui/src/python/waterfallsink.py
Log:
Applied patch in ticket:59 by Don Ward.  Updates waterfallsink.py to use
messages instead of pipes.


Modified: gnuradio/trunk/gr-wxgui/src/python/waterfallsink.py
===================================================================
--- gnuradio/trunk/gr-wxgui/src/python/waterfallsink.py 2006-08-30 21:59:48 UTC 
(rev 3453)
+++ gnuradio/trunk/gr-wxgui/src/python/waterfallsink.py 2006-08-31 06:30:59 UTC 
(rev 3454)
@@ -50,7 +50,7 @@
             self.avg_alpha = avg_alpha
         self.title = title
         self.input_is_real = input_is_real
-        (self.r_fd, self.w_fd) = os.pipe()
+        self.msgq = gr.msg_queue(2)         # queue up to 2 messages
 
     def set_average(self, average):
         self.average = average
@@ -91,7 +91,7 @@
         c2mag = gr.complex_to_mag(self.fft_size)
         self.avg = gr.single_pole_iir_filter_ff(1.0, self.fft_size)
         log = gr.nlog10_ff(20, self.fft_size, -20*math.log10(self.fft_size))
-        sink = gr.file_descriptor_sink(gr.sizeof_float * self.fft_size, 
self.w_fd)
+        sink = gr.message_sink(gr.sizeof_float * self.fft_size, self.msgq, 
True)
 
         fg.connect (s2p, self.one_in_n, fft, c2mag, self.avg, log, sink)
         gr.hier_block.__init__(self, fg, s2p, sink)
@@ -120,7 +120,7 @@
         c2mag = gr.complex_to_mag(self.fft_size)
         self.avg = gr.single_pole_iir_filter_ff(1.0, self.fft_size)
         log = gr.nlog10_ff(20, self.fft_size, -20*math.log10(self.fft_size))
-        sink = gr.file_descriptor_sink(gr.sizeof_float * self.fft_size, 
self.w_fd)
+        sink = gr.message_sink(gr.sizeof_float * self.fft_size, self.msgq, 
True)
 
         fg.connect(s2p, self.one_in_n, fft, c2mag, self.avg, log, sink)
         gr.hier_block.__init__(self, fg, s2p, sink)
@@ -146,10 +146,10 @@
 
 
 class input_watcher (threading.Thread):
-    def __init__ (self, file_descriptor, fft_size, event_receiver, **kwds):
+    def __init__ (self, msgq, fft_size, event_receiver, **kwds):
         threading.Thread.__init__ (self, **kwds)
         self.setDaemon (1)
-        self.file_descriptor = file_descriptor
+        self.msgq = msgq
         self.fft_size = fft_size
         self.event_receiver = event_receiver
         self.keep_running = True
@@ -157,12 +157,18 @@
 
     def run (self):
         while (self.keep_running):
-            s = gru.os_read_exactly (self.file_descriptor,
-                                     gr.sizeof_float * self.fft_size)
-            if not s:
-                self.keep_running = False
-                break
+            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 FFT frame in the message.
+            # If so, we take only the last one
+            if nitems > 1:
+                start = itemsize * (nitems - 1)
+                s = s[start:start+itemsize]
+
             complex_data = Numeric.fromstring (s, Numeric.Float32)
             de = DataEvent (complex_data)
             wx.PostEvent (self.event_receiver, de)
@@ -195,7 +201,7 @@
         wx.EVT_CLOSE (self, self.on_close_window)
         self.Bind(wx.EVT_RIGHT_UP, self.on_right_click)
 
-        self.input_watcher = input_watcher(fftsink.r_fd, fftsink.fft_size, 
self)
+        self.input_watcher = input_watcher(fftsink.msgq, fftsink.fft_size, 
self)
 
 
     def on_close_window (self, event):





reply via email to

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