diff options
author | Ben Reynwar | 2010-12-03 21:25:47 -0700 |
---|---|---|
committer | Ben Reynwar | 2010-12-03 21:25:47 -0700 |
commit | 26e7851318dfc691fd4412823a392a15bd1c475e (patch) | |
tree | a77231e27770a27bc8409c58f396611f7321add8 /gnuradio-examples/python | |
parent | 5ec67cd49bf164117ee9ec7de37d83b1b6b2d76c (diff) | |
download | gnuradio-26e7851318dfc691fd4412823a392a15bd1c475e.tar.gz gnuradio-26e7851318dfc691fd4412823a392a15bd1c475e.tar.bz2 gnuradio-26e7851318dfc691fd4412823a392a15bd1c475e.zip |
Added a new example python script (a stripped down version of benchmark_loopback.py).
Made minor change to blks2.demod_pkts.
Diffstat (limited to 'gnuradio-examples/python')
-rw-r--r-- | gnuradio-examples/python/digital/simple.py | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/gnuradio-examples/python/digital/simple.py b/gnuradio-examples/python/digital/simple.py new file mode 100644 index 000000000..6d340db36 --- /dev/null +++ b/gnuradio-examples/python/digital/simple.py @@ -0,0 +1,64 @@ + +from gnuradio import gr, blks2, packet_utils + +# Some constants +TX_AMPLITUDE = 0.25 +SAMPLE_RATE = 1e5 +# NOISE_VOLTAGE = 0.01 +NOISE_VOLTAGE = 0.01 +# FREQUENCY_OFFSET = 0 +FREQUENCY_OFFSET = 0.01 +TIMING_OFFSET = 1.0 +SAMPLES_PER_SYMBOL = 2 +GAIN = 1.0 +SW_DECIM = 1 +BAND_MIDPOINT = 1.0 +BAND_WIDTH = 0.5 + +# Modulation/Demodulation methods +modulator = blks2.dbpsk2_mod() +demodulator = blks2.dbpsk2_demod() + +#Transmission Blocks +packet_transmitter = blks2.mod_pkts(modulator, access_code=None, msgq_limit=4, + pad_for_usrp=True) +amp = gr.multiply_const_cc(TX_AMPLITUDE) +throttle = gr.throttle(gr.sizeof_gr_complex, SAMPLE_RATE) +# Channel +channel = gr.channel_model(NOISE_VOLTAGE, FREQUENCY_OFFSET, TIMING_OFFSET) +# Receiver Blocks +chan_coeffs = gr.firdes.low_pass(GAIN, SW_DECIM * SAMPLES_PER_SYMBOL, + BAND_MIDPOINT, BAND_WIDTH, gr.firdes.WIN_HANN) +channel_filter = gr.fft_filter_ccc(SW_DECIM, chan_coeffs) +packet_receiver = blks2.demod_pkts(demodulator, access_code=None, callback=None, + threshold=-1) +# Put it all together and start it up (although nothing will be done +# until we send some packets). +tb = gr.top_block() +tb.connect(packet_transmitter, amp, throttle, channel, channel_filter, + packet_receiver) +tb.start() + +# The queue into which recieved packets are placed +pkq = packet_receiver._rcvd_pktq + +# The function to create a packet and place it in a queue to be sent. +sender = packet_transmitter.send_pkt + +# Some some packets (The second will not be recieved because it gets cut off +# before it can finish. I think this occurs during modulation.) +sender('hello there I wonder how long this needs to be before I start to see any errors.') +sender('world') +sender(eof=True) + +# Wait for all the packets to get sent and received. +tb.wait() + +# Check how many messages have been received and print them. +cnt = pkq.count() +print('There are %s messages' % cnt) +for a in range(0, cnt): + msg = pkq.delete_head() + ok, payload = packet_utils.unmake_packet(msg.to_string(), int(msg.arg1())) + print("Message %s is %s" % (a, payload)) + |