commit-gnuradio
[Top][All Lists]
Advanced

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

[Commit-gnuradio] r8442 - in grc/trunk: notes src/grc/gui/elements src/g


From: jblum
Subject: [Commit-gnuradio] r8442 - in grc/trunk: notes src/grc/gui/elements src/grc_gnuradio/blks2 src/grc_gnuradio/blocks/error_correction src/grc_gnuradio/blocks/modulators src/grc_gnuradio/data src/grc_gnuradio/wxgui
Date: Sun, 18 May 2008 21:01:09 -0600 (MDT)

Author: jblum
Date: 2008-05-18 21:01:08 -0600 (Sun, 18 May 2008)
New Revision: 8442

Added:
   grc/trunk/src/grc_gnuradio/blocks/error_correction/blks2_packet_decoder.xml
   grc/trunk/src/grc_gnuradio/blocks/error_correction/blks2_packet_encoder.xml
Removed:
   grc/trunk/src/grc_gnuradio/blocks/modulators/blks2_packet_demod.xml
   grc/trunk/src/grc_gnuradio/blocks/modulators/blks2_packet_mod.xml
Modified:
   grc/trunk/notes/todo.txt
   grc/trunk/src/grc/gui/elements/Param.py
   grc/trunk/src/grc_gnuradio/blks2/__init__.py
   grc/trunk/src/grc_gnuradio/blks2/packet.py
   grc/trunk/src/grc_gnuradio/data/block_tree.xml
   grc/trunk/src/grc_gnuradio/wxgui/callback_controls.py
Log:
string truncation in param display, renamed and simplified packet 
encoder/decoder

Modified: grc/trunk/notes/todo.txt
===================================================================
--- grc/trunk/notes/todo.txt    2008-05-19 02:36:00 UTC (rev 8441)
+++ grc/trunk/notes/todo.txt    2008-05-19 03:01:08 UTC (rev 8442)
@@ -13,7 +13,6 @@
 -create sub-flow graphs to be used in larger flow graphs
 -copy and paste blocks
 -disable blocks (grey out, keep in design file, but generate ignores)
--param display, better string truncate
 -param editor, expand entry boxes in focus
 -change param dialog to panel within main window
 

Modified: grc/trunk/src/grc/gui/elements/Param.py
===================================================================
--- grc/trunk/src/grc/gui/elements/Param.py     2008-05-19 02:36:00 UTC (rev 
8441)
+++ grc/trunk/src/grc/gui/elements/Param.py     2008-05-19 03:01:08 UTC (rev 
8442)
@@ -197,25 +197,13 @@
                        t = self.get_type()
                        if self.is_enum():
                                dt_str = 
self.get_option(self.get_value()).get_name()
-                       elif t in ('file_open', 'file_save'):   #file types
-                               suggested_length = 30
-                               if len(data) <= suggested_length: dt_str = data
-                               else: #truncate the tail if there is not enough 
space
-                                       tail,head = path.split(data)
-                                       if len(head) >= suggested_length: 
dt_str = head
-                                       else: dt_str = 
tail[0:suggested_length-len(head)] + '...' + head
                        elif isinstance(data, (list, tuple, set)): #vector types
-                               data = map(to_str, data)
-                               #only keep the first X elements of the list     
        
-                               X = (100/len(str(data))) + 1 #display more for 
non complex vectors                                      
-                               dt_str = '[' #replace the removed elements with 
a '...' 
-                               for i,f in enumerate(data):
-                                       if i < X or i+1 == len(data):   #leave 
one on the end 
-                                               dt_str = dt_str + f
-                                               if i < len(data)-1 and (i+1 != 
X or X+1 == len(data)): dt_str = dt_str + ', '
-                                       elif i == X: dt_str = dt_str + ' ... '
-                               dt_str = dt_str + ']'
+                               dt_str = ', '.join(map(to_str, data))
                        else: dt_str = to_str(data)     #other types
+                       #truncate 
+                       max_len = max(42 - len(self.get_name()), 3)
+                       if len(dt_str) > max_len:
+                               dt_str = dt_str[:max_len-3] + '...'             
        
                        return '<b>%s:</b> 
%s'%(Utils.xml_encode(self.get_name()), Utils.xml_encode(dt_str))
                else: return '<span foreground="red"><b>%s:</b> 
error</span>'%Utils.xml_encode(self.get_name())
                        

Modified: grc/trunk/src/grc_gnuradio/blks2/__init__.py
===================================================================
--- grc/trunk/src/grc_gnuradio/blks2/__init__.py        2008-05-19 02:36:00 UTC 
(rev 8441)
+++ grc/trunk/src/grc_gnuradio/blks2/__init__.py        2008-05-19 03:01:08 UTC 
(rev 8442)
@@ -1,6 +1,5 @@
 # make this directory a package
 
 from selector import selector, valve
-from packet import packet_mod, packet_demod
-from packet import mod_pkts, demod_pkts
+from packet import packet_encoder, packet_decoder
 from error_rate import error_rate

Modified: grc/trunk/src/grc_gnuradio/blks2/packet.py
===================================================================
--- grc/trunk/src/grc_gnuradio/blks2/packet.py  2008-05-19 02:36:00 UTC (rev 
8441)
+++ grc/trunk/src/grc_gnuradio/blks2/packet.py  2008-05-19 03:01:08 UTC (rev 
8442)
@@ -33,21 +33,12 @@
 DEFAULT_THRESHOLD = 12
 
 
#######################################################################################
-##     Packet Modulation
+##     Packet Encoder
 
#######################################################################################
 
-class packet_mod_thread(_threading.Thread):
-       """
-       Sample the input message queue and call send.           
-       """
+class _packet_encoder_thread(_threading.Thread):
        
        def __init__(self, msgq, payload_length, send):
-               """!
-               packet_mod_thread contructor.
-               @param msgq the message queue to sample
-               @param payload_length number of bytes in a data-stream slice
-               @param send a function that takes a payload
-               """             
                self._msgq = msgq
                self._payload_length = payload_length
                self._send = send
@@ -57,9 +48,6 @@
                self.start()
                
        def run(self):
-               """
-               Run this thread by sampling the message queue in and cutting 
out chunks of size payload.
-               """
                sample = '' #residual sample
                while self.keep_running:
                        msg = self._msgq.delete_head() #blocking read of 
message queue
@@ -69,58 +57,23 @@
                                sample = sample[self._payload_length:]          
        
                                self._send(payload)     
 
-class packet_mod(gr.hier_block2):
+class packet_encoder(gr.hier_block2):
        """
        Hierarchical block for wrapping packet-based modulators.
        """
        
-       def __init__(self, item_size_in, item_size_out, modulator, 
payload_length=-1):
+       def __init__(self, item_size_in, samples_per_symbol, bits_per_symbol, 
access_code='', pad_for_usrp=True, payload_length=-1):
                """!
                packet_mod constructor.
                @param item_size_in the size of the input data stream in bytes
-               @param item_size_out the size of the output data stream in bytes
-               @param modulator the packet-based modulator
-               @param payload_length number of bytes in a data-stream slice
-               """
-               #setup
-               self._item_size_in = item_size_in
-               self._item_size_out = item_size_out
-               if payload_length < 0: #get packet length
-                       payload_length = DEFAULT_PAYLOAD_LEN
-               if payload_length%self._item_size_in != 0:      #verify that 
packet length is a multiple of the stream size
-                       raise ValueError, 'The packet length: "%d" is not a 
mutiple of the stream size: "%d".'%(payload_length, self._item_size_in)
-               self._payload_length = payload_length
-               self._modulator = modulator             
-               #create blocks
-               self._msgq_in = gr.msg_queue(DEFAULT_MSGQ_LIMIT)
-               msg_sink = gr.message_sink(self._item_size_in, self._msgq_in, 
False) #False -> blocking         
-               #initialize hier2
-               gr.hier_block2.__init__(
-                       self, 
-                       "packet mod",
-                       gr.io_signature(1, 1, self._item_size_in), # Input 
signature
-                       gr.io_signature(1, 1, self._item_size_out) # Output 
signature
-               )
-               #connect
-               self.connect(self, msg_sink)
-               self.connect(self._modulator, self)
-               #start thread
-               packet_mod_thread(self._msgq_in, self._payload_length, 
self._modulator.send_pkt)                
-
-class mod_pkts(gr.hier_block2):
-       """
-       Hierarchical block for sending packet based data.               
-       """
-       
-       def __init__(self, samples_per_symbol, bits_per_symbol, access_code='', 
pad_for_usrp=True):
-               """!
-               mod_pkts constructor.
                @param samples_per_symbol number of samples per symbol
                @param bits_per_symbol number of bits per symbol
                @param access_code AKA sync vector
                @param pad_for_usrp If true, packets are padded such that they 
end up a multiple of 128 samples
+               @param payload_length number of bytes in a data-stream slice
                """
                #setup parameters
+               self._item_size_in = item_size_in
                self._samples_per_symbol = samples_per_symbol
                self._bits_per_symbol = bits_per_symbol
                self._pad_for_usrp = pad_for_usrp
@@ -130,73 +83,106 @@
                        raise ValueError, "Invalid access_code %r. Must be 
string of 1's and 0's" % (access_code,)
                self._access_code = access_code         
                self._pad_for_usrp = pad_for_usrp               
+               if payload_length < 0: #get payload length
+                       payload_length = DEFAULT_PAYLOAD_LEN
+               if payload_length%self._item_size_in != 0:      #verify that 
packet length is a multiple of the stream size
+                       raise ValueError, 'The packet length: "%d" is not a 
mutiple of the stream size: "%d".'%(payload_length, self._item_size_in)
+               self._payload_length = payload_length
                #create blocks
                msg_source = gr.message_source(gr.sizeof_char, 
DEFAULT_MSGQ_LIMIT)
                self._msgq_out = msg_source.msgq()              
+               self._msgq_in = gr.msg_queue(DEFAULT_MSGQ_LIMIT)
+               msg_sink = gr.message_sink(self._item_size_in, self._msgq_in, 
False) #False -> blocking         
                #initialize hier2
                gr.hier_block2.__init__(
                        self, 
-                       "mod pkts",
-                       gr.io_signature(0, 0, 0), # Input signature
+                       "packet_encoder",
+                       gr.io_signature(1, 1, self._item_size_in), # Input 
signature
                        gr.io_signature(1, 1, gr.sizeof_char) # Output signature
                )
                #connect
+               self.connect(self, msg_sink)
                self.connect(msg_source, self)
+               #start thread
+               _packet_encoder_thread(self._msgq_in, self._payload_length, 
self.send_pkt)
                
-       def send_pkt(self, payload='', eof=False):
+       def send_pkt(self, payload):
                """!
                Wrap the payload in a packet and push onto the message queue.
                @param payload string, data to send
-               @param eof boolean, end of file
-               """
-               if eof: 
-                       msg = gr.message(1) # tell self._pkt_input we're not 
sending any more packets
-               else:                   
-                       packet = packet_utils.make_packet(
-                               payload,
-                               self._samples_per_symbol,
-                               self._bits_per_symbol,
-                               self._access_code,
-                               self._pad_for_usrp
-                       )
-                       msg = gr.message_from_string(packet)
+               """     
+               packet = packet_utils.make_packet(
+                       payload,
+                       self._samples_per_symbol,
+                       self._bits_per_symbol,
+                       self._access_code,
+                       self._pad_for_usrp
+               )
+               msg = gr.message_from_string(packet)
                self._msgq_out.insert_tail(msg)
        
 
#######################################################################################
-##     Packet Demodulation
+##     Packet Decoder
 
#######################################################################################
 
-class packet_demod(gr.hier_block2):
+class _packet_decoder_thread(_threading.Thread):
+    
+    def __init__(self, msgq, callback):
+        _threading.Thread.__init__(self)
+        self.setDaemon(1)
+        self._msgq = msgq
+        self.callback = callback
+        self.keep_running = True
+        self.start()
+
+    def run(self):
+        while self.keep_running:
+            msg = self._msgq.delete_head()
+            ok, payload = packet_utils.unmake_packet(msg.to_string(), 
int(msg.arg1()))
+            if self.callback:
+                self.callback(ok, payload)
+
+class packet_decoder(gr.hier_block2):
        """
        Hierarchical block for wrapping packet-based demodulators.
        """
        
-       def __init__(self, item_size_in, item_size_out, demodulator):
+       def __init__(self, item_size_out, access_code='', threshold=-1):
                """!
                packet_demod constructor.
-               @param item_size_in the size of the input data stream in bytes
                @param item_size_out the size of the output data stream in bytes
-               @param demodulator the packet-based demodulator
+               @param access_code AKA sync vector
+               @param threshold detect access_code with up to threshold bits 
wrong (-1 -> use default)
                """
                #setup
-               self._item_size_in = item_size_in
                self._item_size_out = item_size_out
-               self._demodulator = demodulator 
+               #access code
+               if not access_code: #get access code
+                       access_code = packet_utils.default_access_code
+               if not packet_utils.is_1_0_string(access_code):
+                       raise ValueError, "Invalid access_code %r. Must be 
string of 1's and 0's" % (access_code,)
+               self._access_code = access_code         
+               #threshold
+               if threshold < 0: threshold = DEFAULT_THRESHOLD 
+               self._threshold = threshold  
                #blocks
+               self._msgq_in = gr.msg_queue(DEFAULT_MSGQ_LIMIT) #holds packets 
from the PHY
+               correlator = gr.correlate_access_code_bb(self._access_code, 
self._threshold)
+               framer_sink = gr.framer_sink_1(self._msgq_in)           
                msg_source = gr.message_source(self._item_size_out, 
DEFAULT_MSGQ_LIMIT)
                self._msgq_out = msg_source.msgq()              
                #initialize hier2
                gr.hier_block2.__init__(
                        self, 
-                       "packet demod",
-                       gr.io_signature(1, 1, self._item_size_in), # Input 
signature
+                       "packet_decoder",
+                       gr.io_signature(1, 1, gr.sizeof_char), # Input signature
                        gr.io_signature(1, 1, self._item_size_out) # Output 
signature
                )
                #connect
-               self.connect(self, gr.kludge_copy(self._item_size_in), 
self._demodulator)
+               self.connect(self, correlator, framer_sink)
                self.connect(msg_source, self)
-               #set callback
-               self._demodulator._watcher.callback = self._recv_packet
+               #start thread
+               _packet_decoder_thread(self._msgq_in, self._recv_packet)
 
        def _recv_packet(self, ok, payload):
                """!
@@ -205,59 +191,6 @@
                @param payload data received
                """
                msg = gr.message_from_string(payload, 0, self._item_size_out, 
len(payload)/self._item_size_out)
-               if ok: self._msgq_out.insert_tail(msg)
-       
-class demod_pkts(gr.hier_block2):
-       """
-       Hierarchical block for demodulating and deframing packets.
-       """
+               if ok: self._msgq_out.insert_tail(msg)                  
 
-       def __init__(self, access_code='', callback=None, threshold=-1):
-               """!
-               demod_pkts contructor.   
-               @param access_code AKA sync vector
-               @param callback function of two args: ok, payload
-               @param threshold detect access_code with up to threshold bits 
wrong (-1 -> use default)
-               """
-               #access code
-               if not access_code: #get access code
-                       access_code = packet_utils.default_access_code
-               if not packet_utils.is_1_0_string(access_code):
-                       raise ValueError, "Invalid access_code %r. Must be 
string of 1's and 0's" % (access_code,)
-               self._access_code = access_code         
-               #threshold
-               if threshold < 0: threshold = DEFAULT_THRESHOLD 
-               self._threshold = threshold  
-               self._callback = callback
-               #initialize hier2
-               gr.hier_block2.__init__(
-                       self,
-                       "demod pkts",
-                       gr.io_signature(1, 1, gr.sizeof_char), # Input signature
-                       gr.io_signature(0, 0, 0), # Output signature
-               ) 
-               #blocks
-               self._msgq_in = gr.msg_queue(DEFAULT_MSGQ_LIMIT)          # 
holds packets from the PHY
-               correlator = gr.correlate_access_code_bb(self._access_code, 
self._threshold)
-               framer_sink = gr.framer_sink_1(self._msgq_in)           
-               #connect
-               self.connect(self, correlator, framer_sink)
-               #start thread
-               self._watcher = _queue_watcher_thread(self._msgq_in, 
self._callback)
-                       
-class _queue_watcher_thread(_threading.Thread):
-    def __init__(self, rcvd_pktq, callback):
-        _threading.Thread.__init__(self)
-        self.setDaemon(1)
-        self.rcvd_pktq = rcvd_pktq
-        self.callback = callback
-        self.keep_running = True
-        self.start()
 
-    def run(self):
-        while self.keep_running:
-            msg = self.rcvd_pktq.delete_head()
-            ok, payload = packet_utils.unmake_packet(msg.to_string(), 
int(msg.arg1()))
-            if self.callback:
-                self.callback(ok, payload)
-

Copied: 
grc/trunk/src/grc_gnuradio/blocks/error_correction/blks2_packet_decoder.xml 
(from rev 8440, 
grc/trunk/src/grc_gnuradio/blocks/modulators/blks2_packet_demod.xml)
===================================================================
--- grc/trunk/src/grc_gnuradio/blocks/error_correction/blks2_packet_decoder.xml 
                        (rev 0)
+++ grc/trunk/src/grc_gnuradio/blocks/error_correction/blks2_packet_decoder.xml 
2008-05-19 03:01:08 UTC (rev 8442)
@@ -0,0 +1,82 @@
+<?xml version="1.0"?>
+<!DOCTYPE block SYSTEM "../block.dtd">
+<!-- 
+###################################################
+##Packet Decoder
+###################################################
+ -->
+<block>
+       <name>Packet Decoder</name>
+       <key>blks2_packet_decoder</key>
+       <import>from grc_gnuradio import blks2 as grc_blks2</import>
+       <import>from gnuradio import gr</import>
+       <make>grc_blks2.packet_decoder(
+       item_size_out=$type.size*$vlen, 
+       access_code=$access_code, 
+       threshold=$threshold,
+)</make>
+       <param>
+               <name>Output Type</name>
+               <key>type</key>
+               <value>float</value>
+               <type>enum</type>
+               <option>
+                       <name>Complex</name>
+                       <key>complex</key>
+                       <opt>size:gr.sizeof_gr_complex</opt>                    
                
+               </option>
+               <option>
+                       <name>Float</name>
+                       <key>float</key>
+                       <opt>size:gr.sizeof_float</opt>                 
+               </option>
+               <option>
+                       <name>Int</name>
+                       <key>int</key>
+                       <opt>size:gr.sizeof_int</opt>                           
+               </option>
+               <option>
+                       <name>Short</name>
+                       <key>short</key>
+                       <opt>size:gr.sizeof_short</opt>                         
        
+               </option>
+               <option>
+                       <name>Byte</name>
+                       <key>byte</key>
+                       <opt>size:gr.sizeof_char</opt>                          
                
+               </option>
+       </param>
+       <param>
+               <name>Access Code</name>
+               <key>access_code</key>
+               <value></value>
+               <type>string</type>     
+       </param>
+       <param>
+               <name>Threshold</name>
+               <key>threshold</key>
+               <value>-1</value>
+               <type>int</type>        
+       </param>
+       <param>
+               <name>Vec Length</name>
+               <key>vlen</key>
+               <value>1</value>
+               <type>int</type>                
+       </param>
+       <check>$vlen &gt; 0</check>
+       <sink>
+               <name>in</name>
+               <type>byte</type>
+       </sink>
+       <source>
+               <name>out</name>
+               <type>$type</type>
+               <vlen>$vlen</vlen>
+       </source>
+       <doc>
+Packet decoder block, for use with the gnuradio demodulator blocks: gmsk, psk, 
qam.
+
+Access Code: string of 1's and 0's, leave blank for default.   
+       </doc>
+</block>

Copied: 
grc/trunk/src/grc_gnuradio/blocks/error_correction/blks2_packet_encoder.xml 
(from rev 8440, 
grc/trunk/src/grc_gnuradio/blocks/modulators/blks2_packet_mod.xml)
===================================================================
--- grc/trunk/src/grc_gnuradio/blocks/error_correction/blks2_packet_encoder.xml 
                        (rev 0)
+++ grc/trunk/src/grc_gnuradio/blocks/error_correction/blks2_packet_encoder.xml 
2008-05-19 03:01:08 UTC (rev 8442)
@@ -0,0 +1,118 @@
+<?xml version="1.0"?>
+<!DOCTYPE block SYSTEM "../block.dtd">
+<!-- 
+###################################################
+##Packet Encoder
+###################################################
+ -->
+<block>
+       <name>Packet Encoder</name>
+       <key>blks2_packet_encoder</key>
+       <import>from grc_gnuradio import blks2 as grc_blks2</import>
+       <import>from gnuradio import gr</import>
+       <make>grc_blks2.packet_encoder(
+       item_size_in=$type.size*$vlen, 
+       samples_per_symbol=$samples_per_symbol, 
+       bits_per_symbol=$bits_per_symbol,
+       access_code=$access_code, 
+       pad_for_usrp=$pad_for_usrp,
+       payload_length=$payload_length, 
+)</make>
+       <param>
+               <name>Input Type</name>
+               <key>type</key>
+               <value>float</value>
+               <type>enum</type>
+               <option>
+                       <name>Complex</name>
+                       <key>complex</key>
+                       <opt>size:gr.sizeof_gr_complex</opt>                    
                
+               </option>
+               <option>
+                       <name>Float</name>
+                       <key>float</key>
+                       <opt>size:gr.sizeof_float</opt>                 
+               </option>
+               <option>
+                       <name>Int</name>
+                       <key>int</key>
+                       <opt>size:gr.sizeof_int</opt>                           
+               </option>
+               <option>
+                       <name>Short</name>
+                       <key>short</key>
+                       <opt>size:gr.sizeof_short</opt>                         
        
+               </option>
+               <option>
+                       <name>Byte</name>
+                       <key>byte</key>
+                       <opt>size:gr.sizeof_char</opt>                          
                
+               </option>
+       </param>
+       <param>
+               <name>Samples/Symbol</name>
+               <key>samples_per_symbol</key>
+               <type>int</type>        
+       </param>
+       <param>
+               <name>Bits/Symbol</name>
+               <key>bits_per_symbol</key>
+               <type>int</type>        
+       </param>
+       <param>
+               <name>Access Code</name>
+               <key>access_code</key>
+               <value></value>
+               <type>string</type>     
+       </param>
+       <param>
+               <name>Pad for USRP</name>
+               <key>pad_for_usrp</key>
+               <type>enum</type>
+               <option>
+                       <name>Yes</name>
+                       <key>True</key>                                 
+               </option>
+               <option>
+                       <name>No</name>
+                       <key>False</key>                                        
+               </option>
+       </param>
+       <param>
+               <name>Payload Length</name>
+               <key>payload_length</key>
+               <value>-1</value>
+               <type>int</type>        
+       </param>
+       <param>
+               <name>Vec Length</name>
+               <key>vlen</key>
+               <value>1</value>
+               <type>int</type>                
+       </param>
+       <check>$vlen &gt; 0</check>
+       <sink>
+               <name>in</name>
+               <type>$type</type>
+               <vlen>$vlen</vlen>
+       </sink>
+       <source>
+               <name>out</name>
+               <type>byte</type>
+       </source>
+       <doc>
+Packet encoder block, for use with the gnuradio modulator blocks: gmsk, psk, 
qam.
+
+Access Code: string of 1's and 0's, leave blank for default.
+
+Bits/Symbol should be set accordingly: 
+       gmsk -> 1
+       dbpsk -> 1
+       dqpsk -> 2
+       d8psk -> 3
+       qam8 -> 3
+       qam16 -> 4
+       qam64 -> 6
+       qam256 -> 8     
+       </doc>
+</block>

Deleted: grc/trunk/src/grc_gnuradio/blocks/modulators/blks2_packet_demod.xml

Deleted: grc/trunk/src/grc_gnuradio/blocks/modulators/blks2_packet_mod.xml

Modified: grc/trunk/src/grc_gnuradio/data/block_tree.xml
===================================================================
--- grc/trunk/src/grc_gnuradio/data/block_tree.xml      2008-05-19 02:36:00 UTC 
(rev 8441)
+++ grc/trunk/src/grc_gnuradio/data/block_tree.xml      2008-05-19 03:01:08 UTC 
(rev 8442)
@@ -199,14 +199,15 @@
                <block>blks2_qamx_mod</block>
                <block>blks2_qamx_demod</block>
                
-               <block>blks2_packet_mod</block>
-               <block>blks2_packet_demod</block>
-               
                <block>blks2_synthesis_filterbank</block>
                <block>blks2_analysis_filterbank</block>
        </cat>
        <cat>
-               <name>Error Correction</name>           
+               <name>Error Correction</name>   
+               
+               <block>blks2_packet_decoder</block>
+               <block>blks2_packet_encoder</block>
+                       
                <block>gr_encode_ccsds_27_bb</block>
                <block>gr_decode_ccsds_27_fb</block>
        </cat>

Modified: grc/trunk/src/grc_gnuradio/wxgui/callback_controls.py
===================================================================
--- grc/trunk/src/grc_gnuradio/wxgui/callback_controls.py       2008-05-19 
02:36:00 UTC (rev 8441)
+++ grc/trunk/src/grc_gnuradio/wxgui/callback_controls.py       2008-05-19 
03:01:08 UTC (rev 8442)
@@ -73,7 +73,7 @@
                A change is detected. Call the callback.
                """
                try: self.call()
-               except Exception: print >> sys.stderr, 'Error in exec callback 
from handle changed.'    
+               except Exception, e: print >> sys.stderr, 'Error in exec 
callback from handle changed.\n', e    
 
        def get_value(self):
                """!
@@ -219,7 +219,7 @@
                self.text_box.SetValue(str(new_value))
                self._value = new_value
                try: self.call()
-               except Exception: print >> sys.stderr, 'Error in exec callback 
from handle scroll.'
+               except Exception, e: print >> sys.stderr, 'Error in exec 
callback from handle scroll.\n', e
                
        def _handle_enter(self, event=None):
                """!
@@ -229,5 +229,5 @@
                self._set_slider_value(new_value)
                self._value = new_value
                try: self.call()
-               except Exception: print >> sys.stderr, 'Error in exec callback 
from handle enter.'
+               except Exception, e: print >> sys.stderr, 'Error in exec 
callback from handle enter.\n', e
        





reply via email to

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