From a88e67cb485d6b4b7bc21aa3c9dedbab37190cb9 Mon Sep 17 00:00:00 2001 From: andreas128 Date: Sun, 22 Jan 2017 00:51:47 +0000 Subject: am-am am-pm diagram in syncmeasurement.ipynb --- dab_tuner.ipynb | 324 ++ dab_tuner.py | 225 ++ gr-dpd/grc/CMakeLists.txt | 4 +- gr-dpd/grc/dpd_lut.xml | 72 + gr-dpd/include/dpd/CMakeLists.txt | 4 +- gr-dpd/include/dpd/lut.h | 66 + gr-dpd/python/CMakeLists.txt | 2 + gr-dpd/python/qa_lut.py | 41 + gr-dpd/swig/dpd_swig.i | 6 + grc/live_analyse_dab_poly.grc | 5454 +++++++++++++++++++++++++++++++++ grc/live_analyse_dab_poly.py | 346 +++ grc/live_analyse_poly.grc | 5142 +++++++++++++++++++++++++++++++ grc/live_analyse_two_tone.grc | 5582 ++++++++++++++++++++++++++++++++++ grc/live_analyse_two_tone_lut.grc | 6007 +++++++++++++++++++++++++++++++++++++ live_analyse_py.grc | 87 +- src/dab_tuning_lib.py | 31 + src/dab_util.py | 42 + src/two_tone_lib.py | 41 +- sync-measurement.ipynb | 358 +++ two_tone_tuner.ipynb | 85 +- 20 files changed, 23858 insertions(+), 61 deletions(-) create mode 100644 dab_tuner.ipynb create mode 100644 dab_tuner.py create mode 100644 gr-dpd/grc/dpd_lut.xml create mode 100644 gr-dpd/include/dpd/lut.h create mode 100755 gr-dpd/python/qa_lut.py create mode 100644 grc/live_analyse_dab_poly.grc create mode 100755 grc/live_analyse_dab_poly.py create mode 100644 grc/live_analyse_poly.grc create mode 100644 grc/live_analyse_two_tone.grc create mode 100644 grc/live_analyse_two_tone_lut.grc create mode 100644 src/dab_tuning_lib.py create mode 100644 src/dab_util.py create mode 100644 sync-measurement.ipynb diff --git a/dab_tuner.ipynb b/dab_tuner.ipynb new file mode 100644 index 0000000..635ee35 --- /dev/null +++ b/dab_tuner.ipynb @@ -0,0 +1,324 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import time\n", + "import src.gen_source as gen_source\n", + "import src.two_tone_lib as tt\n", + "\n", + "import src.tcp_async as tcp_async\n", + "import src.tcp_sync as tcp_sync\n", + "import src.dab_util as du\n", + "import src.dab_tuning_lib as dt\n", + "\n", + "\n", + "from live_analyse_py import live_analyse_py" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "try:\n", + " __IPYTHON__\n", + " reload(tcp_async)\n", + " reload(tcp_sync)\n", + " reload(gen_source)\n", + " reload(tt)\n", + " reload(du)\n", + " reload(dt)\n", + "except:\n", + " pass" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "sync = tcp_sync.UhdSyncMsg(packet_size=4*8192,\n", + " packet_type=\"\".join([\"f\"]*8192))\n", + "async = tcp_async.UhdAsyncMsg()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "top = live_analyse_py()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "top.start()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "top.set_txgain(86)\n", + "top.set_rxgain(10)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "top.blocks_file_source_0.open(\"./../dab_normalized_c64.dat\", True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "sync.has_msg()\n", + "async.has_msg()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "tt.gen_two_tone(debug = True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "msgs = sync.get_msgs(1)\n", + "msgs = [np.fft.fftshift(msg) for msg in msgs]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def measure(param):\n", + " n_avg = 20\n", + " x2, x3, x4, x5, x6, x7, x8 = param\n", + " \n", + " repeat = True\n", + " while repeat:\n", + " #tt.gen_two_tone(debug = True, predist=tt.predist_poly, par=(x2, x3, x4))\n", + " \n", + " top.dpd_memless_poly_0.set_a1(1)\n", + " top.dpd_memless_poly_0.set_a2(x2)\n", + " top.dpd_memless_poly_0.set_a3(x3)\n", + " top.dpd_memless_poly_0.set_a4(x4)\n", + " top.dpd_memless_poly_0.set_a5(x5)\n", + " top.dpd_memless_poly_0.set_a6(x6)\n", + " top.dpd_memless_poly_0.set_a7(x7)\n", + " top.dpd_memless_poly_0.set_a8(x8)\n", + " \n", + " sync.has_msg()\n", + " np.array(sync.get_msgs(0.8))\n", + " msgs = np.array(sync.get_msgs(n_avg))\n", + " scores = np.zeros(n_avg)\n", + " msgs = [np.fft.fftshift(msg) for msg in msgs]\n", + " \n", + " if async.has_msg():\n", + " print (\"repeat due to async message\")\n", + " continue\n", + " \n", + " a = np.array(msgs)\n", + " mean_msg = a.mean(axis = 0)\n", + " suffix = \"x_2_%.3f_x_3_%.3f_x_4_%.3fx_5_%.3fx_6_%.3fx_7_%.3fx_8_%.3f\" % \\\n", + " (x2, x3, x4, x5, x6, x7, x8)\n", + " #sig_to_noise = tt.analyse_power_spec(mean_msg, debug=True, debug_path=\"/tmp/out\", suffix=suffix)\n", + " for i in range(n_avg):\n", + " if i == 0:\n", + " scores[i] = dt.calc_signal_sholder_ratio(msgs[0], sampling_rate=8000000, debug=True, debug_path=\"/tmp/out\", suffix=suffix)\n", + " else:\n", + " scores[i] = dt.calc_signal_sholder_ratio(msgs[0], sampling_rate=8000000)\n", + " \n", + " score = np.mean(scores)\n", + " print(score, x2, x3, x4, x5, x6, x7, x8)\n", + " repeat = False\n", + " \n", + " return score" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def simple_opt(pars, i, d, func):\n", + " par = pars[i]\n", + " test_pars = []\n", + " for x in [-1, 0, 1]:\n", + " new_par = list(pars)\n", + " new_par[i] = par + x * d \n", + " test_pars.append(new_par)\n", + " res = [func(par_new) for par_new in test_pars]\n", + " sel = np.argmax(res)\n", + " best_par = test_pars[sel]\n", + " return best_par\n", + "\n", + "#pars = [1,1,1]\n", + "#i_rand = np.random.randint(0, len(pars))\n", + "#pars = simple_opt(pars, i_rand, 0.01, lambda x:np.sum(x))\n", + "#pars" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "top.set_txgain(86)\n", + "top.set_rxgain(5)\n", + "\n", + "pars = np.zeros(7)\n", + "\n", + "for i in range(10000):\n", + " i_rand = np.random.randint(0, len(pars))\n", + " pars = simple_opt(pars, i_rand, 0.005, measure)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "top.set_txgain(85)\n", + "\n", + "params = []\n", + "for x2 in np.linspace(-0.1, 0.1, num = 11):\n", + " for x3 in np.linspace(-0.1, 0.1, num = 11):\n", + " for x4 in np.linspace(-0.1, 0.1, num = 11):\n", + " params.append((x2, x3, x4))\n", + " \n", + "t_start = time.time()\n", + "for idx, param in enumerate(params):\n", + " measure(param)\n", + " time_per_element = (time.time() - t_start) / (idx + 1)\n", + " print (\"Time per Element \" + str(time_per_element) +\n", + " \", total: \" + str(time_per_element * len(params)),\n", + " \", left: \" + str(time_per_element * (len(params) - 1 - idx))\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "sync.stop()\n", + "async.stop()\n", + "top.stop()\n", + "top.wait()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/dab_tuner.py b/dab_tuner.py new file mode 100644 index 0000000..d2d6df4 --- /dev/null +++ b/dab_tuner.py @@ -0,0 +1,225 @@ + +# coding: utf-8 + +# In[1]: + +get_ipython().magic('matplotlib inline') +import matplotlib.pyplot as plt +import numpy as np +import time +import src.gen_source as gen_source +import src.two_tone_lib as tt + +import src.tcp_async as tcp_async +import src.tcp_sync as tcp_sync +import src.dab_util as du +import src.dab_tuning_lib as dt + + +from live_analyse_py import live_analyse_py + + +# In[15]: + +try: + __IPYTHON__ + reload(tcp_async) + reload(tcp_sync) + reload(gen_source) + reload(tt) + reload(du) + reload(dt) +except: + pass + + +# In[3]: + +sync = tcp_sync.UhdSyncMsg(packet_size=4*8192, + packet_type="".join(["f"]*8192)) +async = tcp_async.UhdAsyncMsg() + + +# In[4]: + +top = live_analyse_py() + + +# In[5]: + +top.start() + + +# In[6]: + +top.set_txgain(86) +top.set_rxgain(10) + + +# In[7]: + +top.blocks_file_source_0.open("./../dab_normalized_c64.dat", True) + + +# In[8]: + +sync.has_msg() +async.has_msg() + + +# In[9]: + +tt.gen_two_tone(debug = True) + + +# In[10]: + +msgs = sync.get_msgs(1) +msgs = [np.fft.fftshift(msg) for msg in msgs] + + +# In[18]: + +def measure(param): + n_avg = 20 + x2, x3, x4, x5, x6, x7, x8 = param + + repeat = True + while repeat: + #tt.gen_two_tone(debug = True, predist=tt.predist_poly, par=(x2, x3, x4)) + + top.dpd_memless_poly_0.set_a1(1) + top.dpd_memless_poly_0.set_a2(x2) + top.dpd_memless_poly_0.set_a3(x3) + top.dpd_memless_poly_0.set_a4(x4) + top.dpd_memless_poly_0.set_a5(x5) + top.dpd_memless_poly_0.set_a6(x6) + top.dpd_memless_poly_0.set_a7(x7) + top.dpd_memless_poly_0.set_a8(x8) + + sync.has_msg() + np.array(sync.get_msgs(0.8)) + msgs = np.array(sync.get_msgs(n_avg)) + scores = np.zeros(n_avg) + msgs = [np.fft.fftshift(msg) for msg in msgs] + + if async.has_msg(): + print ("repeat due to async message") + continue + + a = np.array(msgs) + mean_msg = a.mean(axis = 0) + suffix = "x_2_%.3f_x_3_%.3f_x_4_%.3fx_5_%.3fx_6_%.3fx_7_%.3fx_8_%.3f" % (x2, x3, x4, x5, x6, x7, x8) + #sig_to_noise = tt.analyse_power_spec(mean_msg, debug=True, debug_path="/tmp/out", suffix=suffix) + for i in range(n_avg): + if i == 0: + scores[i] = dt.calc_signal_sholder_ratio(msgs[0], sampling_rate=8000000, debug=True, debug_path="/tmp/out", suffix=suffix) + else: + scores[i] = dt.calc_signal_sholder_ratio(msgs[0], sampling_rate=8000000) + + score = np.mean(scores) + print(score, x2, x3, x4, x5, x6, x7, x8) + repeat = False + + return score + + +# In[16]: + +def simple_opt(pars, i, d, func): + par = pars[i] + test_pars = [] + for x in [-1, 0, 1]: + new_par = list(pars) + new_par[i] = par + x * d + test_pars.append(new_par) + res = [func(par_new) for par_new in test_pars] + sel = np.argmax(res) + best_par = test_pars[sel] + return best_par + +#pars = [1,1,1] +#i_rand = np.random.randint(0, len(pars)) +#pars = simple_opt(pars, i_rand, 0.01, lambda x:np.sum(x)) +#pars + + +# In[ ]: + +top.set_txgain(86) +top.set_rxgain(5) + +pars = np.zeros(7) + +for i in range(10000): + i_rand = np.random.randint(0, len(pars)) + pars = simple_opt(pars, i_rand, 0.005, measure) + + +# In[ ]: + + + + +# In[ ]: + + + + +# In[ ]: + + + + +# In[15]: + +top.set_txgain(85) + +params = [] +for x2 in np.linspace(-0.1, 0.1, num = 11): + for x3 in np.linspace(-0.1, 0.1, num = 11): + for x4 in np.linspace(-0.1, 0.1, num = 11): + params.append((x2, x3, x4)) + +t_start = time.time() +for idx, param in enumerate(params): + measure(param) + time_per_element = (time.time() - t_start) / (idx + 1) + print ("Time per Element " + str(time_per_element) + + ", total: " + str(time_per_element * len(params)), + ", left: " + str(time_per_element * (len(params) - 1 - idx)) + ) + + +# In[ ]: + + + + +# In[31]: + +sync.stop() +async.stop() +top.stop() +top.wait() + + +# In[ ]: + + + + +# In[ ]: + + + + +# In[ ]: + + + + +# In[ ]: + + + diff --git a/gr-dpd/grc/CMakeLists.txt b/gr-dpd/grc/CMakeLists.txt index a8e0497..3c4feb1 100644 --- a/gr-dpd/grc/CMakeLists.txt +++ b/gr-dpd/grc/CMakeLists.txt @@ -18,5 +18,7 @@ # Boston, MA 02110-1301, USA. install(FILES - dpd_memless_poly.xml DESTINATION share/gnuradio/grc/blocks + dpd_memless_poly.xml + dpd_lut.xml + dpd_clut.xml DESTINATION share/gnuradio/grc/blocks ) diff --git a/gr-dpd/grc/dpd_lut.xml b/gr-dpd/grc/dpd_lut.xml new file mode 100644 index 0000000..6af793e --- /dev/null +++ b/gr-dpd/grc/dpd_lut.xml @@ -0,0 +1,72 @@ + + + lut + dpd_lut + dpd + import dpd + dpd.lut($a1, $a2, $a3, $a4, $a5, $a6, $a7, $a8) + set_a1($a1) + set_a2($a2) + set_a3($a3) + set_a4($a4) + set_a5($a5) + set_a6($a6) + set_a7($a7) + set_a8($a8) + + a1 + a1 + 0 + real + + + a2 + a2 + 0 + real + + + a3 + a3 + 0 + real + + + a4 + a4 + 0 + real + + + a5 + a5 + 0 + real + + + a6 + a6 + 0 + real + + + a7 + a7 + 0 + real + + + a8 + a8 + 0 + real + + + in + complex + + + out + complex + + diff --git a/gr-dpd/include/dpd/CMakeLists.txt b/gr-dpd/include/dpd/CMakeLists.txt index 700317c..6598918 100644 --- a/gr-dpd/include/dpd/CMakeLists.txt +++ b/gr-dpd/include/dpd/CMakeLists.txt @@ -22,5 +22,7 @@ ######################################################################## install(FILES api.h - memless_poly.h DESTINATION include/dpd + memless_poly.h + lut.h + clut.h DESTINATION include/dpd ) diff --git a/gr-dpd/include/dpd/lut.h b/gr-dpd/include/dpd/lut.h new file mode 100644 index 0000000..7bf568a --- /dev/null +++ b/gr-dpd/include/dpd/lut.h @@ -0,0 +1,66 @@ +/* -*- c++ -*- */ +/* + * Copyright 2017 <+YOU OR YOUR COMPANY+>. + * + * This is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3, or (at your option) + * any later version. + * + * This software is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this software; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + + +#ifndef INCLUDED_DPD_LUT_H +#define INCLUDED_DPD_LUT_H + +#include +#include + +namespace gr { + namespace dpd { + + /*! + * \brief <+description of block+> + * \ingroup dpd + * + */ + class DPD_API lut : virtual public gr::block + { + public: + typedef boost::shared_ptr sptr; + + /*! + * \brief Return a shared_ptr to a new instance of dpd::lut. + * + * To avoid accidental use of raw pointers, dpd::lut's + * constructor is in a private implementation + * class. dpd::lut::make is the public interface for + * creating new instances. + */ + static sptr make(float a1, float a2, float a3, float a4, float a5, float a6, float a7, float a8); + + virtual void set_a1(float sens) = 0; + virtual void set_a2(float sens) = 0; + virtual void set_a3(float sens) = 0; + virtual void set_a4(float sens) = 0; + virtual void set_a5(float sens) = 0; + virtual void set_a6(float sens) = 0; + virtual void set_a7(float sens) = 0; + virtual void set_a8(float sens) = 0; + + }; + + } // namespace dpd +} // namespace gr + +#endif /* INCLUDED_DPD_LUT_H */ + diff --git a/gr-dpd/python/CMakeLists.txt b/gr-dpd/python/CMakeLists.txt index e876217..afb0f59 100644 --- a/gr-dpd/python/CMakeLists.txt +++ b/gr-dpd/python/CMakeLists.txt @@ -42,3 +42,5 @@ include(GrTest) set(GR_TEST_TARGET_DEPS gnuradio-dpd) set(GR_TEST_PYTHON_DIRS ${CMAKE_BINARY_DIR}/swig) GR_ADD_TEST(qa_memless_poly ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/qa_memless_poly.py) +GR_ADD_TEST(qa_lut ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/qa_lut.py) +GR_ADD_TEST(qa_clut ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/qa_clut.py) diff --git a/gr-dpd/python/qa_lut.py b/gr-dpd/python/qa_lut.py new file mode 100755 index 0000000..d1cf636 --- /dev/null +++ b/gr-dpd/python/qa_lut.py @@ -0,0 +1,41 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# +# Copyright 2017 <+YOU OR YOUR COMPANY+>. +# +# This is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3, or (at your option) +# any later version. +# +# This software is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this software; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, +# Boston, MA 02110-1301, USA. +# + +from gnuradio import gr, gr_unittest +from gnuradio import blocks +import dpd_swig as dpd + +class qa_lut (gr_unittest.TestCase): + + def setUp (self): + self.tb = gr.top_block () + + def tearDown (self): + self.tb = None + + def test_001_t (self): + # set up fg + self.tb.run () + # check data + + +if __name__ == '__main__': + gr_unittest.run(qa_lut, "qa_lut.xml") diff --git a/gr-dpd/swig/dpd_swig.i b/gr-dpd/swig/dpd_swig.i index 18f93ab..5636efe 100644 --- a/gr-dpd/swig/dpd_swig.i +++ b/gr-dpd/swig/dpd_swig.i @@ -9,8 +9,14 @@ %{ #include "dpd/memless_poly.h" +#include "dpd/lut.h" +#include "dpd/clut.h" %} %include "dpd/memless_poly.h" GR_SWIG_BLOCK_MAGIC2(dpd, memless_poly); +%include "dpd/lut.h" +GR_SWIG_BLOCK_MAGIC2(dpd, lut); +%include "dpd/clut.h" +GR_SWIG_BLOCK_MAGIC2(dpd, clut); diff --git a/grc/live_analyse_dab_poly.grc b/grc/live_analyse_dab_poly.grc new file mode 100644 index 0000000..cddfe6e --- /dev/null +++ b/grc/live_analyse_dab_poly.grc @@ -0,0 +1,5454 @@ + + + + Wed Oct 28 18:49:28 2015 + + options + + author + + + + window_size + 2000,2000 + + + category + Custom + + + comment + + + + description + + + + _enabled + True + + + _coordinate + (8, 8) + + + _rotation + 0 + + + generate_options + qt_gui + + + hier_block_src_path + .: + + + id + live_analyse_dab_poly + + + max_nouts + 0 + + + qt_qss_theme + + + + realtime_scheduling + + + + run_command + {python} -u {filename} + + + run_options + prompt + + + run + True + + + thread_safe_setters + + + + title + + + + + variable_qtgui_range + + comment + + + + value + 0 + + + _enabled + True + + + _coordinate + (24, 553) + + + gui_hint + + + + _rotation + 0 + + + id + a_1 + + + label + a_1 + + + min_len + 200 + + + orient + Qt.Horizontal + + + start + -1 + + + step + 0.001 + + + stop + 1 + + + rangeType + float + + + widget + counter_slider + + + + variable_qtgui_range + + comment + + + + value + 0 + + + _enabled + True + + + _coordinate + (136, 553) + + + gui_hint + + + + _rotation + 0 + + + id + a_2 + + + label + a_2 + + + min_len + 200 + + + orient + Qt.Horizontal + + + start + -1 + + + step + 0.001 + + + stop + 1 + + + rangeType + float + + + widget + counter_slider + + + + variable_qtgui_range + + comment + + + + value + 0 + + + _enabled + True + + + _coordinate + (248, 553) + + + gui_hint + + + + _rotation + 0 + + + id + a_3 + + + label + a_3 + + + min_len + 200 + + + orient + Qt.Horizontal + + + start + -1 + + + step + 0.001 + + + stop + 1 + + + rangeType + float + + + widget + counter_slider + + + + variable_qtgui_range + + comment + + + + value + 0 + + + _enabled + True + + + _coordinate + (360, 553) + + + gui_hint + + + + _rotation + 0 + + + id + a_4 + + + label + a_4 + + + min_len + 200 + + + orient + Qt.Horizontal + + + start + -1 + + + step + 0.001 + + + stop + 1 + + + rangeType + float + + + widget + counter_slider + + + + variable_qtgui_range + + comment + + + + value + 0 + + + _enabled + True + + + _coordinate + (24, 681) + + + gui_hint + + + + _rotation + 0 + + + id + a_5 + + + label + a_5 + + + min_len + 200 + + + orient + Qt.Horizontal + + + start + -1 + + + step + 0.001 + + + stop + 1 + + + rangeType + float + + + widget + counter_slider + + + + variable_qtgui_range + + comment + + + + value + 0 + + + _enabled + True + + + _coordinate + (136, 681) + + + gui_hint + + + + _rotation + 0 + + + id + a_6 + + + label + a_6 + + + min_len + 200 + + + orient + Qt.Horizontal + + + start + -1 + + + step + 0.001 + + + stop + 1 + + + rangeType + float + + + widget + counter_slider + + + + variable_qtgui_range + + comment + + + + value + 0 + + + _enabled + True + + + _coordinate + (248, 681) + + + gui_hint + + + + _rotation + 0 + + + id + a_7 + + + label + a_7 + + + min_len + 200 + + + orient + Qt.Horizontal + + + start + -1 + + + step + 0.001 + + + stop + 1 + + + rangeType + float + + + widget + counter_slider + + + + variable_qtgui_range + + comment + + + + value + 0 + + + _enabled + True + + + _coordinate + (360, 681) + + + gui_hint + + + + _rotation + 0 + + + id + a_8 + + + label + a_8 + + + min_len + 200 + + + orient + Qt.Horizontal + + + start + -1 + + + step + 0.001 + + + stop + 1 + + + rangeType + float + + + widget + counter_slider + + + + variable_qtgui_range + + comment + + + + value + 0.4 + + + _enabled + True + + + _coordinate + (128, 376) + + + gui_hint + + + + _rotation + 0 + + + id + ampl + + + label + + + + min_len + 200 + + + orient + Qt.Horizontal + + + start + -1 + + + step + 0.0001 + + + stop + 1 + + + rangeType + float + + + widget + counter_slider + + + + variable + + comment + + + + _enabled + True + + + _coordinate + (104, 101) + + + _rotation + 0 + + + id + f1 + + + value + samp_rate / 4 + + + + variable + + comment + + + + _enabled + True + + + _coordinate + (1384, 573) + + + _rotation + 0 + + + id + f2 + + + value + samp_rate / 3.875 + + + + variable + + comment + + + + _enabled + True + + + _coordinate + (8, 157) + + + _rotation + 0 + + + id + freq + + + value + 222e6 + + + + variable_qtgui_range + + comment + + + + value + 10 + + + _enabled + True + + + _coordinate + (8, 225) + + + gui_hint + + + + _rotation + 0 + + + id + rxgain + + + label + rxgain + + + min_len + 200 + + + orient + Qt.Horizontal + + + start + 0 + + + step + 1 + + + stop + 100 + + + rangeType + float + + + widget + counter_slider + + + + variable + + comment + + + + _enabled + True + + + _coordinate + (8, 85) + + + _rotation + 0 + + + id + samp_rate + + + value + 8e6 + + + + variable_qtgui_range + + comment + + + + value + 1 + + + _enabled + True + + + _coordinate + (488, 544) + + + gui_hint + + + + _rotation + 0 + + + id + shift_freq + + + label + + + + min_len + 200 + + + orient + Qt.Horizontal + + + start + -8000000 + + + step + 1 + + + stop + 8000000 + + + rangeType + float + + + widget + counter_slider + + + + variable_qtgui_range + + comment + + + + value + 80 + + + _enabled + True + + + _coordinate + (8, 345) + + + gui_hint + + + + _rotation + 0 + + + id + txgain + + + label + txgain + + + min_len + 200 + + + orient + Qt.Horizontal + + + start + 0 + + + step + 1 + + + stop + 100 + + + rangeType + float + + + widget + counter_slider + + + + analog_sig_source_x + + amp + 1 + + + alias + + + + comment + + + + affinity + + + + _enabled + True + + + freq + shift_freq + + + _coordinate + (216, 160) + + + _rotation + 0 + + + id + analog_sig_source_x_0 + + + maxoutbuf + 0 + + + minoutbuf + 0 + + + offset + 0 + + + type + complex + + + samp_rate + samp_rate + + + waveform + analog.GR_COS_WAVE + + + + blocks_complex_to_real + + alias + + + + comment + + + + affinity + + + + _enabled + 0 + + + _coordinate + (920, 361) + + + _rotation + 0 + + + id + blocks_complex_to_real_0 + + + maxoutbuf + 0 + + + minoutbuf + 0 + + + vlen + 1 + + + + blocks_file_source + + alias + + + + comment + + + + affinity + + + + _enabled + True + + + file + /home/andreas/dab/ODR-StaticPrecorrection/input.dat + + + _coordinate + (224, 61) + + + _rotation + 0 + + + id + blocks_file_source_0 + + + maxoutbuf + 0 + + + minoutbuf + 0 + + + type + complex + + + repeat + True + + + vlen + 1 + + + + blocks_message_burst_source + + alias + + + + comment + + + + affinity + + + + _enabled + True + + + _coordinate + (824, 449) + + + _rotation + 0 + + + id + blocks_message_burst_source_0 + + + maxoutbuf + 0 + + + minoutbuf + 0 + + + type + byte + + + vlen + 1 + + + + blocks_multiply_const_vxx + + alias + + + + comment + + + + const + 1 + + + affinity + + + + _enabled + True + + + _coordinate + (744, 124) + + + _rotation + 0 + + + id + blocks_multiply_const_vxx_1 + + + type + complex + + + maxoutbuf + 0 + + + minoutbuf + 0 + + + vlen + 1 + + + + blocks_multiply_xx + + alias + + + + comment + + + + affinity + + + + _enabled + True + + + _coordinate + (440, 113) + + + _rotation + 0 + + + id + blocks_multiply_xx_0 + + + type + complex + + + maxoutbuf + 0 + + + minoutbuf + 0 + + + num_inputs + 2 + + + vlen + 1 + + + + blocks_null_sink + + alias + + + + bus_conns + [[0,],] + + + comment + + + + affinity + + + + _enabled + True + + + _coordinate + (1248, 449) + + + _rotation + 0 + + + id + blocks_null_sink_0_2 + + + type + byte + + + num_inputs + 1 + + + vlen + 1 + + + + blocks_null_sink + + alias + + + + bus_conns + [[0,],] + + + comment + + + + affinity + + + + _enabled + True + + + _coordinate + (976, 409) + + + _rotation + 0 + + + id + blocks_null_sink_0_2_0 + + + type + complex + + + num_inputs + 1 + + + vlen + 1 + + + + dpd_memless_poly + + alias + + + + comment + + + + affinity + + + + _enabled + True + + + _coordinate + (576, 75) + + + _rotation + 0 + + + id + dpd_memless_poly_0 + + + maxoutbuf + 0 + + + minoutbuf + 0 + + + a1 + a_1 + + + a2 + a_2 + + + a3 + a_3 + + + a4 + a_4 + + + a5 + a_5 + + + a6 + a_6 + + + a7 + a_7 + + + a8 + a_8 + + + + qtgui_const_sink_x + + autoscale + False + + + alias + + + + comment + + + + affinity + + + + _enabled + 0 + + + _coordinate + (920, 197) + + + gui_hint + + + + _rotation + 0 + + + grid + False + + + id + qtgui_const_sink_x_0 + + + legend + True + + + alpha1 + 1.0 + + + color1 + "blue" + + + label1 + + + + marker1 + 0 + + + style1 + 0 + + + width1 + 1 + + + alpha10 + 1.0 + + + color10 + "red" + + + label10 + + + + marker10 + 0 + + + style10 + 0 + + + width10 + 1 + + + alpha2 + 1.0 + + + color2 + "red" + + + label2 + + + + marker2 + 0 + + + style2 + 0 + + + width2 + 1 + + + alpha3 + 1.0 + + + color3 + "red" + + + label3 + + + + marker3 + 0 + + + style3 + 0 + + + width3 + 1 + + + alpha4 + 1.0 + + + color4 + "red" + + + label4 + + + + marker4 + 0 + + + style4 + 0 + + + width4 + 1 + + + alpha5 + 1.0 + + + color5 + "red" + + + label5 + + + + marker5 + 0 + + + style5 + 0 + + + width5 + 1 + + + alpha6 + 1.0 + + + color6 + "red" + + + label6 + + + + marker6 + 0 + + + style6 + 0 + + + width6 + 1 + + + alpha7 + 1.0 + + + color7 + "red" + + + label7 + + + + marker7 + 0 + + + style7 + 0 + + + width7 + 1 + + + alpha8 + 1.0 + + + color8 + "red" + + + label8 + + + + marker8 + 0 + + + style8 + 0 + + + width8 + 1 + + + alpha9 + 1.0 + + + color9 + "red" + + + label9 + + + + marker9 + 0 + + + style9 + 0 + + + width9 + 1 + + + name + "" + + + nconnections + 2 + + + size + 1024 + + + tr_chan + 0 + + + tr_level + 0.0 + + + tr_mode + qtgui.TRIG_MODE_FREE + + + tr_slope + qtgui.TRIG_SLOPE_POS + + + tr_tag + "" + + + type + complex + + + update_time + 0.10 + + + xmax + 2 + + + xmin + -2 + + + ymax + 2 + + + ymin + -2 + + + + qtgui_freq_sink_x + + autoscale + False + + + average + 1.0 + + + bw + samp_rate + + + alias + + + + fc + 0 + + + comment + + + + ctrlpanel + False + + + affinity + + + + _enabled + 1 + + + fftsize + 16000 + + + _coordinate + (928, 278) + + + gui_hint + + + + _rotation + 0 + + + grid + False + + + id + qtgui_freq_sink_x_0_0 + + + legend + True + + + alpha1 + 1.0 + + + color1 + "blue" + + + label1 + + + + width1 + 1 + + + alpha10 + 1.0 + + + color10 + "dark blue" + + + label10 + + + + width10 + 1 + + + alpha2 + 1.0 + + + color2 + "red" + + + label2 + + + + width2 + 1 + + + alpha3 + 1.0 + + + color3 + "green" + + + label3 + + + + width3 + 1 + + + alpha4 + 1.0 + + + color4 + "black" + + + label4 + + + + width4 + 1 + + + alpha5 + 1.0 + + + color5 + "cyan" + + + label5 + + + + width5 + 1 + + + alpha6 + 1.0 + + + color6 + "magenta" + + + label6 + + + + width6 + 1 + + + alpha7 + 1.0 + + + color7 + "yellow" + + + label7 + + + + width7 + 1 + + + alpha8 + 1.0 + + + color8 + "dark red" + + + label8 + + + + width8 + 1 + + + alpha9 + 1.0 + + + color9 + "dark green" + + + label9 + + + + width9 + 1 + + + maxoutbuf + 0 + + + minoutbuf + 0 + + + name + "" + + + nconnections + 1 + + + showports + True + + + freqhalf + True + + + tr_chan + 0 + + + tr_level + 0.0 + + + tr_mode + qtgui.TRIG_MODE_FREE + + + tr_tag + "" + + + type + complex + + + update_time + 0.1 + + + wintype + firdes.WIN_BLACKMAN_hARRIS + + + ymax + 10 + + + ymin + -140 + + + + qtgui_freq_sink_x + + autoscale + False + + + average + 1.0 + + + bw + samp_rate + + + alias + + + + fc + 0 + + + comment + + + + ctrlpanel + False + + + affinity + + + + _enabled + 0 + + + fftsize + 16000 + + + _coordinate + (1320, 142) + + + gui_hint + + + + _rotation + 0 + + + grid + False + + + id + qtgui_freq_sink_x_0_0_0 + + + legend + True + + + alpha1 + 1.0 + + + color1 + "blue" + + + label1 + + + + width1 + 1 + + + alpha10 + 1.0 + + + color10 + "dark blue" + + + label10 + + + + width10 + 1 + + + alpha2 + 1.0 + + + color2 + "red" + + + label2 + + + + width2 + 1 + + + alpha3 + 1.0 + + + color3 + "green" + + + label3 + + + + width3 + 1 + + + alpha4 + 1.0 + + + color4 + "black" + + + label4 + + + + width4 + 1 + + + alpha5 + 1.0 + + + color5 + "cyan" + + + label5 + + + + width5 + 1 + + + alpha6 + 1.0 + + + color6 + "magenta" + + + label6 + + + + width6 + 1 + + + alpha7 + 1.0 + + + color7 + "yellow" + + + label7 + + + + width7 + 1 + + + alpha8 + 1.0 + + + color8 + "dark red" + + + label8 + + + + width8 + 1 + + + alpha9 + 1.0 + + + color9 + "dark green" + + + label9 + + + + width9 + 1 + + + maxoutbuf + 0 + + + minoutbuf + 0 + + + name + "" + + + nconnections + 1 + + + showports + True + + + freqhalf + True + + + tr_chan + 0 + + + tr_level + 0.0 + + + tr_mode + qtgui.TRIG_MODE_FREE + + + tr_tag + "" + + + type + complex + + + update_time + 0.10 + + + wintype + firdes.WIN_BLACKMAN_hARRIS + + + ymax + 10 + + + ymin + -140 + + + + qtgui_time_sink_x + + autoscale + False + + + alias + + + + comment + + + + ctrlpanel + False + + + affinity + + + + entags + True + + + _enabled + 0 + + + _coordinate + (1320, 222) + + + gui_hint + + + + _rotation + 0 + + + grid + False + + + id + qtgui_time_sink_x_0 + + + legend + True + + + alpha1 + 1.0 + + + color1 + "blue" + + + label1 + + + + marker1 + -1 + + + style1 + 1 + + + width1 + 1 + + + alpha10 + 1.0 + + + color10 + "blue" + + + label10 + + + + marker10 + -1 + + + style10 + 1 + + + width10 + 1 + + + alpha2 + 1.0 + + + color2 + "red" + + + label2 + + + + marker2 + -1 + + + style2 + 1 + + + width2 + 1 + + + alpha3 + 1.0 + + + color3 + "green" + + + label3 + + + + marker3 + -1 + + + style3 + 1 + + + width3 + 1 + + + alpha4 + 1.0 + + + color4 + "black" + + + label4 + + + + marker4 + -1 + + + style4 + 1 + + + width4 + 1 + + + alpha5 + 1.0 + + + color5 + "cyan" + + + label5 + + + + marker5 + -1 + + + style5 + 1 + + + width5 + 1 + + + alpha6 + 1.0 + + + color6 + "magenta" + + + label6 + + + + marker6 + -1 + + + style6 + 1 + + + width6 + 1 + + + alpha7 + 1.0 + + + color7 + "yellow" + + + label7 + + + + marker7 + -1 + + + style7 + 1 + + + width7 + 1 + + + alpha8 + 1.0 + + + color8 + "dark red" + + + label8 + + + + marker8 + -1 + + + style8 + 1 + + + width8 + 1 + + + alpha9 + 1.0 + + + color9 + "dark green" + + + label9 + + + + marker9 + -1 + + + style9 + 1 + + + width9 + 1 + + + name + "" + + + nconnections + 1 + + + size + 1024 + + + srate + samp_rate + + + tr_chan + 0 + + + tr_delay + 0 + + + tr_level + 0.0 + + + tr_mode + qtgui.TRIG_MODE_FREE + + + tr_slope + qtgui.TRIG_SLOPE_POS + + + tr_tag + "" + + + type + complex + + + update_time + 0.10 + + + ylabel + Amplitude + + + yunit + "" + + + ymax + 1 + + + ymin + -1 + + + + qtgui_time_sink_x + + autoscale + False + + + alias + + + + comment + + + + ctrlpanel + False + + + affinity + + + + entags + True + + + _enabled + 0 + + + _coordinate + (1112, 342) + + + gui_hint + + + + _rotation + 0 + + + grid + False + + + id + qtgui_time_sink_x_0_0 + + + legend + True + + + alpha1 + 1.0 + + + color1 + "blue" + + + label1 + + + + marker1 + -1 + + + style1 + 1 + + + width1 + 1 + + + alpha10 + 1.0 + + + color10 + "blue" + + + label10 + + + + marker10 + -1 + + + style10 + 1 + + + width10 + 1 + + + alpha2 + 1.0 + + + color2 + "red" + + + label2 + + + + marker2 + -1 + + + style2 + 1 + + + width2 + 1 + + + alpha3 + 1.0 + + + color3 + "green" + + + label3 + + + + marker3 + -1 + + + style3 + 1 + + + width3 + 1 + + + alpha4 + 1.0 + + + color4 + "black" + + + label4 + + + + marker4 + -1 + + + style4 + 1 + + + width4 + 1 + + + alpha5 + 1.0 + + + color5 + "cyan" + + + label5 + + + + marker5 + -1 + + + style5 + 1 + + + width5 + 1 + + + alpha6 + 1.0 + + + color6 + "magenta" + + + label6 + + + + marker6 + -1 + + + style6 + 1 + + + width6 + 1 + + + alpha7 + 1.0 + + + color7 + "yellow" + + + label7 + + + + marker7 + -1 + + + style7 + 1 + + + width7 + 1 + + + alpha8 + 1.0 + + + color8 + "dark red" + + + label8 + + + + marker8 + -1 + + + style8 + 1 + + + width8 + 1 + + + alpha9 + 1.0 + + + color9 + "dark green" + + + label9 + + + + marker9 + -1 + + + style9 + 1 + + + width9 + 1 + + + name + "" + + + nconnections + 1 + + + size + 1024 + + + srate + samp_rate + + + tr_chan + 0 + + + tr_delay + 0 + + + tr_level + 0.0 + + + tr_mode + qtgui.TRIG_MODE_FREE + + + tr_slope + qtgui.TRIG_SLOPE_POS + + + tr_tag + "" + + + type + float + + + update_time + 0.10 + + + ylabel + Amplitude + + + yunit + "" + + + ymax + 1 + + + ymin + -1 + + + + qtgui_time_sink_x + + autoscale + False + + + alias + + + + comment + + + + ctrlpanel + False + + + affinity + + + + entags + True + + + _enabled + 0 + + + _coordinate + (1216, 46) + + + gui_hint + + + + _rotation + 0 + + + grid + False + + + id + qtgui_time_sink_x_1 + + + legend + True + + + alpha1 + 1.0 + + + color1 + "blue" + + + label1 + + + + marker1 + -1 + + + style1 + 1 + + + width1 + 1 + + + alpha10 + 1.0 + + + color10 + "blue" + + + label10 + + + + marker10 + -1 + + + style10 + 1 + + + width10 + 1 + + + alpha2 + 1.0 + + + color2 + "red" + + + label2 + + + + marker2 + -1 + + + style2 + 1 + + + width2 + 1 + + + alpha3 + 1.0 + + + color3 + "green" + + + label3 + + + + marker3 + -1 + + + style3 + 1 + + + width3 + 1 + + + alpha4 + 1.0 + + + color4 + "black" + + + label4 + + + + marker4 + -1 + + + style4 + 1 + + + width4 + 1 + + + alpha5 + 1.0 + + + color5 + "cyan" + + + label5 + + + + marker5 + -1 + + + style5 + 1 + + + width5 + 1 + + + alpha6 + 1.0 + + + color6 + "magenta" + + + label6 + + + + marker6 + -1 + + + style6 + 1 + + + width6 + 1 + + + alpha7 + 1.0 + + + color7 + "yellow" + + + label7 + + + + marker7 + -1 + + + style7 + 1 + + + width7 + 1 + + + alpha8 + 1.0 + + + color8 + "dark red" + + + label8 + + + + marker8 + -1 + + + style8 + 1 + + + width8 + 1 + + + alpha9 + 1.0 + + + color9 + "dark green" + + + label9 + + + + marker9 + -1 + + + style9 + 1 + + + width9 + 1 + + + name + "" + + + nconnections + 1 + + + size + 1024 + + + srate + samp_rate + + + tr_chan + 0 + + + tr_delay + 0 + + + tr_level + 0.0 + + + tr_mode + qtgui.TRIG_MODE_FREE + + + tr_slope + qtgui.TRIG_SLOPE_POS + + + tr_tag + "" + + + type + complex + + + update_time + 0.10 + + + ylabel + Amplitude + + + yunit + "" + + + ymax + 1 + + + ymin + -1 + + + + uhd_amsg_source + + alias + + + + comment + + + + affinity + + + + dev_addr + + + + _enabled + True + + + _coordinate + (528, 449) + + + _rotation + 0 + + + id + uhd_amsg_source_0 + + + maxoutbuf + 0 + + + minoutbuf + 0 + + + + uhd_usrp_sink + + alias + + + + ant0 + + + + bw0 + 0 + + + center_freq0 + freq + + + norm_gain0 + False + + + gain0 + txgain + + + ant10 + + + + bw10 + 0 + + + center_freq10 + 0 + + + norm_gain10 + False + + + gain10 + 0 + + + ant11 + + + + bw11 + 0 + + + center_freq11 + 0 + + + norm_gain11 + False + + + gain11 + 0 + + + ant12 + + + + bw12 + 0 + + + center_freq12 + 0 + + + norm_gain12 + False + + + gain12 + 0 + + + ant13 + + + + bw13 + 0 + + + center_freq13 + 0 + + + norm_gain13 + False + + + gain13 + 0 + + + ant14 + + + + bw14 + 0 + + + center_freq14 + 0 + + + norm_gain14 + False + + + gain14 + 0 + + + ant15 + + + + bw15 + 0 + + + center_freq15 + 0 + + + norm_gain15 + False + + + gain15 + 0 + + + ant16 + + + + bw16 + 0 + + + center_freq16 + 0 + + + norm_gain16 + False + + + gain16 + 0 + + + ant17 + + + + bw17 + 0 + + + center_freq17 + 0 + + + norm_gain17 + False + + + gain17 + 0 + + + ant18 + + + + bw18 + 0 + + + center_freq18 + 0 + + + norm_gain18 + False + + + gain18 + 0 + + + ant19 + + + + bw19 + 0 + + + center_freq19 + 0 + + + norm_gain19 + False + + + gain19 + 0 + + + ant1 + + + + bw1 + 0 + + + center_freq1 + 0 + + + norm_gain1 + False + + + gain1 + 0 + + + ant20 + + + + bw20 + 0 + + + center_freq20 + 0 + + + norm_gain20 + False + + + gain20 + 0 + + + ant21 + + + + bw21 + 0 + + + center_freq21 + 0 + + + norm_gain21 + False + + + gain21 + 0 + + + ant22 + + + + bw22 + 0 + + + center_freq22 + 0 + + + norm_gain22 + False + + + gain22 + 0 + + + ant23 + + + + bw23 + 0 + + + center_freq23 + 0 + + + norm_gain23 + False + + + gain23 + 0 + + + ant24 + + + + bw24 + 0 + + + center_freq24 + 0 + + + norm_gain24 + False + + + gain24 + 0 + + + ant25 + + + + bw25 + 0 + + + center_freq25 + 0 + + + norm_gain25 + False + + + gain25 + 0 + + + ant26 + + + + bw26 + 0 + + + center_freq26 + 0 + + + norm_gain26 + False + + + gain26 + 0 + + + ant27 + + + + bw27 + 0 + + + center_freq27 + 0 + + + norm_gain27 + False + + + gain27 + 0 + + + ant28 + + + + bw28 + 0 + + + center_freq28 + 0 + + + norm_gain28 + False + + + gain28 + 0 + + + ant29 + + + + bw29 + 0 + + + center_freq29 + 0 + + + norm_gain29 + False + + + gain29 + 0 + + + ant2 + + + + bw2 + 0 + + + center_freq2 + 0 + + + norm_gain2 + False + + + gain2 + 0 + + + ant30 + + + + bw30 + 0 + + + center_freq30 + 0 + + + norm_gain30 + False + + + gain30 + 0 + + + ant31 + + + + bw31 + 0 + + + center_freq31 + 0 + + + norm_gain31 + False + + + gain31 + 0 + + + ant3 + + + + bw3 + 0 + + + center_freq3 + 0 + + + norm_gain3 + False + + + gain3 + 0 + + + ant4 + + + + bw4 + 0 + + + center_freq4 + 0 + + + norm_gain4 + False + + + gain4 + 0 + + + ant5 + + + + bw5 + 0 + + + center_freq5 + 0 + + + norm_gain5 + False + + + gain5 + 0 + + + ant6 + + + + bw6 + 0 + + + center_freq6 + 0 + + + norm_gain6 + False + + + gain6 + 0 + + + ant7 + + + + bw7 + 0 + + + center_freq7 + 0 + + + norm_gain7 + False + + + gain7 + 0 + + + ant8 + + + + bw8 + 0 + + + center_freq8 + 0 + + + norm_gain8 + False + + + gain8 + 0 + + + ant9 + + + + bw9 + 0 + + + center_freq9 + 0 + + + norm_gain9 + False + + + gain9 + 0 + + + clock_rate + 0.0 + + + comment + + + + affinity + + + + dev_addr + "" + + + dev_args + "" + + + _enabled + True + + + _coordinate + (1320, 319) + + + _rotation + 0 + + + id + uhd_usrp_sink_0 + + + type + fc32 + + + clock_source0 + + + + sd_spec0 + + + + time_source0 + + + + clock_source1 + + + + sd_spec1 + + + + time_source1 + + + + clock_source2 + + + + sd_spec2 + + + + time_source2 + + + + clock_source3 + + + + sd_spec3 + + + + time_source3 + + + + clock_source4 + + + + sd_spec4 + + + + time_source4 + + + + clock_source5 + + + + sd_spec5 + + + + time_source5 + + + + clock_source6 + + + + sd_spec6 + + + + time_source6 + + + + clock_source7 + + + + sd_spec7 + + + + time_source7 + + + + nchan + 1 + + + num_mboards + 1 + + + samp_rate + samp_rate + + + hide_cmd_port + False + + + stream_args + + + + stream_chans + [] + + + sync + + + + len_tag_name + + + + otw + + + + + uhd_usrp_source + + alias + + + + ant0 + + + + bw0 + 0 + + + center_freq0 + freq + + + dc_offs_enb0 + "" + + + iq_imbal_enb0 + "" + + + norm_gain0 + False + + + gain0 + rxgain + + + ant10 + + + + bw10 + 0 + + + center_freq10 + 0 + + + dc_offs_enb10 + "" + + + iq_imbal_enb10 + "" + + + norm_gain10 + False + + + gain10 + 0 + + + ant11 + + + + bw11 + 0 + + + center_freq11 + 0 + + + dc_offs_enb11 + "" + + + iq_imbal_enb11 + "" + + + norm_gain11 + False + + + gain11 + 0 + + + ant12 + + + + bw12 + 0 + + + center_freq12 + 0 + + + dc_offs_enb12 + "" + + + iq_imbal_enb12 + "" + + + norm_gain12 + False + + + gain12 + 0 + + + ant13 + + + + bw13 + 0 + + + center_freq13 + 0 + + + dc_offs_enb13 + "" + + + iq_imbal_enb13 + "" + + + norm_gain13 + False + + + gain13 + 0 + + + ant14 + + + + bw14 + 0 + + + center_freq14 + 0 + + + dc_offs_enb14 + "" + + + iq_imbal_enb14 + "" + + + norm_gain14 + False + + + gain14 + 0 + + + ant15 + + + + bw15 + 0 + + + center_freq15 + 0 + + + dc_offs_enb15 + "" + + + iq_imbal_enb15 + "" + + + norm_gain15 + False + + + gain15 + 0 + + + ant16 + + + + bw16 + 0 + + + center_freq16 + 0 + + + dc_offs_enb16 + "" + + + iq_imbal_enb16 + "" + + + norm_gain16 + False + + + gain16 + 0 + + + ant17 + + + + bw17 + 0 + + + center_freq17 + 0 + + + dc_offs_enb17 + "" + + + iq_imbal_enb17 + "" + + + norm_gain17 + False + + + gain17 + 0 + + + ant18 + + + + bw18 + 0 + + + center_freq18 + 0 + + + dc_offs_enb18 + "" + + + iq_imbal_enb18 + "" + + + norm_gain18 + False + + + gain18 + 0 + + + ant19 + + + + bw19 + 0 + + + center_freq19 + 0 + + + dc_offs_enb19 + "" + + + iq_imbal_enb19 + "" + + + norm_gain19 + False + + + gain19 + 0 + + + ant1 + + + + bw1 + 0 + + + center_freq1 + 0 + + + dc_offs_enb1 + "" + + + iq_imbal_enb1 + "" + + + norm_gain1 + False + + + gain1 + 0 + + + ant20 + + + + bw20 + 0 + + + center_freq20 + 0 + + + dc_offs_enb20 + "" + + + iq_imbal_enb20 + "" + + + norm_gain20 + False + + + gain20 + 0 + + + ant21 + + + + bw21 + 0 + + + center_freq21 + 0 + + + dc_offs_enb21 + "" + + + iq_imbal_enb21 + "" + + + norm_gain21 + False + + + gain21 + 0 + + + ant22 + + + + bw22 + 0 + + + center_freq22 + 0 + + + dc_offs_enb22 + "" + + + iq_imbal_enb22 + "" + + + norm_gain22 + False + + + gain22 + 0 + + + ant23 + + + + bw23 + 0 + + + center_freq23 + 0 + + + dc_offs_enb23 + "" + + + iq_imbal_enb23 + "" + + + norm_gain23 + False + + + gain23 + 0 + + + ant24 + + + + bw24 + 0 + + + center_freq24 + 0 + + + dc_offs_enb24 + "" + + + iq_imbal_enb24 + "" + + + norm_gain24 + False + + + gain24 + 0 + + + ant25 + + + + bw25 + 0 + + + center_freq25 + 0 + + + dc_offs_enb25 + "" + + + iq_imbal_enb25 + "" + + + norm_gain25 + False + + + gain25 + 0 + + + ant26 + + + + bw26 + 0 + + + center_freq26 + 0 + + + dc_offs_enb26 + "" + + + iq_imbal_enb26 + "" + + + norm_gain26 + False + + + gain26 + 0 + + + ant27 + + + + bw27 + 0 + + + center_freq27 + 0 + + + dc_offs_enb27 + "" + + + iq_imbal_enb27 + "" + + + norm_gain27 + False + + + gain27 + 0 + + + ant28 + + + + bw28 + 0 + + + center_freq28 + 0 + + + dc_offs_enb28 + "" + + + iq_imbal_enb28 + "" + + + norm_gain28 + False + + + gain28 + 0 + + + ant29 + + + + bw29 + 0 + + + center_freq29 + 0 + + + dc_offs_enb29 + "" + + + iq_imbal_enb29 + "" + + + norm_gain29 + False + + + gain29 + 0 + + + ant2 + + + + bw2 + 0 + + + center_freq2 + 0 + + + dc_offs_enb2 + "" + + + iq_imbal_enb2 + "" + + + norm_gain2 + False + + + gain2 + 0 + + + ant30 + + + + bw30 + 0 + + + center_freq30 + 0 + + + dc_offs_enb30 + "" + + + iq_imbal_enb30 + "" + + + norm_gain30 + False + + + gain30 + 0 + + + ant31 + + + + bw31 + 0 + + + center_freq31 + 0 + + + dc_offs_enb31 + "" + + + iq_imbal_enb31 + "" + + + norm_gain31 + False + + + gain31 + 0 + + + ant3 + + + + bw3 + 0 + + + center_freq3 + 0 + + + dc_offs_enb3 + "" + + + iq_imbal_enb3 + "" + + + norm_gain3 + False + + + gain3 + 0 + + + ant4 + + + + bw4 + 0 + + + center_freq4 + 0 + + + dc_offs_enb4 + "" + + + iq_imbal_enb4 + "" + + + norm_gain4 + False + + + gain4 + 0 + + + ant5 + + + + bw5 + 0 + + + center_freq5 + 0 + + + dc_offs_enb5 + "" + + + iq_imbal_enb5 + "" + + + norm_gain5 + False + + + gain5 + 0 + + + ant6 + + + + bw6 + 0 + + + center_freq6 + 0 + + + dc_offs_enb6 + "" + + + iq_imbal_enb6 + "" + + + norm_gain6 + False + + + gain6 + 0 + + + ant7 + + + + bw7 + 0 + + + center_freq7 + 0 + + + dc_offs_enb7 + "" + + + iq_imbal_enb7 + "" + + + norm_gain7 + False + + + gain7 + 0 + + + ant8 + + + + bw8 + 0 + + + center_freq8 + 0 + + + dc_offs_enb8 + "" + + + iq_imbal_enb8 + "" + + + norm_gain8 + False + + + gain8 + 0 + + + ant9 + + + + bw9 + 0 + + + center_freq9 + 0 + + + dc_offs_enb9 + "" + + + iq_imbal_enb9 + "" + + + norm_gain9 + False + + + gain9 + 0 + + + clock_rate + 0.0 + + + comment + + + + affinity + + + + dev_addr + "" + + + dev_args + "" + + + _enabled + 1 + + + _coordinate + (640, 342) + + + _rotation + 0 + + + id + uhd_usrp_source_0 + + + maxoutbuf + 0 + + + clock_source0 + + + + sd_spec0 + + + + time_source0 + + + + clock_source1 + + + + sd_spec1 + + + + time_source1 + + + + clock_source2 + + + + sd_spec2 + + + + time_source2 + + + + clock_source3 + + + + sd_spec3 + + + + time_source3 + + + + clock_source4 + + + + sd_spec4 + + + + time_source4 + + + + clock_source5 + + + + sd_spec5 + + + + time_source5 + + + + clock_source6 + + + + sd_spec6 + + + + time_source6 + + + + clock_source7 + + + + sd_spec7 + + + + time_source7 + + + + minoutbuf + 0 + + + nchan + 1 + + + num_mboards + 1 + + + type + fc32 + + + samp_rate + samp_rate + + + hide_cmd_port + False + + + stream_args + + + + stream_chans + [] + + + sync + + + + otw + + + + + analog_sig_source_x_0 + blocks_multiply_xx_0 + 0 + 1 + + + blocks_complex_to_real_0 + qtgui_time_sink_x_0_0 + 0 + 0 + + + blocks_file_source_0 + blocks_multiply_xx_0 + 0 + 0 + + + blocks_message_burst_source_0 + blocks_null_sink_0_2 + 0 + 0 + + + blocks_multiply_const_vxx_1 + qtgui_const_sink_x_0 + 0 + 1 + + + blocks_multiply_const_vxx_1 + qtgui_freq_sink_x_0_0_0 + 0 + 0 + + + blocks_multiply_const_vxx_1 + qtgui_time_sink_x_0 + 0 + 0 + + + blocks_multiply_const_vxx_1 + qtgui_time_sink_x_1 + 0 + 0 + + + blocks_multiply_const_vxx_1 + uhd_usrp_sink_0 + 0 + 0 + + + blocks_multiply_xx_0 + dpd_memless_poly_0 + 0 + 0 + + + dpd_memless_poly_0 + blocks_multiply_const_vxx_1 + 0 + 0 + + + uhd_amsg_source_0 + blocks_message_burst_source_0 + msg + msg + + + uhd_usrp_source_0 + blocks_complex_to_real_0 + 0 + 0 + + + uhd_usrp_source_0 + blocks_null_sink_0_2_0 + 0 + 0 + + + uhd_usrp_source_0 + qtgui_const_sink_x_0 + 0 + 0 + + + uhd_usrp_source_0 + qtgui_freq_sink_x_0_0 + 0 + 0 + + diff --git a/grc/live_analyse_dab_poly.py b/grc/live_analyse_dab_poly.py new file mode 100755 index 0000000..8f1e443 --- /dev/null +++ b/grc/live_analyse_dab_poly.py @@ -0,0 +1,346 @@ +#!/usr/bin/env python2 +# -*- coding: utf-8 -*- +################################################## +# GNU Radio Python Flow Graph +# Title: Live Analyse Dab Poly +# Generated: Mon Jan 16 22:23:29 2017 +################################################## + +if __name__ == '__main__': + import ctypes + import sys + if sys.platform.startswith('linux'): + try: + x11 = ctypes.cdll.LoadLibrary('libX11.so') + x11.XInitThreads() + except: + print "Warning: failed to XInitThreads()" + +from PyQt4 import Qt +from gnuradio import analog +from gnuradio import blocks +from gnuradio import eng_notation +from gnuradio import gr +from gnuradio import qtgui +from gnuradio import uhd +from gnuradio.eng_option import eng_option +from gnuradio.filter import firdes +from gnuradio.qtgui import Range, RangeWidget +from optparse import OptionParser +import dpd +import sip +import sys +import time + + +class live_analyse_dab_poly(gr.top_block, Qt.QWidget): + + def __init__(self): + gr.top_block.__init__(self, "Live Analyse Dab Poly") + Qt.QWidget.__init__(self) + self.setWindowTitle("Live Analyse Dab Poly") + try: + self.setWindowIcon(Qt.QIcon.fromTheme('gnuradio-grc')) + except: + pass + self.top_scroll_layout = Qt.QVBoxLayout() + self.setLayout(self.top_scroll_layout) + self.top_scroll = Qt.QScrollArea() + self.top_scroll.setFrameStyle(Qt.QFrame.NoFrame) + self.top_scroll_layout.addWidget(self.top_scroll) + self.top_scroll.setWidgetResizable(True) + self.top_widget = Qt.QWidget() + self.top_scroll.setWidget(self.top_widget) + self.top_layout = Qt.QVBoxLayout(self.top_widget) + self.top_grid_layout = Qt.QGridLayout() + self.top_layout.addLayout(self.top_grid_layout) + + self.settings = Qt.QSettings("GNU Radio", "live_analyse_dab_poly") + self.restoreGeometry(self.settings.value("geometry").toByteArray()) + + ################################################## + # Variables + ################################################## + self.samp_rate = samp_rate = 8e6 + self.use_lut = use_lut = 1 + self.txgain = txgain = 84 + self.rxgain = rxgain = 10 + self.real = real = 1 + self.imag = imag = 1 + self.freq = freq = 222e6 + self.f_2 = f_2 = 4096000/2 + 66000 + self.f_1 = f_1 = 4096000/2 + self.f2 = f2 = samp_rate / 3.875 + self.f1 = f1 = samp_rate / 4 + self.ampl = ampl = 1 + + ################################################## + # Message Queues + ################################################## + uhd_amsg_source_0_msgq_out = blocks_message_burst_source_0_msgq_in = gr.msg_queue(2) + + ################################################## + # Blocks + ################################################## + self._use_lut_range = Range(0, 1, 0.0001, 1, 200) + self._use_lut_win = RangeWidget(self._use_lut_range, self.set_use_lut, "use_lut", "counter_slider", float) + self.top_layout.addWidget(self._use_lut_win) + self._rxgain_range = Range(0, 100, 1, 10, 200) + self._rxgain_win = RangeWidget(self._rxgain_range, self.set_rxgain, "rxgain", "counter_slider", float) + self.top_layout.addWidget(self._rxgain_win) + self._ampl_range = Range(0, 1, 0.0001, 1, 200) + self._ampl_win = RangeWidget(self._ampl_range, self.set_ampl, "ampl", "counter_slider", float) + self.top_layout.addWidget(self._ampl_win) + self.uhd_usrp_source_0 = uhd.usrp_source( + ",".join(("", "")), + uhd.stream_args( + cpu_format="fc32", + channels=range(1), + ), + ) + self.uhd_usrp_source_0.set_samp_rate(samp_rate) + self.uhd_usrp_source_0.set_center_freq(freq, 0) + self.uhd_usrp_source_0.set_gain(rxgain, 0) + self.uhd_amsg_source_0 = uhd.amsg_source(device_addr="", msgq=uhd_amsg_source_0_msgq_out) + self._txgain_range = Range(0, 100, 1, 84, 200) + self._txgain_win = RangeWidget(self._txgain_range, self.set_txgain, "txgain", "counter_slider", float) + self.top_layout.addWidget(self._txgain_win) + self._real_range = Range(-1, 1, 0.0001, 1, 200) + self._real_win = RangeWidget(self._real_range, self.set_real, "real", "counter_slider", float) + self.top_layout.addWidget(self._real_win) + self.qtgui_time_sink_x_0 = qtgui.time_sink_c( + 1024, #size + samp_rate, #samp_rate + "", #name + 2 #number of inputs + ) + self.qtgui_time_sink_x_0.set_update_time(0.10) + self.qtgui_time_sink_x_0.set_y_axis(-1, 1) + + self.qtgui_time_sink_x_0.set_y_label("Amplitude", "") + + self.qtgui_time_sink_x_0.enable_tags(-1, True) + self.qtgui_time_sink_x_0.set_trigger_mode(qtgui.TRIG_MODE_NORM, qtgui.TRIG_SLOPE_POS, 0.0, 0, 0, "") + self.qtgui_time_sink_x_0.enable_autoscale(False) + self.qtgui_time_sink_x_0.enable_grid(False) + self.qtgui_time_sink_x_0.enable_control_panel(False) + + if not True: + self.qtgui_time_sink_x_0.disable_legend() + + labels = ["", "", "", "", "", + "", "", "", "", ""] + widths = [1, 1, 1, 1, 1, + 1, 1, 1, 1, 1] + colors = ["blue", "red", "green", "black", "cyan", + "magenta", "yellow", "dark red", "dark green", "blue"] + styles = [1, 1, 1, 1, 1, + 1, 1, 1, 1, 1] + markers = [-1, -1, -1, -1, -1, + -1, -1, -1, -1, -1] + alphas = [1.0, 1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0, 1.0] + + for i in xrange(2*2): + if len(labels[i]) == 0: + if(i % 2 == 0): + self.qtgui_time_sink_x_0.set_line_label(i, "Re{{Data {0}}}".format(i/2)) + else: + self.qtgui_time_sink_x_0.set_line_label(i, "Im{{Data {0}}}".format(i/2)) + else: + self.qtgui_time_sink_x_0.set_line_label(i, labels[i]) + self.qtgui_time_sink_x_0.set_line_width(i, widths[i]) + self.qtgui_time_sink_x_0.set_line_color(i, colors[i]) + self.qtgui_time_sink_x_0.set_line_style(i, styles[i]) + self.qtgui_time_sink_x_0.set_line_marker(i, markers[i]) + self.qtgui_time_sink_x_0.set_line_alpha(i, alphas[i]) + + self._qtgui_time_sink_x_0_win = sip.wrapinstance(self.qtgui_time_sink_x_0.pyqwidget(), Qt.QWidget) + self.top_layout.addWidget(self._qtgui_time_sink_x_0_win) + self.qtgui_freq_sink_x_0_0 = qtgui.freq_sink_c( + 16000, #size + firdes.WIN_BLACKMAN_hARRIS, #wintype + 0, #fc + samp_rate, #bw + "", #name + 1 #number of inputs + ) + self.qtgui_freq_sink_x_0_0.set_update_time(0.1) + self.qtgui_freq_sink_x_0_0.set_y_axis(-140, 10) + self.qtgui_freq_sink_x_0_0.set_trigger_mode(qtgui.TRIG_MODE_FREE, 0.0, 0, "") + self.qtgui_freq_sink_x_0_0.enable_autoscale(False) + self.qtgui_freq_sink_x_0_0.enable_grid(False) + self.qtgui_freq_sink_x_0_0.set_fft_average(1.0) + self.qtgui_freq_sink_x_0_0.enable_control_panel(False) + + if not True: + self.qtgui_freq_sink_x_0_0.disable_legend() + + if "complex" == "float" or "complex" == "msg_float": + self.qtgui_freq_sink_x_0_0.set_plot_pos_half(not True) + + labels = ["", "", "", "", "", + "", "", "", "", ""] + widths = [1, 1, 1, 1, 1, + 1, 1, 1, 1, 1] + colors = ["blue", "red", "green", "black", "cyan", + "magenta", "yellow", "dark red", "dark green", "dark blue"] + alphas = [1.0, 1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0, 1.0] + for i in xrange(1): + if len(labels[i]) == 0: + self.qtgui_freq_sink_x_0_0.set_line_label(i, "Data {0}".format(i)) + else: + self.qtgui_freq_sink_x_0_0.set_line_label(i, labels[i]) + self.qtgui_freq_sink_x_0_0.set_line_width(i, widths[i]) + self.qtgui_freq_sink_x_0_0.set_line_color(i, colors[i]) + self.qtgui_freq_sink_x_0_0.set_line_alpha(i, alphas[i]) + + self._qtgui_freq_sink_x_0_0_win = sip.wrapinstance(self.qtgui_freq_sink_x_0_0.pyqwidget(), Qt.QWidget) + self.top_layout.addWidget(self._qtgui_freq_sink_x_0_0_win) + self._imag_range = Range(-1, 1, 0.0001, 1, 200) + self._imag_win = RangeWidget(self._imag_range, self.set_imag, "imag", "counter_slider", float) + self.top_layout.addWidget(self._imag_win) + self._f_2_range = Range(1, 8000000, 1, 4096000/2 + 66000, 200) + self._f_2_win = RangeWidget(self._f_2_range, self.set_f_2, "f_2", "counter_slider", float) + self.top_layout.addWidget(self._f_2_win) + self._f_1_range = Range(1, 8000000, 1, 4096000/2, 200) + self._f_1_win = RangeWidget(self._f_1_range, self.set_f_1, "f_1", "counter_slider", float) + self.top_layout.addWidget(self._f_1_win) + self.dpd_clut_0 = dpd.clut() + self.blocks_null_sink_0_2_0 = blocks.null_sink(gr.sizeof_gr_complex*1) + self.blocks_null_sink_0_2 = blocks.null_sink(gr.sizeof_char*1) + self.blocks_multiply_const_vxx_2 = blocks.multiply_const_vcc((1-use_lut, )) + self.blocks_multiply_const_vxx_1 = blocks.multiply_const_vcc((ampl, )) + self.blocks_multiply_const_vxx_0 = blocks.multiply_const_vcc((use_lut, )) + self.blocks_message_burst_source_0 = blocks.message_burst_source(gr.sizeof_char*1, blocks_message_burst_source_0_msgq_in) + self.blocks_add_xx_1 = blocks.add_vcc(1) + self.analog_sig_source_x_2 = analog.sig_source_c(samp_rate, analog.GR_TRI_WAVE, 1000, 2, -1 + -1j) + + ################################################## + # Connections + ################################################## + self.connect((self.analog_sig_source_x_2, 0), (self.blocks_multiply_const_vxx_1, 0)) + self.connect((self.blocks_add_xx_1, 0), (self.qtgui_time_sink_x_0, 0)) + self.connect((self.blocks_message_burst_source_0, 0), (self.blocks_null_sink_0_2, 0)) + self.connect((self.blocks_multiply_const_vxx_0, 0), (self.blocks_add_xx_1, 1)) + self.connect((self.blocks_multiply_const_vxx_1, 0), (self.blocks_multiply_const_vxx_2, 0)) + self.connect((self.blocks_multiply_const_vxx_1, 0), (self.dpd_clut_0, 0)) + self.connect((self.blocks_multiply_const_vxx_1, 0), (self.qtgui_time_sink_x_0, 1)) + self.connect((self.blocks_multiply_const_vxx_2, 0), (self.blocks_add_xx_1, 0)) + self.connect((self.dpd_clut_0, 0), (self.blocks_multiply_const_vxx_0, 0)) + self.connect((self.uhd_usrp_source_0, 0), (self.blocks_null_sink_0_2_0, 0)) + self.connect((self.uhd_usrp_source_0, 0), (self.qtgui_freq_sink_x_0_0, 0)) + + def closeEvent(self, event): + self.settings = Qt.QSettings("GNU Radio", "live_analyse_dab_poly") + self.settings.setValue("geometry", self.saveGeometry()) + event.accept() + + + def get_samp_rate(self): + return self.samp_rate + + def set_samp_rate(self, samp_rate): + self.samp_rate = samp_rate + self.set_f1(self.samp_rate / 4) + self.set_f2(self.samp_rate / 3.875) + self.analog_sig_source_x_2.set_sampling_freq(self.samp_rate) + self.qtgui_freq_sink_x_0_0.set_frequency_range(0, self.samp_rate) + self.uhd_usrp_source_0.set_samp_rate(self.samp_rate) + self.qtgui_time_sink_x_0.set_samp_rate(self.samp_rate) + + def get_use_lut(self): + return self.use_lut + + def set_use_lut(self, use_lut): + self.use_lut = use_lut + self.blocks_multiply_const_vxx_0.set_k((self.use_lut, )) + self.blocks_multiply_const_vxx_2.set_k((1-self.use_lut, )) + + def get_txgain(self): + return self.txgain + + def set_txgain(self, txgain): + self.txgain = txgain + + def get_rxgain(self): + return self.rxgain + + def set_rxgain(self, rxgain): + self.rxgain = rxgain + self.uhd_usrp_source_0.set_gain(self.rxgain, 0) + + + def get_real(self): + return self.real + + def set_real(self, real): + self.real = real + + def get_imag(self): + return self.imag + + def set_imag(self, imag): + self.imag = imag + + def get_freq(self): + return self.freq + + def set_freq(self, freq): + self.freq = freq + self.uhd_usrp_source_0.set_center_freq(self.freq, 0) + + def get_f_2(self): + return self.f_2 + + def set_f_2(self, f_2): + self.f_2 = f_2 + + def get_f_1(self): + return self.f_1 + + def set_f_1(self, f_1): + self.f_1 = f_1 + + def get_f2(self): + return self.f2 + + def set_f2(self, f2): + self.f2 = f2 + + def get_f1(self): + return self.f1 + + def set_f1(self, f1): + self.f1 = f1 + + def get_ampl(self): + return self.ampl + + def set_ampl(self, ampl): + self.ampl = ampl + self.blocks_multiply_const_vxx_1.set_k((self.ampl, )) + + +def main(top_block_cls=live_analyse_dab_poly, options=None): + + from distutils.version import StrictVersion + if StrictVersion(Qt.qVersion()) >= StrictVersion("4.5.0"): + style = gr.prefs().get_string('qtgui', 'style', 'raster') + Qt.QApplication.setGraphicsSystem(style) + qapp = Qt.QApplication(sys.argv) + + tb = top_block_cls() + tb.start() + tb.show() + + def quitting(): + tb.stop() + tb.wait() + qapp.connect(qapp, Qt.SIGNAL("aboutToQuit()"), quitting) + qapp.exec_() + + +if __name__ == '__main__': + main() diff --git a/grc/live_analyse_poly.grc b/grc/live_analyse_poly.grc new file mode 100644 index 0000000..f5419dc --- /dev/null +++ b/grc/live_analyse_poly.grc @@ -0,0 +1,5142 @@ + + + + Wed Oct 28 18:49:28 2015 + + options + + author + + + + window_size + 2000,2000 + + + category + Custom + + + comment + + + + description + + + + _enabled + True + + + _coordinate + (8, 8) + + + _rotation + 0 + + + generate_options + qt_gui + + + hier_block_src_path + .: + + + id + dual_tone + + + max_nouts + 0 + + + qt_qss_theme + + + + realtime_scheduling + + + + run_command + {python} -u {filename} + + + run_options + prompt + + + run + True + + + thread_safe_setters + + + + title + + + + + variable_qtgui_range + + comment + + + + value + 0 + + + _enabled + True + + + _coordinate + (24, 553) + + + gui_hint + + + + _rotation + 0 + + + id + a_1 + + + label + a_1 + + + min_len + 200 + + + orient + Qt.Horizontal + + + start + -1 + + + step + 0.001 + + + stop + 1 + + + rangeType + float + + + widget + counter_slider + + + + variable_qtgui_range + + comment + + + + value + 0 + + + _enabled + True + + + _coordinate + (136, 553) + + + gui_hint + + + + _rotation + 0 + + + id + a_2 + + + label + a_2 + + + min_len + 200 + + + orient + Qt.Horizontal + + + start + -1 + + + step + 0.001 + + + stop + 1 + + + rangeType + float + + + widget + counter_slider + + + + variable_qtgui_range + + comment + + + + value + 0 + + + _enabled + True + + + _coordinate + (248, 553) + + + gui_hint + + + + _rotation + 0 + + + id + a_3 + + + label + a_3 + + + min_len + 200 + + + orient + Qt.Horizontal + + + start + -1 + + + step + 0.001 + + + stop + 1 + + + rangeType + float + + + widget + counter_slider + + + + variable_qtgui_range + + comment + + + + value + 0 + + + _enabled + True + + + _coordinate + (360, 553) + + + gui_hint + + + + _rotation + 0 + + + id + a_4 + + + label + a_4 + + + min_len + 200 + + + orient + Qt.Horizontal + + + start + -1 + + + step + 0.001 + + + stop + 1 + + + rangeType + float + + + widget + counter_slider + + + + variable_qtgui_range + + comment + + + + value + 0 + + + _enabled + True + + + _coordinate + (24, 681) + + + gui_hint + + + + _rotation + 0 + + + id + a_5 + + + label + a_5 + + + min_len + 200 + + + orient + Qt.Horizontal + + + start + -1 + + + step + 0.001 + + + stop + 1 + + + rangeType + float + + + widget + counter_slider + + + + variable_qtgui_range + + comment + + + + value + 0 + + + _enabled + True + + + _coordinate + (136, 681) + + + gui_hint + + + + _rotation + 0 + + + id + a_6 + + + label + a_6 + + + min_len + 200 + + + orient + Qt.Horizontal + + + start + -1 + + + step + 0.001 + + + stop + 1 + + + rangeType + float + + + widget + counter_slider + + + + variable_qtgui_range + + comment + + + + value + 0 + + + _enabled + True + + + _coordinate + (248, 681) + + + gui_hint + + + + _rotation + 0 + + + id + a_7 + + + label + a_7 + + + min_len + 200 + + + orient + Qt.Horizontal + + + start + -1 + + + step + 0.001 + + + stop + 1 + + + rangeType + float + + + widget + counter_slider + + + + variable_qtgui_range + + comment + + + + value + 0 + + + _enabled + True + + + _coordinate + (360, 681) + + + gui_hint + + + + _rotation + 0 + + + id + a_8 + + + label + a_8 + + + min_len + 200 + + + orient + Qt.Horizontal + + + start + -1 + + + step + 0.001 + + + stop + 1 + + + rangeType + float + + + widget + counter_slider + + + + variable_qtgui_range + + comment + + + + value + 0.4 + + + _enabled + True + + + _coordinate + (128, 376) + + + gui_hint + + + + _rotation + 0 + + + id + ampl + + + label + + + + min_len + 200 + + + orient + Qt.Horizontal + + + start + -1 + + + step + 0.0001 + + + stop + 1 + + + rangeType + float + + + widget + counter_slider + + + + variable + + comment + + + + _enabled + True + + + _coordinate + (104, 101) + + + _rotation + 0 + + + id + f1 + + + value + samp_rate / 4 + + + + variable + + comment + + + + _enabled + True + + + _coordinate + (1384, 573) + + + _rotation + 0 + + + id + f2 + + + value + samp_rate / 3.875 + + + + variable + + comment + + + + _enabled + True + + + _coordinate + (8, 157) + + + _rotation + 0 + + + id + freq + + + value + 222e6 + + + + variable_qtgui_range + + comment + + + + value + 40 + + + _enabled + True + + + _coordinate + (8, 225) + + + gui_hint + + + + _rotation + 0 + + + id + rxgain + + + label + rxgain + + + min_len + 200 + + + orient + Qt.Horizontal + + + start + 0 + + + step + 1 + + + stop + 100 + + + rangeType + float + + + widget + counter_slider + + + + variable + + comment + + + + _enabled + True + + + _coordinate + (8, 85) + + + _rotation + 0 + + + id + samp_rate + + + value + 8e6 + + + + variable_qtgui_range + + comment + + + + value + 80 + + + _enabled + True + + + _coordinate + (8, 345) + + + gui_hint + + + + _rotation + 0 + + + id + txgain + + + label + txgain + + + min_len + 200 + + + orient + Qt.Horizontal + + + start + 0 + + + step + 1 + + + stop + 100 + + + rangeType + float + + + widget + counter_slider + + + + analog_sig_source_x + + amp + ampl + + + alias + + + + comment + + + + affinity + + + + _enabled + True + + + freq + f1 + + + _coordinate + (248, 0) + + + _rotation + 0 + + + id + analog_sig_source_x_0 + + + maxoutbuf + 0 + + + minoutbuf + 0 + + + offset + 0 + + + type + complex + + + samp_rate + samp_rate + + + waveform + analog.GR_COS_WAVE + + + + analog_sig_source_x + + amp + ampl + + + alias + + + + comment + + + + affinity + + + + _enabled + True + + + freq + f2 + + + _coordinate + (248, 112) + + + _rotation + 0 + + + id + analog_sig_source_x_1 + + + maxoutbuf + 0 + + + minoutbuf + 0 + + + offset + 0 + + + type + complex + + + samp_rate + samp_rate + + + waveform + analog.GR_COS_WAVE + + + + blocks_add_xx + + alias + + + + comment + + + + affinity + + + + _enabled + True + + + _coordinate + (456, 81) + + + _rotation + 0 + + + id + blocks_add_xx_1 + + + type + complex + + + maxoutbuf + 0 + + + minoutbuf + 0 + + + num_inputs + 2 + + + vlen + 1 + + + + blocks_complex_to_real + + alias + + + + comment + + + + affinity + + + + _enabled + 0 + + + _coordinate + (920, 361) + + + _rotation + 0 + + + id + blocks_complex_to_real_0 + + + maxoutbuf + 0 + + + minoutbuf + 0 + + + vlen + 1 + + + + blocks_file_source + + alias + + + + comment + + + + affinity + + + + _enabled + True + + + file + /home/andreas/dab/ODR-StaticPrecorrection/input.dat + + + _coordinate + (232, 293) + + + _rotation + 0 + + + id + blocks_file_source_0 + + + maxoutbuf + 0 + + + minoutbuf + 0 + + + type + complex + + + repeat + True + + + vlen + 1 + + + + blocks_message_burst_source + + alias + + + + comment + + + + affinity + + + + _enabled + True + + + _coordinate + (824, 449) + + + _rotation + 0 + + + id + blocks_message_burst_source_0 + + + maxoutbuf + 0 + + + minoutbuf + 0 + + + type + byte + + + vlen + 1 + + + + blocks_multiply_const_vxx + + alias + + + + comment + + + + const + 1 + + + affinity + + + + _enabled + True + + + _coordinate + (704, 156) + + + _rotation + 0 + + + id + blocks_multiply_const_vxx_1 + + + type + complex + + + maxoutbuf + 0 + + + minoutbuf + 0 + + + vlen + 1 + + + + blocks_null_sink + + alias + + + + bus_conns + [[0,],] + + + comment + + + + affinity + + + + _enabled + True + + + _coordinate + (440, 264) + + + _rotation + 0 + + + id + blocks_null_sink_0 + + + type + complex + + + num_inputs + 1 + + + vlen + 1 + + + + blocks_null_sink + + alias + + + + bus_conns + [[0,],] + + + comment + + + + affinity + + + + _enabled + True + + + _coordinate + (1248, 449) + + + _rotation + 0 + + + id + blocks_null_sink_0_2 + + + type + byte + + + num_inputs + 1 + + + vlen + 1 + + + + blocks_null_sink + + alias + + + + bus_conns + [[0,],] + + + comment + + + + affinity + + + + _enabled + True + + + _coordinate + (976, 409) + + + _rotation + 0 + + + id + blocks_null_sink_0_2_0 + + + type + complex + + + num_inputs + 1 + + + vlen + 1 + + + + dpd_memless_poly + + alias + + + + comment + + + + affinity + + + + _enabled + True + + + _coordinate + (544, 75) + + + _rotation + 0 + + + id + dpd_memless_poly_0 + + + maxoutbuf + 0 + + + minoutbuf + 0 + + + a1 + a_1 + + + a2 + a_2 + + + a3 + a_3 + + + a4 + a_4 + + + a5 + a_5 + + + a6 + a_6 + + + a7 + a_7 + + + a8 + a_8 + + + + qtgui_const_sink_x + + autoscale + False + + + alias + + + + comment + + + + affinity + + + + _enabled + True + + + _coordinate + (920, 197) + + + gui_hint + + + + _rotation + 0 + + + grid + False + + + id + qtgui_const_sink_x_0 + + + legend + True + + + alpha1 + 1.0 + + + color1 + "blue" + + + label1 + + + + marker1 + 0 + + + style1 + 0 + + + width1 + 1 + + + alpha10 + 1.0 + + + color10 + "red" + + + label10 + + + + marker10 + 0 + + + style10 + 0 + + + width10 + 1 + + + alpha2 + 1.0 + + + color2 + "red" + + + label2 + + + + marker2 + 0 + + + style2 + 0 + + + width2 + 1 + + + alpha3 + 1.0 + + + color3 + "red" + + + label3 + + + + marker3 + 0 + + + style3 + 0 + + + width3 + 1 + + + alpha4 + 1.0 + + + color4 + "red" + + + label4 + + + + marker4 + 0 + + + style4 + 0 + + + width4 + 1 + + + alpha5 + 1.0 + + + color5 + "red" + + + label5 + + + + marker5 + 0 + + + style5 + 0 + + + width5 + 1 + + + alpha6 + 1.0 + + + color6 + "red" + + + label6 + + + + marker6 + 0 + + + style6 + 0 + + + width6 + 1 + + + alpha7 + 1.0 + + + color7 + "red" + + + label7 + + + + marker7 + 0 + + + style7 + 0 + + + width7 + 1 + + + alpha8 + 1.0 + + + color8 + "red" + + + label8 + + + + marker8 + 0 + + + style8 + 0 + + + width8 + 1 + + + alpha9 + 1.0 + + + color9 + "red" + + + label9 + + + + marker9 + 0 + + + style9 + 0 + + + width9 + 1 + + + name + "" + + + nconnections + 2 + + + size + 1024 + + + tr_chan + 0 + + + tr_level + 0.0 + + + tr_mode + qtgui.TRIG_MODE_FREE + + + tr_slope + qtgui.TRIG_SLOPE_POS + + + tr_tag + "" + + + type + complex + + + update_time + 0.10 + + + xmax + 2 + + + xmin + -2 + + + ymax + 2 + + + ymin + -2 + + + + qtgui_freq_sink_x + + autoscale + False + + + average + 1.0 + + + bw + samp_rate + + + alias + + + + fc + 0 + + + comment + + + + ctrlpanel + False + + + affinity + + + + _enabled + 1 + + + fftsize + 16000 + + + _coordinate + (928, 278) + + + gui_hint + + + + _rotation + 0 + + + grid + False + + + id + qtgui_freq_sink_x_0_0 + + + legend + True + + + alpha1 + 1.0 + + + color1 + "blue" + + + label1 + + + + width1 + 1 + + + alpha10 + 1.0 + + + color10 + "dark blue" + + + label10 + + + + width10 + 1 + + + alpha2 + 1.0 + + + color2 + "red" + + + label2 + + + + width2 + 1 + + + alpha3 + 1.0 + + + color3 + "green" + + + label3 + + + + width3 + 1 + + + alpha4 + 1.0 + + + color4 + "black" + + + label4 + + + + width4 + 1 + + + alpha5 + 1.0 + + + color5 + "cyan" + + + label5 + + + + width5 + 1 + + + alpha6 + 1.0 + + + color6 + "magenta" + + + label6 + + + + width6 + 1 + + + alpha7 + 1.0 + + + color7 + "yellow" + + + label7 + + + + width7 + 1 + + + alpha8 + 1.0 + + + color8 + "dark red" + + + label8 + + + + width8 + 1 + + + alpha9 + 1.0 + + + color9 + "dark green" + + + label9 + + + + width9 + 1 + + + maxoutbuf + 0 + + + minoutbuf + 0 + + + name + "" + + + nconnections + 1 + + + showports + True + + + freqhalf + True + + + tr_chan + 0 + + + tr_level + 0.0 + + + tr_mode + qtgui.TRIG_MODE_FREE + + + tr_tag + "" + + + type + complex + + + update_time + 0.25 + + + wintype + firdes.WIN_BLACKMAN_hARRIS + + + ymax + 10 + + + ymin + -140 + + + + qtgui_freq_sink_x + + autoscale + False + + + average + 1.0 + + + bw + samp_rate + + + alias + + + + fc + 0 + + + comment + + + + ctrlpanel + False + + + affinity + + + + _enabled + 0 + + + fftsize + 16000 + + + _coordinate + (1320, 142) + + + gui_hint + + + + _rotation + 0 + + + grid + False + + + id + qtgui_freq_sink_x_0_0_0 + + + legend + True + + + alpha1 + 1.0 + + + color1 + "blue" + + + label1 + + + + width1 + 1 + + + alpha10 + 1.0 + + + color10 + "dark blue" + + + label10 + + + + width10 + 1 + + + alpha2 + 1.0 + + + color2 + "red" + + + label2 + + + + width2 + 1 + + + alpha3 + 1.0 + + + color3 + "green" + + + label3 + + + + width3 + 1 + + + alpha4 + 1.0 + + + color4 + "black" + + + label4 + + + + width4 + 1 + + + alpha5 + 1.0 + + + color5 + "cyan" + + + label5 + + + + width5 + 1 + + + alpha6 + 1.0 + + + color6 + "magenta" + + + label6 + + + + width6 + 1 + + + alpha7 + 1.0 + + + color7 + "yellow" + + + label7 + + + + width7 + 1 + + + alpha8 + 1.0 + + + color8 + "dark red" + + + label8 + + + + width8 + 1 + + + alpha9 + 1.0 + + + color9 + "dark green" + + + label9 + + + + width9 + 1 + + + maxoutbuf + 0 + + + minoutbuf + 0 + + + name + "" + + + nconnections + 1 + + + showports + True + + + freqhalf + True + + + tr_chan + 0 + + + tr_level + 0.0 + + + tr_mode + qtgui.TRIG_MODE_FREE + + + tr_tag + "" + + + type + complex + + + update_time + 0.10 + + + wintype + firdes.WIN_BLACKMAN_hARRIS + + + ymax + 10 + + + ymin + -140 + + + + qtgui_time_sink_x + + autoscale + False + + + alias + + + + comment + + + + ctrlpanel + False + + + affinity + + + + entags + True + + + _enabled + 0 + + + _coordinate + (1320, 222) + + + gui_hint + + + + _rotation + 0 + + + grid + False + + + id + qtgui_time_sink_x_0 + + + legend + True + + + alpha1 + 1.0 + + + color1 + "blue" + + + label1 + + + + marker1 + -1 + + + style1 + 1 + + + width1 + 1 + + + alpha10 + 1.0 + + + color10 + "blue" + + + label10 + + + + marker10 + -1 + + + style10 + 1 + + + width10 + 1 + + + alpha2 + 1.0 + + + color2 + "red" + + + label2 + + + + marker2 + -1 + + + style2 + 1 + + + width2 + 1 + + + alpha3 + 1.0 + + + color3 + "green" + + + label3 + + + + marker3 + -1 + + + style3 + 1 + + + width3 + 1 + + + alpha4 + 1.0 + + + color4 + "black" + + + label4 + + + + marker4 + -1 + + + style4 + 1 + + + width4 + 1 + + + alpha5 + 1.0 + + + color5 + "cyan" + + + label5 + + + + marker5 + -1 + + + style5 + 1 + + + width5 + 1 + + + alpha6 + 1.0 + + + color6 + "magenta" + + + label6 + + + + marker6 + -1 + + + style6 + 1 + + + width6 + 1 + + + alpha7 + 1.0 + + + color7 + "yellow" + + + label7 + + + + marker7 + -1 + + + style7 + 1 + + + width7 + 1 + + + alpha8 + 1.0 + + + color8 + "dark red" + + + label8 + + + + marker8 + -1 + + + style8 + 1 + + + width8 + 1 + + + alpha9 + 1.0 + + + color9 + "dark green" + + + label9 + + + + marker9 + -1 + + + style9 + 1 + + + width9 + 1 + + + name + "" + + + nconnections + 1 + + + size + 1024 + + + srate + samp_rate + + + tr_chan + 0 + + + tr_delay + 0 + + + tr_level + 0.0 + + + tr_mode + qtgui.TRIG_MODE_FREE + + + tr_slope + qtgui.TRIG_SLOPE_POS + + + tr_tag + "" + + + type + complex + + + update_time + 0.10 + + + ylabel + Amplitude + + + yunit + "" + + + ymax + 1 + + + ymin + -1 + + + + qtgui_time_sink_x + + autoscale + False + + + alias + + + + comment + + + + ctrlpanel + False + + + affinity + + + + entags + True + + + _enabled + 0 + + + _coordinate + (1112, 342) + + + gui_hint + + + + _rotation + 0 + + + grid + False + + + id + qtgui_time_sink_x_0_0 + + + legend + True + + + alpha1 + 1.0 + + + color1 + "blue" + + + label1 + + + + marker1 + -1 + + + style1 + 1 + + + width1 + 1 + + + alpha10 + 1.0 + + + color10 + "blue" + + + label10 + + + + marker10 + -1 + + + style10 + 1 + + + width10 + 1 + + + alpha2 + 1.0 + + + color2 + "red" + + + label2 + + + + marker2 + -1 + + + style2 + 1 + + + width2 + 1 + + + alpha3 + 1.0 + + + color3 + "green" + + + label3 + + + + marker3 + -1 + + + style3 + 1 + + + width3 + 1 + + + alpha4 + 1.0 + + + color4 + "black" + + + label4 + + + + marker4 + -1 + + + style4 + 1 + + + width4 + 1 + + + alpha5 + 1.0 + + + color5 + "cyan" + + + label5 + + + + marker5 + -1 + + + style5 + 1 + + + width5 + 1 + + + alpha6 + 1.0 + + + color6 + "magenta" + + + label6 + + + + marker6 + -1 + + + style6 + 1 + + + width6 + 1 + + + alpha7 + 1.0 + + + color7 + "yellow" + + + label7 + + + + marker7 + -1 + + + style7 + 1 + + + width7 + 1 + + + alpha8 + 1.0 + + + color8 + "dark red" + + + label8 + + + + marker8 + -1 + + + style8 + 1 + + + width8 + 1 + + + alpha9 + 1.0 + + + color9 + "dark green" + + + label9 + + + + marker9 + -1 + + + style9 + 1 + + + width9 + 1 + + + name + "" + + + nconnections + 1 + + + size + 1024 + + + srate + samp_rate + + + tr_chan + 0 + + + tr_delay + 0 + + + tr_level + 0.0 + + + tr_mode + qtgui.TRIG_MODE_FREE + + + tr_slope + qtgui.TRIG_SLOPE_POS + + + tr_tag + "" + + + type + float + + + update_time + 0.10 + + + ylabel + Amplitude + + + yunit + "" + + + ymax + 1 + + + ymin + -1 + + + + uhd_amsg_source + + alias + + + + comment + + + + affinity + + + + dev_addr + + + + _enabled + True + + + _coordinate + (528, 449) + + + _rotation + 0 + + + id + uhd_amsg_source_0 + + + maxoutbuf + 0 + + + minoutbuf + 0 + + + + uhd_usrp_sink + + alias + + + + ant0 + + + + bw0 + 0 + + + center_freq0 + freq + + + norm_gain0 + False + + + gain0 + txgain + + + ant10 + + + + bw10 + 0 + + + center_freq10 + 0 + + + norm_gain10 + False + + + gain10 + 0 + + + ant11 + + + + bw11 + 0 + + + center_freq11 + 0 + + + norm_gain11 + False + + + gain11 + 0 + + + ant12 + + + + bw12 + 0 + + + center_freq12 + 0 + + + norm_gain12 + False + + + gain12 + 0 + + + ant13 + + + + bw13 + 0 + + + center_freq13 + 0 + + + norm_gain13 + False + + + gain13 + 0 + + + ant14 + + + + bw14 + 0 + + + center_freq14 + 0 + + + norm_gain14 + False + + + gain14 + 0 + + + ant15 + + + + bw15 + 0 + + + center_freq15 + 0 + + + norm_gain15 + False + + + gain15 + 0 + + + ant16 + + + + bw16 + 0 + + + center_freq16 + 0 + + + norm_gain16 + False + + + gain16 + 0 + + + ant17 + + + + bw17 + 0 + + + center_freq17 + 0 + + + norm_gain17 + False + + + gain17 + 0 + + + ant18 + + + + bw18 + 0 + + + center_freq18 + 0 + + + norm_gain18 + False + + + gain18 + 0 + + + ant19 + + + + bw19 + 0 + + + center_freq19 + 0 + + + norm_gain19 + False + + + gain19 + 0 + + + ant1 + + + + bw1 + 0 + + + center_freq1 + 0 + + + norm_gain1 + False + + + gain1 + 0 + + + ant20 + + + + bw20 + 0 + + + center_freq20 + 0 + + + norm_gain20 + False + + + gain20 + 0 + + + ant21 + + + + bw21 + 0 + + + center_freq21 + 0 + + + norm_gain21 + False + + + gain21 + 0 + + + ant22 + + + + bw22 + 0 + + + center_freq22 + 0 + + + norm_gain22 + False + + + gain22 + 0 + + + ant23 + + + + bw23 + 0 + + + center_freq23 + 0 + + + norm_gain23 + False + + + gain23 + 0 + + + ant24 + + + + bw24 + 0 + + + center_freq24 + 0 + + + norm_gain24 + False + + + gain24 + 0 + + + ant25 + + + + bw25 + 0 + + + center_freq25 + 0 + + + norm_gain25 + False + + + gain25 + 0 + + + ant26 + + + + bw26 + 0 + + + center_freq26 + 0 + + + norm_gain26 + False + + + gain26 + 0 + + + ant27 + + + + bw27 + 0 + + + center_freq27 + 0 + + + norm_gain27 + False + + + gain27 + 0 + + + ant28 + + + + bw28 + 0 + + + center_freq28 + 0 + + + norm_gain28 + False + + + gain28 + 0 + + + ant29 + + + + bw29 + 0 + + + center_freq29 + 0 + + + norm_gain29 + False + + + gain29 + 0 + + + ant2 + + + + bw2 + 0 + + + center_freq2 + 0 + + + norm_gain2 + False + + + gain2 + 0 + + + ant30 + + + + bw30 + 0 + + + center_freq30 + 0 + + + norm_gain30 + False + + + gain30 + 0 + + + ant31 + + + + bw31 + 0 + + + center_freq31 + 0 + + + norm_gain31 + False + + + gain31 + 0 + + + ant3 + + + + bw3 + 0 + + + center_freq3 + 0 + + + norm_gain3 + False + + + gain3 + 0 + + + ant4 + + + + bw4 + 0 + + + center_freq4 + 0 + + + norm_gain4 + False + + + gain4 + 0 + + + ant5 + + + + bw5 + 0 + + + center_freq5 + 0 + + + norm_gain5 + False + + + gain5 + 0 + + + ant6 + + + + bw6 + 0 + + + center_freq6 + 0 + + + norm_gain6 + False + + + gain6 + 0 + + + ant7 + + + + bw7 + 0 + + + center_freq7 + 0 + + + norm_gain7 + False + + + gain7 + 0 + + + ant8 + + + + bw8 + 0 + + + center_freq8 + 0 + + + norm_gain8 + False + + + gain8 + 0 + + + ant9 + + + + bw9 + 0 + + + center_freq9 + 0 + + + norm_gain9 + False + + + gain9 + 0 + + + clock_rate + 0.0 + + + comment + + + + affinity + + + + dev_addr + "" + + + dev_args + "" + + + _enabled + True + + + _coordinate + (1320, 319) + + + _rotation + 0 + + + id + uhd_usrp_sink_0 + + + type + fc32 + + + clock_source0 + + + + sd_spec0 + + + + time_source0 + + + + clock_source1 + + + + sd_spec1 + + + + time_source1 + + + + clock_source2 + + + + sd_spec2 + + + + time_source2 + + + + clock_source3 + + + + sd_spec3 + + + + time_source3 + + + + clock_source4 + + + + sd_spec4 + + + + time_source4 + + + + clock_source5 + + + + sd_spec5 + + + + time_source5 + + + + clock_source6 + + + + sd_spec6 + + + + time_source6 + + + + clock_source7 + + + + sd_spec7 + + + + time_source7 + + + + nchan + 1 + + + num_mboards + 1 + + + samp_rate + samp_rate + + + hide_cmd_port + False + + + stream_args + + + + stream_chans + [] + + + sync + + + + len_tag_name + + + + otw + + + + + uhd_usrp_source + + alias + + + + ant0 + + + + bw0 + 0 + + + center_freq0 + freq + + + dc_offs_enb0 + "" + + + iq_imbal_enb0 + "" + + + norm_gain0 + False + + + gain0 + rxgain + + + ant10 + + + + bw10 + 0 + + + center_freq10 + 0 + + + dc_offs_enb10 + "" + + + iq_imbal_enb10 + "" + + + norm_gain10 + False + + + gain10 + 0 + + + ant11 + + + + bw11 + 0 + + + center_freq11 + 0 + + + dc_offs_enb11 + "" + + + iq_imbal_enb11 + "" + + + norm_gain11 + False + + + gain11 + 0 + + + ant12 + + + + bw12 + 0 + + + center_freq12 + 0 + + + dc_offs_enb12 + "" + + + iq_imbal_enb12 + "" + + + norm_gain12 + False + + + gain12 + 0 + + + ant13 + + + + bw13 + 0 + + + center_freq13 + 0 + + + dc_offs_enb13 + "" + + + iq_imbal_enb13 + "" + + + norm_gain13 + False + + + gain13 + 0 + + + ant14 + + + + bw14 + 0 + + + center_freq14 + 0 + + + dc_offs_enb14 + "" + + + iq_imbal_enb14 + "" + + + norm_gain14 + False + + + gain14 + 0 + + + ant15 + + + + bw15 + 0 + + + center_freq15 + 0 + + + dc_offs_enb15 + "" + + + iq_imbal_enb15 + "" + + + norm_gain15 + False + + + gain15 + 0 + + + ant16 + + + + bw16 + 0 + + + center_freq16 + 0 + + + dc_offs_enb16 + "" + + + iq_imbal_enb16 + "" + + + norm_gain16 + False + + + gain16 + 0 + + + ant17 + + + + bw17 + 0 + + + center_freq17 + 0 + + + dc_offs_enb17 + "" + + + iq_imbal_enb17 + "" + + + norm_gain17 + False + + + gain17 + 0 + + + ant18 + + + + bw18 + 0 + + + center_freq18 + 0 + + + dc_offs_enb18 + "" + + + iq_imbal_enb18 + "" + + + norm_gain18 + False + + + gain18 + 0 + + + ant19 + + + + bw19 + 0 + + + center_freq19 + 0 + + + dc_offs_enb19 + "" + + + iq_imbal_enb19 + "" + + + norm_gain19 + False + + + gain19 + 0 + + + ant1 + + + + bw1 + 0 + + + center_freq1 + 0 + + + dc_offs_enb1 + "" + + + iq_imbal_enb1 + "" + + + norm_gain1 + False + + + gain1 + 0 + + + ant20 + + + + bw20 + 0 + + + center_freq20 + 0 + + + dc_offs_enb20 + "" + + + iq_imbal_enb20 + "" + + + norm_gain20 + False + + + gain20 + 0 + + + ant21 + + + + bw21 + 0 + + + center_freq21 + 0 + + + dc_offs_enb21 + "" + + + iq_imbal_enb21 + "" + + + norm_gain21 + False + + + gain21 + 0 + + + ant22 + + + + bw22 + 0 + + + center_freq22 + 0 + + + dc_offs_enb22 + "" + + + iq_imbal_enb22 + "" + + + norm_gain22 + False + + + gain22 + 0 + + + ant23 + + + + bw23 + 0 + + + center_freq23 + 0 + + + dc_offs_enb23 + "" + + + iq_imbal_enb23 + "" + + + norm_gain23 + False + + + gain23 + 0 + + + ant24 + + + + bw24 + 0 + + + center_freq24 + 0 + + + dc_offs_enb24 + "" + + + iq_imbal_enb24 + "" + + + norm_gain24 + False + + + gain24 + 0 + + + ant25 + + + + bw25 + 0 + + + center_freq25 + 0 + + + dc_offs_enb25 + "" + + + iq_imbal_enb25 + "" + + + norm_gain25 + False + + + gain25 + 0 + + + ant26 + + + + bw26 + 0 + + + center_freq26 + 0 + + + dc_offs_enb26 + "" + + + iq_imbal_enb26 + "" + + + norm_gain26 + False + + + gain26 + 0 + + + ant27 + + + + bw27 + 0 + + + center_freq27 + 0 + + + dc_offs_enb27 + "" + + + iq_imbal_enb27 + "" + + + norm_gain27 + False + + + gain27 + 0 + + + ant28 + + + + bw28 + 0 + + + center_freq28 + 0 + + + dc_offs_enb28 + "" + + + iq_imbal_enb28 + "" + + + norm_gain28 + False + + + gain28 + 0 + + + ant29 + + + + bw29 + 0 + + + center_freq29 + 0 + + + dc_offs_enb29 + "" + + + iq_imbal_enb29 + "" + + + norm_gain29 + False + + + gain29 + 0 + + + ant2 + + + + bw2 + 0 + + + center_freq2 + 0 + + + dc_offs_enb2 + "" + + + iq_imbal_enb2 + "" + + + norm_gain2 + False + + + gain2 + 0 + + + ant30 + + + + bw30 + 0 + + + center_freq30 + 0 + + + dc_offs_enb30 + "" + + + iq_imbal_enb30 + "" + + + norm_gain30 + False + + + gain30 + 0 + + + ant31 + + + + bw31 + 0 + + + center_freq31 + 0 + + + dc_offs_enb31 + "" + + + iq_imbal_enb31 + "" + + + norm_gain31 + False + + + gain31 + 0 + + + ant3 + + + + bw3 + 0 + + + center_freq3 + 0 + + + dc_offs_enb3 + "" + + + iq_imbal_enb3 + "" + + + norm_gain3 + False + + + gain3 + 0 + + + ant4 + + + + bw4 + 0 + + + center_freq4 + 0 + + + dc_offs_enb4 + "" + + + iq_imbal_enb4 + "" + + + norm_gain4 + False + + + gain4 + 0 + + + ant5 + + + + bw5 + 0 + + + center_freq5 + 0 + + + dc_offs_enb5 + "" + + + iq_imbal_enb5 + "" + + + norm_gain5 + False + + + gain5 + 0 + + + ant6 + + + + bw6 + 0 + + + center_freq6 + 0 + + + dc_offs_enb6 + "" + + + iq_imbal_enb6 + "" + + + norm_gain6 + False + + + gain6 + 0 + + + ant7 + + + + bw7 + 0 + + + center_freq7 + 0 + + + dc_offs_enb7 + "" + + + iq_imbal_enb7 + "" + + + norm_gain7 + False + + + gain7 + 0 + + + ant8 + + + + bw8 + 0 + + + center_freq8 + 0 + + + dc_offs_enb8 + "" + + + iq_imbal_enb8 + "" + + + norm_gain8 + False + + + gain8 + 0 + + + ant9 + + + + bw9 + 0 + + + center_freq9 + 0 + + + dc_offs_enb9 + "" + + + iq_imbal_enb9 + "" + + + norm_gain9 + False + + + gain9 + 0 + + + clock_rate + 0.0 + + + comment + + + + affinity + + + + dev_addr + "" + + + dev_args + "" + + + _enabled + 1 + + + _coordinate + (640, 342) + + + _rotation + 0 + + + id + uhd_usrp_source_0 + + + maxoutbuf + 0 + + + clock_source0 + + + + sd_spec0 + + + + time_source0 + + + + clock_source1 + + + + sd_spec1 + + + + time_source1 + + + + clock_source2 + + + + sd_spec2 + + + + time_source2 + + + + clock_source3 + + + + sd_spec3 + + + + time_source3 + + + + clock_source4 + + + + sd_spec4 + + + + time_source4 + + + + clock_source5 + + + + sd_spec5 + + + + time_source5 + + + + clock_source6 + + + + sd_spec6 + + + + time_source6 + + + + clock_source7 + + + + sd_spec7 + + + + time_source7 + + + + minoutbuf + 0 + + + nchan + 1 + + + num_mboards + 1 + + + type + fc32 + + + samp_rate + samp_rate + + + hide_cmd_port + False + + + stream_args + + + + stream_chans + [] + + + sync + + + + otw + + + + + analog_sig_source_x_0 + blocks_add_xx_1 + 0 + 0 + + + analog_sig_source_x_1 + blocks_add_xx_1 + 0 + 1 + + + blocks_add_xx_1 + blocks_null_sink_0 + 0 + 0 + + + blocks_complex_to_real_0 + qtgui_time_sink_x_0_0 + 0 + 0 + + + blocks_file_source_0 + dpd_memless_poly_0 + 0 + 0 + + + blocks_message_burst_source_0 + blocks_null_sink_0_2 + 0 + 0 + + + blocks_multiply_const_vxx_1 + qtgui_const_sink_x_0 + 0 + 1 + + + blocks_multiply_const_vxx_1 + qtgui_freq_sink_x_0_0_0 + 0 + 0 + + + blocks_multiply_const_vxx_1 + qtgui_time_sink_x_0 + 0 + 0 + + + blocks_multiply_const_vxx_1 + uhd_usrp_sink_0 + 0 + 0 + + + dpd_memless_poly_0 + blocks_multiply_const_vxx_1 + 0 + 0 + + + uhd_amsg_source_0 + blocks_message_burst_source_0 + msg + msg + + + uhd_usrp_source_0 + blocks_complex_to_real_0 + 0 + 0 + + + uhd_usrp_source_0 + blocks_null_sink_0_2_0 + 0 + 0 + + + uhd_usrp_source_0 + qtgui_const_sink_x_0 + 0 + 0 + + + uhd_usrp_source_0 + qtgui_freq_sink_x_0_0 + 0 + 0 + + diff --git a/grc/live_analyse_two_tone.grc b/grc/live_analyse_two_tone.grc new file mode 100644 index 0000000..092192d --- /dev/null +++ b/grc/live_analyse_two_tone.grc @@ -0,0 +1,5582 @@ + + + + Wed Oct 28 18:49:28 2015 + + options + + author + + + + window_size + 2000,2000 + + + category + Custom + + + comment + + + + description + + + + _enabled + True + + + _coordinate + (8, 8) + + + _rotation + 0 + + + generate_options + qt_gui + + + hier_block_src_path + .: + + + id + live_analyse_dab_poly + + + max_nouts + 0 + + + qt_qss_theme + + + + realtime_scheduling + + + + run_command + {python} -u {filename} + + + run_options + prompt + + + run + True + + + thread_safe_setters + + + + title + + + + + variable_qtgui_range + + comment + + + + value + 0 + + + _enabled + True + + + _coordinate + (24, 553) + + + gui_hint + + + + _rotation + 0 + + + id + a_1 + + + label + a_1 + + + min_len + 200 + + + orient + Qt.Horizontal + + + start + -1 + + + step + 0.001 + + + stop + 1 + + + rangeType + float + + + widget + counter_slider + + + + variable_qtgui_range + + comment + + + + value + 0 + + + _enabled + True + + + _coordinate + (136, 553) + + + gui_hint + + + + _rotation + 0 + + + id + a_2 + + + label + a_2 + + + min_len + 200 + + + orient + Qt.Horizontal + + + start + -1 + + + step + 0.001 + + + stop + 1 + + + rangeType + float + + + widget + counter_slider + + + + variable_qtgui_range + + comment + + + + value + 0 + + + _enabled + True + + + _coordinate + (248, 553) + + + gui_hint + + + + _rotation + 0 + + + id + a_3 + + + label + a_3 + + + min_len + 200 + + + orient + Qt.Horizontal + + + start + -1 + + + step + 0.001 + + + stop + 1 + + + rangeType + float + + + widget + counter_slider + + + + variable_qtgui_range + + comment + + + + value + 0 + + + _enabled + True + + + _coordinate + (360, 553) + + + gui_hint + + + + _rotation + 0 + + + id + a_4 + + + label + a_4 + + + min_len + 200 + + + orient + Qt.Horizontal + + + start + -1 + + + step + 0.001 + + + stop + 1 + + + rangeType + float + + + widget + counter_slider + + + + variable_qtgui_range + + comment + + + + value + 0 + + + _enabled + True + + + _coordinate + (24, 681) + + + gui_hint + + + + _rotation + 0 + + + id + a_5 + + + label + a_5 + + + min_len + 200 + + + orient + Qt.Horizontal + + + start + -1 + + + step + 0.001 + + + stop + 1 + + + rangeType + float + + + widget + counter_slider + + + + variable_qtgui_range + + comment + + + + value + 0 + + + _enabled + True + + + _coordinate + (136, 681) + + + gui_hint + + + + _rotation + 0 + + + id + a_6 + + + label + a_6 + + + min_len + 200 + + + orient + Qt.Horizontal + + + start + -1 + + + step + 0.001 + + + stop + 1 + + + rangeType + float + + + widget + counter_slider + + + + variable_qtgui_range + + comment + + + + value + 0 + + + _enabled + True + + + _coordinate + (248, 681) + + + gui_hint + + + + _rotation + 0 + + + id + a_7 + + + label + a_7 + + + min_len + 200 + + + orient + Qt.Horizontal + + + start + -1 + + + step + 0.001 + + + stop + 1 + + + rangeType + float + + + widget + counter_slider + + + + variable_qtgui_range + + comment + + + + value + 0 + + + _enabled + True + + + _coordinate + (360, 681) + + + gui_hint + + + + _rotation + 0 + + + id + a_8 + + + label + a_8 + + + min_len + 200 + + + orient + Qt.Horizontal + + + start + -1 + + + step + 0.001 + + + stop + 1 + + + rangeType + float + + + widget + counter_slider + + + + variable_qtgui_range + + comment + + + + value + 0.4 + + + _enabled + True + + + _coordinate + (128, 376) + + + gui_hint + + + + _rotation + 0 + + + id + ampl + + + label + + + + min_len + 200 + + + orient + Qt.Horizontal + + + start + -1 + + + step + 0.0001 + + + stop + 1 + + + rangeType + float + + + widget + counter_slider + + + + variable + + comment + + + + _enabled + True + + + _coordinate + (104, 101) + + + _rotation + 0 + + + id + f1 + + + value + samp_rate / 4 + + + + variable + + comment + + + + _enabled + True + + + _coordinate + (1384, 573) + + + _rotation + 0 + + + id + f2 + + + value + samp_rate / 3.875 + + + + variable_qtgui_range + + comment + + + + value + 4096000 + + + _enabled + True + + + _coordinate + (472, 552) + + + gui_hint + + + + _rotation + 0 + + + id + f_1 + + + label + + + + min_len + 200 + + + orient + Qt.Horizontal + + + start + 1 + + + step + 1 + + + stop + 8000000 + + + rangeType + float + + + widget + counter_slider + + + + variable_qtgui_range + + comment + + + + value + 4096000 + + + _enabled + True + + + _coordinate + (472, 680) + + + gui_hint + + + + _rotation + 0 + + + id + f_2 + + + label + + + + min_len + 200 + + + orient + Qt.Horizontal + + + start + 1 + + + step + 1 + + + stop + 8000000 + + + rangeType + float + + + widget + counter_slider + + + + variable + + comment + + + + _enabled + True + + + _coordinate + (8, 157) + + + _rotation + 0 + + + id + freq + + + value + 222e6 + + + + variable_qtgui_range + + comment + + + + value + 10 + + + _enabled + True + + + _coordinate + (8, 225) + + + gui_hint + + + + _rotation + 0 + + + id + rxgain + + + label + rxgain + + + min_len + 200 + + + orient + Qt.Horizontal + + + start + 0 + + + step + 1 + + + stop + 100 + + + rangeType + float + + + widget + counter_slider + + + + variable + + comment + + + + _enabled + True + + + _coordinate + (8, 85) + + + _rotation + 0 + + + id + samp_rate + + + value + 8e6 + + + + variable_qtgui_range + + comment + + + + value + 80 + + + _enabled + True + + + _coordinate + (8, 345) + + + gui_hint + + + + _rotation + 0 + + + id + txgain + + + label + txgain + + + min_len + 200 + + + orient + Qt.Horizontal + + + start + 0 + + + step + 1 + + + stop + 100 + + + rangeType + float + + + widget + counter_slider + + + + analog_sig_source_x + + amp + 0.45 + + + alias + + + + comment + + + + affinity + + + + _enabled + True + + + freq + f_2 + + + _coordinate + (232, 144) + + + _rotation + 0 + + + id + analog_sig_source_x_0 + + + maxoutbuf + 0 + + + minoutbuf + 0 + + + offset + 0 + + + type + complex + + + samp_rate + samp_rate + + + waveform + analog.GR_COS_WAVE + + + + analog_sig_source_x + + amp + 0.45 + + + alias + + + + comment + + + + affinity + + + + _enabled + True + + + freq + f_1 + + + _coordinate + (232, 40) + + + _rotation + 0 + + + id + analog_sig_source_x_1 + + + maxoutbuf + 0 + + + minoutbuf + 0 + + + offset + 0 + + + type + complex + + + samp_rate + samp_rate + + + waveform + analog.GR_COS_WAVE + + + + blocks_add_xx + + alias + + + + comment + + + + affinity + + + + _enabled + True + + + _coordinate + (400, 113) + + + _rotation + 0 + + + id + blocks_add_xx_0 + + + type + complex + + + maxoutbuf + 0 + + + minoutbuf + 0 + + + num_inputs + 2 + + + vlen + 1 + + + + blocks_complex_to_real + + alias + + + + comment + + + + affinity + + + + _enabled + 0 + + + _coordinate + (920, 361) + + + _rotation + 0 + + + id + blocks_complex_to_real_0 + + + maxoutbuf + 0 + + + minoutbuf + 0 + + + vlen + 1 + + + + blocks_message_burst_source + + alias + + + + comment + + + + affinity + + + + _enabled + True + + + _coordinate + (824, 449) + + + _rotation + 0 + + + id + blocks_message_burst_source_0 + + + maxoutbuf + 0 + + + minoutbuf + 0 + + + type + byte + + + vlen + 1 + + + + blocks_multiply_const_vxx + + alias + + + + comment + + + + const + ampl + + + affinity + + + + _enabled + True + + + _coordinate + (464, 124) + + + _rotation + 0 + + + id + blocks_multiply_const_vxx_0 + + + type + complex + + + maxoutbuf + 0 + + + minoutbuf + 0 + + + vlen + 1 + + + + blocks_multiply_const_vxx + + alias + + + + comment + + + + const + 1 + + + affinity + + + + _enabled + True + + + _coordinate + (744, 124) + + + _rotation + 0 + + + id + blocks_multiply_const_vxx_1 + + + type + complex + + + maxoutbuf + 0 + + + minoutbuf + 0 + + + vlen + 1 + + + + blocks_null_sink + + alias + + + + bus_conns + [[0,],] + + + comment + + + + affinity + + + + _enabled + True + + + _coordinate + (1248, 449) + + + _rotation + 0 + + + id + blocks_null_sink_0_2 + + + type + byte + + + num_inputs + 1 + + + vlen + 1 + + + + blocks_null_sink + + alias + + + + bus_conns + [[0,],] + + + comment + + + + affinity + + + + _enabled + True + + + _coordinate + (976, 409) + + + _rotation + 0 + + + id + blocks_null_sink_0_2_0 + + + type + complex + + + num_inputs + 1 + + + vlen + 1 + + + + dpd_memless_poly + + alias + + + + comment + + + + affinity + + + + _enabled + True + + + _coordinate + (600, 75) + + + _rotation + 0 + + + id + dpd_memless_poly_0 + + + maxoutbuf + 0 + + + minoutbuf + 0 + + + a1 + a_1 + + + a2 + a_2 + + + a3 + a_3 + + + a4 + a_4 + + + a5 + a_5 + + + a6 + a_6 + + + a7 + a_7 + + + a8 + a_8 + + + + qtgui_const_sink_x + + autoscale + False + + + alias + + + + comment + + + + affinity + + + + _enabled + 0 + + + _coordinate + (920, 197) + + + gui_hint + + + + _rotation + 0 + + + grid + False + + + id + qtgui_const_sink_x_0 + + + legend + True + + + alpha1 + 1.0 + + + color1 + "blue" + + + label1 + + + + marker1 + 0 + + + style1 + 0 + + + width1 + 1 + + + alpha10 + 1.0 + + + color10 + "red" + + + label10 + + + + marker10 + 0 + + + style10 + 0 + + + width10 + 1 + + + alpha2 + 1.0 + + + color2 + "red" + + + label2 + + + + marker2 + 0 + + + style2 + 0 + + + width2 + 1 + + + alpha3 + 1.0 + + + color3 + "red" + + + label3 + + + + marker3 + 0 + + + style3 + 0 + + + width3 + 1 + + + alpha4 + 1.0 + + + color4 + "red" + + + label4 + + + + marker4 + 0 + + + style4 + 0 + + + width4 + 1 + + + alpha5 + 1.0 + + + color5 + "red" + + + label5 + + + + marker5 + 0 + + + style5 + 0 + + + width5 + 1 + + + alpha6 + 1.0 + + + color6 + "red" + + + label6 + + + + marker6 + 0 + + + style6 + 0 + + + width6 + 1 + + + alpha7 + 1.0 + + + color7 + "red" + + + label7 + + + + marker7 + 0 + + + style7 + 0 + + + width7 + 1 + + + alpha8 + 1.0 + + + color8 + "red" + + + label8 + + + + marker8 + 0 + + + style8 + 0 + + + width8 + 1 + + + alpha9 + 1.0 + + + color9 + "red" + + + label9 + + + + marker9 + 0 + + + style9 + 0 + + + width9 + 1 + + + name + "" + + + nconnections + 2 + + + size + 1024 + + + tr_chan + 0 + + + tr_level + 0.0 + + + tr_mode + qtgui.TRIG_MODE_FREE + + + tr_slope + qtgui.TRIG_SLOPE_POS + + + tr_tag + "" + + + type + complex + + + update_time + 0.10 + + + xmax + 2 + + + xmin + -2 + + + ymax + 2 + + + ymin + -2 + + + + qtgui_freq_sink_x + + autoscale + False + + + average + 1.0 + + + bw + samp_rate + + + alias + + + + fc + 0 + + + comment + + + + ctrlpanel + False + + + affinity + + + + _enabled + 1 + + + fftsize + 16000 + + + _coordinate + (928, 278) + + + gui_hint + + + + _rotation + 0 + + + grid + False + + + id + qtgui_freq_sink_x_0_0 + + + legend + True + + + alpha1 + 1.0 + + + color1 + "blue" + + + label1 + + + + width1 + 1 + + + alpha10 + 1.0 + + + color10 + "dark blue" + + + label10 + + + + width10 + 1 + + + alpha2 + 1.0 + + + color2 + "red" + + + label2 + + + + width2 + 1 + + + alpha3 + 1.0 + + + color3 + "green" + + + label3 + + + + width3 + 1 + + + alpha4 + 1.0 + + + color4 + "black" + + + label4 + + + + width4 + 1 + + + alpha5 + 1.0 + + + color5 + "cyan" + + + label5 + + + + width5 + 1 + + + alpha6 + 1.0 + + + color6 + "magenta" + + + label6 + + + + width6 + 1 + + + alpha7 + 1.0 + + + color7 + "yellow" + + + label7 + + + + width7 + 1 + + + alpha8 + 1.0 + + + color8 + "dark red" + + + label8 + + + + width8 + 1 + + + alpha9 + 1.0 + + + color9 + "dark green" + + + label9 + + + + width9 + 1 + + + maxoutbuf + 0 + + + minoutbuf + 0 + + + name + "" + + + nconnections + 1 + + + showports + True + + + freqhalf + True + + + tr_chan + 0 + + + tr_level + 0.0 + + + tr_mode + qtgui.TRIG_MODE_FREE + + + tr_tag + "" + + + type + complex + + + update_time + 0.1 + + + wintype + firdes.WIN_BLACKMAN_hARRIS + + + ymax + 10 + + + ymin + -140 + + + + qtgui_freq_sink_x + + autoscale + False + + + average + 1.0 + + + bw + samp_rate + + + alias + + + + fc + 0 + + + comment + + + + ctrlpanel + False + + + affinity + + + + _enabled + 0 + + + fftsize + 16000 + + + _coordinate + (1320, 142) + + + gui_hint + + + + _rotation + 0 + + + grid + False + + + id + qtgui_freq_sink_x_0_0_0 + + + legend + True + + + alpha1 + 1.0 + + + color1 + "blue" + + + label1 + + + + width1 + 1 + + + alpha10 + 1.0 + + + color10 + "dark blue" + + + label10 + + + + width10 + 1 + + + alpha2 + 1.0 + + + color2 + "red" + + + label2 + + + + width2 + 1 + + + alpha3 + 1.0 + + + color3 + "green" + + + label3 + + + + width3 + 1 + + + alpha4 + 1.0 + + + color4 + "black" + + + label4 + + + + width4 + 1 + + + alpha5 + 1.0 + + + color5 + "cyan" + + + label5 + + + + width5 + 1 + + + alpha6 + 1.0 + + + color6 + "magenta" + + + label6 + + + + width6 + 1 + + + alpha7 + 1.0 + + + color7 + "yellow" + + + label7 + + + + width7 + 1 + + + alpha8 + 1.0 + + + color8 + "dark red" + + + label8 + + + + width8 + 1 + + + alpha9 + 1.0 + + + color9 + "dark green" + + + label9 + + + + width9 + 1 + + + maxoutbuf + 0 + + + minoutbuf + 0 + + + name + "" + + + nconnections + 1 + + + showports + True + + + freqhalf + True + + + tr_chan + 0 + + + tr_level + 0.0 + + + tr_mode + qtgui.TRIG_MODE_FREE + + + tr_tag + "" + + + type + complex + + + update_time + 0.10 + + + wintype + firdes.WIN_BLACKMAN_hARRIS + + + ymax + 10 + + + ymin + -140 + + + + qtgui_time_sink_x + + autoscale + False + + + alias + + + + comment + + + + ctrlpanel + False + + + affinity + + + + entags + True + + + _enabled + 0 + + + _coordinate + (1320, 222) + + + gui_hint + + + + _rotation + 0 + + + grid + False + + + id + qtgui_time_sink_x_0 + + + legend + True + + + alpha1 + 1.0 + + + color1 + "blue" + + + label1 + + + + marker1 + -1 + + + style1 + 1 + + + width1 + 1 + + + alpha10 + 1.0 + + + color10 + "blue" + + + label10 + + + + marker10 + -1 + + + style10 + 1 + + + width10 + 1 + + + alpha2 + 1.0 + + + color2 + "red" + + + label2 + + + + marker2 + -1 + + + style2 + 1 + + + width2 + 1 + + + alpha3 + 1.0 + + + color3 + "green" + + + label3 + + + + marker3 + -1 + + + style3 + 1 + + + width3 + 1 + + + alpha4 + 1.0 + + + color4 + "black" + + + label4 + + + + marker4 + -1 + + + style4 + 1 + + + width4 + 1 + + + alpha5 + 1.0 + + + color5 + "cyan" + + + label5 + + + + marker5 + -1 + + + style5 + 1 + + + width5 + 1 + + + alpha6 + 1.0 + + + color6 + "magenta" + + + label6 + + + + marker6 + -1 + + + style6 + 1 + + + width6 + 1 + + + alpha7 + 1.0 + + + color7 + "yellow" + + + label7 + + + + marker7 + -1 + + + style7 + 1 + + + width7 + 1 + + + alpha8 + 1.0 + + + color8 + "dark red" + + + label8 + + + + marker8 + -1 + + + style8 + 1 + + + width8 + 1 + + + alpha9 + 1.0 + + + color9 + "dark green" + + + label9 + + + + marker9 + -1 + + + style9 + 1 + + + width9 + 1 + + + name + "" + + + nconnections + 1 + + + size + 1024 + + + srate + samp_rate + + + tr_chan + 0 + + + tr_delay + 0 + + + tr_level + 0.0 + + + tr_mode + qtgui.TRIG_MODE_FREE + + + tr_slope + qtgui.TRIG_SLOPE_POS + + + tr_tag + "" + + + type + complex + + + update_time + 0.10 + + + ylabel + Amplitude + + + yunit + "" + + + ymax + 1 + + + ymin + -1 + + + + qtgui_time_sink_x + + autoscale + False + + + alias + + + + comment + + + + ctrlpanel + False + + + affinity + + + + entags + True + + + _enabled + 0 + + + _coordinate + (1112, 342) + + + gui_hint + + + + _rotation + 0 + + + grid + False + + + id + qtgui_time_sink_x_0_0 + + + legend + True + + + alpha1 + 1.0 + + + color1 + "blue" + + + label1 + + + + marker1 + -1 + + + style1 + 1 + + + width1 + 1 + + + alpha10 + 1.0 + + + color10 + "blue" + + + label10 + + + + marker10 + -1 + + + style10 + 1 + + + width10 + 1 + + + alpha2 + 1.0 + + + color2 + "red" + + + label2 + + + + marker2 + -1 + + + style2 + 1 + + + width2 + 1 + + + alpha3 + 1.0 + + + color3 + "green" + + + label3 + + + + marker3 + -1 + + + style3 + 1 + + + width3 + 1 + + + alpha4 + 1.0 + + + color4 + "black" + + + label4 + + + + marker4 + -1 + + + style4 + 1 + + + width4 + 1 + + + alpha5 + 1.0 + + + color5 + "cyan" + + + label5 + + + + marker5 + -1 + + + style5 + 1 + + + width5 + 1 + + + alpha6 + 1.0 + + + color6 + "magenta" + + + label6 + + + + marker6 + -1 + + + style6 + 1 + + + width6 + 1 + + + alpha7 + 1.0 + + + color7 + "yellow" + + + label7 + + + + marker7 + -1 + + + style7 + 1 + + + width7 + 1 + + + alpha8 + 1.0 + + + color8 + "dark red" + + + label8 + + + + marker8 + -1 + + + style8 + 1 + + + width8 + 1 + + + alpha9 + 1.0 + + + color9 + "dark green" + + + label9 + + + + marker9 + -1 + + + style9 + 1 + + + width9 + 1 + + + name + "" + + + nconnections + 1 + + + size + 1024 + + + srate + samp_rate + + + tr_chan + 0 + + + tr_delay + 0 + + + tr_level + 0.0 + + + tr_mode + qtgui.TRIG_MODE_FREE + + + tr_slope + qtgui.TRIG_SLOPE_POS + + + tr_tag + "" + + + type + float + + + update_time + 0.10 + + + ylabel + Amplitude + + + yunit + "" + + + ymax + 1 + + + ymin + -1 + + + + qtgui_time_sink_x + + autoscale + False + + + alias + + + + comment + + + + ctrlpanel + False + + + affinity + + + + entags + True + + + _enabled + 0 + + + _coordinate + (1216, 46) + + + gui_hint + + + + _rotation + 0 + + + grid + False + + + id + qtgui_time_sink_x_1 + + + legend + True + + + alpha1 + 1.0 + + + color1 + "blue" + + + label1 + + + + marker1 + -1 + + + style1 + 1 + + + width1 + 1 + + + alpha10 + 1.0 + + + color10 + "blue" + + + label10 + + + + marker10 + -1 + + + style10 + 1 + + + width10 + 1 + + + alpha2 + 1.0 + + + color2 + "red" + + + label2 + + + + marker2 + -1 + + + style2 + 1 + + + width2 + 1 + + + alpha3 + 1.0 + + + color3 + "green" + + + label3 + + + + marker3 + -1 + + + style3 + 1 + + + width3 + 1 + + + alpha4 + 1.0 + + + color4 + "black" + + + label4 + + + + marker4 + -1 + + + style4 + 1 + + + width4 + 1 + + + alpha5 + 1.0 + + + color5 + "cyan" + + + label5 + + + + marker5 + -1 + + + style5 + 1 + + + width5 + 1 + + + alpha6 + 1.0 + + + color6 + "magenta" + + + label6 + + + + marker6 + -1 + + + style6 + 1 + + + width6 + 1 + + + alpha7 + 1.0 + + + color7 + "yellow" + + + label7 + + + + marker7 + -1 + + + style7 + 1 + + + width7 + 1 + + + alpha8 + 1.0 + + + color8 + "dark red" + + + label8 + + + + marker8 + -1 + + + style8 + 1 + + + width8 + 1 + + + alpha9 + 1.0 + + + color9 + "dark green" + + + label9 + + + + marker9 + -1 + + + style9 + 1 + + + width9 + 1 + + + name + "" + + + nconnections + 1 + + + size + 1024 + + + srate + samp_rate + + + tr_chan + 0 + + + tr_delay + 0 + + + tr_level + 0.0 + + + tr_mode + qtgui.TRIG_MODE_FREE + + + tr_slope + qtgui.TRIG_SLOPE_POS + + + tr_tag + "" + + + type + complex + + + update_time + 0.10 + + + ylabel + Amplitude + + + yunit + "" + + + ymax + 1 + + + ymin + -1 + + + + uhd_amsg_source + + alias + + + + comment + + + + affinity + + + + dev_addr + + + + _enabled + True + + + _coordinate + (528, 449) + + + _rotation + 0 + + + id + uhd_amsg_source_0 + + + maxoutbuf + 0 + + + minoutbuf + 0 + + + + uhd_usrp_sink + + alias + + + + ant0 + + + + bw0 + 0 + + + center_freq0 + freq + + + norm_gain0 + False + + + gain0 + txgain + + + ant10 + + + + bw10 + 0 + + + center_freq10 + 0 + + + norm_gain10 + False + + + gain10 + 0 + + + ant11 + + + + bw11 + 0 + + + center_freq11 + 0 + + + norm_gain11 + False + + + gain11 + 0 + + + ant12 + + + + bw12 + 0 + + + center_freq12 + 0 + + + norm_gain12 + False + + + gain12 + 0 + + + ant13 + + + + bw13 + 0 + + + center_freq13 + 0 + + + norm_gain13 + False + + + gain13 + 0 + + + ant14 + + + + bw14 + 0 + + + center_freq14 + 0 + + + norm_gain14 + False + + + gain14 + 0 + + + ant15 + + + + bw15 + 0 + + + center_freq15 + 0 + + + norm_gain15 + False + + + gain15 + 0 + + + ant16 + + + + bw16 + 0 + + + center_freq16 + 0 + + + norm_gain16 + False + + + gain16 + 0 + + + ant17 + + + + bw17 + 0 + + + center_freq17 + 0 + + + norm_gain17 + False + + + gain17 + 0 + + + ant18 + + + + bw18 + 0 + + + center_freq18 + 0 + + + norm_gain18 + False + + + gain18 + 0 + + + ant19 + + + + bw19 + 0 + + + center_freq19 + 0 + + + norm_gain19 + False + + + gain19 + 0 + + + ant1 + + + + bw1 + 0 + + + center_freq1 + 0 + + + norm_gain1 + False + + + gain1 + 0 + + + ant20 + + + + bw20 + 0 + + + center_freq20 + 0 + + + norm_gain20 + False + + + gain20 + 0 + + + ant21 + + + + bw21 + 0 + + + center_freq21 + 0 + + + norm_gain21 + False + + + gain21 + 0 + + + ant22 + + + + bw22 + 0 + + + center_freq22 + 0 + + + norm_gain22 + False + + + gain22 + 0 + + + ant23 + + + + bw23 + 0 + + + center_freq23 + 0 + + + norm_gain23 + False + + + gain23 + 0 + + + ant24 + + + + bw24 + 0 + + + center_freq24 + 0 + + + norm_gain24 + False + + + gain24 + 0 + + + ant25 + + + + bw25 + 0 + + + center_freq25 + 0 + + + norm_gain25 + False + + + gain25 + 0 + + + ant26 + + + + bw26 + 0 + + + center_freq26 + 0 + + + norm_gain26 + False + + + gain26 + 0 + + + ant27 + + + + bw27 + 0 + + + center_freq27 + 0 + + + norm_gain27 + False + + + gain27 + 0 + + + ant28 + + + + bw28 + 0 + + + center_freq28 + 0 + + + norm_gain28 + False + + + gain28 + 0 + + + ant29 + + + + bw29 + 0 + + + center_freq29 + 0 + + + norm_gain29 + False + + + gain29 + 0 + + + ant2 + + + + bw2 + 0 + + + center_freq2 + 0 + + + norm_gain2 + False + + + gain2 + 0 + + + ant30 + + + + bw30 + 0 + + + center_freq30 + 0 + + + norm_gain30 + False + + + gain30 + 0 + + + ant31 + + + + bw31 + 0 + + + center_freq31 + 0 + + + norm_gain31 + False + + + gain31 + 0 + + + ant3 + + + + bw3 + 0 + + + center_freq3 + 0 + + + norm_gain3 + False + + + gain3 + 0 + + + ant4 + + + + bw4 + 0 + + + center_freq4 + 0 + + + norm_gain4 + False + + + gain4 + 0 + + + ant5 + + + + bw5 + 0 + + + center_freq5 + 0 + + + norm_gain5 + False + + + gain5 + 0 + + + ant6 + + + + bw6 + 0 + + + center_freq6 + 0 + + + norm_gain6 + False + + + gain6 + 0 + + + ant7 + + + + bw7 + 0 + + + center_freq7 + 0 + + + norm_gain7 + False + + + gain7 + 0 + + + ant8 + + + + bw8 + 0 + + + center_freq8 + 0 + + + norm_gain8 + False + + + gain8 + 0 + + + ant9 + + + + bw9 + 0 + + + center_freq9 + 0 + + + norm_gain9 + False + + + gain9 + 0 + + + clock_rate + 0.0 + + + comment + + + + affinity + + + + dev_addr + "" + + + dev_args + "" + + + _enabled + True + + + _coordinate + (1320, 319) + + + _rotation + 0 + + + id + uhd_usrp_sink_0 + + + type + fc32 + + + clock_source0 + + + + sd_spec0 + + + + time_source0 + + + + clock_source1 + + + + sd_spec1 + + + + time_source1 + + + + clock_source2 + + + + sd_spec2 + + + + time_source2 + + + + clock_source3 + + + + sd_spec3 + + + + time_source3 + + + + clock_source4 + + + + sd_spec4 + + + + time_source4 + + + + clock_source5 + + + + sd_spec5 + + + + time_source5 + + + + clock_source6 + + + + sd_spec6 + + + + time_source6 + + + + clock_source7 + + + + sd_spec7 + + + + time_source7 + + + + nchan + 1 + + + num_mboards + 1 + + + samp_rate + samp_rate + + + hide_cmd_port + False + + + stream_args + + + + stream_chans + [] + + + sync + + + + len_tag_name + + + + otw + + + + + uhd_usrp_source + + alias + + + + ant0 + + + + bw0 + 0 + + + center_freq0 + freq + + + dc_offs_enb0 + "" + + + iq_imbal_enb0 + "" + + + norm_gain0 + False + + + gain0 + rxgain + + + ant10 + + + + bw10 + 0 + + + center_freq10 + 0 + + + dc_offs_enb10 + "" + + + iq_imbal_enb10 + "" + + + norm_gain10 + False + + + gain10 + 0 + + + ant11 + + + + bw11 + 0 + + + center_freq11 + 0 + + + dc_offs_enb11 + "" + + + iq_imbal_enb11 + "" + + + norm_gain11 + False + + + gain11 + 0 + + + ant12 + + + + bw12 + 0 + + + center_freq12 + 0 + + + dc_offs_enb12 + "" + + + iq_imbal_enb12 + "" + + + norm_gain12 + False + + + gain12 + 0 + + + ant13 + + + + bw13 + 0 + + + center_freq13 + 0 + + + dc_offs_enb13 + "" + + + iq_imbal_enb13 + "" + + + norm_gain13 + False + + + gain13 + 0 + + + ant14 + + + + bw14 + 0 + + + center_freq14 + 0 + + + dc_offs_enb14 + "" + + + iq_imbal_enb14 + "" + + + norm_gain14 + False + + + gain14 + 0 + + + ant15 + + + + bw15 + 0 + + + center_freq15 + 0 + + + dc_offs_enb15 + "" + + + iq_imbal_enb15 + "" + + + norm_gain15 + False + + + gain15 + 0 + + + ant16 + + + + bw16 + 0 + + + center_freq16 + 0 + + + dc_offs_enb16 + "" + + + iq_imbal_enb16 + "" + + + norm_gain16 + False + + + gain16 + 0 + + + ant17 + + + + bw17 + 0 + + + center_freq17 + 0 + + + dc_offs_enb17 + "" + + + iq_imbal_enb17 + "" + + + norm_gain17 + False + + + gain17 + 0 + + + ant18 + + + + bw18 + 0 + + + center_freq18 + 0 + + + dc_offs_enb18 + "" + + + iq_imbal_enb18 + "" + + + norm_gain18 + False + + + gain18 + 0 + + + ant19 + + + + bw19 + 0 + + + center_freq19 + 0 + + + dc_offs_enb19 + "" + + + iq_imbal_enb19 + "" + + + norm_gain19 + False + + + gain19 + 0 + + + ant1 + + + + bw1 + 0 + + + center_freq1 + 0 + + + dc_offs_enb1 + "" + + + iq_imbal_enb1 + "" + + + norm_gain1 + False + + + gain1 + 0 + + + ant20 + + + + bw20 + 0 + + + center_freq20 + 0 + + + dc_offs_enb20 + "" + + + iq_imbal_enb20 + "" + + + norm_gain20 + False + + + gain20 + 0 + + + ant21 + + + + bw21 + 0 + + + center_freq21 + 0 + + + dc_offs_enb21 + "" + + + iq_imbal_enb21 + "" + + + norm_gain21 + False + + + gain21 + 0 + + + ant22 + + + + bw22 + 0 + + + center_freq22 + 0 + + + dc_offs_enb22 + "" + + + iq_imbal_enb22 + "" + + + norm_gain22 + False + + + gain22 + 0 + + + ant23 + + + + bw23 + 0 + + + center_freq23 + 0 + + + dc_offs_enb23 + "" + + + iq_imbal_enb23 + "" + + + norm_gain23 + False + + + gain23 + 0 + + + ant24 + + + + bw24 + 0 + + + center_freq24 + 0 + + + dc_offs_enb24 + "" + + + iq_imbal_enb24 + "" + + + norm_gain24 + False + + + gain24 + 0 + + + ant25 + + + + bw25 + 0 + + + center_freq25 + 0 + + + dc_offs_enb25 + "" + + + iq_imbal_enb25 + "" + + + norm_gain25 + False + + + gain25 + 0 + + + ant26 + + + + bw26 + 0 + + + center_freq26 + 0 + + + dc_offs_enb26 + "" + + + iq_imbal_enb26 + "" + + + norm_gain26 + False + + + gain26 + 0 + + + ant27 + + + + bw27 + 0 + + + center_freq27 + 0 + + + dc_offs_enb27 + "" + + + iq_imbal_enb27 + "" + + + norm_gain27 + False + + + gain27 + 0 + + + ant28 + + + + bw28 + 0 + + + center_freq28 + 0 + + + dc_offs_enb28 + "" + + + iq_imbal_enb28 + "" + + + norm_gain28 + False + + + gain28 + 0 + + + ant29 + + + + bw29 + 0 + + + center_freq29 + 0 + + + dc_offs_enb29 + "" + + + iq_imbal_enb29 + "" + + + norm_gain29 + False + + + gain29 + 0 + + + ant2 + + + + bw2 + 0 + + + center_freq2 + 0 + + + dc_offs_enb2 + "" + + + iq_imbal_enb2 + "" + + + norm_gain2 + False + + + gain2 + 0 + + + ant30 + + + + bw30 + 0 + + + center_freq30 + 0 + + + dc_offs_enb30 + "" + + + iq_imbal_enb30 + "" + + + norm_gain30 + False + + + gain30 + 0 + + + ant31 + + + + bw31 + 0 + + + center_freq31 + 0 + + + dc_offs_enb31 + "" + + + iq_imbal_enb31 + "" + + + norm_gain31 + False + + + gain31 + 0 + + + ant3 + + + + bw3 + 0 + + + center_freq3 + 0 + + + dc_offs_enb3 + "" + + + iq_imbal_enb3 + "" + + + norm_gain3 + False + + + gain3 + 0 + + + ant4 + + + + bw4 + 0 + + + center_freq4 + 0 + + + dc_offs_enb4 + "" + + + iq_imbal_enb4 + "" + + + norm_gain4 + False + + + gain4 + 0 + + + ant5 + + + + bw5 + 0 + + + center_freq5 + 0 + + + dc_offs_enb5 + "" + + + iq_imbal_enb5 + "" + + + norm_gain5 + False + + + gain5 + 0 + + + ant6 + + + + bw6 + 0 + + + center_freq6 + 0 + + + dc_offs_enb6 + "" + + + iq_imbal_enb6 + "" + + + norm_gain6 + False + + + gain6 + 0 + + + ant7 + + + + bw7 + 0 + + + center_freq7 + 0 + + + dc_offs_enb7 + "" + + + iq_imbal_enb7 + "" + + + norm_gain7 + False + + + gain7 + 0 + + + ant8 + + + + bw8 + 0 + + + center_freq8 + 0 + + + dc_offs_enb8 + "" + + + iq_imbal_enb8 + "" + + + norm_gain8 + False + + + gain8 + 0 + + + ant9 + + + + bw9 + 0 + + + center_freq9 + 0 + + + dc_offs_enb9 + "" + + + iq_imbal_enb9 + "" + + + norm_gain9 + False + + + gain9 + 0 + + + clock_rate + 0.0 + + + comment + + + + affinity + + + + dev_addr + "" + + + dev_args + "" + + + _enabled + 1 + + + _coordinate + (640, 342) + + + _rotation + 0 + + + id + uhd_usrp_source_0 + + + maxoutbuf + 0 + + + clock_source0 + + + + sd_spec0 + + + + time_source0 + + + + clock_source1 + + + + sd_spec1 + + + + time_source1 + + + + clock_source2 + + + + sd_spec2 + + + + time_source2 + + + + clock_source3 + + + + sd_spec3 + + + + time_source3 + + + + clock_source4 + + + + sd_spec4 + + + + time_source4 + + + + clock_source5 + + + + sd_spec5 + + + + time_source5 + + + + clock_source6 + + + + sd_spec6 + + + + time_source6 + + + + clock_source7 + + + + sd_spec7 + + + + time_source7 + + + + minoutbuf + 0 + + + nchan + 1 + + + num_mboards + 1 + + + type + fc32 + + + samp_rate + samp_rate + + + hide_cmd_port + False + + + stream_args + + + + stream_chans + [] + + + sync + + + + otw + + + + + analog_sig_source_x_0 + blocks_add_xx_0 + 0 + 1 + + + analog_sig_source_x_1 + blocks_add_xx_0 + 0 + 0 + + + blocks_add_xx_0 + blocks_multiply_const_vxx_0 + 0 + 0 + + + blocks_complex_to_real_0 + qtgui_time_sink_x_0_0 + 0 + 0 + + + blocks_message_burst_source_0 + blocks_null_sink_0_2 + 0 + 0 + + + blocks_multiply_const_vxx_0 + dpd_memless_poly_0 + 0 + 0 + + + blocks_multiply_const_vxx_1 + qtgui_const_sink_x_0 + 0 + 1 + + + blocks_multiply_const_vxx_1 + qtgui_freq_sink_x_0_0_0 + 0 + 0 + + + blocks_multiply_const_vxx_1 + qtgui_time_sink_x_0 + 0 + 0 + + + blocks_multiply_const_vxx_1 + qtgui_time_sink_x_1 + 0 + 0 + + + blocks_multiply_const_vxx_1 + uhd_usrp_sink_0 + 0 + 0 + + + dpd_memless_poly_0 + blocks_multiply_const_vxx_1 + 0 + 0 + + + uhd_amsg_source_0 + blocks_message_burst_source_0 + msg + msg + + + uhd_usrp_source_0 + blocks_complex_to_real_0 + 0 + 0 + + + uhd_usrp_source_0 + blocks_null_sink_0_2_0 + 0 + 0 + + + uhd_usrp_source_0 + qtgui_const_sink_x_0 + 0 + 0 + + + uhd_usrp_source_0 + qtgui_freq_sink_x_0_0 + 0 + 0 + + diff --git a/grc/live_analyse_two_tone_lut.grc b/grc/live_analyse_two_tone_lut.grc new file mode 100644 index 0000000..3b4e044 --- /dev/null +++ b/grc/live_analyse_two_tone_lut.grc @@ -0,0 +1,6007 @@ + + + + Wed Oct 28 18:49:28 2015 + + options + + author + + + + window_size + 2000,2000 + + + category + Custom + + + comment + + + + description + + + + _enabled + True + + + _coordinate + (8, 8) + + + _rotation + 0 + + + generate_options + qt_gui + + + hier_block_src_path + .: + + + id + live_analyse_dab_poly + + + max_nouts + 0 + + + qt_qss_theme + + + + realtime_scheduling + + + + run_command + {python} -u {filename} + + + run_options + prompt + + + run + True + + + thread_safe_setters + + + + title + + + + + variable_qtgui_range + + comment + + + + value + 1.0/8 + + + _enabled + True + + + _coordinate + (24, 553) + + + gui_hint + + + + _rotation + 0 + + + id + a_1 + + + label + a_1 + + + min_len + 200 + + + orient + Qt.Horizontal + + + start + 0 + + + step + 0.001 + + + stop + 1 + + + rangeType + float + + + widget + counter_slider + + + + variable_qtgui_range + + comment + + + + value + 2.0/8 + + + _enabled + True + + + _coordinate + (136, 553) + + + gui_hint + + + + _rotation + 0 + + + id + a_2 + + + label + a_2 + + + min_len + 200 + + + orient + Qt.Horizontal + + + start + 0 + + + step + 0.001 + + + stop + 1 + + + rangeType + float + + + widget + counter_slider + + + + variable_qtgui_range + + comment + + + + value + 3.0/8 + + + _enabled + True + + + _coordinate + (248, 553) + + + gui_hint + + + + _rotation + 0 + + + id + a_3 + + + label + a_3 + + + min_len + 200 + + + orient + Qt.Horizontal + + + start + 0 + + + step + 0.001 + + + stop + 1 + + + rangeType + float + + + widget + counter_slider + + + + variable_qtgui_range + + comment + + + + value + 4.0/8 + + + _enabled + True + + + _coordinate + (360, 553) + + + gui_hint + + + + _rotation + 0 + + + id + a_4 + + + label + a_4 + + + min_len + 200 + + + orient + Qt.Horizontal + + + start + 0 + + + step + 0.001 + + + stop + 1 + + + rangeType + float + + + widget + counter_slider + + + + variable_qtgui_range + + comment + + + + value + 5.0/8 + + + _enabled + True + + + _coordinate + (24, 681) + + + gui_hint + + + + _rotation + 0 + + + id + a_5 + + + label + a_5 + + + min_len + 200 + + + orient + Qt.Horizontal + + + start + 0 + + + step + 0.001 + + + stop + 1 + + + rangeType + float + + + widget + counter_slider + + + + variable_qtgui_range + + comment + + + + value + 6.0/8 + + + _enabled + True + + + _coordinate + (136, 681) + + + gui_hint + + + + _rotation + 0 + + + id + a_6 + + + label + a_6 + + + min_len + 200 + + + orient + Qt.Horizontal + + + start + 0 + + + step + 0.001 + + + stop + 1 + + + rangeType + float + + + widget + counter_slider + + + + variable_qtgui_range + + comment + + + + value + 7.0/8 + + + _enabled + True + + + _coordinate + (248, 681) + + + gui_hint + + + + _rotation + 0 + + + id + a_7 + + + label + a_7 + + + min_len + 200 + + + orient + Qt.Horizontal + + + start + 0 + + + step + 0.001 + + + stop + 1 + + + rangeType + float + + + widget + counter_slider + + + + variable_qtgui_range + + comment + + + + value + 8.0/8 + + + _enabled + True + + + _coordinate + (360, 681) + + + gui_hint + + + + _rotation + 0 + + + id + a_8 + + + label + a_8 + + + min_len + 200 + + + orient + Qt.Horizontal + + + start + 0 + + + step + 0.001 + + + stop + 1 + + + rangeType + float + + + widget + counter_slider + + + + variable_qtgui_range + + comment + + + + value + 1 + + + _enabled + True + + + _coordinate + (128, 376) + + + gui_hint + + + + _rotation + 0 + + + id + ampl + + + label + + + + min_len + 200 + + + orient + Qt.Horizontal + + + start + 0 + + + step + 0.0001 + + + stop + 1 + + + rangeType + float + + + widget + counter_slider + + + + variable + + comment + + + + _enabled + True + + + _coordinate + (104, 101) + + + _rotation + 0 + + + id + f1 + + + value + samp_rate / 4 + + + + variable + + comment + + + + _enabled + True + + + _coordinate + (1384, 573) + + + _rotation + 0 + + + id + f2 + + + value + samp_rate / 3.875 + + + + variable_qtgui_range + + comment + + + + value + 4096000/2 + + + _enabled + True + + + _coordinate + (472, 552) + + + gui_hint + + + + _rotation + 0 + + + id + f_1 + + + label + + + + min_len + 200 + + + orient + Qt.Horizontal + + + start + 1 + + + step + 1 + + + stop + 8000000 + + + rangeType + float + + + widget + counter_slider + + + + variable_qtgui_range + + comment + + + + value + 4096000/2 + 66000 + + + _enabled + True + + + _coordinate + (472, 680) + + + gui_hint + + + + _rotation + 0 + + + id + f_2 + + + label + + + + min_len + 200 + + + orient + Qt.Horizontal + + + start + 1 + + + step + 1 + + + stop + 8000000 + + + rangeType + float + + + widget + counter_slider + + + + variable + + comment + + + + _enabled + True + + + _coordinate + (8, 157) + + + _rotation + 0 + + + id + freq + + + value + 222e6 + + + + variable_qtgui_range + + comment + + + + value + 1 + + + _enabled + True + + + _coordinate + (800, 536) + + + gui_hint + + + + _rotation + 0 + + + id + imag + + + label + + + + min_len + 200 + + + orient + Qt.Horizontal + + + start + -1 + + + step + 0.0001 + + + stop + 1 + + + rangeType + float + + + widget + counter_slider + + + + variable_qtgui_range + + comment + + + + value + 1 + + + _enabled + True + + + _coordinate + (688, 536) + + + gui_hint + + + + _rotation + 0 + + + id + real + + + label + + + + min_len + 200 + + + orient + Qt.Horizontal + + + start + -1 + + + step + 0.0001 + + + stop + 1 + + + rangeType + float + + + widget + counter_slider + + + + variable_qtgui_range + + comment + + + + value + 10 + + + _enabled + True + + + _coordinate + (8, 225) + + + gui_hint + + + + _rotation + 0 + + + id + rxgain + + + label + rxgain + + + min_len + 200 + + + orient + Qt.Horizontal + + + start + 0 + + + step + 1 + + + stop + 100 + + + rangeType + float + + + widget + counter_slider + + + + variable + + comment + + + + _enabled + True + + + _coordinate + (8, 85) + + + _rotation + 0 + + + id + samp_rate + + + value + 8e6 + + + + variable_qtgui_range + + comment + + + + value + 84 + + + _enabled + True + + + _coordinate + (8, 345) + + + gui_hint + + + + _rotation + 0 + + + id + txgain + + + label + txgain + + + min_len + 200 + + + orient + Qt.Horizontal + + + start + 0 + + + step + 1 + + + stop + 100 + + + rangeType + float + + + widget + counter_slider + + + + variable_qtgui_range + + comment + + + + value + 1 + + + _enabled + True + + + _coordinate + (248, 376) + + + gui_hint + + + + _rotation + 0 + + + id + use_lut + + + label + + + + min_len + 200 + + + orient + Qt.Horizontal + + + start + 0 + + + step + 0.0001 + + + stop + 1 + + + rangeType + float + + + widget + counter_slider + + + + analog_sig_source_x + + amp + 0.5 + + + alias + + + + comment + + + + affinity + + + + _enabled + 0 + + + freq + f_2 + + + _coordinate + (200, 144) + + + _rotation + 0 + + + id + analog_sig_source_x_0 + + + maxoutbuf + 0 + + + minoutbuf + 0 + + + offset + 0 + + + type + complex + + + samp_rate + samp_rate + + + waveform + analog.GR_COS_WAVE + + + + analog_sig_source_x + + amp + 0.5 + + + alias + + + + comment + + + + affinity + + + + _enabled + 0 + + + freq + f_1 + + + _coordinate + (200, 32) + + + _rotation + 0 + + + id + analog_sig_source_x_1 + + + maxoutbuf + 0 + + + minoutbuf + 0 + + + offset + 0 + + + type + complex + + + samp_rate + samp_rate + + + waveform + analog.GR_COS_WAVE + + + + blocks_add_xx + + alias + + + + comment + + + + affinity + + + + _enabled + 0 + + + _coordinate + (392, 113) + + + _rotation + 0 + + + id + blocks_add_xx_0 + + + type + complex + + + maxoutbuf + 0 + + + minoutbuf + 0 + + + num_inputs + 2 + + + vlen + 1 + + + + blocks_add_xx + + alias + + + + comment + + + + affinity + + + + _enabled + True + + + _coordinate + (1048, 41) + + + _rotation + 0 + + + id + blocks_add_xx_1 + + + type + complex + + + maxoutbuf + 0 + + + minoutbuf + 0 + + + num_inputs + 2 + + + vlen + 1 + + + + blocks_complex_to_real + + alias + + + + comment + + + + affinity + + + + _enabled + 0 + + + _coordinate + (920, 361) + + + _rotation + 0 + + + id + blocks_complex_to_real_0 + + + maxoutbuf + 0 + + + minoutbuf + 0 + + + vlen + 1 + + + + blocks_file_source + + alias + + + + comment + + + + affinity + + + + _enabled + 0 + + + file + /home/andreas/dab/ODR-StaticPrecorrection/input.dat + + + _coordinate + (416, 13) + + + _rotation + 0 + + + id + blocks_file_source_0 + + + maxoutbuf + 0 + + + minoutbuf + 0 + + + type + complex + + + repeat + True + + + vlen + 1 + + + + blocks_file_source + + alias + + + + comment + + + + affinity + + + + _enabled + 1 + + + file + /home/andreas/dab/dab_normalized_c64.dat + + + _coordinate + (200, 253) + + + _rotation + 0 + + + id + blocks_file_source_0_0 + + + maxoutbuf + 0 + + + minoutbuf + 0 + + + type + complex + + + repeat + True + + + vlen + 1 + + + + blocks_message_burst_source + + alias + + + + comment + + + + affinity + + + + _enabled + True + + + _coordinate + (824, 449) + + + _rotation + 0 + + + id + blocks_message_burst_source_0 + + + maxoutbuf + 0 + + + minoutbuf + 0 + + + type + byte + + + vlen + 1 + + + + blocks_multiply_const_vxx + + alias + + + + comment + + + + const + use_lut + + + affinity + + + + _enabled + True + + + _coordinate + (792, 124) + + + _rotation + 0 + + + id + blocks_multiply_const_vxx_0 + + + type + complex + + + maxoutbuf + 0 + + + minoutbuf + 0 + + + vlen + 1 + + + + blocks_multiply_const_vxx + + alias + + + + comment + + + + const + ampl + + + affinity + + + + _enabled + True + + + _coordinate + (472, 124) + + + _rotation + 0 + + + id + blocks_multiply_const_vxx_1 + + + type + complex + + + maxoutbuf + 0 + + + minoutbuf + 0 + + + vlen + 1 + + + + blocks_multiply_const_vxx + + alias + + + + comment + + + + const + 1-use_lut + + + affinity + + + + _enabled + True + + + _coordinate + (800, 20) + + + _rotation + 0 + + + id + blocks_multiply_const_vxx_2 + + + type + complex + + + maxoutbuf + 0 + + + minoutbuf + 0 + + + vlen + 1 + + + + blocks_null_sink + + alias + + + + bus_conns + [[0,],] + + + comment + + + + affinity + + + + _enabled + True + + + _coordinate + (1248, 449) + + + _rotation + 0 + + + id + blocks_null_sink_0_2 + + + type + byte + + + num_inputs + 1 + + + vlen + 1 + + + + blocks_null_sink + + alias + + + + bus_conns + [[0,],] + + + comment + + + + affinity + + + + _enabled + True + + + _coordinate + (976, 409) + + + _rotation + 0 + + + id + blocks_null_sink_0_2_0 + + + type + complex + + + num_inputs + 1 + + + vlen + 1 + + + + dpd_lut + + alias + + + + comment + + + + affinity + + + + _enabled + True + + + _coordinate + (624, 75) + + + _rotation + 0 + + + id + dpd_lut_0 + + + maxoutbuf + 0 + + + minoutbuf + 0 + + + a1 + a_1 + + + a2 + a_2 + + + a3 + a_3 + + + a4 + a_4 + + + a5 + a_5 + + + a6 + a_6 + + + a7 + a_7 + + + a8 + a_8 + + + + qtgui_const_sink_x + + autoscale + False + + + alias + + + + comment + + + + affinity + + + + _enabled + 0 + + + _coordinate + (920, 197) + + + gui_hint + + + + _rotation + 0 + + + grid + False + + + id + qtgui_const_sink_x_0 + + + legend + True + + + alpha1 + 1.0 + + + color1 + "blue" + + + label1 + + + + marker1 + 0 + + + style1 + 0 + + + width1 + 1 + + + alpha10 + 1.0 + + + color10 + "red" + + + label10 + + + + marker10 + 0 + + + style10 + 0 + + + width10 + 1 + + + alpha2 + 1.0 + + + color2 + "red" + + + label2 + + + + marker2 + 0 + + + style2 + 0 + + + width2 + 1 + + + alpha3 + 1.0 + + + color3 + "red" + + + label3 + + + + marker3 + 0 + + + style3 + 0 + + + width3 + 1 + + + alpha4 + 1.0 + + + color4 + "red" + + + label4 + + + + marker4 + 0 + + + style4 + 0 + + + width4 + 1 + + + alpha5 + 1.0 + + + color5 + "red" + + + label5 + + + + marker5 + 0 + + + style5 + 0 + + + width5 + 1 + + + alpha6 + 1.0 + + + color6 + "red" + + + label6 + + + + marker6 + 0 + + + style6 + 0 + + + width6 + 1 + + + alpha7 + 1.0 + + + color7 + "red" + + + label7 + + + + marker7 + 0 + + + style7 + 0 + + + width7 + 1 + + + alpha8 + 1.0 + + + color8 + "red" + + + label8 + + + + marker8 + 0 + + + style8 + 0 + + + width8 + 1 + + + alpha9 + 1.0 + + + color9 + "red" + + + label9 + + + + marker9 + 0 + + + style9 + 0 + + + width9 + 1 + + + name + "" + + + nconnections + 2 + + + size + 1024 + + + tr_chan + 0 + + + tr_level + 0.0 + + + tr_mode + qtgui.TRIG_MODE_FREE + + + tr_slope + qtgui.TRIG_SLOPE_POS + + + tr_tag + "" + + + type + complex + + + update_time + 0.10 + + + xmax + 2 + + + xmin + -2 + + + ymax + 2 + + + ymin + -2 + + + + qtgui_freq_sink_x + + autoscale + False + + + average + 1.0 + + + bw + samp_rate + + + alias + + + + fc + 0 + + + comment + + + + ctrlpanel + False + + + affinity + + + + _enabled + 1 + + + fftsize + 16000 + + + _coordinate + (928, 278) + + + gui_hint + + + + _rotation + 0 + + + grid + False + + + id + qtgui_freq_sink_x_0_0 + + + legend + True + + + alpha1 + 1.0 + + + color1 + "blue" + + + label1 + + + + width1 + 1 + + + alpha10 + 1.0 + + + color10 + "dark blue" + + + label10 + + + + width10 + 1 + + + alpha2 + 1.0 + + + color2 + "red" + + + label2 + + + + width2 + 1 + + + alpha3 + 1.0 + + + color3 + "green" + + + label3 + + + + width3 + 1 + + + alpha4 + 1.0 + + + color4 + "black" + + + label4 + + + + width4 + 1 + + + alpha5 + 1.0 + + + color5 + "cyan" + + + label5 + + + + width5 + 1 + + + alpha6 + 1.0 + + + color6 + "magenta" + + + label6 + + + + width6 + 1 + + + alpha7 + 1.0 + + + color7 + "yellow" + + + label7 + + + + width7 + 1 + + + alpha8 + 1.0 + + + color8 + "dark red" + + + label8 + + + + width8 + 1 + + + alpha9 + 1.0 + + + color9 + "dark green" + + + label9 + + + + width9 + 1 + + + maxoutbuf + 0 + + + minoutbuf + 0 + + + name + "" + + + nconnections + 1 + + + showports + True + + + freqhalf + True + + + tr_chan + 0 + + + tr_level + 0.0 + + + tr_mode + qtgui.TRIG_MODE_FREE + + + tr_tag + "" + + + type + complex + + + update_time + 0.1 + + + wintype + firdes.WIN_BLACKMAN_hARRIS + + + ymax + 10 + + + ymin + -140 + + + + qtgui_freq_sink_x + + autoscale + False + + + average + 1.0 + + + bw + samp_rate + + + alias + + + + fc + 0 + + + comment + + + + ctrlpanel + False + + + affinity + + + + _enabled + 0 + + + fftsize + 16000 + + + _coordinate + (1312, 102) + + + gui_hint + + + + _rotation + 0 + + + grid + False + + + id + qtgui_freq_sink_x_0_0_0 + + + legend + True + + + alpha1 + 1.0 + + + color1 + "blue" + + + label1 + + + + width1 + 1 + + + alpha10 + 1.0 + + + color10 + "dark blue" + + + label10 + + + + width10 + 1 + + + alpha2 + 1.0 + + + color2 + "red" + + + label2 + + + + width2 + 1 + + + alpha3 + 1.0 + + + color3 + "green" + + + label3 + + + + width3 + 1 + + + alpha4 + 1.0 + + + color4 + "black" + + + label4 + + + + width4 + 1 + + + alpha5 + 1.0 + + + color5 + "cyan" + + + label5 + + + + width5 + 1 + + + alpha6 + 1.0 + + + color6 + "magenta" + + + label6 + + + + width6 + 1 + + + alpha7 + 1.0 + + + color7 + "yellow" + + + label7 + + + + width7 + 1 + + + alpha8 + 1.0 + + + color8 + "dark red" + + + label8 + + + + width8 + 1 + + + alpha9 + 1.0 + + + color9 + "dark green" + + + label9 + + + + width9 + 1 + + + maxoutbuf + 0 + + + minoutbuf + 0 + + + name + "" + + + nconnections + 1 + + + showports + True + + + freqhalf + True + + + tr_chan + 0 + + + tr_level + 0.0 + + + tr_mode + qtgui.TRIG_MODE_FREE + + + tr_tag + "" + + + type + complex + + + update_time + 0.10 + + + wintype + firdes.WIN_BLACKMAN_hARRIS + + + ymax + 10 + + + ymin + -140 + + + + qtgui_time_sink_x + + autoscale + False + + + alias + + + + comment + + + + ctrlpanel + False + + + affinity + + + + entags + True + + + _enabled + 0 + + + _coordinate + (1312, 182) + + + gui_hint + + + + _rotation + 0 + + + grid + False + + + id + qtgui_time_sink_x_0 + + + legend + True + + + alpha1 + 1.0 + + + color1 + "blue" + + + label1 + + + + marker1 + -1 + + + style1 + 1 + + + width1 + 1 + + + alpha10 + 1.0 + + + color10 + "blue" + + + label10 + + + + marker10 + -1 + + + style10 + 1 + + + width10 + 1 + + + alpha2 + 1.0 + + + color2 + "red" + + + label2 + + + + marker2 + -1 + + + style2 + 1 + + + width2 + 1 + + + alpha3 + 1.0 + + + color3 + "green" + + + label3 + + + + marker3 + -1 + + + style3 + 1 + + + width3 + 1 + + + alpha4 + 1.0 + + + color4 + "black" + + + label4 + + + + marker4 + -1 + + + style4 + 1 + + + width4 + 1 + + + alpha5 + 1.0 + + + color5 + "cyan" + + + label5 + + + + marker5 + -1 + + + style5 + 1 + + + width5 + 1 + + + alpha6 + 1.0 + + + color6 + "magenta" + + + label6 + + + + marker6 + -1 + + + style6 + 1 + + + width6 + 1 + + + alpha7 + 1.0 + + + color7 + "yellow" + + + label7 + + + + marker7 + -1 + + + style7 + 1 + + + width7 + 1 + + + alpha8 + 1.0 + + + color8 + "dark red" + + + label8 + + + + marker8 + -1 + + + style8 + 1 + + + width8 + 1 + + + alpha9 + 1.0 + + + color9 + "dark green" + + + label9 + + + + marker9 + -1 + + + style9 + 1 + + + width9 + 1 + + + name + "" + + + nconnections + 1 + + + size + 1024 + + + srate + samp_rate + + + tr_chan + 0 + + + tr_delay + 0 + + + tr_level + 0.0 + + + tr_mode + qtgui.TRIG_MODE_FREE + + + tr_slope + qtgui.TRIG_SLOPE_POS + + + tr_tag + "" + + + type + complex + + + update_time + 0.10 + + + ylabel + Amplitude + + + yunit + "" + + + ymax + 1 + + + ymin + -1 + + + + qtgui_time_sink_x + + autoscale + False + + + alias + + + + comment + + + + ctrlpanel + False + + + affinity + + + + entags + True + + + _enabled + 0 + + + _coordinate + (1112, 342) + + + gui_hint + + + + _rotation + 0 + + + grid + False + + + id + qtgui_time_sink_x_0_0 + + + legend + True + + + alpha1 + 1.0 + + + color1 + "blue" + + + label1 + + + + marker1 + -1 + + + style1 + 1 + + + width1 + 1 + + + alpha10 + 1.0 + + + color10 + "blue" + + + label10 + + + + marker10 + -1 + + + style10 + 1 + + + width10 + 1 + + + alpha2 + 1.0 + + + color2 + "red" + + + label2 + + + + marker2 + -1 + + + style2 + 1 + + + width2 + 1 + + + alpha3 + 1.0 + + + color3 + "green" + + + label3 + + + + marker3 + -1 + + + style3 + 1 + + + width3 + 1 + + + alpha4 + 1.0 + + + color4 + "black" + + + label4 + + + + marker4 + -1 + + + style4 + 1 + + + width4 + 1 + + + alpha5 + 1.0 + + + color5 + "cyan" + + + label5 + + + + marker5 + -1 + + + style5 + 1 + + + width5 + 1 + + + alpha6 + 1.0 + + + color6 + "magenta" + + + label6 + + + + marker6 + -1 + + + style6 + 1 + + + width6 + 1 + + + alpha7 + 1.0 + + + color7 + "yellow" + + + label7 + + + + marker7 + -1 + + + style7 + 1 + + + width7 + 1 + + + alpha8 + 1.0 + + + color8 + "dark red" + + + label8 + + + + marker8 + -1 + + + style8 + 1 + + + width8 + 1 + + + alpha9 + 1.0 + + + color9 + "dark green" + + + label9 + + + + marker9 + -1 + + + style9 + 1 + + + width9 + 1 + + + name + "" + + + nconnections + 1 + + + size + 1024 + + + srate + samp_rate + + + tr_chan + 0 + + + tr_delay + 0 + + + tr_level + 0.0 + + + tr_mode + qtgui.TRIG_MODE_FREE + + + tr_slope + qtgui.TRIG_SLOPE_POS + + + tr_tag + "" + + + type + float + + + update_time + 0.10 + + + ylabel + Amplitude + + + yunit + "" + + + ymax + 1 + + + ymin + -1 + + + + qtgui_time_sink_x + + autoscale + False + + + alias + + + + comment + + + + ctrlpanel + False + + + affinity + + + + entags + True + + + _enabled + 0 + + + _coordinate + (1312, 22) + + + gui_hint + + + + _rotation + 0 + + + grid + False + + + id + qtgui_time_sink_x_1 + + + legend + True + + + alpha1 + 1.0 + + + color1 + "blue" + + + label1 + + + + marker1 + -1 + + + style1 + 1 + + + width1 + 1 + + + alpha10 + 1.0 + + + color10 + "blue" + + + label10 + + + + marker10 + -1 + + + style10 + 1 + + + width10 + 1 + + + alpha2 + 1.0 + + + color2 + "red" + + + label2 + + + + marker2 + -1 + + + style2 + 1 + + + width2 + 1 + + + alpha3 + 1.0 + + + color3 + "green" + + + label3 + + + + marker3 + -1 + + + style3 + 1 + + + width3 + 1 + + + alpha4 + 1.0 + + + color4 + "black" + + + label4 + + + + marker4 + -1 + + + style4 + 1 + + + width4 + 1 + + + alpha5 + 1.0 + + + color5 + "cyan" + + + label5 + + + + marker5 + -1 + + + style5 + 1 + + + width5 + 1 + + + alpha6 + 1.0 + + + color6 + "magenta" + + + label6 + + + + marker6 + -1 + + + style6 + 1 + + + width6 + 1 + + + alpha7 + 1.0 + + + color7 + "yellow" + + + label7 + + + + marker7 + -1 + + + style7 + 1 + + + width7 + 1 + + + alpha8 + 1.0 + + + color8 + "dark red" + + + label8 + + + + marker8 + -1 + + + style8 + 1 + + + width8 + 1 + + + alpha9 + 1.0 + + + color9 + "dark green" + + + label9 + + + + marker9 + -1 + + + style9 + 1 + + + width9 + 1 + + + name + "" + + + nconnections + 1 + + + size + 1024 + + + srate + samp_rate + + + tr_chan + 0 + + + tr_delay + 0 + + + tr_level + 0.0 + + + tr_mode + qtgui.TRIG_MODE_FREE + + + tr_slope + qtgui.TRIG_SLOPE_POS + + + tr_tag + "" + + + type + complex + + + update_time + 0.10 + + + ylabel + Amplitude + + + yunit + "" + + + ymax + 1 + + + ymin + -1 + + + + uhd_amsg_source + + alias + + + + comment + + + + affinity + + + + dev_addr + + + + _enabled + True + + + _coordinate + (528, 449) + + + _rotation + 0 + + + id + uhd_amsg_source_0 + + + maxoutbuf + 0 + + + minoutbuf + 0 + + + + uhd_usrp_sink + + alias + + + + ant0 + + + + bw0 + 0 + + + center_freq0 + freq + + + norm_gain0 + False + + + gain0 + txgain + + + ant10 + + + + bw10 + 0 + + + center_freq10 + 0 + + + norm_gain10 + False + + + gain10 + 0 + + + ant11 + + + + bw11 + 0 + + + center_freq11 + 0 + + + norm_gain11 + False + + + gain11 + 0 + + + ant12 + + + + bw12 + 0 + + + center_freq12 + 0 + + + norm_gain12 + False + + + gain12 + 0 + + + ant13 + + + + bw13 + 0 + + + center_freq13 + 0 + + + norm_gain13 + False + + + gain13 + 0 + + + ant14 + + + + bw14 + 0 + + + center_freq14 + 0 + + + norm_gain14 + False + + + gain14 + 0 + + + ant15 + + + + bw15 + 0 + + + center_freq15 + 0 + + + norm_gain15 + False + + + gain15 + 0 + + + ant16 + + + + bw16 + 0 + + + center_freq16 + 0 + + + norm_gain16 + False + + + gain16 + 0 + + + ant17 + + + + bw17 + 0 + + + center_freq17 + 0 + + + norm_gain17 + False + + + gain17 + 0 + + + ant18 + + + + bw18 + 0 + + + center_freq18 + 0 + + + norm_gain18 + False + + + gain18 + 0 + + + ant19 + + + + bw19 + 0 + + + center_freq19 + 0 + + + norm_gain19 + False + + + gain19 + 0 + + + ant1 + + + + bw1 + 0 + + + center_freq1 + 0 + + + norm_gain1 + False + + + gain1 + 0 + + + ant20 + + + + bw20 + 0 + + + center_freq20 + 0 + + + norm_gain20 + False + + + gain20 + 0 + + + ant21 + + + + bw21 + 0 + + + center_freq21 + 0 + + + norm_gain21 + False + + + gain21 + 0 + + + ant22 + + + + bw22 + 0 + + + center_freq22 + 0 + + + norm_gain22 + False + + + gain22 + 0 + + + ant23 + + + + bw23 + 0 + + + center_freq23 + 0 + + + norm_gain23 + False + + + gain23 + 0 + + + ant24 + + + + bw24 + 0 + + + center_freq24 + 0 + + + norm_gain24 + False + + + gain24 + 0 + + + ant25 + + + + bw25 + 0 + + + center_freq25 + 0 + + + norm_gain25 + False + + + gain25 + 0 + + + ant26 + + + + bw26 + 0 + + + center_freq26 + 0 + + + norm_gain26 + False + + + gain26 + 0 + + + ant27 + + + + bw27 + 0 + + + center_freq27 + 0 + + + norm_gain27 + False + + + gain27 + 0 + + + ant28 + + + + bw28 + 0 + + + center_freq28 + 0 + + + norm_gain28 + False + + + gain28 + 0 + + + ant29 + + + + bw29 + 0 + + + center_freq29 + 0 + + + norm_gain29 + False + + + gain29 + 0 + + + ant2 + + + + bw2 + 0 + + + center_freq2 + 0 + + + norm_gain2 + False + + + gain2 + 0 + + + ant30 + + + + bw30 + 0 + + + center_freq30 + 0 + + + norm_gain30 + False + + + gain30 + 0 + + + ant31 + + + + bw31 + 0 + + + center_freq31 + 0 + + + norm_gain31 + False + + + gain31 + 0 + + + ant3 + + + + bw3 + 0 + + + center_freq3 + 0 + + + norm_gain3 + False + + + gain3 + 0 + + + ant4 + + + + bw4 + 0 + + + center_freq4 + 0 + + + norm_gain4 + False + + + gain4 + 0 + + + ant5 + + + + bw5 + 0 + + + center_freq5 + 0 + + + norm_gain5 + False + + + gain5 + 0 + + + ant6 + + + + bw6 + 0 + + + center_freq6 + 0 + + + norm_gain6 + False + + + gain6 + 0 + + + ant7 + + + + bw7 + 0 + + + center_freq7 + 0 + + + norm_gain7 + False + + + gain7 + 0 + + + ant8 + + + + bw8 + 0 + + + center_freq8 + 0 + + + norm_gain8 + False + + + gain8 + 0 + + + ant9 + + + + bw9 + 0 + + + center_freq9 + 0 + + + norm_gain9 + False + + + gain9 + 0 + + + clock_rate + 0.0 + + + comment + + + + affinity + + + + dev_addr + "" + + + dev_args + "" + + + _enabled + True + + + _coordinate + (1312, 263) + + + _rotation + 0 + + + id + uhd_usrp_sink_0 + + + type + fc32 + + + clock_source0 + + + + sd_spec0 + + + + time_source0 + + + + clock_source1 + + + + sd_spec1 + + + + time_source1 + + + + clock_source2 + + + + sd_spec2 + + + + time_source2 + + + + clock_source3 + + + + sd_spec3 + + + + time_source3 + + + + clock_source4 + + + + sd_spec4 + + + + time_source4 + + + + clock_source5 + + + + sd_spec5 + + + + time_source5 + + + + clock_source6 + + + + sd_spec6 + + + + time_source6 + + + + clock_source7 + + + + sd_spec7 + + + + time_source7 + + + + nchan + 1 + + + num_mboards + 1 + + + samp_rate + samp_rate + + + hide_cmd_port + False + + + stream_args + + + + stream_chans + [] + + + sync + + + + len_tag_name + + + + otw + + + + + uhd_usrp_source + + alias + + + + ant0 + + + + bw0 + 0 + + + center_freq0 + freq + + + dc_offs_enb0 + "" + + + iq_imbal_enb0 + "" + + + norm_gain0 + False + + + gain0 + rxgain + + + ant10 + + + + bw10 + 0 + + + center_freq10 + 0 + + + dc_offs_enb10 + "" + + + iq_imbal_enb10 + "" + + + norm_gain10 + False + + + gain10 + 0 + + + ant11 + + + + bw11 + 0 + + + center_freq11 + 0 + + + dc_offs_enb11 + "" + + + iq_imbal_enb11 + "" + + + norm_gain11 + False + + + gain11 + 0 + + + ant12 + + + + bw12 + 0 + + + center_freq12 + 0 + + + dc_offs_enb12 + "" + + + iq_imbal_enb12 + "" + + + norm_gain12 + False + + + gain12 + 0 + + + ant13 + + + + bw13 + 0 + + + center_freq13 + 0 + + + dc_offs_enb13 + "" + + + iq_imbal_enb13 + "" + + + norm_gain13 + False + + + gain13 + 0 + + + ant14 + + + + bw14 + 0 + + + center_freq14 + 0 + + + dc_offs_enb14 + "" + + + iq_imbal_enb14 + "" + + + norm_gain14 + False + + + gain14 + 0 + + + ant15 + + + + bw15 + 0 + + + center_freq15 + 0 + + + dc_offs_enb15 + "" + + + iq_imbal_enb15 + "" + + + norm_gain15 + False + + + gain15 + 0 + + + ant16 + + + + bw16 + 0 + + + center_freq16 + 0 + + + dc_offs_enb16 + "" + + + iq_imbal_enb16 + "" + + + norm_gain16 + False + + + gain16 + 0 + + + ant17 + + + + bw17 + 0 + + + center_freq17 + 0 + + + dc_offs_enb17 + "" + + + iq_imbal_enb17 + "" + + + norm_gain17 + False + + + gain17 + 0 + + + ant18 + + + + bw18 + 0 + + + center_freq18 + 0 + + + dc_offs_enb18 + "" + + + iq_imbal_enb18 + "" + + + norm_gain18 + False + + + gain18 + 0 + + + ant19 + + + + bw19 + 0 + + + center_freq19 + 0 + + + dc_offs_enb19 + "" + + + iq_imbal_enb19 + "" + + + norm_gain19 + False + + + gain19 + 0 + + + ant1 + + + + bw1 + 0 + + + center_freq1 + 0 + + + dc_offs_enb1 + "" + + + iq_imbal_enb1 + "" + + + norm_gain1 + False + + + gain1 + 0 + + + ant20 + + + + bw20 + 0 + + + center_freq20 + 0 + + + dc_offs_enb20 + "" + + + iq_imbal_enb20 + "" + + + norm_gain20 + False + + + gain20 + 0 + + + ant21 + + + + bw21 + 0 + + + center_freq21 + 0 + + + dc_offs_enb21 + "" + + + iq_imbal_enb21 + "" + + + norm_gain21 + False + + + gain21 + 0 + + + ant22 + + + + bw22 + 0 + + + center_freq22 + 0 + + + dc_offs_enb22 + "" + + + iq_imbal_enb22 + "" + + + norm_gain22 + False + + + gain22 + 0 + + + ant23 + + + + bw23 + 0 + + + center_freq23 + 0 + + + dc_offs_enb23 + "" + + + iq_imbal_enb23 + "" + + + norm_gain23 + False + + + gain23 + 0 + + + ant24 + + + + bw24 + 0 + + + center_freq24 + 0 + + + dc_offs_enb24 + "" + + + iq_imbal_enb24 + "" + + + norm_gain24 + False + + + gain24 + 0 + + + ant25 + + + + bw25 + 0 + + + center_freq25 + 0 + + + dc_offs_enb25 + "" + + + iq_imbal_enb25 + "" + + + norm_gain25 + False + + + gain25 + 0 + + + ant26 + + + + bw26 + 0 + + + center_freq26 + 0 + + + dc_offs_enb26 + "" + + + iq_imbal_enb26 + "" + + + norm_gain26 + False + + + gain26 + 0 + + + ant27 + + + + bw27 + 0 + + + center_freq27 + 0 + + + dc_offs_enb27 + "" + + + iq_imbal_enb27 + "" + + + norm_gain27 + False + + + gain27 + 0 + + + ant28 + + + + bw28 + 0 + + + center_freq28 + 0 + + + dc_offs_enb28 + "" + + + iq_imbal_enb28 + "" + + + norm_gain28 + False + + + gain28 + 0 + + + ant29 + + + + bw29 + 0 + + + center_freq29 + 0 + + + dc_offs_enb29 + "" + + + iq_imbal_enb29 + "" + + + norm_gain29 + False + + + gain29 + 0 + + + ant2 + + + + bw2 + 0 + + + center_freq2 + 0 + + + dc_offs_enb2 + "" + + + iq_imbal_enb2 + "" + + + norm_gain2 + False + + + gain2 + 0 + + + ant30 + + + + bw30 + 0 + + + center_freq30 + 0 + + + dc_offs_enb30 + "" + + + iq_imbal_enb30 + "" + + + norm_gain30 + False + + + gain30 + 0 + + + ant31 + + + + bw31 + 0 + + + center_freq31 + 0 + + + dc_offs_enb31 + "" + + + iq_imbal_enb31 + "" + + + norm_gain31 + False + + + gain31 + 0 + + + ant3 + + + + bw3 + 0 + + + center_freq3 + 0 + + + dc_offs_enb3 + "" + + + iq_imbal_enb3 + "" + + + norm_gain3 + False + + + gain3 + 0 + + + ant4 + + + + bw4 + 0 + + + center_freq4 + 0 + + + dc_offs_enb4 + "" + + + iq_imbal_enb4 + "" + + + norm_gain4 + False + + + gain4 + 0 + + + ant5 + + + + bw5 + 0 + + + center_freq5 + 0 + + + dc_offs_enb5 + "" + + + iq_imbal_enb5 + "" + + + norm_gain5 + False + + + gain5 + 0 + + + ant6 + + + + bw6 + 0 + + + center_freq6 + 0 + + + dc_offs_enb6 + "" + + + iq_imbal_enb6 + "" + + + norm_gain6 + False + + + gain6 + 0 + + + ant7 + + + + bw7 + 0 + + + center_freq7 + 0 + + + dc_offs_enb7 + "" + + + iq_imbal_enb7 + "" + + + norm_gain7 + False + + + gain7 + 0 + + + ant8 + + + + bw8 + 0 + + + center_freq8 + 0 + + + dc_offs_enb8 + "" + + + iq_imbal_enb8 + "" + + + norm_gain8 + False + + + gain8 + 0 + + + ant9 + + + + bw9 + 0 + + + center_freq9 + 0 + + + dc_offs_enb9 + "" + + + iq_imbal_enb9 + "" + + + norm_gain9 + False + + + gain9 + 0 + + + clock_rate + 0.0 + + + comment + + + + affinity + + + + dev_addr + "" + + + dev_args + "" + + + _enabled + 1 + + + _coordinate + (640, 342) + + + _rotation + 0 + + + id + uhd_usrp_source_0 + + + maxoutbuf + 0 + + + clock_source0 + + + + sd_spec0 + + + + time_source0 + + + + clock_source1 + + + + sd_spec1 + + + + time_source1 + + + + clock_source2 + + + + sd_spec2 + + + + time_source2 + + + + clock_source3 + + + + sd_spec3 + + + + time_source3 + + + + clock_source4 + + + + sd_spec4 + + + + time_source4 + + + + clock_source5 + + + + sd_spec5 + + + + time_source5 + + + + clock_source6 + + + + sd_spec6 + + + + time_source6 + + + + clock_source7 + + + + sd_spec7 + + + + time_source7 + + + + minoutbuf + 0 + + + nchan + 1 + + + num_mboards + 1 + + + type + fc32 + + + samp_rate + samp_rate + + + hide_cmd_port + False + + + stream_args + + + + stream_chans + [] + + + sync + + + + otw + + + + + analog_sig_source_x_0 + blocks_add_xx_0 + 0 + 1 + + + analog_sig_source_x_1 + blocks_add_xx_0 + 0 + 0 + + + blocks_add_xx_0 + blocks_multiply_const_vxx_1 + 0 + 0 + + + blocks_add_xx_1 + qtgui_freq_sink_x_0_0_0 + 0 + 0 + + + blocks_add_xx_1 + qtgui_time_sink_x_0 + 0 + 0 + + + blocks_add_xx_1 + qtgui_time_sink_x_1 + 0 + 0 + + + blocks_add_xx_1 + uhd_usrp_sink_0 + 0 + 0 + + + blocks_complex_to_real_0 + qtgui_time_sink_x_0_0 + 0 + 0 + + + blocks_file_source_0 + blocks_multiply_const_vxx_1 + 0 + 0 + + + blocks_file_source_0_0 + blocks_multiply_const_vxx_1 + 0 + 0 + + + blocks_message_burst_source_0 + blocks_null_sink_0_2 + 0 + 0 + + + blocks_multiply_const_vxx_0 + blocks_add_xx_1 + 0 + 1 + + + blocks_multiply_const_vxx_1 + blocks_multiply_const_vxx_2 + 0 + 0 + + + blocks_multiply_const_vxx_1 + dpd_lut_0 + 0 + 0 + + + blocks_multiply_const_vxx_2 + blocks_add_xx_1 + 0 + 0 + + + dpd_lut_0 + blocks_multiply_const_vxx_0 + 0 + 0 + + + uhd_amsg_source_0 + blocks_message_burst_source_0 + msg + msg + + + uhd_usrp_source_0 + blocks_complex_to_real_0 + 0 + 0 + + + uhd_usrp_source_0 + blocks_null_sink_0_2_0 + 0 + 0 + + + uhd_usrp_source_0 + qtgui_const_sink_x_0 + 0 + 0 + + + uhd_usrp_source_0 + qtgui_freq_sink_x_0_0 + 0 + 0 + + diff --git a/live_analyse_py.grc b/live_analyse_py.grc index 907de4c..eeaeaa1 100644 --- a/live_analyse_py.grc +++ b/live_analyse_py.grc @@ -447,6 +447,77 @@ 1 + + dpd_lut + + alias + + + + comment + + + + affinity + + + + _enabled + 1 + + + _coordinate + (512, 19) + + + _rotation + 0 + + + id + dpd_lut_0 + + + maxoutbuf + 0 + + + minoutbuf + 0 + + + a1 + 1 + + + a2 + 0 + + + a3 + 0 + + + a4 + 0 + + + a5 + 0 + + + a6 + 0 + + + a7 + 0 + + + a8 + 0 + + dpd_memless_poly @@ -463,11 +534,11 @@ _enabled - True + 0 _coordinate - (480, 99) + (480, 171) _rotation @@ -2526,6 +2597,12 @@ + + blocks_file_source_0 + dpd_lut_0 + 0 + 0 + blocks_file_source_0 dpd_memless_poly_0 @@ -2538,6 +2615,12 @@ 0 0 + + dpd_lut_0 + uhd_usrp_sink_0 + 0 + 0 + dpd_memless_poly_0 uhd_usrp_sink_0 diff --git a/src/dab_tuning_lib.py b/src/dab_tuning_lib.py new file mode 100644 index 0000000..8faafef --- /dev/null +++ b/src/dab_tuning_lib.py @@ -0,0 +1,31 @@ +import numpy as np +import matplotlib.pyplot as plt +import src.dab_util as du + + +def calc_signal_sholder_ratio(fft, sampling_rate, debug = False, debug_path="", suffix=""): + fft_size = fft.shape[0] + n_sig = (du.freq_to_fft_sample(-du.c["bw"]/2., fft_size, sampling_rate), + du.freq_to_fft_sample( du.c["bw"]/2., fft_size, sampling_rate)) + sig = np.mean(fft[n_sig[0]:n_sig[1]]) + + n_noise = (du.freq_to_fft_sample(-3000000., fft_size, sampling_rate), + du.freq_to_fft_sample(-2500000, fft_size, sampling_rate)) + noise = np.mean(fft[n_noise[0]:n_noise[1]]) + + n_sholder = (du.freq_to_fft_sample(-1500000, fft_size, sampling_rate), + du.freq_to_fft_sample(-du.c["bw"]/2, fft_size, sampling_rate)) + sholder = np.mean(fft[n_sholder[0]:n_sholder[1]]) + + score = -sholder + + if debug == True: + print(n_sig, n_sholder, n_noise) + plt.plot(fft) + plt.plot((n_sig[0], n_sig[1]), (sig, sig), linewidth=5, color='g') + plt.plot((n_noise[0], n_noise[1]), (noise, noise), linewidth=5, color='r') + plt.plot((n_sholder[0], n_sholder[1]), (sholder, sholder), linewidth=5, color='y') + plt.savefig(debug_path + "/" + str(score) + suffix + ".png") + plt.clf() + + return score diff --git a/src/dab_util.py b/src/dab_util.py new file mode 100644 index 0000000..2ad2af6 --- /dev/null +++ b/src/dab_util.py @@ -0,0 +1,42 @@ +import numpy as np +import scipy +import matplotlib.pyplot as plt + +c = { + "bw":1536000 + } + +def calc_fft(signal, fft_size = 1024, sampling_rate = 1, plot = False): + """returns one numpy array for the frequencies and one for the corresponding fft""" + signal_spectrum = np.fft.fftshift(np.fft.fft(signal, fft_size)) + freqs = np.fft.fftshift(np.fft.fftfreq(fft_size, d=1./sampling_rate)) + if plot == True: + plot_freq_spec(freqs, signal_spectrum) + return freqs, signal_spectrum + +def plot_freq_spec(freq, spec = None): + plt.figure(figsize=(10,5)) + if spec == None: + plt.plot(freq) + else: + plt.plot(freq, np.abs(spec)) + +def freq_to_fft_sample(freq, fft_size, sampling_rate): + freq_ratio = 1.0 * fft_size / sampling_rate + return int(freq * freq_ratio + fft_size / 2) + +def crop_signal(signal, n_window = 1000, n_zeros = 1000, debug = False): + #signal = signal[-10:-1] + mag = abs(signal) + window = np.ones(n_window) / float(n_window) + mag = scipy.signal.convolve(window, mag) + mag = scipy.signal.convolve(window, mag) + thr = 0.05 * np.max(mag) + idx_start = np.argmax(mag > thr) + idx_end = mag.shape[0] - np.argmax(np.flipud(mag > thr)) + if debug: + plt.plot(mag < thr) + plt.plot((idx_start,idx_start), (0,0.1), color='g', linewidth=2) + plt.plot((idx_end,idx_end), (0,0.1), color='r', linewidth=2) + signal = signal[idx_start - n_zeros: idx_end + n_zeros] + return signal diff --git a/src/two_tone_lib.py b/src/two_tone_lib.py index a3c9675..beeb332 100644 --- a/src/two_tone_lib.py +++ b/src/two_tone_lib.py @@ -4,13 +4,15 @@ import matplotlib.pyplot as plt def gen_two_tone(path = "./input.dat", predist = None, par = None, debug = False): period1 = 3.875 period2 = 4 - t_both = 124 + t_both = 124 * 10 assert(t_both / period1 % 1 == 0) assert(t_both / period2 % 1 == 0) t = np.arange(0,t_both) sin1 = np.exp(t * 2j * np.pi * 1./period1) sin2 = np.exp(t * 2j * np.pi * 1./period2) + #sin1 = np.cos(t * np.pi * 1./period1) + #sin2 = np.cos(t * np.pi * 1./period2) sig = sin1 + sin2 if predist is None: @@ -18,7 +20,7 @@ def gen_two_tone(path = "./input.dat", predist = None, par = None, debug = False else: res = predist(sig, par) - res = res / np.max(res) + res = res / np.max(res) * 0.99 res = res.astype(np.complex64) res.tofile(path) @@ -43,33 +45,36 @@ def predist_poly(sig, coefs = []): res += sig * np.abs(sig)**(idx+1) * coef #+1 because first correction term is squared return res -def analyse_power_spec(spec, debug = False, debug_path="", suffix=""): +def analyse_power_spec(spec, threshold=40, debug = False, debug_path="", suffix=""): peak_1 = None peak_2 = None - spec_start = 4096 - spec_end = 8192 - first_peak = spec_start + 2048 - second_peak = spec_start + 2114 delta_freq = 66 + first_peak = 4096 + 2048 + second_peak = 4096 + 2114 + spec_start = first_peak - delta_freq * 10 + spec_end = second_peak + delta_freq * 10 peak_other = [] if debug: plt.plot(spec) - for x in [c * delta_freq + delta_freq//2 for c in range(spec_start//delta_freq)]: - start = spec_start + x + #find peaks + for x in [c * delta_freq + delta_freq//2 for c in range((spec_end - spec_start)//delta_freq)]: + start = spec_start + x end = spec_start + x + delta_freq peak = spec[start:end].max() - if debug: plt.plot((start,end), (peak, peak)) if start < first_peak and end > first_peak: - peak_1 = peak - if debug: plt.plot((start,end), (peak+1, peak+1)) + peak_1 = (start, end, peak) elif start < second_peak and end > second_peak: - peak_2 = peak - if debug: plt.plot((start,end), (peak+1, peak+1)) + peak_2 = (start, end, peak) else: - peak_other.append(peak) - mean_signal = (peak_1 + peak_2) / 2 - mean_others = np.mean(peak_other) - score = mean_signal - mean_others + peak_other.append((start, end, peak)) + mean_signal = (peak_1[2] + peak_2[2]) / 2 + #peak_other = [[s,e,p] for s, e, p in peak_other if mean_signal - p < threshold] + meas = [mean_signal - p for s, e, p in peak_other] + score = np.min(meas) if debug: + plt.plot((peak_1[0],peak_1[1]), (peak_1[2], peak_1[2]), color='g', linewidth=2) + plt.plot((peak_2[0],peak_2[1]), (peak_2[2], peak_2[2]), color='g', linewidth=2) + for start, end, peak in peak_other: + plt.plot((start, end), (peak, peak), color='r', linewidth=2) plt.savefig(debug_path + "/" + str(score) + suffix + ".png") plt.clf() return score diff --git a/sync-measurement.ipynb b/sync-measurement.ipynb new file mode 100644 index 0000000..5b713e7 --- /dev/null +++ b/sync-measurement.ipynb @@ -0,0 +1,358 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "import numpy as np\n", + "from scipy import signal\n", + "import matplotlib.pyplot as plt\n", + "import src.dab_util as du" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import src.signal_gen as sg\n", + "reload(sg)\n", + "reload(du)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "sg.gen_ramps(amplitudes=np.linspace(0.001, 0.95, num = 20))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "a_in = np.fromfile(\"./input.dat\", dtype=np.complex64)\n", + "a_out = np.fromfile(\"./output.dat\", dtype=np.complex64)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def crop_signal(signal, n_window = 1000, n_zeros = 50000, debug = False):\n", + " #signal = signal[-10:-1]\n", + " mag = abs(signal)\n", + " window = np.ones(n_window) / float(n_window)\n", + " mag = scipy.signal.convolve(window, mag)\n", + " mag = scipy.signal.convolve(window, mag)\n", + " thr = 0.01 * np.max(mag)\n", + " idx_start = np.argmax(mag > thr)\n", + " idx_end = mag.shape[0] - np.argmax(np.flipud(mag > thr))\n", + " if debug:\n", + " plt.plot(mag < thr)\n", + " plt.plot((idx_start,idx_start), (0,0.1), color='g', linewidth=2)\n", + " plt.plot((idx_end,idx_end), (0,0.1), color='r', linewidth=2)\n", + " signal = signal[idx_start - n_zeros: idx_end + n_zeros]\n", + " return signal" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "a_in = du.crop_signal(a_in)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "a_out = du.crop_signal(a_out)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#plt.plot(a_in.real[780000 + 230000:2000000]+1, color='b');\n", + "#plt.plot(a_out.real[780000:2000000], color='g');\n", + "plt.plot(a_in.real+1, color='b');\n", + "plt.plot(a_out.real, color='g');" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def lagcorr(x,y,lag=None,verbose=True):\n", + " '''Compute lead-lag correlations between 2 time series.\n", + "\n", + " ,: 1-D time series.\n", + " : lag option, could take different forms of :\n", + " if 0 or None, compute ordinary correlation and p-value;\n", + " if positive integer, compute lagged correlation with lag\n", + " upto ;\n", + " if negative integer, compute lead correlation with lead\n", + " upto <-lag>;\n", + " if pass in an list or tuple or array of integers, compute \n", + " lead/lag correlations at different leads/lags.\n", + "\n", + " Note: when talking about lead/lag, uses as a reference.\n", + " Therefore positive lag means lags by , computation is\n", + " done by shifting to the left hand side by with respect to\n", + " .\n", + " Similarly negative lag means leads by , computation is\n", + " done by shifting to the right hand side by with respect to\n", + " .\n", + "\n", + " Return : a (n*2) array, with 1st column the correlation \n", + " coefficients, 2nd column correpsonding p values.\n", + "\n", + " Currently only works for 1-D arrays.\n", + " '''\n", + "\n", + " import numpy\n", + " from scipy.stats import pearsonr\n", + "\n", + " if len(x)!=len(y):\n", + " raise Exception('Input variables of different lengths.')\n", + "\n", + " #--------Unify types of -------------\n", + " if numpy.isscalar(lag):\n", + " if abs(lag)>=len(x):\n", + " raise Exception('Maximum lag equal or larger than array.')\n", + " if lag<0:\n", + " lag=-numpy.arange(abs(lag)+1)\n", + " elif lag==0:\n", + " lag=[0,]\n", + " else:\n", + " lag=numpy.arange(lag+1) \n", + " elif lag is None:\n", + " lag=[0,]\n", + " else:\n", + " lag=numpy.asarray(lag)\n", + "\n", + " #-------Loop over lags---------------------\n", + " result=[]\n", + " if verbose:\n", + " print '\\n#: Computing lagged-correlations at lags:',lag\n", + "\n", + " for ii in lag:\n", + " if ii<0:\n", + " result.append(pearsonr(x[:ii],y[-ii:]))\n", + " elif ii==0:\n", + " result.append(pearsonr(x,y))\n", + " elif ii>0:\n", + " result.append(pearsonr(x[ii:],y[:-ii]))\n", + "\n", + " result=numpy.asarray(result)\n", + "\n", + " return result" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "l = min(a_out.shape[0], a_in.shape[0])\n", + "a_out = a_out[0:l]\n", + "a_in = a_in[0:l]\n", + "\n", + "c = lagcorr(abs(a_out), abs(a_in), 1000)[:,0]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#def corr(a_out, a_in):\n", + "# import scipy\n", + "# corr = np.correlate(\n", + "# a_out,\n", + "# a_in,\n", + "# 'full')\n", + "# delay = np.argmax(corr) - a_in.shape[0] + 1\n", + "# #plt.plot(range(-corr.shape[0]/2, corr.shape[0]/2),corr)\n", + "# return delay" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#delay = corr(a_out, a_in)\n", + "delay = np.argmax(c)\n", + "a_out = a_out[delay - 1:]\n", + "delay" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "l = min(a_out.shape[0], a_in.shape[0])\n", + "a_out = a_out[0:l]\n", + "a_in = a_in[0:l]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "plt.plot(a_in, color='g');\n", + "plt.plot(a_out - 1, color='y');" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def get_amp_ratio(ampl_1, ampl_2):\n", + " idxs = (a_in > ampl_1) & (a_in < ampl_2)\n", + " ratio = (a_out[idxs] / a_in[idxs])\n", + " return ratio.mean(), ratio.var()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def get_phase(ampl_1, ampl_2):\n", + " idxs = (a_in > ampl_1) & (a_in < ampl_2)\n", + " ratio = np.angle(a_out[idxs]) - np.angle(a_in[idxs])\n", + " return ratio.mean(), ratio.var()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "bins = np.linspace(0.1,1,num=10)\n", + "res = []\n", + "for ampl_1, ampl_2 in zip(bins, bins[1:]):\n", + " res.append(get_amp_ratio(ampl_1, ampl_2))\n", + "mean, var = zip(*res)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "plt.plot(mean)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "bins = np.linspace(0.1,1,num=10)\n", + "res = []\n", + "for ampl_1, ampl_2 in zip(bins, bins[1:]):\n", + " res.append(get_phase(ampl_1, ampl_2))\n", + "mean, var = zip(*res)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "plt.plot(mean)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/two_tone_tuner.ipynb b/two_tone_tuner.ipynb index af96f5a..1d6f6cb 100644 --- a/two_tone_tuner.ipynb +++ b/two_tone_tuner.ipynb @@ -12,6 +12,7 @@ "import time\n", "import src.gen_source as gen_source\n", "import src.two_tone_lib as tt\n", + "import src.dab_tuning_lib as dt\n", "\n", "import src.tcp_async as tcp_async\n", "import src.tcp_sync as tcp_sync\n", @@ -31,6 +32,7 @@ " reload(tcp_sync)\n", " reload(gen_source)\n", " reload(tt)\n", + " reload(td)\n", "except:\n", " pass" ] @@ -106,24 +108,34 @@ "metadata": {}, "outputs": [], "source": [ - "def measure(param):\n", - " x2, x3, x4, x5, x6, x7, x8 = param\n", + "def measure(param, debug = False):\n", + " #x2, x3, x4, x5, x6, x7, x8 = param\n", + " x1, x2, x3, x4, x5, x6, x7, x8 = param + [1]\n", " \n", " repeat = True\n", " while repeat:\n", " #tt.gen_two_tone(debug = True, predist=tt.predist_poly, par=(x2, x3, x4))\n", " \n", - " top.dpd_memless_poly_0.set_a1(0.8)\n", - " top.dpd_memless_poly_0.set_a2(x2)\n", - " top.dpd_memless_poly_0.set_a3(x3)\n", - " top.dpd_memless_poly_0.set_a4(x4)\n", - " top.dpd_memless_poly_0.set_a5(x5)\n", - " top.dpd_memless_poly_0.set_a6(x6)\n", - " top.dpd_memless_poly_0.set_a7(x7)\n", - " top.dpd_memless_poly_0.set_a8(x8)\n", + " #top.dpd_memless_poly_0.set_a1(0.8)\n", + " #top.dpd_memless_poly_0.set_a2(x2)\n", + " #top.dpd_memless_poly_0.set_a3(x3)\n", + " #top.dpd_memless_poly_0.set_a4(x4)\n", + " #top.dpd_memless_poly_0.set_a5(x5)\n", + " #top.dpd_memless_poly_0.set_a6(x6)\n", + " #top.dpd_memless_poly_0.set_a7(x7)\n", + " #top.dpd_memless_poly_0.set_a8(x8)\n", + " \n", + " top.dpd_lut_0.set_a1(x1)\n", + " top.dpd_lut_0.set_a2(x2)\n", + " top.dpd_lut_0.set_a3(x3)\n", + " top.dpd_lut_0.set_a4(x4)\n", + " top.dpd_lut_0.set_a5(x5)\n", + " top.dpd_lut_0.set_a6(x6)\n", + " top.dpd_lut_0.set_a7(x7)\n", + " top.dpd_lut_0.set_a8(1)\n", " \n", " sync.has_msg()\n", - " np.array(sync.get_msgs(1))\n", + " np.array(sync.get_msgs(3))\n", " msgs = np.array(sync.get_msgs(5))\n", " msgs = [np.fft.fftshift(msg) for msg in msgs]\n", " \n", @@ -135,7 +147,8 @@ " mean_msg = a.mean(axis = 0)\n", " suffix = \"x_2_%.3f_x_3_%.3f_x_4_%.3fx_5_%.3fx_6_%.3fx_7_%.3fx_8_%.3f\" % \\\n", " (x2, x3, x4, x5, x6, x7, x8)\n", - " sig_to_noise = tt.analyse_power_spec(mean_msg, debug=True, debug_path=\"/tmp/out\", suffix=suffix)\n", + " sig_to_noise = tt.analyse_power_spec(mean_msg, debug=debug, debug_path=\"/tmp/out\", suffix=suffix)\n", + " #sig_to_noise = dt.calc_signal_sholder_ratio(mean_msg, sampling_rate=8000000, debug=debug, debug_path=\"/tmp/out\", suffix=suffix)\n", " print(sig_to_noise, x2, x3, x4, x5, x6, x7, x8)\n", " repeat = False\n", " \n", @@ -151,13 +164,14 @@ "def simple_opt(pars, i, d, func):\n", " par = pars[i]\n", " test_pars = []\n", - " for x in [-1, 0, 1]:\n", + " for x in [-3, -2, -1, 0, 1, 2, 3]:\n", + " debug = x == 0\n", " new_par = list(pars)\n", " new_par[i] = par + x * d \n", - " test_pars.append(new_par)\n", - " res = [func(par_new) for par_new in test_pars]\n", + " test_pars.append([new_par, debug])\n", + " res = [func(par_new, debug) for par_new, debug in test_pars]\n", " sel = np.argmax(res)\n", - " best_par = test_pars[sel]\n", + " best_par = zip(*test_pars)[0][sel]\n", " return best_par\n", "\n", "#pars = [1,1,1]\n", @@ -172,38 +186,31 @@ "metadata": {}, "outputs": [], "source": [ - "top.set_txgain(85)\n", - "top.set_rxgain(5)\n", - "\n", - "pars = np.zeros(7)\n", - "\n", - "for i in range(10000):\n", - " i_rand = np.random.randint(0, len(pars))\n", - " pars = simple_opt(pars, i_rand, 0.005, measure)\n" + "#top.blocks_file_source_0.open(\"../dab_normalized_c64.dat\", True)" ] }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ - "top.set_txgain(85)\n", + "reload(dt)\n", + "top.set_txgain(84)\n", + "top.set_rxgain(5)\n", "\n", - "params = []\n", - "for x2 in np.linspace(-0.1, 0.1, num = 11):\n", - " for x3 in np.linspace(-0.1, 0.1, num = 11):\n", - " for x4 in np.linspace(-0.1, 0.1, num = 11):\n", - " params.append((x2, x3, x4))\n", - " \n", - "t_start = time.time()\n", - "for idx, param in enumerate(params):\n", - " measure(param)\n", - " time_per_element = (time.time() - t_start) / (idx + 1)\n", - " print (\"Time per Element \" + str(time_per_element) +\n", - " \", total: \" + str(time_per_element * len(params)),\n", - " \", left: \" + str(time_per_element * (len(params) - 1 - idx))\n", - " )" + "pars = np.array(range(1,8))/8.\n", + "\n", + "for i in range(10000):\n", + " i_rand = np.random.randint(0, len(pars))\n", + " pars = simple_opt(pars, i_rand, 0.05, measure)" ] }, { -- cgit v1.2.3