From 5d69a524f81f234b3fbc41d49ba18d6f6886baba Mon Sep 17 00:00:00 2001
From: jcorgan <jcorgan@221aa14e-8319-0410-a670-987f0aec2ac5>
Date: Thu, 3 Aug 2006 04:51:51 +0000
Subject: Houston, we have a trunk.

git-svn-id: http://gnuradio.org/svn/gnuradio/trunk@3122 221aa14e-8319-0410-a670-987f0aec2ac5
---
 gnuradio-examples/python/gmsk2/gmsk_test.py | 115 ++++++++++++++++++++++++++++
 1 file changed, 115 insertions(+)
 create mode 100755 gnuradio-examples/python/gmsk2/gmsk_test.py

(limited to 'gnuradio-examples/python/gmsk2/gmsk_test.py')

diff --git a/gnuradio-examples/python/gmsk2/gmsk_test.py b/gnuradio-examples/python/gmsk2/gmsk_test.py
new file mode 100755
index 0000000000..7ae69a0a94
--- /dev/null
+++ b/gnuradio-examples/python/gmsk2/gmsk_test.py
@@ -0,0 +1,115 @@
+#!/usr/bin/env python
+
+from gnuradio import gr, blks
+from gnuradio.eng_option import eng_option
+from optparse import OptionParser
+import random
+import struct
+
+#import os
+#print os.getpid()
+#raw_input('Attach and press enter')
+
+
+class my_graph(gr.flow_graph):
+
+    def __init__(self, rx_callback, spb, bt, SNR, freq_error):
+        gr.flow_graph.__init__(self)
+
+        fg = self
+
+        # Tuning Parameters
+        gain_mu = 0.002*spb
+        omega = spb*(1+freq_error)
+
+        # transmitter
+        self.packet_transmitter = blks.gmsk2_mod_pkts(fg, spb=spb, bt=bt)
+
+        # add some noise
+        add = gr.add_cc()
+        noise = gr.noise_source_c(gr.GR_GAUSSIAN, pow(10.0,-SNR/20.0))
+
+        # channel filter
+        rx_filt_taps = gr.firdes.low_pass(1,spb,0.8,0.1,gr.firdes.WIN_HANN)
+        rx_filt = gr.fir_filter_ccf(1,rx_filt_taps)
+
+        # receiver
+        self.packet_receiver = blks.gmsk2_demod_pkts(fg, callback=rx_callback,
+                                                     spb=spb, gain_mu=gain_mu,
+                                                     freq_error=freq_error, omega=omega)
+
+        fg.connect (self.packet_transmitter, (add,0))
+        fg.connect (noise, (add,1))
+        fg.connect(add, rx_filt, self.packet_receiver)
+
+
+class stats(object):
+    def __init__(self):
+        self.npkts = 0
+        self.nright = 0
+        
+def main():
+    st = stats()
+    
+    def send_pkt(payload='', eof=False):
+        fg.packet_transmitter.send_pkt(payload, eof)
+
+    def rx_callback(ok, payload):
+        st.npkts += 1
+        if ok:
+            st.nright += 1
+        if len(payload) <= 16:
+            print "ok = %5r  payload = '%s'  %d/%d" % (ok, payload, st.nright, st.npkts)
+        else:
+            (pktno,) = struct.unpack('!H', payload[0:2])
+            print "ok = %5r  pktno = %4d  len(payload) = %4d  %d/%d" % (ok, pktno, len(payload),
+                                                                        st.nright, st.npkts)
+
+
+    parser = OptionParser (option_class=eng_option)
+    parser.add_option("-M", "--megabytes", type="eng_float", default=1,
+                      help="set megabytes to transmit [default=%default]")
+    parser.add_option("-s", "--size", type="eng_float", default=1500,
+                      help="set packet size [default=%default]")
+    parser.add_option("","--spb", type=int, default=4,
+                      help="set samples per baud to SPB [default=%default]")
+    parser.add_option("", "--bt", type="eng_float", default=0.3,
+                      help="set bandwidth time product for Gaussian filter [default=%default]")
+    parser.add_option("", "--snr", type="eng_float", default=20,
+                      help="set SNR in dB for simulation [default=%default]")
+    parser.add_option("", "--freq-error", type="eng_float", default=0,
+                      help="set frequency error for simulation [default=%default]")
+    (options, args) = parser.parse_args ()
+
+    if len(args) != 0:
+        parser.print_help()
+        sys.exit(1)
+
+    pkt_size = int(options.size)
+
+    fg = my_graph(rx_callback, options.spb, options.bt, options.snr, options.freq_error)
+    fg.start()
+
+    nbytes = int(1e6 * options.megabytes)
+    n = 0
+    pktno = 0
+
+    send_pkt('Hello World')
+
+    # generate and send packets
+    while n < nbytes:
+        send_pkt(struct.pack('!H', pktno) + (pkt_size - 2) * chr(pktno & 0xff))
+        n += pkt_size
+        pktno += 1
+
+    send_pkt('Goodbye World')
+    send_pkt(eof=True)             # tell modulator we're not sending any more pkts
+
+    fg.wait()
+
+
+if __name__ == '__main__':
+    try:
+        main()
+    except KeyboardInterrupt:
+        pass
-- 
cgit v1.2.3