Hi all- I am testing out the blks2.mod_pkts & blks2.demod_pkts with something similar to what is in the benchmark_loopback example, only I do not use the USRP at all. Basically, I am transfering the contents of one audio file to another by way of a mod/demod packet chain, and hoping to see the same complete, intact audio file come out the other side. Relevant code follows:
class gmsk_tester(gr.top_block): def __init__(self, rx_callback): gr.top_block.__init__(self, "gmsk_tester") self.mod = gmsk_mod() self.pkt_tx = mod_pkts(self.mod) self.demod = gmsk_demod() self.pkt_rx = demod_pkts(self.demod, callback=rx_callback) self.connect(self.pkt_tx, self.pkt_rx) def main(): src_fn = 'data.ogg' dst_fn = 'data2.ogg' src_file = file(src_fn, 'r') src_data = src_file.read() src_file.close() global dst_file dst_file = file(dst_fn, 'w') def rx_callback(ok, payload): global dst_file dst_file.write(payload) gt = gmsk_tester(rx_callback) gt.start() try: i = 0 pkt_size = 800 pkt_data = src_data[i:i+pkt_size] while len(pkt_data) > 0: print len(pkt_data) gt.pkt_tx.send_pkt(pkt_data) i = i+pkt_size pkt_data = src_data[i:i+pkt_size] except: pass gt.pkt_tx.send_pkt('') gt.pkt_tx.send_pkt(eof=True) gt.wait() #time.sleep(1) dst_file.flush() if __name__ == '__main__': main() Sometimes this code runs to completion without complaint, sometimes at the end I get: Exception in thread Thread-1 (most likely raised during interpreter shutdown): Traceback (most recent call last): File "threading.py", line 460, in __bootstrap File "/usr/local/lib/python2.5/site-packages/gnuradio/blksimpl2/pkt.py", line 153, in run <type 'exceptions.AttributeError'>: 'NoneType' object has no attribute 'unmake_packet' Unhandled exception in thread started by Error in sys.excepthook: Original exception was: If I uncomment the sleep, I never see this message. So: Q1) Any idea what this error is all about? Is this a race condition that needs to be addressed, or am I doing something wrong? Q2) The original audio file is 350.0KB. Sometimes the resulting audio file is complete, other times it never gets the last few KB (ends up 341.0KB, for example). How do I ensure that all the bytes make it across successfully? Q3) What is the effect of packet size? Is there an optimum size? A max size? For USRP, packets need to be padded to a multiple of XXX? Q4) Some examples use gr.enable_realtime_scheduling(). What is the effect of this, and do I need it? I note that it requires a sudo. Thanks for your time! -Steven
_______________________________________________ Discuss-gnuradio mailing list Discuss-gnuradio@gnu.org http://lists.gnu.org/mailman/listinfo/discuss-gnuradio