diff options
26 files changed, 2067 insertions, 1360 deletions
diff --git a/Makefile.am b/Makefile.am index ec71be725..084fb5dc1 100644 --- a/Makefile.am +++ b/Makefile.am @@ -33,10 +33,11 @@ EXTRA_DIST = \ Makefile.swig.gen.t \ Makefile.par.gen \ Makefile.gen.gen \ - debian/changelog + version.sh SUBDIRS = @build_dirs@ DIST_SUBDIRS = @build_dirs@ @skipped_dirs@ @with_dirs@ +DISTCLEANFILES = gnuradio*.tar.gz if PYTHON diff --git a/config/Makefile.am b/config/Makefile.am index 3aead353a..eb1056eb6 100644 --- a/config/Makefile.am +++ b/config/Makefile.am @@ -83,6 +83,7 @@ m4macros = \ gr_doxygen.m4 \ gr_fortran.m4 \ gr_gcell.m4 \ + gr_git.m4 \ gr_gprof.m4 \ gr_lib64.m4 \ gr_libgnuradio_core_extra_ldflags.m4 \ @@ -97,6 +98,7 @@ m4macros = \ gr_subversion.m4 \ gr_swig.m4 \ gr_sysv_shm.m4 \ + gr_version.m4 \ lf_cc.m4 \ lf_cxx.m4 \ lf_warnings.m4 \ diff --git a/config/gr_git.m4 b/config/gr_git.m4 new file mode 100644 index 000000000..e27460713 --- /dev/null +++ b/config/gr_git.m4 @@ -0,0 +1,42 @@ +dnl Copyright 2009 Free Software Foundation, Inc. +dnl +dnl This file is part of GNU Radio +dnl +dnl GNU Radio is free software; you can redistribute it and/or modify +dnl it under the terms of the GNU General Public License as published by +dnl the Free Software Foundation; either version 3, or (at your option) +dnl any later version. +dnl +dnl GNU Radio is distributed in the hope that it will be useful, +dnl but WITHOUT ANY WARRANTY; without even the implied warranty of +dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +dnl GNU General Public License for more details. +dnl +dnl You should have received a copy of the GNU General Public License +dnl along with GNU Radio; see the file COPYING. If not, write to +dnl the Free Software Foundation, Inc., 51 Franklin Street, +dnl Boston, MA 02110-1301, USA. + + +AC_DEFUN([GR_GIT],[ + dnl Identify git binary + AC_PATH_PROG([GIT],[git]) + + dnl If it exists, get either 'git describe' or fallback to current commit + if test x$GIT != x ; then + AC_MSG_CHECKING([existence of git version control directory]) + if test -d $srcdir/.git ; then + AC_MSG_RESULT([ok]) + AC_MSG_CHECKING([git description of current commit]) + if (cd $srcdir && $GIT describe >/dev/null 2>&1); then + GIT_VERSION=`cd $srcdir && $GIT describe --abbrev=8 | cut -f 2- -d '-'` + AC_MSG_RESULT([$GIT_DESCRIBE]) + else + AC_MSG_RESULT([unable to find, using current commit]) + GIT_VERSION=`cd $srcdir && $GIT describe --always --abbrev=8` + fi + else + AC_MSG_RESULT([not found]) + fi + fi +]) diff --git a/config/gr_version.m4 b/config/gr_version.m4 new file mode 100644 index 000000000..4f45f0efa --- /dev/null +++ b/config/gr_version.m4 @@ -0,0 +1,69 @@ +dnl Copyright 2009 Free Software Foundation, Inc. +dnl +dnl This file is part of GNU Radio +dnl +dnl GNU Radio is free software; you can redistribute it and/or modify +dnl it under the terms of the GNU General Public License as published by +dnl the Free Software Foundation; either version 3, or (at your option) +dnl any later version. +dnl +dnl GNU Radio is distributed in the hope that it will be useful, +dnl but WITHOUT ANY WARRANTY; without even the implied warranty of +dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +dnl GNU General Public License for more details. +dnl +dnl You should have received a copy of the GNU General Public License +dnl along with GNU Radio; see the file COPYING. If not, write to +dnl the Free Software Foundation, Inc., 51 Franklin Street, +dnl Boston, MA 02110-1301, USA. + +AC_DEFUN([GR_VERSION],[ + dnl Computed version based on version.sh + dnl Does not force recompile on rev change + dnl + dnl Source the variables describing the release version + dnl + dnl MAJOR_VERSION Major release generation (2.x, 3.x, etc.) + dnl API_COMPAT API compatibility version (3.2.x, 3.3.x, etc.) + dnl MINOR_VERSION Minor release version + dnl MAINT_VERSION Pure bugfix additions to make maintenance release + dnl + dnl The last two fields can have 'git' instead of a number to indicate + dnl that this branch is between versions. + . $srcdir/version.sh + RELEASE=$MAJOR_VERSION.$API_COMPAT + + dnl Get git version if available + GR_GIT + + dnl Test if we should use git version + if test "$MINOR_VERSION" == "git"; then + dnl 3.3git-xxx-gxxxxxxxx + RELEASE=$RELEASE$MINOR_VERSION + if test "$GIT_VERSION" != "" ; then + RELEASE=$RELEASE-$GIT_VERSION + fi + else + if test "$MAINT_VERSION" == "git" ; then + dnl 3.3.1git-xxx-gxxxxxxxx + RELEASE=$RELEASE.$MINOR_VERSION$MAINT_VERSION + if test "$GIT_VERSION" != "" ; then + RELEASE=$RELEASE-$GIT_VERSION + fi + else + dnl This is a numbered reelase. + dnl Test if minor version is 0, which we don't encode, unless it is also + dnl a maintenance release + if test "$MINOR_VERSION" != "0" -o "$MAINT_VERSION" != "0"; then + dnl 3.3.1 + RELEASE=$RELEASE.$MINOR_VERSION + if test "$MAINT_VERSION" != "0"; then + dnl 3.3.0.1, 3.3.1.1 + RELEASE=$RELEASE.$MAINT_VERSION + fi + fi + fi + fi + + AC_MSG_NOTICE([GNU Radio Release $RELEASE]) +]) diff --git a/configure.ac b/configure.ac index f51f2103f..fbb8bb52e 100644 --- a/configure.ac +++ b/configure.ac @@ -26,10 +26,10 @@ AC_CANONICAL_BUILD AC_CANONICAL_HOST AC_CANONICAL_TARGET - -VERSION=3.3git -AC_SUBST(VERSION) -AM_INIT_AUTOMAKE(gnuradio,$VERSION) +GR_VERSION +dnl ustar required to have pathnames > 99 chars +_AM_SET_OPTION([tar-ustar]) +AM_INIT_AUTOMAKE(gnuradio,$RELEASE) DEFINES="" AC_SUBST(DEFINES) @@ -437,3 +437,4 @@ if test "$with_dirs" != ""; then echo fi +echo Configured GNU Radio release $RELEASE for build. diff --git a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc index 91cbf74c6..b67efc52d 100644 --- a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc +++ b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc @@ -50,8 +50,8 @@ gr_pfb_clock_sync_ccf::gr_pfb_clock_sync_ccf (float sps, float gain, float init_phase) : gr_block ("pfb_clock_sync_ccf", gr_make_io_signature (1, 1, sizeof(gr_complex)), - gr_make_io_signature2 (2, 2, sizeof(gr_complex), sizeof(float))), - d_updated (false), d_sps(sps), d_alpha(gain) + gr_make_io_signature2 (1, 2, sizeof(gr_complex), sizeof(float))), + d_updated (false), d_sps(sps) { d_nfilters = filter_size; @@ -59,10 +59,9 @@ gr_pfb_clock_sync_ccf::gr_pfb_clock_sync_ccf (float sps, float gain, // The accumulator keeps track of overflow to increment the stride correctly. // set it here to the fractional difference based on the initial phaes // assert(init_phase <= 2*M_PI); - float x = init_phase / (2*M_PI); //normalize initial phase - d_acc = x*(d_nfilters-1); - d_last_filter = (int)floor(d_acc); - d_acc = fmodf(d_acc, 1); + set_gain(gain); + d_k = d_nfilters / 2; + d_rate = 0; d_start_count = 0; @@ -133,12 +132,22 @@ void gr_pfb_clock_sync_ccf::create_diff_taps(const std::vector<float> &newtaps, std::vector<float> &difftaps) { + float maxtap = -1e12; difftaps.clear(); difftaps.push_back(0); //newtaps[0]); for(unsigned int i = 1; i < newtaps.size()-1; i++) { - difftaps.push_back(newtaps[i+1] - newtaps[i-1]); + float tap = newtaps[i+1] - newtaps[i-1]; + if(tap > maxtap) { + maxtap = tap; + } + //maxtap += tap; + difftaps.push_back(tap); } difftaps.push_back(0);//-newtaps[newtaps.size()-1]); + + for(unsigned int i = 0; i < difftaps.size(); i++) { + difftaps[i] /= 1;//maxtap; + } } void @@ -199,7 +208,10 @@ gr_pfb_clock_sync_ccf::general_work (int noutput_items, { gr_complex *in = (gr_complex *) input_items[0]; gr_complex *out = (gr_complex *) output_items[0]; - float *err = (float *) output_items[1]; + + float *err; + if(ninput_items.size() == 2) + err = (float *) output_items[1]; if (d_updated) { d_updated = false; @@ -214,32 +226,29 @@ gr_pfb_clock_sync_ccf::general_work (int noutput_items, // produce output as long as we can and there are enough input samples while((i < noutput_items) && (count < nrequired)) { - out[i] = d_filters[d_last_filter]->filter(&in[count]); - error = (out[i] * d_diff_filters[d_last_filter]->filter(&in[count])).real(); - err[i] = error; + int filtnum = (int)d_k; + out[i] = d_filters[filtnum]->filter(&in[count]); + error = (out[i] * d_diff_filters[filtnum]->filter(&in[count])).real(); - d_acc += d_alpha*error; - gr_branchless_clip(d_acc, 1); + if(ninput_items.size() == 2) + err[i] = error; - int newfilter; - newfilter = (int)((float)d_last_filter + d_acc); - if(newfilter != (int)d_last_filter) - d_acc = 0.5; - - if(newfilter >= (int)d_nfilters) { - d_last_filter = newfilter - d_nfilters; + d_k = d_k + d_alpha*error + d_rate; + d_rate = d_rate + d_beta*error; + while(d_k >= d_nfilters) { + d_k -= d_nfilters; count++; } - else if(newfilter < 0) { - d_last_filter = d_nfilters + newfilter; + while(d_k < 0) { + d_k += d_nfilters; count--; } - else { - d_last_filter = newfilter; - } i++; count += d_sps; + + printf("error: %f k: %f rate: %f\n", + error, d_k, d_rate); } // Set the start index at the next entrance to the work function diff --git a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.h b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.h index 1a04e55c7..b8e0f83b6 100644 --- a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.h +++ b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.h @@ -29,9 +29,9 @@ class gr_pfb_clock_sync_ccf; typedef boost::shared_ptr<gr_pfb_clock_sync_ccf> gr_pfb_clock_sync_ccf_sptr; gr_pfb_clock_sync_ccf_sptr gr_make_pfb_clock_sync_ccf (float sps, float gain, - const std::vector<float> &taps, - unsigned int filter_size=32, - float init_phase=0); + const std::vector<float> &taps, + unsigned int filter_size=32, + float init_phase=0); class gr_fir_ccf; @@ -58,13 +58,14 @@ class gr_pfb_clock_sync_ccf : public gr_block bool d_updated; unsigned int d_sps; float d_alpha; + float d_beta; unsigned int d_nfilters; std::vector<gr_fir_ccf*> d_filters; std::vector<gr_fir_ccf*> d_diff_filters; std::vector< std::vector<float> > d_taps; std::vector< std::vector<float> > d_dtaps; - float d_acc; - unsigned int d_last_filter; + float d_k; + float d_rate; unsigned int d_start_count; unsigned int d_taps_per_filter; @@ -96,6 +97,12 @@ public: */ void print_taps(); void print_diff_taps(); + + void set_gain(float gain) + { + d_alpha = gain; + d_beta = 0.25*d_alpha*d_alpha; + } int general_work (int noutput_items, gr_vector_int &ninput_items, diff --git a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.i b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.i index 729d4a1aa..9defbc7cd 100644 --- a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.i +++ b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.i @@ -46,4 +46,5 @@ class gr_pfb_clock_sync_ccf : public gr_block std::vector<float> diff_channel_taps(int channel); void print_taps(); void print_diff_taps(); + void set_gain(float gain); }; diff --git a/gnuradio-core/src/lib/general/gr_mpsk_receiver_cc.cc b/gnuradio-core/src/lib/general/gr_mpsk_receiver_cc.cc index 49bbb8d36..89ea4a232 100644 --- a/gnuradio-core/src/lib/general/gr_mpsk_receiver_cc.cc +++ b/gnuradio-core/src/lib/general/gr_mpsk_receiver_cc.cc @@ -35,7 +35,7 @@ #define M_TWOPI (2*M_PI) #define VERBOSE_MM 0 // Used for debugging symbol timing loop -#define VERBOSE_COSTAS 0 // Used for debugging phase and frequency tracking +#define VERBOSE_COSTAS 1 // Used for debugging phase and frequency tracking // Public constructor @@ -265,8 +265,6 @@ gr_mpsk_receiver_cc::phase_error_tracking(gr_complex sample) // Make phase and frequency corrections based on sampled value phase_error = (*this.*d_phase_error_detector)(sample); - - phase_error = gr_branchless_clip(phase_error, 1.0); d_freq += d_beta*phase_error; // adjust frequency based on error d_phase += d_freq + d_alpha*phase_error; // adjust phase based on error diff --git a/gnuradio-core/src/python/gnuradio/blks2impl/dbpsk.py b/gnuradio-core/src/python/gnuradio/blks2impl/dbpsk.py index 3147bfa2a..ac2e9323f 100644 --- a/gnuradio-core/src/python/gnuradio/blks2impl/dbpsk.py +++ b/gnuradio-core/src/python/gnuradio/blks2impl/dbpsk.py @@ -255,16 +255,34 @@ class dbpsk_demod(gr.hier_block2): self._mm_omega = self._samples_per_symbol self._mm_gain_omega = .25 * self._mm_gain_mu * self._mm_gain_mu self._costas_beta = 0.25 * self._costas_alpha * self._costas_alpha - fmin = -0.1 - fmax = 0.1 + fmin = -0.25 + fmax = 0.25 - self.receiver=gr.mpsk_receiver_cc(arity, 0, - self._costas_alpha, self._costas_beta, - fmin, fmax, - self._mm_mu, self._mm_gain_mu, - self._mm_omega, self._mm_gain_omega, - self._mm_omega_relative_limit) - + #self.receiver=gr.mpsk_receiver_cc(arity, 0, + # self._costas_alpha, self._costas_beta, + # fmin, fmax, + # self._mm_mu, self._mm_gain_mu, + # self._mm_omega, self._mm_gain_omega, + # self._mm_omega_relative_limit) + + self.clock_recov = gr.costas_loop_cc(self._costas_alpha, + self._costas_beta, + fmax, fmin, arity) + if 0: + self.time_recov = gr.clock_recovery_mm_cc(self._mm_omega, + self._mm_gain_omega, + self._mm_mu, + self._mm_gain_mu, + self._mm_omega_relative_limit) + else: + nfilts = 8 + ntaps = nfilts*ntaps + taps = gr.firdes.root_raised_cosine( + nfilts, 1.0, 0.25/nfilts, self._excess_bw, ntaps) + self.time_recov = gr.pfb_clock_sync_ccf(self._mm_omega, + self._mm_gain_mu, + taps, nfilts) + # Do differential decoding based on phase change of symbols self.diffdec = gr.diff_phasor_cc() @@ -288,7 +306,9 @@ class dbpsk_demod(gr.hier_block2): self._setup_logging() # Connect and Initialize base class - self.connect(self, self.pre_scaler, self.agc, self.rrc_filter, self.receiver, + self.connect(self, self.pre_scaler, self.agc, #self.rrc_filter, self.receiver, + #self.clock_recov, + self.time_recov, self.diffdec, self.slicer, self.symbol_mapper, self.unpack, self) def samples_per_symbol(self): diff --git a/gnuradio-core/src/python/gnuradio/blks2impl/dqpsk.py b/gnuradio-core/src/python/gnuradio/blks2impl/dqpsk.py index 8c15d2173..34e6581bf 100644 --- a/gnuradio-core/src/python/gnuradio/blks2impl/dqpsk.py +++ b/gnuradio-core/src/python/gnuradio/blks2impl/dqpsk.py @@ -255,16 +255,32 @@ class dqpsk_demod(gr.hier_block2): self._mm_omega = self._samples_per_symbol self._mm_gain_omega = .25 * self._mm_gain_mu * self._mm_gain_mu self._costas_beta = 0.25 * self._costas_alpha * self._costas_alpha - fmin = -0.025 - fmax = 0.025 + fmin = -0.25 + fmax = 0.25 + + #self.receiver=gr.mpsk_receiver_cc(arity, pi/4.0, + # self._costas_alpha, self._costas_beta, + # fmin, fmax, + # self._mm_mu, self._mm_gain_mu, + # self._mm_omega, self._mm_gain_omega, + # self._mm_omega_relative_limit) + self.clock_recov = gr.costas_loop_cc(self._costas_alpha, + self._costas_beta, + fmax, fmin, arity) + if 0: + self.time_recov = gr.clock_recovery_mm_cc(self._mm_omega, + self._mm_gain_omega, + self._mm_mu, + self._mm_gain_mu, + self._mm_omega_relative_limit) + else: + ntaps = 32*ntaps + taps = gr.firdes.root_raised_cosine( + 32, 1.0, 0.25/32.0, self._excess_bw, ntaps) + self.time_recov = gr.pfb_clock_sync_ccf(self._mm_omega, + self._mm_gain_mu, + taps) - self.receiver=gr.mpsk_receiver_cc(arity, pi/4.0, - self._costas_alpha, self._costas_beta, - fmin, fmax, - self._mm_mu, self._mm_gain_mu, - self._mm_omega, self._mm_gain_omega, - self._mm_omega_relative_limit) - # Perform Differential decoding on the constellation self.diffdec = gr.diff_phasor_cc() @@ -288,7 +304,8 @@ class dqpsk_demod(gr.hier_block2): self._setup_logging() # Connect & Initialize base class - self.connect(self, self.pre_scaler, self.agc, self.rrc_filter, self.receiver, + self.connect(self, self.pre_scaler, self.agc, #self.rrc_filter, #self.receiver, + self.clock_recov, self.time_recov, self.diffdec, self.slicer, self.symbol_mapper, self.unpack, self) def samples_per_symbol(self): diff --git a/gnuradio-examples/grc/pam_timing.grc b/gnuradio-examples/grc/pam_timing.grc new file mode 100644 index 000000000..989c795a9 --- /dev/null +++ b/gnuradio-examples/grc/pam_timing.grc @@ -0,0 +1,616 @@ +<?xml version='1.0' encoding='ASCII'?> +<flow_graph> + <timestamp>Tue Oct 6 14:19:10 2009</timestamp> + <block> + <key>options</key> + <param> + <key>id</key> + <value>top_block</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>title</key> + <value></value> + </param> + <param> + <key>author</key> + <value></value> + </param> + <param> + <key>description</key> + <value></value> + </param> + <param> + <key>window_size</key> + <value>1280, 1024</value> + </param> + <param> + <key>generate_options</key> + <value>wx_gui</value> + </param> + <param> + <key>category</key> + <value>Custom</value> + </param> + <param> + <key>run_options</key> + <value>prompt</value> + </param> + <param> + <key>run</key> + <value>True</value> + </param> + <param> + <key>realtime_scheduling</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(10, 10)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>id</key> + <value>samp_rate</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>value</key> + <value>32000</value> + </param> + <param> + <key>_coordinate</key> + <value>(128, 9)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_uchar_to_float</key> + <param> + <key>id</key> + <value>gr_uchar_to_float_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(270, 115)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>random_source_x</key> + <param> + <key>id</key> + <value>random_source_x_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>byte</value> + </param> + <param> + <key>min</key> + <value>0</value> + </param> + <param> + <key>max</key> + <value>2</value> + </param> + <param> + <key>num_samps</key> + <value>1000</value> + </param> + <param> + <key>repeat</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(13, 80)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>const_source_x</key> + <param> + <key>id</key> + <value>const_source_x_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>float</value> + </param> + <param> + <key>const</key> + <value>-0.5</value> + </param> + <param> + <key>_coordinate</key> + <value>(179, 160)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_chooser</key> + <param> + <key>id</key> + <value>spb</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>label</key> + <value>Samples Per Bit</value> + </param> + <param> + <key>value</key> + <value>4</value> + </param> + <param> + <key>choices</key> + <value>[1, 2, 3, 4, 5, 6, 7, 8]</value> + </param> + <param> + <key>labels</key> + <value>[]</value> + </param> + <param> + <key>type</key> + <value>drop_down</value> + </param> + <param> + <key>style</key> + <value>wx.RA_HORIZONTAL</value> + </param> + <param> + <key>grid_pos</key> + <value></value> + </param> + <param> + <key>notebook</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(0, 834)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>wxgui_scopesink2</key> + <param> + <key>id</key> + <value>wxgui_scopesink2_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>float</value> + </param> + <param> + <key>title</key> + <value>Scope Plot</value> + </param> + <param> + <key>samp_rate</key> + <value>samp_rate</value> + </param> + <param> + <key>v_scale</key> + <value>0</value> + </param> + <param> + <key>t_scale</key> + <value>0</value> + </param> + <param> + <key>ac_couple</key> + <value>False</value> + </param> + <param> + <key>xy_mode</key> + <value>False</value> + </param> + <param> + <key>num_inputs</key> + <value>1</value> + </param> + <param> + <key>grid_pos</key> + <value></value> + </param> + <param> + <key>notebook</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(750, 128)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_add_xx</key> + <param> + <key>id</key> + <value>gr_add_xx_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>float</value> + </param> + <param> + <key>num_inputs</key> + <value>2</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(505, 128)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_slider</key> + <param> + <key>id</key> + <value>noise_amp</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>label</key> + <value>noise_amp</value> + </param> + <param> + <key>value</key> + <value>0</value> + </param> + <param> + <key>min</key> + <value>0</value> + </param> + <param> + <key>max</key> + <value>1.0</value> + </param> + <param> + <key>num_steps</key> + <value>1000</value> + </param> + <param> + <key>style</key> + <value>wx.SL_HORIZONTAL</value> + </param> + <param> + <key>converver</key> + <value>float_converter</value> + </param> + <param> + <key>grid_pos</key> + <value></value> + </param> + <param> + <key>notebook</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(600, -1)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_throttle</key> + <param> + <key>id</key> + <value>gr_throttle_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>float</value> + </param> + <param> + <key>samples_per_second</key> + <value>samp_rate</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(561, 284)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_noise_source_x</key> + <param> + <key>id</key> + <value>gr_noise_source_x_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>float</value> + </param> + <param> + <key>noise_type</key> + <value>gr.GR_GAUSSIAN</value> + </param> + <param> + <key>amp</key> + <value>noise_amp</value> + </param> + <param> + <key>seed</key> + <value>42</value> + </param> + <param> + <key>_coordinate</key> + <value>(45, 497)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>root_raised_cosine_filter</key> + <param> + <key>id</key> + <value>root_raised_cosine_filter_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>interp_fir_filter_fff</value> + </param> + <param> + <key>decim</key> + <value>1</value> + </param> + <param> + <key>interp</key> + <value>spb</value> + </param> + <param> + <key>gain</key> + <value>2*spb</value> + </param> + <param> + <key>samp_rate</key> + <value>1.0</value> + </param> + <param> + <key>sym_rate</key> + <value>1./spb</value> + </param> + <param> + <key>alpha</key> + <value>0.35</value> + </param> + <param> + <key>ntaps</key> + <value>11*spb</value> + </param> + <param> + <key>_coordinate</key> + <value>(50, 295)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_add_xx</key> + <param> + <key>id</key> + <value>gr_add_xx_0_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>float</value> + </param> + <param> + <key>num_inputs</key> + <value>2</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(374, 389)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>root_raised_cosine_filter</key> + <param> + <key>id</key> + <value>root_raised_cosine_filter_0_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>interp_fir_filter_fff</value> + </param> + <param> + <key>decim</key> + <value>1</value> + </param> + <param> + <key>interp</key> + <value>1</value> + </param> + <param> + <key>gain</key> + <value>1</value> + </param> + <param> + <key>samp_rate</key> + <value>1.0</value> + </param> + <param> + <key>sym_rate</key> + <value>1./spb</value> + </param> + <param> + <key>alpha</key> + <value>0.35</value> + </param> + <param> + <key>ntaps</key> + <value>11*spb</value> + </param> + <param> + <key>_coordinate</key> + <value>(376, 598)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <connection> + <source_block_id>random_source_x_0</source_block_id> + <sink_block_id>gr_uchar_to_float_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>gr_uchar_to_float_0</source_block_id> + <sink_block_id>gr_add_xx_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>const_source_x_0</source_block_id> + <sink_block_id>gr_add_xx_0</sink_block_id> + <source_key>0</source_key> + <sink_key>1</sink_key> + </connection> + <connection> + <source_block_id>gr_add_xx_0</source_block_id> + <sink_block_id>root_raised_cosine_filter_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>gr_throttle_0</source_block_id> + <sink_block_id>wxgui_scopesink2_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>root_raised_cosine_filter_0</source_block_id> + <sink_block_id>gr_add_xx_0_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>gr_noise_source_x_0</source_block_id> + <sink_block_id>gr_add_xx_0_0</sink_block_id> + <source_key>0</source_key> + <sink_key>1</sink_key> + </connection> + <connection> + <source_block_id>gr_add_xx_0_0</source_block_id> + <sink_block_id>root_raised_cosine_filter_0_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>root_raised_cosine_filter_0_0</source_block_id> + <sink_block_id>gr_throttle_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> +</flow_graph> diff --git a/gnuradio-examples/python/digital/benchmark_qt_loopback.py b/gnuradio-examples/python/digital/benchmark_qt_loopback.py index e43bffa26..1bfda4a96 100755 --- a/gnuradio-examples/python/digital/benchmark_qt_loopback.py +++ b/gnuradio-examples/python/digital/benchmark_qt_loopback.py @@ -234,22 +234,30 @@ class my_top_block(gr.top_block): self.snk_rx = qtgui.sink_c(fftsize, gr.firdes.WIN_BLACKMAN_hARRIS, 0, 1, "Rx", True, True, False, True, True) + self.snk_err = qtgui.sink_f(fftsize, gr.firdes.WIN_BLACKMAN_hARRIS, + 0, 1, + "Error", True, True, False, False, False) self.snk_tx.set_frequency_axis(-80, 0) self.snk_rx.set_frequency_axis(-60, 20) # Connect to the QT sinks # FIXME: make better exposure to receiver from rxpath - self.receiver = self.rxpath.packet_receiver._demodulator.receiver + #self.freq_recov = self.rxpath.packet_receiver._demodulator.clock_recov + self.time_recov = self.rxpath.packet_receiver._demodulator.time_recov self.connect(self.channel, self.snk_tx) - self.connect(self.receiver, self.snk_rx) + self.connect(self.time_recov, self.snk_rx) + self.connect((self.time_recov, 1), self.snk_err) pyTxQt = self.snk_tx.pyqwidget() pyTx = sip.wrapinstance(pyTxQt, QtGui.QWidget) - + pyRxQt = self.snk_rx.pyqwidget() pyRx = sip.wrapinstance(pyRxQt, QtGui.QWidget) - + + pyErrQt = self.snk_err.pyqwidget() + pyErr = sip.wrapinstance(pyRxQt, QtGui.QWidget) + self.main_box = dialog_box(pyTx, pyRx, self) self.main_box.show() @@ -308,8 +316,9 @@ class my_top_block(gr.top_block): def set_rx_gain_mu(self, gain): self._gain_mu = gain self.gain_omega = .25 * self._gain_mu * self._gain_mu - self.receiver.set_gain_mu(self._gain_mu) - self.receiver.set_gain_omega(self.gain_omega) + #self.time_recov.set_gain_mu(self._gain_mu) + #self.time_recov.set_gain_omega(self.gain_omega) + self.time_recov.set_gain(self._gain_mu) def rx_alpha(self): return self._alpha @@ -320,8 +329,8 @@ class my_top_block(gr.top_block): def set_rx_alpha(self, alpha): self._alpha = alpha self.beta = .25 * self._alpha * self._alpha - self.receiver.set_alpha(self._alpha) - self.receiver.set_beta(self.beta) + #self.freq_recov.set_alpha(self._alpha) + #self.freq_recov.set_beta(self.beta) diff --git a/gnuradio-examples/python/digital/qt_digital_window.py b/gnuradio-examples/python/digital/qt_digital_window.py index e3feb57c9..6e0f25212 100644 --- a/gnuradio-examples/python/digital/qt_digital_window.py +++ b/gnuradio-examples/python/digital/qt_digital_window.py @@ -2,8 +2,8 @@ # Form implementation generated from reading ui file 'qt_digital_window.ui' # -# Created: Fri Jul 3 10:03:54 2009 -# by: PyQt4 UI code generator 4.4.3 +# Created: Tue Oct 6 11:27:37 2009 +# by: PyQt4 UI code generator 4.4.4 # # WARNING! All changes made in this file will be lost! @@ -12,53 +12,63 @@ from PyQt4 import QtCore, QtGui class Ui_DigitalWindow(object): def setupUi(self, DigitalWindow): DigitalWindow.setObjectName("DigitalWindow") - DigitalWindow.resize(1050, 752) + DigitalWindow.resize(1019, 754) self.centralwidget = QtGui.QWidget(DigitalWindow) self.centralwidget.setObjectName("centralwidget") self.gridLayout = QtGui.QGridLayout(self.centralwidget) self.gridLayout.setObjectName("gridLayout") - self.verticalLayout_2 = QtGui.QVBoxLayout() - self.verticalLayout_2.setObjectName("verticalLayout_2") - self.sysBox = QtGui.QGroupBox(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.sysBox.sizePolicy().hasHeightForWidth()) - self.sysBox.setSizePolicy(sizePolicy) - self.sysBox.setMinimumSize(QtCore.QSize(240, 60)) - self.sysBox.setMaximumSize(QtCore.QSize(240, 16777215)) - self.sysBox.setObjectName("sysBox") - self.formLayoutWidget = QtGui.QWidget(self.sysBox) - self.formLayoutWidget.setGeometry(QtCore.QRect(10, 20, 221, 31)) - self.formLayoutWidget.setObjectName("formLayoutWidget") - self.formLayout = QtGui.QFormLayout(self.formLayoutWidget) - self.formLayout.setSizeConstraint(QtGui.QLayout.SetFixedSize) - self.formLayout.setVerticalSpacing(20) - self.formLayout.setObjectName("formLayout") - self.sampleRateEdit = QtGui.QLineEdit(self.formLayoutWidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.sampleRateEdit.sizePolicy().hasHeightForWidth()) - self.sampleRateEdit.setSizePolicy(sizePolicy) - self.sampleRateEdit.setMinimumSize(QtCore.QSize(100, 26)) - self.sampleRateEdit.setMaximumSize(QtCore.QSize(100, 26)) - self.sampleRateEdit.setObjectName("sampleRateEdit") - self.formLayout.setWidget(0, QtGui.QFormLayout.FieldRole, self.sampleRateEdit) - self.sampleRateLabel = QtGui.QLabel(self.formLayoutWidget) + self.verticalLayout_3 = QtGui.QVBoxLayout() + self.verticalLayout_3.setObjectName("verticalLayout_3") + self.rxBox = QtGui.QGroupBox(self.centralwidget) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.sampleRateLabel.sizePolicy().hasHeightForWidth()) - self.sampleRateLabel.setSizePolicy(sizePolicy) - self.sampleRateLabel.setMinimumSize(QtCore.QSize(0, 20)) - self.sampleRateLabel.setMaximumSize(QtCore.QSize(16777215, 20)) - self.sampleRateLabel.setObjectName("sampleRateLabel") - self.formLayout.setWidget(0, QtGui.QFormLayout.LabelRole, self.sampleRateLabel) - self.verticalLayout_2.addWidget(self.sysBox) - spacerItem = QtGui.QSpacerItem(20, 60, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed) - self.verticalLayout_2.addItem(spacerItem) - self.gridLayout.addLayout(self.verticalLayout_2, 2, 0, 1, 1) + sizePolicy.setHeightForWidth(self.rxBox.sizePolicy().hasHeightForWidth()) + self.rxBox.setSizePolicy(sizePolicy) + self.rxBox.setMinimumSize(QtCore.QSize(180, 90)) + self.rxBox.setMaximumSize(QtCore.QSize(180, 16777215)) + self.rxBox.setObjectName("rxBox") + self.formLayoutWidget_3 = QtGui.QWidget(self.rxBox) + self.formLayoutWidget_3.setGeometry(QtCore.QRect(10, 20, 141, 61)) + self.formLayoutWidget_3.setObjectName("formLayoutWidget_3") + self.formLayout_3 = QtGui.QFormLayout(self.formLayoutWidget_3) + self.formLayout_3.setSizeConstraint(QtGui.QLayout.SetFixedSize) + self.formLayout_3.setObjectName("formLayout_3") + self.gainMuLabel = QtGui.QLabel(self.formLayoutWidget_3) + self.gainMuLabel.setObjectName("gainMuLabel") + self.formLayout_3.setWidget(0, QtGui.QFormLayout.LabelRole, self.gainMuLabel) + self.alphaLabel = QtGui.QLabel(self.formLayoutWidget_3) + self.alphaLabel.setObjectName("alphaLabel") + self.formLayout_3.setWidget(1, QtGui.QFormLayout.LabelRole, self.alphaLabel) + self.gainMuEdit = QtGui.QLineEdit(self.formLayoutWidget_3) + self.gainMuEdit.setMinimumSize(QtCore.QSize(60, 0)) + self.gainMuEdit.setMaximumSize(QtCore.QSize(80, 16777215)) + self.gainMuEdit.setObjectName("gainMuEdit") + self.formLayout_3.setWidget(0, QtGui.QFormLayout.FieldRole, self.gainMuEdit) + self.alphaEdit = QtGui.QLineEdit(self.formLayoutWidget_3) + self.alphaEdit.setMinimumSize(QtCore.QSize(60, 0)) + self.alphaEdit.setMaximumSize(QtCore.QSize(80, 16777215)) + self.alphaEdit.setObjectName("alphaEdit") + self.formLayout_3.setWidget(1, QtGui.QFormLayout.FieldRole, self.alphaEdit) + self.verticalLayout_3.addWidget(self.rxBox) + spacerItem = QtGui.QSpacerItem(20, 30, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed) + self.verticalLayout_3.addItem(spacerItem) + self.gridLayout.addLayout(self.verticalLayout_3, 2, 2, 1, 1) + self.verticalLayout = QtGui.QVBoxLayout() + self.verticalLayout.setObjectName("verticalLayout") + self.pauseButton = QtGui.QPushButton(self.centralwidget) + self.pauseButton.setMinimumSize(QtCore.QSize(80, 0)) + self.pauseButton.setMaximumSize(QtCore.QSize(80, 16777215)) + self.pauseButton.setObjectName("pauseButton") + self.verticalLayout.addWidget(self.pauseButton) + spacerItem1 = QtGui.QSpacerItem(20, 60, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed) + self.verticalLayout.addItem(spacerItem1) + self.closeButton = QtGui.QPushButton(self.centralwidget) + self.closeButton.setMinimumSize(QtCore.QSize(80, 0)) + self.closeButton.setMaximumSize(QtCore.QSize(80, 16777215)) + self.closeButton.setObjectName("closeButton") + self.verticalLayout.addWidget(self.closeButton) + self.gridLayout.addLayout(self.verticalLayout, 2, 5, 1, 1) self.channelModeBox = QtGui.QGroupBox(self.centralwidget) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) @@ -69,7 +79,7 @@ class Ui_DigitalWindow(object): self.channelModeBox.setMaximumSize(QtCore.QSize(245, 16777215)) self.channelModeBox.setObjectName("channelModeBox") self.formLayoutWidget_2 = QtGui.QWidget(self.channelModeBox) - self.formLayoutWidget_2.setGeometry(QtCore.QRect(10, 20, 231, 98)) + self.formLayoutWidget_2.setGeometry(QtCore.QRect(10, 20, 221, 98)) self.formLayoutWidget_2.setObjectName("formLayoutWidget_2") self.formLayout_2 = QtGui.QFormLayout(self.formLayoutWidget_2) self.formLayout_2.setSizeConstraint(QtGui.QLayout.SetFixedSize) @@ -79,83 +89,69 @@ class Ui_DigitalWindow(object): self.snrLabel.setObjectName("snrLabel") self.formLayout_2.setWidget(0, QtGui.QFormLayout.LabelRole, self.snrLabel) self.snrEdit = QtGui.QLineEdit(self.formLayoutWidget_2) - self.snrEdit.setMinimumSize(QtCore.QSize(100, 0)) - self.snrEdit.setMaximumSize(QtCore.QSize(100, 16777215)) + self.snrEdit.setMinimumSize(QtCore.QSize(60, 0)) + self.snrEdit.setMaximumSize(QtCore.QSize(80, 16777215)) self.snrEdit.setObjectName("snrEdit") self.formLayout_2.setWidget(0, QtGui.QFormLayout.FieldRole, self.snrEdit) self.freqLabel = QtGui.QLabel(self.formLayoutWidget_2) self.freqLabel.setObjectName("freqLabel") self.formLayout_2.setWidget(1, QtGui.QFormLayout.LabelRole, self.freqLabel) self.freqEdit = QtGui.QLineEdit(self.formLayoutWidget_2) - self.freqEdit.setMinimumSize(QtCore.QSize(100, 0)) - self.freqEdit.setMaximumSize(QtCore.QSize(100, 16777215)) + self.freqEdit.setMinimumSize(QtCore.QSize(60, 0)) + self.freqEdit.setMaximumSize(QtCore.QSize(80, 16777215)) self.freqEdit.setObjectName("freqEdit") self.formLayout_2.setWidget(1, QtGui.QFormLayout.FieldRole, self.freqEdit) self.timeLabel = QtGui.QLabel(self.formLayoutWidget_2) self.timeLabel.setObjectName("timeLabel") self.formLayout_2.setWidget(2, QtGui.QFormLayout.LabelRole, self.timeLabel) self.timeEdit = QtGui.QLineEdit(self.formLayoutWidget_2) - self.timeEdit.setMinimumSize(QtCore.QSize(100, 0)) - self.timeEdit.setMaximumSize(QtCore.QSize(100, 16777215)) + self.timeEdit.setMinimumSize(QtCore.QSize(60, 0)) + self.timeEdit.setMaximumSize(QtCore.QSize(80, 16777215)) self.timeEdit.setObjectName("timeEdit") self.formLayout_2.setWidget(2, QtGui.QFormLayout.FieldRole, self.timeEdit) self.gridLayout.addWidget(self.channelModeBox, 2, 1, 1, 1) - self.verticalLayout_5 = QtGui.QVBoxLayout() - self.verticalLayout_5.setObjectName("verticalLayout_5") - self.sinkFrame = QtGui.QFrame(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding) + self.verticalLayout_2 = QtGui.QVBoxLayout() + self.verticalLayout_2.setObjectName("verticalLayout_2") + self.sysBox = QtGui.QGroupBox(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.sinkFrame.sizePolicy().hasHeightForWidth()) - self.sinkFrame.setSizePolicy(sizePolicy) - self.sinkFrame.setMinimumSize(QtCore.QSize(1000, 550)) - self.sinkFrame.setFrameShape(QtGui.QFrame.StyledPanel) - self.sinkFrame.setFrameShadow(QtGui.QFrame.Raised) - self.sinkFrame.setObjectName("sinkFrame") - self.gridLayout_2 = QtGui.QGridLayout(self.sinkFrame) - self.gridLayout_2.setObjectName("gridLayout_2") - self.sinkLayout = QtGui.QHBoxLayout() - self.sinkLayout.setObjectName("sinkLayout") - self.gridLayout_2.addLayout(self.sinkLayout, 1, 0, 1, 1) - self.verticalLayout_5.addWidget(self.sinkFrame) - self.gridLayout.addLayout(self.verticalLayout_5, 0, 0, 1, 6) - self.verticalLayout_3 = QtGui.QVBoxLayout() - self.verticalLayout_3.setObjectName("verticalLayout_3") - self.rxBox = QtGui.QGroupBox(self.centralwidget) + sizePolicy.setHeightForWidth(self.sysBox.sizePolicy().hasHeightForWidth()) + self.sysBox.setSizePolicy(sizePolicy) + self.sysBox.setMinimumSize(QtCore.QSize(240, 60)) + self.sysBox.setMaximumSize(QtCore.QSize(240, 16777215)) + self.sysBox.setObjectName("sysBox") + self.formLayoutWidget = QtGui.QWidget(self.sysBox) + self.formLayoutWidget.setGeometry(QtCore.QRect(10, 20, 211, 31)) + self.formLayoutWidget.setObjectName("formLayoutWidget") + self.formLayout = QtGui.QFormLayout(self.formLayoutWidget) + self.formLayout.setSizeConstraint(QtGui.QLayout.SetFixedSize) + self.formLayout.setVerticalSpacing(20) + self.formLayout.setObjectName("formLayout") + self.sampleRateEdit = QtGui.QLineEdit(self.formLayoutWidget) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.rxBox.sizePolicy().hasHeightForWidth()) - self.rxBox.setSizePolicy(sizePolicy) - self.rxBox.setMinimumSize(QtCore.QSize(180, 90)) - self.rxBox.setMaximumSize(QtCore.QSize(180, 16777215)) - self.rxBox.setObjectName("rxBox") - self.formLayoutWidget_3 = QtGui.QWidget(self.rxBox) - self.formLayoutWidget_3.setGeometry(QtCore.QRect(10, 20, 161, 61)) - self.formLayoutWidget_3.setObjectName("formLayoutWidget_3") - self.formLayout_3 = QtGui.QFormLayout(self.formLayoutWidget_3) - self.formLayout_3.setSizeConstraint(QtGui.QLayout.SetFixedSize) - self.formLayout_3.setObjectName("formLayout_3") - self.gainMuLabel = QtGui.QLabel(self.formLayoutWidget_3) - self.gainMuLabel.setObjectName("gainMuLabel") - self.formLayout_3.setWidget(0, QtGui.QFormLayout.LabelRole, self.gainMuLabel) - self.alphaLabel = QtGui.QLabel(self.formLayoutWidget_3) - self.alphaLabel.setObjectName("alphaLabel") - self.formLayout_3.setWidget(1, QtGui.QFormLayout.LabelRole, self.alphaLabel) - self.gainMuEdit = QtGui.QLineEdit(self.formLayoutWidget_3) - self.gainMuEdit.setMinimumSize(QtCore.QSize(100, 0)) - self.gainMuEdit.setMaximumSize(QtCore.QSize(100, 16777215)) - self.gainMuEdit.setObjectName("gainMuEdit") - self.formLayout_3.setWidget(0, QtGui.QFormLayout.FieldRole, self.gainMuEdit) - self.alphaEdit = QtGui.QLineEdit(self.formLayoutWidget_3) - self.alphaEdit.setMinimumSize(QtCore.QSize(100, 0)) - self.alphaEdit.setMaximumSize(QtCore.QSize(100, 16777215)) - self.alphaEdit.setObjectName("alphaEdit") - self.formLayout_3.setWidget(1, QtGui.QFormLayout.FieldRole, self.alphaEdit) - self.verticalLayout_3.addWidget(self.rxBox) - spacerItem1 = QtGui.QSpacerItem(20, 30, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed) - self.verticalLayout_3.addItem(spacerItem1) - self.gridLayout.addLayout(self.verticalLayout_3, 2, 2, 1, 1) + sizePolicy.setHeightForWidth(self.sampleRateEdit.sizePolicy().hasHeightForWidth()) + self.sampleRateEdit.setSizePolicy(sizePolicy) + self.sampleRateEdit.setMinimumSize(QtCore.QSize(60, 26)) + self.sampleRateEdit.setMaximumSize(QtCore.QSize(80, 26)) + self.sampleRateEdit.setObjectName("sampleRateEdit") + self.formLayout.setWidget(0, QtGui.QFormLayout.FieldRole, self.sampleRateEdit) + self.sampleRateLabel = QtGui.QLabel(self.formLayoutWidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.sampleRateLabel.sizePolicy().hasHeightForWidth()) + self.sampleRateLabel.setSizePolicy(sizePolicy) + self.sampleRateLabel.setMinimumSize(QtCore.QSize(0, 20)) + self.sampleRateLabel.setMaximumSize(QtCore.QSize(16777215, 20)) + self.sampleRateLabel.setObjectName("sampleRateLabel") + self.formLayout.setWidget(0, QtGui.QFormLayout.LabelRole, self.sampleRateLabel) + self.verticalLayout_2.addWidget(self.sysBox) + spacerItem2 = QtGui.QSpacerItem(20, 60, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed) + self.verticalLayout_2.addItem(spacerItem2) + self.gridLayout.addLayout(self.verticalLayout_2, 2, 0, 1, 1) self.rxBox_2 = QtGui.QGroupBox(self.centralwidget) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) @@ -166,7 +162,7 @@ class Ui_DigitalWindow(object): self.rxBox_2.setMaximumSize(QtCore.QSize(265, 125)) self.rxBox_2.setObjectName("rxBox_2") self.formLayoutWidget_4 = QtGui.QWidget(self.rxBox_2) - self.formLayoutWidget_4.setGeometry(QtCore.QRect(10, 20, 201, 92)) + self.formLayoutWidget_4.setGeometry(QtCore.QRect(10, 20, 181, 92)) self.formLayoutWidget_4.setObjectName("formLayoutWidget_4") self.formLayout_4 = QtGui.QFormLayout(self.formLayoutWidget_4) self.formLayout_4.setSizeConstraint(QtGui.QLayout.SetFixedSize) @@ -181,41 +177,45 @@ class Ui_DigitalWindow(object): self.perLabel.setObjectName("perLabel") self.formLayout_4.setWidget(2, QtGui.QFormLayout.LabelRole, self.perLabel) self.pktsRcvdEdit = QtGui.QLineEdit(self.formLayoutWidget_4) - self.pktsRcvdEdit.setMinimumSize(QtCore.QSize(100, 0)) - self.pktsRcvdEdit.setMaximumSize(QtCore.QSize(100, 16777215)) + self.pktsRcvdEdit.setMinimumSize(QtCore.QSize(60, 0)) + self.pktsRcvdEdit.setMaximumSize(QtCore.QSize(80, 16777215)) self.pktsRcvdEdit.setObjectName("pktsRcvdEdit") self.formLayout_4.setWidget(0, QtGui.QFormLayout.FieldRole, self.pktsRcvdEdit) self.pktsCorrectEdit = QtGui.QLineEdit(self.formLayoutWidget_4) - self.pktsCorrectEdit.setMinimumSize(QtCore.QSize(100, 0)) - self.pktsCorrectEdit.setMaximumSize(QtCore.QSize(100, 16777215)) + self.pktsCorrectEdit.setMinimumSize(QtCore.QSize(60, 0)) + self.pktsCorrectEdit.setMaximumSize(QtCore.QSize(80, 16777215)) self.pktsCorrectEdit.setObjectName("pktsCorrectEdit") self.formLayout_4.setWidget(1, QtGui.QFormLayout.FieldRole, self.pktsCorrectEdit) self.perEdit = QtGui.QLineEdit(self.formLayoutWidget_4) - self.perEdit.setMinimumSize(QtCore.QSize(100, 0)) - self.perEdit.setMaximumSize(QtCore.QSize(100, 16777215)) + self.perEdit.setMinimumSize(QtCore.QSize(60, 0)) + self.perEdit.setMaximumSize(QtCore.QSize(80, 16777215)) self.perEdit.setObjectName("perEdit") self.formLayout_4.setWidget(2, QtGui.QFormLayout.FieldRole, self.perEdit) self.gridLayout.addWidget(self.rxBox_2, 2, 3, 1, 1) - spacerItem2 = QtGui.QSpacerItem(20, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) - self.gridLayout.addItem(spacerItem2, 2, 4, 1, 1) - self.verticalLayout = QtGui.QVBoxLayout() - self.verticalLayout.setObjectName("verticalLayout") - self.pauseButton = QtGui.QPushButton(self.centralwidget) - self.pauseButton.setMinimumSize(QtCore.QSize(80, 0)) - self.pauseButton.setMaximumSize(QtCore.QSize(80, 16777215)) - self.pauseButton.setObjectName("pauseButton") - self.verticalLayout.addWidget(self.pauseButton) - spacerItem3 = QtGui.QSpacerItem(20, 60, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed) - self.verticalLayout.addItem(spacerItem3) - self.closeButton = QtGui.QPushButton(self.centralwidget) - self.closeButton.setMinimumSize(QtCore.QSize(80, 0)) - self.closeButton.setMaximumSize(QtCore.QSize(80, 16777215)) - self.closeButton.setObjectName("closeButton") - self.verticalLayout.addWidget(self.closeButton) - self.gridLayout.addLayout(self.verticalLayout, 2, 5, 1, 1) + spacerItem3 = QtGui.QSpacerItem(20, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + self.gridLayout.addItem(spacerItem3, 2, 4, 1, 1) + self.verticalLayout_5 = QtGui.QVBoxLayout() + self.verticalLayout_5.setObjectName("verticalLayout_5") + self.sinkFrame = QtGui.QFrame(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.sinkFrame.sizePolicy().hasHeightForWidth()) + self.sinkFrame.setSizePolicy(sizePolicy) + self.sinkFrame.setMinimumSize(QtCore.QSize(500, 550)) + self.sinkFrame.setFrameShape(QtGui.QFrame.StyledPanel) + self.sinkFrame.setFrameShadow(QtGui.QFrame.Raised) + self.sinkFrame.setObjectName("sinkFrame") + self.gridLayout_2 = QtGui.QGridLayout(self.sinkFrame) + self.gridLayout_2.setObjectName("gridLayout_2") + self.sinkLayout = QtGui.QHBoxLayout() + self.sinkLayout.setObjectName("sinkLayout") + self.gridLayout_2.addLayout(self.sinkLayout, 1, 0, 1, 1) + self.verticalLayout_5.addWidget(self.sinkFrame) + self.gridLayout.addLayout(self.verticalLayout_5, 0, 0, 1, 6) DigitalWindow.setCentralWidget(self.centralwidget) self.menubar = QtGui.QMenuBar(DigitalWindow) - self.menubar.setGeometry(QtCore.QRect(0, 0, 1050, 24)) + self.menubar.setGeometry(QtCore.QRect(0, 0, 1019, 25)) self.menubar.setObjectName("menubar") self.menuFile = QtGui.QMenu(self.menubar) self.menuFile.setObjectName("menuFile") @@ -237,21 +237,21 @@ class Ui_DigitalWindow(object): def retranslateUi(self, DigitalWindow): DigitalWindow.setWindowTitle(QtGui.QApplication.translate("DigitalWindow", "MainWindow", None, QtGui.QApplication.UnicodeUTF8)) - self.sysBox.setTitle(QtGui.QApplication.translate("DigitalWindow", "System Parameters", None, QtGui.QApplication.UnicodeUTF8)) - self.sampleRateLabel.setText(QtGui.QApplication.translate("DigitalWindow", "Sample Rate (sps)", None, QtGui.QApplication.UnicodeUTF8)) + self.rxBox.setTitle(QtGui.QApplication.translate("DigitalWindow", "Receiver Parameters", None, QtGui.QApplication.UnicodeUTF8)) + self.gainMuLabel.setText(QtGui.QApplication.translate("DigitalWindow", "Gain mu", None, QtGui.QApplication.UnicodeUTF8)) + self.alphaLabel.setText(QtGui.QApplication.translate("DigitalWindow", "Alpha", None, QtGui.QApplication.UnicodeUTF8)) + self.pauseButton.setText(QtGui.QApplication.translate("DigitalWindow", "Pause", None, QtGui.QApplication.UnicodeUTF8)) + self.closeButton.setText(QtGui.QApplication.translate("DigitalWindow", "Close", None, QtGui.QApplication.UnicodeUTF8)) self.channelModeBox.setTitle(QtGui.QApplication.translate("DigitalWindow", "Channel Model Parameters", None, QtGui.QApplication.UnicodeUTF8)) self.snrLabel.setText(QtGui.QApplication.translate("DigitalWindow", "SNR (dB)", None, QtGui.QApplication.UnicodeUTF8)) self.freqLabel.setText(QtGui.QApplication.translate("DigitalWindow", "Frequency Offset (Hz)", None, QtGui.QApplication.UnicodeUTF8)) self.timeLabel.setText(QtGui.QApplication.translate("DigitalWindow", "Timing Offset", None, QtGui.QApplication.UnicodeUTF8)) - self.rxBox.setTitle(QtGui.QApplication.translate("DigitalWindow", "Receiver Parameters", None, QtGui.QApplication.UnicodeUTF8)) - self.gainMuLabel.setText(QtGui.QApplication.translate("DigitalWindow", "Gain mu", None, QtGui.QApplication.UnicodeUTF8)) - self.alphaLabel.setText(QtGui.QApplication.translate("DigitalWindow", "Alpha", None, QtGui.QApplication.UnicodeUTF8)) + self.sysBox.setTitle(QtGui.QApplication.translate("DigitalWindow", "System Parameters", None, QtGui.QApplication.UnicodeUTF8)) + self.sampleRateLabel.setText(QtGui.QApplication.translate("DigitalWindow", "Sample Rate (sps)", None, QtGui.QApplication.UnicodeUTF8)) self.rxBox_2.setTitle(QtGui.QApplication.translate("DigitalWindow", "Received Packet Info", None, QtGui.QApplication.UnicodeUTF8)) self.pktsRcvdLabel.setText(QtGui.QApplication.translate("DigitalWindow", "Packets Rcvd.", None, QtGui.QApplication.UnicodeUTF8)) self.pktsCorrectLabel.setText(QtGui.QApplication.translate("DigitalWindow", "Packets Correct", None, QtGui.QApplication.UnicodeUTF8)) self.perLabel.setText(QtGui.QApplication.translate("DigitalWindow", "PER", None, QtGui.QApplication.UnicodeUTF8)) - self.pauseButton.setText(QtGui.QApplication.translate("DigitalWindow", "Pause", None, QtGui.QApplication.UnicodeUTF8)) - self.closeButton.setText(QtGui.QApplication.translate("DigitalWindow", "Close", None, QtGui.QApplication.UnicodeUTF8)) self.menuFile.setTitle(QtGui.QApplication.translate("DigitalWindow", "&File", None, QtGui.QApplication.UnicodeUTF8)) self.actionExit.setText(QtGui.QApplication.translate("DigitalWindow", "E&xit", None, QtGui.QApplication.UnicodeUTF8)) diff --git a/gnuradio-examples/python/digital/qt_digital_window.ui b/gnuradio-examples/python/digital/qt_digital_window.ui index 413801ec7..a0af196ed 100644 --- a/gnuradio-examples/python/digital/qt_digital_window.ui +++ b/gnuradio-examples/python/digital/qt_digital_window.ui @@ -1,105 +1,102 @@ -<ui version="4.0" > +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> <class>DigitalWindow</class> - <widget class="QMainWindow" name="DigitalWindow" > - <property name="geometry" > + <widget class="QMainWindow" name="DigitalWindow"> + <property name="geometry"> <rect> <x>0</x> <y>0</y> - <width>1050</width> - <height>752</height> + <width>1019</width> + <height>754</height> </rect> </property> - <property name="windowTitle" > + <property name="windowTitle"> <string>MainWindow</string> </property> - <widget class="QWidget" name="centralwidget" > - <layout class="QGridLayout" name="gridLayout" > - <item row="2" column="0" > - <layout class="QVBoxLayout" name="verticalLayout_2" > + <widget class="QWidget" name="centralwidget"> + <layout class="QGridLayout" name="gridLayout"> + <item row="2" column="2"> + <layout class="QVBoxLayout" name="verticalLayout_3"> <item> - <widget class="QGroupBox" name="sysBox" > - <property name="sizePolicy" > - <sizepolicy vsizetype="Fixed" hsizetype="Fixed" > + <widget class="QGroupBox" name="rxBox"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Fixed" vsizetype="Fixed"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> - <property name="minimumSize" > + <property name="minimumSize"> <size> - <width>240</width> - <height>60</height> + <width>180</width> + <height>90</height> </size> </property> - <property name="maximumSize" > + <property name="maximumSize"> <size> - <width>240</width> + <width>180</width> <height>16777215</height> </size> </property> - <property name="title" > - <string>System Parameters</string> + <property name="title"> + <string>Receiver Parameters</string> </property> - <widget class="QWidget" name="formLayoutWidget" > - <property name="geometry" > + <widget class="QWidget" name="formLayoutWidget_3"> + <property name="geometry"> <rect> <x>10</x> <y>20</y> - <width>221</width> - <height>31</height> + <width>141</width> + <height>61</height> </rect> </property> - <layout class="QFormLayout" name="formLayout" > - <property name="sizeConstraint" > + <layout class="QFormLayout" name="formLayout_3"> + <property name="sizeConstraint"> <enum>QLayout::SetFixedSize</enum> </property> - <property name="verticalSpacing" > - <number>20</number> - </property> - <item row="0" column="1" > - <widget class="QLineEdit" name="sampleRateEdit" > - <property name="sizePolicy" > - <sizepolicy vsizetype="Fixed" hsizetype="Fixed" > - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> + <item row="0" column="0"> + <widget class="QLabel" name="gainMuLabel"> + <property name="text"> + <string>Gain mu</string> </property> - <property name="minimumSize" > + </widget> + </item> + <item row="1" column="0"> + <widget class="QLabel" name="alphaLabel"> + <property name="text"> + <string>Alpha</string> + </property> + </widget> + </item> + <item row="0" column="1"> + <widget class="QLineEdit" name="gainMuEdit"> + <property name="minimumSize"> <size> - <width>100</width> - <height>26</height> + <width>60</width> + <height>0</height> </size> </property> - <property name="maximumSize" > + <property name="maximumSize"> <size> - <width>100</width> - <height>26</height> + <width>80</width> + <height>16777215</height> </size> </property> </widget> </item> - <item row="0" column="0" > - <widget class="QLabel" name="sampleRateLabel" > - <property name="sizePolicy" > - <sizepolicy vsizetype="Fixed" hsizetype="Fixed" > - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="minimumSize" > + <item row="1" column="1"> + <widget class="QLineEdit" name="alphaEdit"> + <property name="minimumSize"> <size> - <width>0</width> - <height>20</height> + <width>60</width> + <height>0</height> </size> </property> - <property name="maximumSize" > + <property name="maximumSize"> <size> - <width>16777215</width> - <height>20</height> + <width>80</width> + <height>16777215</height> </size> </property> - <property name="text" > - <string>Sample Rate (sps)</string> - </property> </widget> </item> </layout> @@ -107,14 +104,53 @@ </widget> </item> <item> - <spacer name="verticalSpacer_2" > - <property name="orientation" > + <spacer name="verticalSpacer_4"> + <property name="orientation"> <enum>Qt::Vertical</enum> </property> - <property name="sizeType" > + <property name="sizeType"> <enum>QSizePolicy::Fixed</enum> </property> - <property name="sizeHint" stdset="0" > + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>30</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + <item row="2" column="5"> + <layout class="QVBoxLayout" name="verticalLayout"> + <item> + <widget class="QPushButton" name="pauseButton"> + <property name="minimumSize"> + <size> + <width>80</width> + <height>0</height> + </size> + </property> + <property name="maximumSize"> + <size> + <width>80</width> + <height>16777215</height> + </size> + </property> + <property name="text"> + <string>Pause</string> + </property> + </widget> + </item> + <item> + <spacer name="verticalSpacer"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeType"> + <enum>QSizePolicy::Fixed</enum> + </property> + <property name="sizeHint" stdset="0"> <size> <width>20</width> <height>60</height> @@ -122,111 +158,130 @@ </property> </spacer> </item> + <item> + <widget class="QPushButton" name="closeButton"> + <property name="minimumSize"> + <size> + <width>80</width> + <height>0</height> + </size> + </property> + <property name="maximumSize"> + <size> + <width>80</width> + <height>16777215</height> + </size> + </property> + <property name="text"> + <string>Close</string> + </property> + </widget> + </item> </layout> </item> - <item row="2" column="1" > - <widget class="QGroupBox" name="channelModeBox" > - <property name="sizePolicy" > - <sizepolicy vsizetype="Fixed" hsizetype="Fixed" > + <item row="2" column="1"> + <widget class="QGroupBox" name="channelModeBox"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Fixed" vsizetype="Fixed"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> - <property name="minimumSize" > + <property name="minimumSize"> <size> <width>245</width> <height>130</height> </size> </property> - <property name="maximumSize" > + <property name="maximumSize"> <size> <width>245</width> <height>16777215</height> </size> </property> - <property name="title" > + <property name="title"> <string>Channel Model Parameters</string> </property> - <widget class="QWidget" name="formLayoutWidget_2" > - <property name="geometry" > + <widget class="QWidget" name="formLayoutWidget_2"> + <property name="geometry"> <rect> <x>10</x> <y>20</y> - <width>231</width> + <width>221</width> <height>98</height> </rect> </property> - <layout class="QFormLayout" name="formLayout_2" > - <property name="sizeConstraint" > + <layout class="QFormLayout" name="formLayout_2"> + <property name="sizeConstraint"> <enum>QLayout::SetFixedSize</enum> </property> - <property name="fieldGrowthPolicy" > + <property name="fieldGrowthPolicy"> <enum>QFormLayout::AllNonFixedFieldsGrow</enum> </property> - <item row="0" column="0" > - <widget class="QLabel" name="snrLabel" > - <property name="text" > + <item row="0" column="0"> + <widget class="QLabel" name="snrLabel"> + <property name="text"> <string>SNR (dB)</string> </property> </widget> </item> - <item row="0" column="1" > - <widget class="QLineEdit" name="snrEdit" > - <property name="minimumSize" > + <item row="0" column="1"> + <widget class="QLineEdit" name="snrEdit"> + <property name="minimumSize"> <size> - <width>100</width> + <width>60</width> <height>0</height> </size> </property> - <property name="maximumSize" > + <property name="maximumSize"> <size> - <width>100</width> + <width>80</width> <height>16777215</height> </size> </property> </widget> </item> - <item row="1" column="0" > - <widget class="QLabel" name="freqLabel" > - <property name="text" > + <item row="1" column="0"> + <widget class="QLabel" name="freqLabel"> + <property name="text"> <string>Frequency Offset (Hz)</string> </property> </widget> </item> - <item row="1" column="1" > - <widget class="QLineEdit" name="freqEdit" > - <property name="minimumSize" > + <item row="1" column="1"> + <widget class="QLineEdit" name="freqEdit"> + <property name="minimumSize"> <size> - <width>100</width> + <width>60</width> <height>0</height> </size> </property> - <property name="maximumSize" > + <property name="maximumSize"> <size> - <width>100</width> + <width>80</width> <height>16777215</height> </size> </property> </widget> </item> - <item row="2" column="0" > - <widget class="QLabel" name="timeLabel" > - <property name="text" > + <item row="2" column="0"> + <widget class="QLabel" name="timeLabel"> + <property name="text"> <string>Timing Offset</string> </property> </widget> </item> - <item row="2" column="1" > - <widget class="QLineEdit" name="timeEdit" > - <property name="minimumSize" > + <item row="2" column="1"> + <widget class="QLineEdit" name="timeEdit"> + <property name="minimumSize"> <size> - <width>100</width> + <width>60</width> <height>0</height> </size> </property> - <property name="maximumSize" > + <property name="maximumSize"> <size> - <width>100</width> + <width>80</width> <height>16777215</height> </size> </property> @@ -236,121 +291,92 @@ </widget> </widget> </item> - <item row="0" column="0" colspan="6" > - <layout class="QVBoxLayout" name="verticalLayout_5" > - <item> - <widget class="QFrame" name="sinkFrame" > - <property name="sizePolicy" > - <sizepolicy vsizetype="Expanding" hsizetype="Expanding" > - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="minimumSize" > - <size> - <width>1000</width> - <height>550</height> - </size> - </property> - <property name="frameShape" > - <enum>QFrame::StyledPanel</enum> - </property> - <property name="frameShadow" > - <enum>QFrame::Raised</enum> - </property> - <layout class="QGridLayout" name="gridLayout_2" > - <item row="1" column="0" > - <layout class="QHBoxLayout" name="sinkLayout" /> - </item> - </layout> - <zorder>verticalLayoutWidget</zorder> - <zorder>verticalLayoutWidget</zorder> - </widget> - </item> - </layout> - </item> - <item row="2" column="2" > - <layout class="QVBoxLayout" name="verticalLayout_3" > + <item row="2" column="0"> + <layout class="QVBoxLayout" name="verticalLayout_2"> <item> - <widget class="QGroupBox" name="rxBox" > - <property name="sizePolicy" > - <sizepolicy vsizetype="Fixed" hsizetype="Fixed" > + <widget class="QGroupBox" name="sysBox"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Fixed" vsizetype="Fixed"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> - <property name="minimumSize" > + <property name="minimumSize"> <size> - <width>180</width> - <height>90</height> + <width>240</width> + <height>60</height> </size> </property> - <property name="maximumSize" > + <property name="maximumSize"> <size> - <width>180</width> + <width>240</width> <height>16777215</height> </size> </property> - <property name="title" > - <string>Receiver Parameters</string> + <property name="title"> + <string>System Parameters</string> </property> - <widget class="QWidget" name="formLayoutWidget_3" > - <property name="geometry" > + <widget class="QWidget" name="formLayoutWidget"> + <property name="geometry"> <rect> <x>10</x> <y>20</y> - <width>161</width> - <height>61</height> + <width>211</width> + <height>31</height> </rect> </property> - <layout class="QFormLayout" name="formLayout_3" > - <property name="sizeConstraint" > + <layout class="QFormLayout" name="formLayout"> + <property name="sizeConstraint"> <enum>QLayout::SetFixedSize</enum> </property> - <item row="0" column="0" > - <widget class="QLabel" name="gainMuLabel" > - <property name="text" > - <string>Gain mu</string> - </property> - </widget> - </item> - <item row="1" column="0" > - <widget class="QLabel" name="alphaLabel" > - <property name="text" > - <string>Alpha</string> + <property name="verticalSpacing"> + <number>20</number> + </property> + <item row="0" column="1"> + <widget class="QLineEdit" name="sampleRateEdit"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Fixed" vsizetype="Fixed"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> </property> - </widget> - </item> - <item row="0" column="1" > - <widget class="QLineEdit" name="gainMuEdit" > - <property name="minimumSize" > + <property name="minimumSize"> <size> - <width>100</width> - <height>0</height> + <width>60</width> + <height>26</height> </size> </property> - <property name="maximumSize" > + <property name="maximumSize"> <size> - <width>100</width> - <height>16777215</height> + <width>80</width> + <height>26</height> </size> </property> </widget> </item> - <item row="1" column="1" > - <widget class="QLineEdit" name="alphaEdit" > - <property name="minimumSize" > + <item row="0" column="0"> + <widget class="QLabel" name="sampleRateLabel"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Fixed" vsizetype="Fixed"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize"> <size> - <width>100</width> - <height>0</height> + <width>0</width> + <height>20</height> </size> </property> - <property name="maximumSize" > + <property name="maximumSize"> <size> - <width>100</width> - <height>16777215</height> + <width>16777215</width> + <height>20</height> </size> </property> + <property name="text"> + <string>Sample Rate (sps)</string> + </property> </widget> </item> </layout> @@ -358,123 +384,123 @@ </widget> </item> <item> - <spacer name="verticalSpacer_4" > - <property name="orientation" > + <spacer name="verticalSpacer_2"> + <property name="orientation"> <enum>Qt::Vertical</enum> </property> - <property name="sizeType" > + <property name="sizeType"> <enum>QSizePolicy::Fixed</enum> </property> - <property name="sizeHint" stdset="0" > + <property name="sizeHint" stdset="0"> <size> <width>20</width> - <height>30</height> + <height>60</height> </size> </property> </spacer> </item> </layout> </item> - <item row="2" column="3" > - <widget class="QGroupBox" name="rxBox_2" > - <property name="sizePolicy" > - <sizepolicy vsizetype="Fixed" hsizetype="Fixed" > + <item row="2" column="3"> + <widget class="QGroupBox" name="rxBox_2"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Fixed" vsizetype="Fixed"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> - <property name="minimumSize" > + <property name="minimumSize"> <size> <width>220</width> <height>125</height> </size> </property> - <property name="maximumSize" > + <property name="maximumSize"> <size> <width>265</width> <height>125</height> </size> </property> - <property name="title" > + <property name="title"> <string>Received Packet Info</string> </property> - <widget class="QWidget" name="formLayoutWidget_4" > - <property name="geometry" > + <widget class="QWidget" name="formLayoutWidget_4"> + <property name="geometry"> <rect> <x>10</x> <y>20</y> - <width>201</width> + <width>181</width> <height>92</height> </rect> </property> - <layout class="QFormLayout" name="formLayout_4" > - <property name="sizeConstraint" > + <layout class="QFormLayout" name="formLayout_4"> + <property name="sizeConstraint"> <enum>QLayout::SetFixedSize</enum> </property> - <item row="0" column="0" > - <widget class="QLabel" name="pktsRcvdLabel" > - <property name="text" > + <item row="0" column="0"> + <widget class="QLabel" name="pktsRcvdLabel"> + <property name="text"> <string>Packets Rcvd.</string> </property> </widget> </item> - <item row="1" column="0" > - <widget class="QLabel" name="pktsCorrectLabel" > - <property name="text" > + <item row="1" column="0"> + <widget class="QLabel" name="pktsCorrectLabel"> + <property name="text"> <string>Packets Correct</string> </property> </widget> </item> - <item row="2" column="0" > - <widget class="QLabel" name="perLabel" > - <property name="text" > + <item row="2" column="0"> + <widget class="QLabel" name="perLabel"> + <property name="text"> <string>PER</string> </property> </widget> </item> - <item row="0" column="1" > - <widget class="QLineEdit" name="pktsRcvdEdit" > - <property name="minimumSize" > + <item row="0" column="1"> + <widget class="QLineEdit" name="pktsRcvdEdit"> + <property name="minimumSize"> <size> - <width>100</width> + <width>60</width> <height>0</height> </size> </property> - <property name="maximumSize" > + <property name="maximumSize"> <size> - <width>100</width> + <width>80</width> <height>16777215</height> </size> </property> </widget> </item> - <item row="1" column="1" > - <widget class="QLineEdit" name="pktsCorrectEdit" > - <property name="minimumSize" > + <item row="1" column="1"> + <widget class="QLineEdit" name="pktsCorrectEdit"> + <property name="minimumSize"> <size> - <width>100</width> + <width>60</width> <height>0</height> </size> </property> - <property name="maximumSize" > + <property name="maximumSize"> <size> - <width>100</width> + <width>80</width> <height>16777215</height> </size> </property> </widget> </item> - <item row="2" column="1" > - <widget class="QLineEdit" name="perEdit" > - <property name="minimumSize" > + <item row="2" column="1"> + <widget class="QLineEdit" name="perEdit"> + <property name="minimumSize"> <size> - <width>100</width> + <width>60</width> <height>0</height> </size> </property> - <property name="maximumSize" > + <property name="maximumSize"> <size> - <width>100</width> + <width>80</width> <height>16777215</height> </size> </property> @@ -484,12 +510,12 @@ </widget> </widget> </item> - <item row="2" column="4" > - <spacer name="horizontalSpacer" > - <property name="orientation" > + <item row="2" column="4"> + <spacer name="horizontalSpacer"> + <property name="orientation"> <enum>Qt::Horizontal</enum> </property> - <property name="sizeHint" stdset="0" > + <property name="sizeHint" stdset="0"> <size> <width>20</width> <height>20</height> @@ -497,95 +523,64 @@ </property> </spacer> </item> - <item row="2" column="5" > - <layout class="QVBoxLayout" name="verticalLayout" > + <item row="0" column="0" colspan="6"> + <layout class="QVBoxLayout" name="verticalLayout_5"> <item> - <widget class="QPushButton" name="pauseButton" > - <property name="minimumSize" > - <size> - <width>80</width> - <height>0</height> - </size> - </property> - <property name="maximumSize" > - <size> - <width>80</width> - <height>16777215</height> - </size> - </property> - <property name="text" > - <string>Pause</string> - </property> - </widget> - </item> - <item> - <spacer name="verticalSpacer" > - <property name="orientation" > - <enum>Qt::Vertical</enum> - </property> - <property name="sizeType" > - <enum>QSizePolicy::Fixed</enum> - </property> - <property name="sizeHint" stdset="0" > - <size> - <width>20</width> - <height>60</height> - </size> + <widget class="QFrame" name="sinkFrame"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Expanding"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> </property> - </spacer> - </item> - <item> - <widget class="QPushButton" name="closeButton" > - <property name="minimumSize" > + <property name="minimumSize"> <size> - <width>80</width> - <height>0</height> + <width>500</width> + <height>550</height> </size> </property> - <property name="maximumSize" > - <size> - <width>80</width> - <height>16777215</height> - </size> + <property name="frameShape"> + <enum>QFrame::StyledPanel</enum> </property> - <property name="text" > - <string>Close</string> + <property name="frameShadow"> + <enum>QFrame::Raised</enum> </property> + <layout class="QGridLayout" name="gridLayout_2"> + <item row="1" column="0"> + <layout class="QHBoxLayout" name="sinkLayout"/> + </item> + </layout> </widget> </item> </layout> </item> </layout> - <zorder>sinkFrame</zorder> <zorder>channelModeBox</zorder> - <zorder>verticalLayoutWidget</zorder> - <zorder>verticalLayoutWidget</zorder> - <zorder>rxBox</zorder> <zorder></zorder> <zorder>rxBox_2</zorder> <zorder>horizontalSpacer</zorder> <zorder></zorder> </widget> - <widget class="QMenuBar" name="menubar" > - <property name="geometry" > + <widget class="QMenuBar" name="menubar"> + <property name="geometry"> <rect> <x>0</x> <y>0</y> - <width>1050</width> - <height>24</height> + <width>1019</width> + <height>25</height> </rect> </property> - <widget class="QMenu" name="menuFile" > - <property name="title" > + <widget class="QMenu" name="menuFile"> + <property name="title"> <string>&File</string> </property> - <addaction name="actionExit" /> + <addaction name="actionExit"/> </widget> - <addaction name="menuFile" /> + <addaction name="menuFile"/> </widget> - <widget class="QStatusBar" name="statusbar" /> - <action name="actionExit" > - <property name="text" > + <widget class="QStatusBar" name="statusbar"/> + <action name="actionExit"> + <property name="text"> <string>E&xit</string> </property> </action> @@ -603,11 +598,11 @@ <receiver>DigitalWindow</receiver> <slot>close()</slot> <hints> - <hint type="sourcelabel" > + <hint type="sourcelabel"> <x>322</x> <y>623</y> </hint> - <hint type="destinationlabel" > + <hint type="destinationlabel"> <x>66</x> <y>561</y> </hint> @@ -619,11 +614,11 @@ <receiver>DigitalWindow</receiver> <slot>close()</slot> <hints> - <hint type="sourcelabel" > + <hint type="sourcelabel"> <x>-1</x> <y>-1</y> </hint> - <hint type="destinationlabel" > + <hint type="destinationlabel"> <x>617</x> <y>327</y> </hint> diff --git a/gr-qtgui/src/lib/spectrumdisplayform.ui b/gr-qtgui/src/lib/spectrumdisplayform.ui index 1458488a0..cb7b4f996 100644 --- a/gr-qtgui/src/lib/spectrumdisplayform.ui +++ b/gr-qtgui/src/lib/spectrumdisplayform.ui @@ -1,157 +1,158 @@ -<ui version="4.0" > +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> <class>SpectrumDisplayForm</class> - <widget class="QWidget" name="SpectrumDisplayForm" > - <property name="geometry" > + <widget class="QWidget" name="SpectrumDisplayForm"> + <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>657</width> - <height>536</height> + <height>543</height> </rect> </property> - <property name="windowTitle" > + <property name="windowTitle"> <string>Spectrum Display</string> </property> - <layout class="QGridLayout" name="gridLayout" > - <item row="1" column="3" > - <widget class="QComboBox" name="FFTSizeComboBox" > - <property name="sizePolicy" > - <sizepolicy vsizetype="Fixed" hsizetype="Fixed" > + <layout class="QGridLayout" name="gridLayout"> + <item row="1" column="3"> + <widget class="QComboBox" name="FFTSizeComboBox"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Fixed" vsizetype="Fixed"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> - <property name="maximumSize" > + <property name="maximumSize"> <size> <width>120</width> <height>16777215</height> </size> </property> <item> - <property name="text" > + <property name="text"> <string>1024</string> </property> </item> <item> - <property name="text" > + <property name="text"> <string>2048</string> </property> </item> <item> - <property name="text" > + <property name="text"> <string>4096</string> </property> </item> <item> - <property name="text" > + <property name="text"> <string>8192</string> </property> </item> <item> - <property name="text" > + <property name="text"> <string>16384</string> </property> </item> <item> - <property name="text" > + <property name="text"> <string>32768</string> </property> </item> </widget> </item> - <item row="1" column="2" > - <widget class="QLabel" name="FFTSizeLabel" > - <property name="text" > + <item row="1" column="2"> + <widget class="QLabel" name="FFTSizeLabel"> + <property name="text"> <string>FFT Size:</string> </property> - <property name="alignment" > + <property name="alignment"> <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> </property> - <property name="wordWrap" > + <property name="wordWrap"> <bool>false</bool> </property> </widget> </item> - <item row="1" column="0" > - <widget class="QCheckBox" name="UseRFFrequenciesCheckBox" > - <property name="text" > + <item row="1" column="0"> + <widget class="QCheckBox" name="UseRFFrequenciesCheckBox"> + <property name="text"> <string>Display RF Frequencies</string> </property> </widget> </item> - <item row="3" column="0" > - <layout class="QHBoxLayout" name="horizontalLayout" > + <item row="3" column="0"> + <layout class="QHBoxLayout" name="horizontalLayout"> <item> - <widget class="QLabel" name="WindowLbl" > - <property name="sizePolicy" > - <sizepolicy vsizetype="Fixed" hsizetype="Fixed" > + <widget class="QLabel" name="WindowLbl"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Fixed" vsizetype="Fixed"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> - <property name="text" > + <property name="text"> <string>Window:</string> </property> - <property name="alignment" > + <property name="alignment"> <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> </property> - <property name="wordWrap" > + <property name="wordWrap"> <bool>false</bool> </property> </widget> </item> <item> - <widget class="QComboBox" name="WindowComboBox" > - <property name="sizePolicy" > - <sizepolicy vsizetype="Fixed" hsizetype="Fixed" > + <widget class="QComboBox" name="WindowComboBox"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Fixed" vsizetype="Fixed"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> - <property name="minimumSize" > + <property name="minimumSize"> <size> <width>120</width> <height>0</height> </size> </property> - <property name="maximumSize" > + <property name="maximumSize"> <size> <width>120</width> <height>16777215</height> </size> </property> - <property name="font" > + <property name="font"> <font> <pointsize>9</pointsize> </font> </property> <item> - <property name="text" > + <property name="text"> <string>Hamming</string> </property> </item> <item> - <property name="text" > + <property name="text"> <string>Hann</string> </property> </item> <item> - <property name="text" > + <property name="text"> <string>Blackman</string> </property> </item> <item> - <property name="text" > + <property name="text"> <string>Rectangular</string> </property> </item> <item> - <property name="text" > + <property name="text"> <string>Kaiser</string> </property> </item> <item> - <property name="text" > + <property name="text"> <string>Blackman-harris</string> </property> </item> @@ -159,180 +160,180 @@ </item> </layout> </item> - <item row="0" column="0" colspan="4" > - <widget class="QTabWidget" name="SpectrumTypeTab" > - <property name="currentIndex" > + <item row="0" column="0" colspan="4"> + <widget class="QTabWidget" name="SpectrumTypeTab"> + <property name="currentIndex"> <number>0</number> </property> - <widget class="QWidget" name="FrequencyPage" > - <attribute name="title" > + <widget class="QWidget" name="FrequencyPage"> + <attribute name="title"> <string>Frequency Display</string> </attribute> - <layout class="QVBoxLayout" name="verticalLayout" > + <layout class="QVBoxLayout" name="verticalLayout"> <item> - <layout class="QVBoxLayout" name="verticalLayout_2" > + <layout class="QVBoxLayout" name="verticalLayout_2"> <item> - <widget class="QFrame" name="FrequencyPlotDisplayFrame" > - <property name="sizePolicy" > - <sizepolicy vsizetype="Preferred" hsizetype="Preferred" > + <widget class="QFrame" name="FrequencyPlotDisplayFrame"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> - <property name="minimumSize" > + <property name="minimumSize"> <size> - <width>615</width> + <width>400</width> <height>332</height> </size> </property> - <property name="sizeIncrement" > + <property name="sizeIncrement"> <size> <width>1</width> <height>1</height> </size> </property> - <property name="frameShape" > + <property name="frameShape"> <enum>QFrame::NoFrame</enum> </property> - <property name="frameShadow" > + <property name="frameShadow"> <enum>QFrame::Plain</enum> </property> </widget> </item> <item> - <layout class="QGridLayout" name="gridLayout_2" > - <item row="1" column="0" > - <widget class="QCheckBox" name="MaxHoldCheckBox" > - <property name="text" > + <layout class="QGridLayout" name="gridLayout_2"> + <item row="1" column="0"> + <widget class="QCheckBox" name="MaxHoldCheckBox"> + <property name="text"> <string>Max Hold</string> </property> - <property name="checked" > + <property name="checked"> <bool>false</bool> </property> </widget> </item> - <item row="2" column="0" > - <widget class="QCheckBox" name="MinHoldCheckBox" > - <property name="text" > + <item row="2" column="0"> + <widget class="QCheckBox" name="MinHoldCheckBox"> + <property name="text"> <string>Min Hold</string> </property> - <property name="checked" > + <property name="checked"> <bool>false</bool> </property> </widget> </item> - <item row="1" column="3" > - <widget class="QLabel" name="PowerLabel" > - <property name="minimumSize" > + <item row="1" column="3"> + <widget class="QLabel" name="PowerLabel"> + <property name="minimumSize"> <size> <width>50</width> <height>0</height> </size> </property> - <property name="maximumSize" > + <property name="maximumSize"> <size> <width>50</width> <height>16777215</height> </size> </property> - <property name="text" > + <property name="text"> <string>Power</string> </property> - <property name="alignment" > + <property name="alignment"> <set>Qt::AlignCenter</set> </property> - <property name="wordWrap" > + <property name="wordWrap"> <bool>false</bool> </property> </widget> </item> - <item row="1" column="1" > - <widget class="QPushButton" name="MaxHoldResetBtn" > - <property name="sizePolicy" > - <sizepolicy vsizetype="Fixed" hsizetype="Fixed" > + <item row="1" column="1"> + <widget class="QPushButton" name="MaxHoldResetBtn"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Fixed" vsizetype="Fixed"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> - <property name="minimumSize" > + <property name="minimumSize"> <size> <width>25</width> <height>0</height> </size> </property> - <property name="text" > + <property name="text"> <string>Reset</string> </property> </widget> </item> - <item row="1" column="4" > - <widget class="QLabel" name="AvgLabel" > - <property name="sizePolicy" > - <sizepolicy vsizetype="Fixed" hsizetype="Fixed" > + <item row="1" column="4"> + <widget class="QLabel" name="AvgLabel"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Fixed" vsizetype="Fixed"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> - <property name="minimumSize" > + <property name="minimumSize"> <size> <width>62</width> <height>0</height> </size> </property> - <property name="text" > + <property name="text"> <string>Average</string> </property> - <property name="alignment" > + <property name="alignment"> <set>Qt::AlignCenter</set> </property> - <property name="wordWrap" > + <property name="wordWrap"> <bool>false</bool> </property> </widget> </item> - <item row="2" column="1" > - <widget class="QPushButton" name="MinHoldResetBtn" > - <property name="text" > + <item row="2" column="1"> + <widget class="QPushButton" name="MinHoldResetBtn"> + <property name="text"> <string>Reset</string> </property> </widget> </item> - <item row="2" column="4" > - <widget class="QSpinBox" name="AvgLineEdit" /> + <item row="2" column="4"> + <widget class="QSpinBox" name="AvgLineEdit"/> </item> - <item row="2" column="3" > - <widget class="QLineEdit" name="PowerLineEdit" > - <property name="sizePolicy" > - <sizepolicy vsizetype="Fixed" hsizetype="Fixed" > + <item row="2" column="3"> + <widget class="QLineEdit" name="PowerLineEdit"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Fixed" vsizetype="Fixed"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> - <property name="minimumSize" > + <property name="minimumSize"> <size> <width>50</width> <height>0</height> </size> </property> - <property name="maximumSize" > + <property name="maximumSize"> <size> <width>50</width> <height>16777215</height> </size> </property> - <property name="text" > + <property name="text"> <string>1</string> </property> </widget> </item> - <item row="1" column="2" > - <spacer name="horizontalSpacer_2" > - <property name="orientation" > + <item row="1" column="2"> + <spacer name="horizontalSpacer_2"> + <property name="orientation"> <enum>Qt::Horizontal</enum> </property> - <property name="sizeHint" stdset="0" > + <property name="sizeHint" stdset="0"> <size> - <width>325</width> + <width>200</width> <height>20</height> </size> </property> @@ -344,410 +345,402 @@ </item> </layout> </widget> - <widget class="QWidget" name="WaterfallPage" > - <attribute name="title" > + <widget class="QWidget" name="WaterfallPage"> + <attribute name="title"> <string>Waterfall Display</string> </attribute> - <layout class="QGridLayout" name="gridLayout_3" > - <item row="0" column="0" > - <widget class="QLabel" name="textLabel1" > - <property name="maximumSize" > + <layout class="QGridLayout" name="gridLayout_3"> + <item row="0" column="0"> + <widget class="QLabel" name="textLabel1"> + <property name="maximumSize"> <size> <width>100</width> <height>16777215</height> </size> </property> - <property name="text" > + <property name="text"> <string>Intensity Display:</string> </property> - <property name="wordWrap" > + <property name="wordWrap"> <bool>false</bool> </property> </widget> </item> - <item row="0" column="2" > - <widget class="QwtWheel" name="WaterfallMaximumIntensityWheel" > - <property name="minimumSize" > + <item row="0" column="2"> + <widget class="QwtWheel" name="WaterfallMaximumIntensityWheel"> + <property name="minimumSize"> <size> <width>200</width> <height>0</height> </size> </property> - <property name="mouseTracking" > + <property name="mouseTracking"> <bool>true</bool> </property> - <property name="focusPolicy" > + <property name="focusPolicy"> <enum>Qt::WheelFocus</enum> </property> - <property name="valid" > + <property name="valid"> <bool>true</bool> </property> - <property name="totalAngle" > + <property name="totalAngle"> <double>200.000000000000000</double> </property> - <property name="viewAngle" > + <property name="viewAngle"> <double>20.000000000000000</double> </property> - <property name="mass" > + <property name="mass"> <double>0.000000000000000</double> </property> </widget> </item> - <item row="0" column="3" > - <widget class="QLabel" name="WaterfallMaximumIntensityLabel" > - <property name="maximumSize" > + <item row="0" column="3"> + <widget class="QLabel" name="WaterfallMaximumIntensityLabel"> + <property name="maximumSize"> <size> <width>100</width> <height>16777215</height> </size> </property> - <property name="text" > + <property name="text"> <string>100 dB</string> </property> - <property name="wordWrap" > + <property name="wordWrap"> <bool>false</bool> </property> </widget> </item> - <item row="1" column="0" colspan="4" > - <widget class="QFrame" name="WaterfallPlotDisplayFrame" > - <property name="minimumSize" > + <item row="1" column="0" colspan="4"> + <widget class="QFrame" name="WaterfallPlotDisplayFrame"> + <property name="minimumSize"> <size> <width>617</width> <height>338</height> </size> </property> - <property name="frameShape" > + <property name="frameShape"> <enum>QFrame::NoFrame</enum> </property> - <property name="frameShadow" > + <property name="frameShadow"> <enum>QFrame::Plain</enum> </property> </widget> </item> - <item row="2" column="2" > - <widget class="QwtWheel" name="WaterfallMinimumIntensityWheel" > - <property name="minimumSize" > + <item row="2" column="2"> + <widget class="QwtWheel" name="WaterfallMinimumIntensityWheel"> + <property name="minimumSize"> <size> <width>200</width> <height>0</height> </size> </property> - <property name="valid" > + <property name="valid"> <bool>true</bool> </property> - <property name="totalAngle" > + <property name="totalAngle"> <double>200.000000000000000</double> </property> - <property name="viewAngle" > + <property name="viewAngle"> <double>20.000000000000000</double> </property> - <property name="mass" > + <property name="mass"> <double>0.000000000000000</double> </property> </widget> </item> - <item row="2" column="3" > - <widget class="QLabel" name="WaterfallMinimumIntensityLabel" > - <property name="maximumSize" > + <item row="2" column="3"> + <widget class="QLabel" name="WaterfallMinimumIntensityLabel"> + <property name="maximumSize"> <size> <width>100</width> <height>16777215</height> </size> </property> - <property name="text" > + <property name="text"> <string>-100 dB</string> </property> - <property name="wordWrap" > + <property name="wordWrap"> <bool>false</bool> </property> </widget> </item> - <item row="2" column="0" colspan="2" > - <widget class="QPushButton" name="WaterfallAutoScaleBtn" > - <property name="maximumSize" > + <item row="2" column="0" colspan="2"> + <widget class="QPushButton" name="WaterfallAutoScaleBtn"> + <property name="maximumSize"> <size> <width>80</width> <height>16777215</height> </size> </property> - <property name="toolTip" > + <property name="toolTip"> <string>Scales the Intensity to the current data extremes.</string> </property> - <property name="text" > + <property name="text"> <string>Auto Scale</string> </property> </widget> </item> - <item row="0" column="1" > - <widget class="QComboBox" name="WaterfallIntensityComboBox" > - <property name="maximumSize" > + <item row="0" column="1"> + <widget class="QComboBox" name="WaterfallIntensityComboBox"> + <property name="maximumSize"> <size> <width>100</width> <height>16777215</height> </size> </property> <item> - <property name="text" > + <property name="text"> <string>Color</string> </property> </item> <item> - <property name="text" > + <property name="text"> <string>White Hot</string> </property> </item> <item> - <property name="text" > + <property name="text"> <string>Black Hot</string> </property> </item> <item> - <property name="text" > + <property name="text"> <string>Incandescent</string> </property> </item> <item> - <property name="text" > + <property name="text"> <string>User Defined</string> </property> </item> </widget> </item> </layout> - <zorder>textLabel1</zorder> - <zorder>WaterfallMaximumIntensityWheel</zorder> - <zorder>WaterfallMaximumIntensityLabel</zorder> - <zorder>WaterfallPlotDisplayFrame</zorder> - <zorder>WaterfallMinimumIntensityWheel</zorder> - <zorder>WaterfallMinimumIntensityLabel</zorder> - <zorder>WaterfallAutoScaleBtn</zorder> - <zorder>WaterfallIntensityComboBox</zorder> </widget> - <widget class="QWidget" name="Waterfall3DPage" > - <attribute name="title" > + <widget class="QWidget" name="Waterfall3DPage"> + <attribute name="title"> <string>3D Waterfall Display</string> </attribute> - <layout class="QGridLayout" name="gridLayout_6" > - <item row="0" column="0" > - <widget class="QLabel" name="textLabel1_2" > - <property name="minimumSize" > + <layout class="QGridLayout" name="gridLayout_6"> + <item row="0" column="0"> + <widget class="QLabel" name="textLabel1_2"> + <property name="minimumSize"> <size> <width>0</width> <height>0</height> </size> </property> - <property name="maximumSize" > + <property name="maximumSize"> <size> <width>100</width> <height>16777215</height> </size> </property> - <property name="text" > + <property name="text"> <string>Intensity Display:</string> </property> - <property name="wordWrap" > + <property name="wordWrap"> <bool>false</bool> </property> </widget> </item> - <item row="0" column="1" > - <widget class="QComboBox" name="Waterfall3DIntensityComboBox" > - <property name="maximumSize" > + <item row="0" column="1"> + <widget class="QComboBox" name="Waterfall3DIntensityComboBox"> + <property name="maximumSize"> <size> <width>100</width> <height>16777215</height> </size> </property> <item> - <property name="text" > + <property name="text"> <string>Color</string> </property> </item> <item> - <property name="text" > + <property name="text"> <string>White Hot</string> </property> </item> <item> - <property name="text" > + <property name="text"> <string>Black Hot</string> </property> </item> <item> - <property name="text" > + <property name="text"> <string>Incandescent</string> </property> </item> <item> - <property name="text" > + <property name="text"> <string>User Defined</string> </property> </item> </widget> </item> - <item row="0" column="2" > - <widget class="QwtWheel" name="Waterfall3DMaximumIntensityWheel" > - <property name="minimumSize" > + <item row="0" column="2"> + <widget class="QwtWheel" name="Waterfall3DMaximumIntensityWheel"> + <property name="minimumSize"> <size> <width>200</width> <height>0</height> </size> </property> - <property name="mouseTracking" > + <property name="mouseTracking"> <bool>true</bool> </property> - <property name="focusPolicy" > + <property name="focusPolicy"> <enum>Qt::WheelFocus</enum> </property> - <property name="valid" > + <property name="valid"> <bool>true</bool> </property> - <property name="totalAngle" > + <property name="totalAngle"> <double>200.000000000000000</double> </property> - <property name="viewAngle" > + <property name="viewAngle"> <double>20.000000000000000</double> </property> - <property name="mass" > + <property name="mass"> <double>0.000000000000000</double> </property> </widget> </item> - <item row="0" column="3" > - <widget class="QLabel" name="Waterfall3DMaximumIntensityLabel" > - <property name="maximumSize" > + <item row="0" column="3"> + <widget class="QLabel" name="Waterfall3DMaximumIntensityLabel"> + <property name="maximumSize"> <size> <width>100</width> <height>16777215</height> </size> </property> - <property name="text" > + <property name="text"> <string>100 dB</string> </property> - <property name="wordWrap" > + <property name="wordWrap"> <bool>false</bool> </property> </widget> </item> - <item row="1" column="0" colspan="4" > - <widget class="QFrame" name="Waterfall3DPlotDisplayFrame" > - <property name="frameShape" > + <item row="1" column="0" colspan="4"> + <widget class="QFrame" name="Waterfall3DPlotDisplayFrame"> + <property name="frameShape"> <enum>QFrame::NoFrame</enum> </property> - <property name="frameShadow" > + <property name="frameShadow"> <enum>QFrame::Plain</enum> </property> </widget> </item> - <item row="2" column="0" colspan="2" > - <widget class="QPushButton" name="Waterfall3DAutoScaleBtn" > - <property name="minimumSize" > + <item row="2" column="0" colspan="2"> + <widget class="QPushButton" name="Waterfall3DAutoScaleBtn"> + <property name="minimumSize"> <size> <width>0</width> <height>0</height> </size> </property> - <property name="maximumSize" > + <property name="maximumSize"> <size> <width>80</width> <height>16777215</height> </size> </property> - <property name="sizeIncrement" > + <property name="sizeIncrement"> <size> <width>0</width> <height>0</height> </size> </property> - <property name="toolTip" > + <property name="toolTip"> <string>Scales the Intensity to the current data extremes.</string> </property> - <property name="text" > + <property name="text"> <string>Auto Scale</string> </property> </widget> </item> - <item row="2" column="2" > - <widget class="QwtWheel" name="Waterfall3DMinimumIntensityWheel" > - <property name="minimumSize" > + <item row="2" column="2"> + <widget class="QwtWheel" name="Waterfall3DMinimumIntensityWheel"> + <property name="minimumSize"> <size> <width>200</width> <height>0</height> </size> </property> - <property name="valid" > + <property name="valid"> <bool>true</bool> </property> - <property name="totalAngle" > + <property name="totalAngle"> <double>200.000000000000000</double> </property> - <property name="viewAngle" > + <property name="viewAngle"> <double>20.000000000000000</double> </property> - <property name="mass" > + <property name="mass"> <double>0.000000000000000</double> </property> </widget> </item> - <item row="2" column="3" > - <widget class="QLabel" name="Waterfall3DMinimumIntensityLabel" > - <property name="maximumSize" > + <item row="2" column="3"> + <widget class="QLabel" name="Waterfall3DMinimumIntensityLabel"> + <property name="maximumSize"> <size> <width>100</width> <height>16777215</height> </size> </property> - <property name="text" > + <property name="text"> <string>-100 dB</string> </property> - <property name="wordWrap" > + <property name="wordWrap"> <bool>false</bool> </property> </widget> </item> </layout> </widget> - <widget class="QWidget" name="TimeDomainPage" > - <attribute name="title" > + <widget class="QWidget" name="TimeDomainPage"> + <attribute name="title"> <string>Time Domain Display</string> </attribute> - <layout class="QGridLayout" name="gridLayout_4" > - <item row="0" column="0" > - <widget class="QFrame" name="TimeDomainDisplayFrame" > - <property name="minimumSize" > + <layout class="QGridLayout" name="gridLayout_4"> + <item row="0" column="0"> + <widget class="QFrame" name="TimeDomainDisplayFrame"> + <property name="minimumSize"> <size> <width>617</width> <height>404</height> </size> </property> - <property name="frameShape" > + <property name="frameShape"> <enum>QFrame::NoFrame</enum> </property> - <property name="frameShadow" > + <property name="frameShadow"> <enum>QFrame::Plain</enum> </property> </widget> </item> </layout> </widget> - <widget class="QWidget" name="ConstellationPage" > - <attribute name="title" > + <widget class="QWidget" name="ConstellationPage"> + <attribute name="title"> <string>Constellation Display</string> </attribute> - <layout class="QGridLayout" name="gridLayout_5" > - <item row="0" column="0" > - <widget class="QFrame" name="ConstellationDisplayFrame" > - <property name="minimumSize" > + <layout class="QGridLayout" name="gridLayout_5"> + <item row="0" column="0"> + <widget class="QFrame" name="ConstellationDisplayFrame"> + <property name="minimumSize"> <size> <width>617</width> <height>406</height> </size> </property> - <property name="frameShape" > + <property name="frameShape"> <enum>QFrame::StyledPanel</enum> </property> - <property name="frameShadow" > + <property name="frameShadow"> <enum>QFrame::Raised</enum> </property> </widget> @@ -758,7 +751,7 @@ </item> </layout> </widget> - <layoutdefault spacing="6" margin="11" /> + <layoutdefault spacing="6" margin="11"/> <pixmapfunction>qPixmapFromMimeSource</pixmapfunction> <customwidgets> <customwidget> @@ -775,14 +768,14 @@ <tabstop>WaterfallMinimumIntensityWheel</tabstop> </tabstops> <includes> - <include location="global" >SpectrumGUIClass.h</include> - <include location="global" >FrequencyDisplayPlot.h</include> - <include location="global" >WaterfallDisplayPlot.h</include> - <include location="global" >Waterfall3DDisplayPlot.h</include> - <include location="global" >TimeDomainDisplayPlot.h</include> - <include location="global" >qvalidator.h</include> - <include location="global" >vector</include> - <include location="local" >qwt_wheel.h</include> + <include location="global">SpectrumGUIClass.h</include> + <include location="global">FrequencyDisplayPlot.h</include> + <include location="global">WaterfallDisplayPlot.h</include> + <include location="global">Waterfall3DDisplayPlot.h</include> + <include location="global">TimeDomainDisplayPlot.h</include> + <include location="global">qvalidator.h</include> + <include location="global">vector</include> + <include location="local">qwt_wheel.h</include> </includes> <resources/> <connections> @@ -792,11 +785,11 @@ <receiver>SpectrumDisplayForm</receiver> <slot>MaxHoldCheckBox_toggled(bool)</slot> <hints> - <hint type="sourcelabel" > + <hint type="sourcelabel"> <x>22</x> <y>324</y> </hint> - <hint type="destinationlabel" > + <hint type="destinationlabel"> <x>20</x> <y>20</y> </hint> @@ -808,11 +801,11 @@ <receiver>SpectrumDisplayForm</receiver> <slot>MaxHoldResetBtn_clicked()</slot> <hints> - <hint type="sourcelabel" > + <hint type="sourcelabel"> <x>107</x> <y>324</y> </hint> - <hint type="destinationlabel" > + <hint type="destinationlabel"> <x>20</x> <y>20</y> </hint> @@ -824,11 +817,11 @@ <receiver>SpectrumDisplayForm</receiver> <slot>MinHoldCheckBox_toggled(bool)</slot> <hints> - <hint type="sourcelabel" > + <hint type="sourcelabel"> <x>22</x> <y>349</y> </hint> - <hint type="destinationlabel" > + <hint type="destinationlabel"> <x>20</x> <y>20</y> </hint> @@ -840,11 +833,11 @@ <receiver>SpectrumDisplayForm</receiver> <slot>MinHoldResetBtn_clicked()</slot> <hints> - <hint type="sourcelabel" > + <hint type="sourcelabel"> <x>107</x> <y>349</y> </hint> - <hint type="destinationlabel" > + <hint type="destinationlabel"> <x>20</x> <y>20</y> </hint> @@ -856,11 +849,11 @@ <receiver>SpectrumDisplayForm</receiver> <slot>PowerLineEdit_textChanged(QString)</slot> <hints> - <hint type="sourcelabel" > + <hint type="sourcelabel"> <x>482</x> <y>344</y> </hint> - <hint type="destinationlabel" > + <hint type="destinationlabel"> <x>20</x> <y>20</y> </hint> @@ -872,11 +865,11 @@ <receiver>SpectrumDisplayForm</receiver> <slot>WindowTypeChanged(int)</slot> <hints> - <hint type="sourcelabel" > + <hint type="sourcelabel"> <x>20</x> <y>20</y> </hint> - <hint type="destinationlabel" > + <hint type="destinationlabel"> <x>20</x> <y>20</y> </hint> @@ -888,11 +881,11 @@ <receiver>SpectrumDisplayForm</receiver> <slot>UseRFFrequenciesCB(bool)</slot> <hints> - <hint type="sourcelabel" > + <hint type="sourcelabel"> <x>20</x> <y>20</y> </hint> - <hint type="destinationlabel" > + <hint type="destinationlabel"> <x>20</x> <y>20</y> </hint> @@ -904,11 +897,11 @@ <receiver>SpectrumDisplayForm</receiver> <slot>waterfallMaximumIntensityChangedCB(double)</slot> <hints> - <hint type="sourcelabel" > + <hint type="sourcelabel"> <x>217</x> <y>44</y> </hint> - <hint type="destinationlabel" > + <hint type="destinationlabel"> <x>20</x> <y>20</y> </hint> @@ -920,11 +913,11 @@ <receiver>SpectrumDisplayForm</receiver> <slot>waterfallMinimumIntensityChangedCB(double)</slot> <hints> - <hint type="sourcelabel" > + <hint type="sourcelabel"> <x>217</x> <y>349</y> </hint> - <hint type="destinationlabel" > + <hint type="destinationlabel"> <x>20</x> <y>20</y> </hint> @@ -936,11 +929,11 @@ <receiver>SpectrumDisplayForm</receiver> <slot>waterfall3DMaximumIntensityChangedCB(double)</slot> <hints> - <hint type="sourcelabel" > + <hint type="sourcelabel"> <x>217</x> <y>44</y> </hint> - <hint type="destinationlabel" > + <hint type="destinationlabel"> <x>20</x> <y>20</y> </hint> @@ -952,11 +945,11 @@ <receiver>SpectrumDisplayForm</receiver> <slot>waterfall3DMinimumIntensityChangedCB(double)</slot> <hints> - <hint type="sourcelabel" > + <hint type="sourcelabel"> <x>217</x> <y>349</y> </hint> - <hint type="destinationlabel" > + <hint type="destinationlabel"> <x>20</x> <y>20</y> </hint> @@ -968,11 +961,11 @@ <receiver>SpectrumDisplayForm</receiver> <slot>FFTComboBoxSelectedCB(QString)</slot> <hints> - <hint type="sourcelabel" > + <hint type="sourcelabel"> <x>20</x> <y>20</y> </hint> - <hint type="destinationlabel" > + <hint type="destinationlabel"> <x>20</x> <y>20</y> </hint> @@ -984,11 +977,11 @@ <receiver>SpectrumDisplayForm</receiver> <slot>WaterfallAutoScaleBtnCB()</slot> <hints> - <hint type="sourcelabel" > + <hint type="sourcelabel"> <x>22</x> <y>349</y> </hint> - <hint type="destinationlabel" > + <hint type="destinationlabel"> <x>20</x> <y>20</y> </hint> @@ -1000,11 +993,11 @@ <receiver>SpectrumDisplayForm</receiver> <slot>Waterfall3DAutoScaleBtnCB()</slot> <hints> - <hint type="sourcelabel" > + <hint type="sourcelabel"> <x>22</x> <y>349</y> </hint> - <hint type="destinationlabel" > + <hint type="destinationlabel"> <x>20</x> <y>20</y> </hint> @@ -1016,11 +1009,11 @@ <receiver>SpectrumDisplayForm</receiver> <slot>WaterfallIntensityColorTypeChanged(int)</slot> <hints> - <hint type="sourcelabel" > + <hint type="sourcelabel"> <x>92</x> <y>44</y> </hint> - <hint type="destinationlabel" > + <hint type="destinationlabel"> <x>20</x> <y>20</y> </hint> @@ -1032,11 +1025,11 @@ <receiver>SpectrumDisplayForm</receiver> <slot>Waterfall3DIntensityColorTypeChanged(int)</slot> <hints> - <hint type="sourcelabel" > + <hint type="sourcelabel"> <x>92</x> <y>44</y> </hint> - <hint type="destinationlabel" > + <hint type="destinationlabel"> <x>20</x> <y>20</y> </hint> @@ -1048,11 +1041,11 @@ <receiver>SpectrumDisplayForm</receiver> <slot>TabChanged(int)</slot> <hints> - <hint type="sourcelabel" > + <hint type="sourcelabel"> <x>314</x> <y>189</y> </hint> - <hint type="destinationlabel" > + <hint type="destinationlabel"> <x>316</x> <y>217</y> </hint> @@ -1064,11 +1057,11 @@ <receiver>SpectrumDisplayForm</receiver> <slot>AvgLineEdit_valueChanged(int)</slot> <hints> - <hint type="sourcelabel" > + <hint type="sourcelabel"> <x>604</x> <y>421</y> </hint> - <hint type="destinationlabel" > + <hint type="destinationlabel"> <x>328</x> <y>260</y> </hint> diff --git a/gr-utils/src/python/pyqt_plot.py b/gr-utils/src/python/pyqt_plot.py index 98977da97..5650135ab 100644 --- a/gr-utils/src/python/pyqt_plot.py +++ b/gr-utils/src/python/pyqt_plot.py @@ -2,8 +2,8 @@ # Form implementation generated from reading ui file 'pyqt_plot.ui' # -# Created: Tue Sep 1 23:02:36 2009 -# by: PyQt4 UI code generator 4.4.3 +# Created: Tue Oct 6 10:39:58 2009 +# by: PyQt4 UI code generator 4.4.4 # # WARNING! All changes made in this file will be lost! @@ -12,7 +12,7 @@ from PyQt4 import QtCore, QtGui class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") - MainWindow.resize(927, 718) + MainWindow.resize(927, 696) self.centralwidget = QtGui.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.gridLayout = QtGui.QGridLayout(self.centralwidget) @@ -20,123 +20,8 @@ class Ui_MainWindow(object): self.plotHBar = QtGui.QScrollBar(self.centralwidget) self.plotHBar.setOrientation(QtCore.Qt.Horizontal) self.plotHBar.setObjectName("plotHBar") - self.gridLayout.addWidget(self.plotHBar, 1, 0, 1, 3) - self.filePosBox = QtGui.QGroupBox(self.centralwidget) - self.filePosBox.setMinimumSize(QtCore.QSize(0, 120)) - self.filePosBox.setObjectName("filePosBox") - self.gridLayout_4 = QtGui.QGridLayout(self.filePosBox) - self.gridLayout_4.setObjectName("gridLayout_4") - self.filePosLayout = QtGui.QFormLayout() - self.filePosLayout.setObjectName("filePosLayout") - self.filePosStartLineEdit = QtGui.QLineEdit(self.filePosBox) - self.filePosStartLineEdit.setMinimumSize(QtCore.QSize(50, 0)) - self.filePosStartLineEdit.setMaximumSize(QtCore.QSize(100, 16777215)) - self.filePosStartLineEdit.setObjectName("filePosStartLineEdit") - self.filePosLayout.setWidget(0, QtGui.QFormLayout.FieldRole, self.filePosStartLineEdit) - self.filePosStopLabel = QtGui.QLabel(self.filePosBox) - self.filePosStopLabel.setObjectName("filePosStopLabel") - self.filePosLayout.setWidget(1, QtGui.QFormLayout.LabelRole, self.filePosStopLabel) - self.filePosStopLineEdit = QtGui.QLineEdit(self.filePosBox) - self.filePosStopLineEdit.setMinimumSize(QtCore.QSize(50, 0)) - self.filePosStopLineEdit.setMaximumSize(QtCore.QSize(100, 16777215)) - self.filePosStopLineEdit.setObjectName("filePosStopLineEdit") - self.filePosLayout.setWidget(1, QtGui.QFormLayout.FieldRole, self.filePosStopLineEdit) - self.filePosLengthLabel = QtGui.QLabel(self.filePosBox) - self.filePosLengthLabel.setObjectName("filePosLengthLabel") - self.filePosLayout.setWidget(2, QtGui.QFormLayout.LabelRole, self.filePosLengthLabel) - self.filePosLengthLineEdit = QtGui.QLineEdit(self.filePosBox) - self.filePosLengthLineEdit.setMinimumSize(QtCore.QSize(50, 0)) - self.filePosLengthLineEdit.setMaximumSize(QtCore.QSize(100, 16777215)) - self.filePosLengthLineEdit.setObjectName("filePosLengthLineEdit") - self.filePosLayout.setWidget(2, QtGui.QFormLayout.FieldRole, self.filePosLengthLineEdit) - self.filePosStartLabel = QtGui.QLabel(self.filePosBox) - self.filePosStartLabel.setObjectName("filePosStartLabel") - self.filePosLayout.setWidget(0, QtGui.QFormLayout.LabelRole, self.filePosStartLabel) - self.gridLayout_4.addLayout(self.filePosLayout, 0, 0, 1, 1) - self.fileTimeLayout = QtGui.QFormLayout() - self.fileTimeLayout.setObjectName("fileTimeLayout") - self.fileTimeStartLabel = QtGui.QLabel(self.filePosBox) - self.fileTimeStartLabel.setObjectName("fileTimeStartLabel") - self.fileTimeLayout.setWidget(0, QtGui.QFormLayout.LabelRole, self.fileTimeStartLabel) - self.fileTimeStartLineEdit = QtGui.QLineEdit(self.filePosBox) - self.fileTimeStartLineEdit.setMinimumSize(QtCore.QSize(50, 0)) - self.fileTimeStartLineEdit.setMaximumSize(QtCore.QSize(100, 16777215)) - self.fileTimeStartLineEdit.setObjectName("fileTimeStartLineEdit") - self.fileTimeLayout.setWidget(0, QtGui.QFormLayout.FieldRole, self.fileTimeStartLineEdit) - self.fileTimeStopLabel = QtGui.QLabel(self.filePosBox) - self.fileTimeStopLabel.setObjectName("fileTimeStopLabel") - self.fileTimeLayout.setWidget(1, QtGui.QFormLayout.LabelRole, self.fileTimeStopLabel) - self.fileTimeStopLineEdit = QtGui.QLineEdit(self.filePosBox) - self.fileTimeStopLineEdit.setMinimumSize(QtCore.QSize(50, 0)) - self.fileTimeStopLineEdit.setMaximumSize(QtCore.QSize(100, 16777215)) - self.fileTimeStopLineEdit.setObjectName("fileTimeStopLineEdit") - self.fileTimeLayout.setWidget(1, QtGui.QFormLayout.FieldRole, self.fileTimeStopLineEdit) - self.fileTimeLengthLabel = QtGui.QLabel(self.filePosBox) - self.fileTimeLengthLabel.setObjectName("fileTimeLengthLabel") - self.fileTimeLayout.setWidget(2, QtGui.QFormLayout.LabelRole, self.fileTimeLengthLabel) - self.fileTimeLengthLineEdit = QtGui.QLineEdit(self.filePosBox) - self.fileTimeLengthLineEdit.setMinimumSize(QtCore.QSize(50, 0)) - self.fileTimeLengthLineEdit.setMaximumSize(QtCore.QSize(100, 16777215)) - self.fileTimeLengthLineEdit.setObjectName("fileTimeLengthLineEdit") - self.fileTimeLayout.setWidget(2, QtGui.QFormLayout.FieldRole, self.fileTimeLengthLineEdit) - self.gridLayout_4.addLayout(self.fileTimeLayout, 0, 1, 1, 1) - self.gridLayout.addWidget(self.filePosBox, 2, 0, 1, 1) - self.displayGroupBox = QtGui.QGroupBox(self.centralwidget) - self.displayGroupBox.setMinimumSize(QtCore.QSize(170, 0)) - self.displayGroupBox.setObjectName("displayGroupBox") - self.gridLayout_2 = QtGui.QGridLayout(self.displayGroupBox) - self.gridLayout_2.setObjectName("gridLayout_2") - self.colorComboBox = QtGui.QComboBox(self.displayGroupBox) - self.colorComboBox.setObjectName("colorComboBox") - self.gridLayout_2.addWidget(self.colorComboBox, 0, 0, 1, 2) - self.lineWidthSpinBox = QtGui.QSpinBox(self.displayGroupBox) - self.lineWidthSpinBox.setMinimumSize(QtCore.QSize(100, 0)) - self.lineWidthSpinBox.setMaximumSize(QtCore.QSize(100, 16777215)) - self.lineWidthSpinBox.setObjectName("lineWidthSpinBox") - self.gridLayout_2.addWidget(self.lineWidthSpinBox, 1, 1, 1, 1) - self.lineWidthLabel = QtGui.QLabel(self.displayGroupBox) - self.lineWidthLabel.setObjectName("lineWidthLabel") - self.gridLayout_2.addWidget(self.lineWidthLabel, 1, 0, 1, 1) - self.lineStyleLabel = QtGui.QLabel(self.displayGroupBox) - self.lineStyleLabel.setObjectName("lineStyleLabel") - self.gridLayout_2.addWidget(self.lineStyleLabel, 2, 0, 1, 1) - self.lineStyleComboBox = QtGui.QComboBox(self.displayGroupBox) - self.lineStyleComboBox.setMinimumSize(QtCore.QSize(100, 0)) - self.lineStyleComboBox.setMaximumSize(QtCore.QSize(100, 16777215)) - self.lineStyleComboBox.setObjectName("lineStyleComboBox") - self.gridLayout_2.addWidget(self.lineStyleComboBox, 2, 1, 1, 1) - self.styleSizeLabel = QtGui.QLabel(self.displayGroupBox) - self.styleSizeLabel.setObjectName("styleSizeLabel") - self.gridLayout_2.addWidget(self.styleSizeLabel, 3, 0, 1, 1) - self.styleSizeSpinBox = QtGui.QSpinBox(self.displayGroupBox) - self.styleSizeSpinBox.setMinimumSize(QtCore.QSize(100, 0)) - self.styleSizeSpinBox.setMaximumSize(QtCore.QSize(100, 16777215)) - self.styleSizeSpinBox.setObjectName("styleSizeSpinBox") - self.gridLayout_2.addWidget(self.styleSizeSpinBox, 3, 1, 1, 1) - self.gridLayout.addWidget(self.displayGroupBox, 2, 2, 1, 1) - self.sysGroupBox = QtGui.QGroupBox(self.centralwidget) - self.sysGroupBox.setMinimumSize(QtCore.QSize(200, 0)) - self.sysGroupBox.setObjectName("sysGroupBox") - self.formLayout = QtGui.QFormLayout(self.sysGroupBox) - self.formLayout.setFieldGrowthPolicy(QtGui.QFormLayout.AllNonFixedFieldsGrow) - self.formLayout.setObjectName("formLayout") - self.sampleRateLabel = QtGui.QLabel(self.sysGroupBox) - self.sampleRateLabel.setObjectName("sampleRateLabel") - self.formLayout.setWidget(0, QtGui.QFormLayout.LabelRole, self.sampleRateLabel) - self.sampleRateLineEdit = QtGui.QLineEdit(self.sysGroupBox) - self.sampleRateLineEdit.setMinimumSize(QtCore.QSize(50, 0)) - self.sampleRateLineEdit.setMaximumSize(QtCore.QSize(100, 16777215)) - self.sampleRateLineEdit.setObjectName("sampleRateLineEdit") - self.formLayout.setWidget(0, QtGui.QFormLayout.FieldRole, self.sampleRateLineEdit) - self.gridLayout.addWidget(self.sysGroupBox, 2, 1, 1, 1) - self.frame = QtGui.QFrame(self.centralwidget) - self.frame.setFrameShape(QtGui.QFrame.StyledPanel) - self.frame.setFrameShadow(QtGui.QFrame.Raised) - self.frame.setObjectName("frame") - self.gridLayout_3 = QtGui.QGridLayout(self.frame) - self.gridLayout_3.setObjectName("gridLayout_3") - self.tabGroup = QtGui.QTabWidget(self.frame) - self.tabGroup.setMinimumSize(QtCore.QSize(0, 0)) + self.gridLayout.addWidget(self.plotHBar, 2, 0, 1, 2) + self.tabGroup = QtGui.QTabWidget(self.centralwidget) self.tabGroup.setObjectName("tabGroup") self.timeTab = QtGui.QWidget() self.timeTab.setObjectName("timeTab") @@ -156,14 +41,14 @@ class Ui_MainWindow(object): self.formLayout_4 = QtGui.QFormLayout(self.fftPropBox) self.formLayout_4.setFieldGrowthPolicy(QtGui.QFormLayout.AllNonFixedFieldsGrow) self.formLayout_4.setObjectName("formLayout_4") - self.psdFFTSizeLabel = QtGui.QLabel(self.fftPropBox) - self.psdFFTSizeLabel.setObjectName("psdFFTSizeLabel") - self.formLayout_4.setWidget(0, QtGui.QFormLayout.LabelRole, self.psdFFTSizeLabel) self.psdFFTComboBox = QtGui.QComboBox(self.fftPropBox) self.psdFFTComboBox.setMinimumSize(QtCore.QSize(96, 0)) self.psdFFTComboBox.setMaximumSize(QtCore.QSize(96, 16777215)) self.psdFFTComboBox.setObjectName("psdFFTComboBox") self.formLayout_4.setWidget(0, QtGui.QFormLayout.FieldRole, self.psdFFTComboBox) + self.psdFFTSizeLabel = QtGui.QLabel(self.fftPropBox) + self.psdFFTSizeLabel.setObjectName("psdFFTSizeLabel") + self.formLayout_4.setWidget(0, QtGui.QFormLayout.LabelRole, self.psdFFTSizeLabel) self.horizontalLayout_2.addWidget(self.fftPropBox) self.freqPlot = Qwt5.QwtPlot(self.freqTab) self.freqPlot.setObjectName("freqPlot") @@ -190,11 +75,90 @@ class Ui_MainWindow(object): self.specPlot.setObjectName("specPlot") self.horizontalLayout_3.addWidget(self.specPlot) self.tabGroup.addTab(self.specTab, "") - self.gridLayout_3.addWidget(self.tabGroup, 0, 0, 1, 1) - self.gridLayout.addWidget(self.frame, 0, 0, 1, 3) + self.gridLayout.addWidget(self.tabGroup, 1, 0, 1, 1) + self.filePosBox = QtGui.QGroupBox(self.centralwidget) + self.filePosBox.setMinimumSize(QtCore.QSize(0, 120)) + self.filePosBox.setObjectName("filePosBox") + self.formLayoutWidget_2 = QtGui.QWidget(self.filePosBox) + self.formLayoutWidget_2.setGeometry(QtCore.QRect(0, 20, 160, 92)) + self.formLayoutWidget_2.setObjectName("formLayoutWidget_2") + self.filePosLayout = QtGui.QFormLayout(self.formLayoutWidget_2) + self.filePosLayout.setObjectName("filePosLayout") + self.filePosStartLabel = QtGui.QLabel(self.formLayoutWidget_2) + self.filePosStartLabel.setObjectName("filePosStartLabel") + self.filePosLayout.setWidget(0, QtGui.QFormLayout.LabelRole, self.filePosStartLabel) + self.filePosStartLineEdit = QtGui.QLineEdit(self.formLayoutWidget_2) + self.filePosStartLineEdit.setObjectName("filePosStartLineEdit") + self.filePosLayout.setWidget(0, QtGui.QFormLayout.FieldRole, self.filePosStartLineEdit) + self.filePosStopLabel = QtGui.QLabel(self.formLayoutWidget_2) + self.filePosStopLabel.setObjectName("filePosStopLabel") + self.filePosLayout.setWidget(1, QtGui.QFormLayout.LabelRole, self.filePosStopLabel) + self.filePosStopLineEdit = QtGui.QLineEdit(self.formLayoutWidget_2) + self.filePosStopLineEdit.setObjectName("filePosStopLineEdit") + self.filePosLayout.setWidget(1, QtGui.QFormLayout.FieldRole, self.filePosStopLineEdit) + self.filePosLengthLabel = QtGui.QLabel(self.formLayoutWidget_2) + self.filePosLengthLabel.setObjectName("filePosLengthLabel") + self.filePosLayout.setWidget(2, QtGui.QFormLayout.LabelRole, self.filePosLengthLabel) + self.filePosLengthLineEdit = QtGui.QLineEdit(self.formLayoutWidget_2) + self.filePosLengthLineEdit.setObjectName("filePosLengthLineEdit") + self.filePosLayout.setWidget(2, QtGui.QFormLayout.FieldRole, self.filePosLengthLineEdit) + self.formLayoutWidget_4 = QtGui.QWidget(self.filePosBox) + self.formLayoutWidget_4.setGeometry(QtCore.QRect(180, 20, 231, 92)) + self.formLayoutWidget_4.setObjectName("formLayoutWidget_4") + self.fileTimeLayout = QtGui.QFormLayout(self.formLayoutWidget_4) + self.fileTimeLayout.setObjectName("fileTimeLayout") + self.fileTimeStartLabel = QtGui.QLabel(self.formLayoutWidget_4) + self.fileTimeStartLabel.setObjectName("fileTimeStartLabel") + self.fileTimeLayout.setWidget(0, QtGui.QFormLayout.LabelRole, self.fileTimeStartLabel) + self.fileTimeStartLineEdit = QtGui.QLineEdit(self.formLayoutWidget_4) + self.fileTimeStartLineEdit.setObjectName("fileTimeStartLineEdit") + self.fileTimeLayout.setWidget(0, QtGui.QFormLayout.FieldRole, self.fileTimeStartLineEdit) + self.fileTimeStopLabel = QtGui.QLabel(self.formLayoutWidget_4) + self.fileTimeStopLabel.setObjectName("fileTimeStopLabel") + self.fileTimeLayout.setWidget(1, QtGui.QFormLayout.LabelRole, self.fileTimeStopLabel) + self.fileTimeStopLineEdit = QtGui.QLineEdit(self.formLayoutWidget_4) + self.fileTimeStopLineEdit.setObjectName("fileTimeStopLineEdit") + self.fileTimeLayout.setWidget(1, QtGui.QFormLayout.FieldRole, self.fileTimeStopLineEdit) + self.fileTimeLengthLabel = QtGui.QLabel(self.formLayoutWidget_4) + self.fileTimeLengthLabel.setObjectName("fileTimeLengthLabel") + self.fileTimeLayout.setWidget(2, QtGui.QFormLayout.LabelRole, self.fileTimeLengthLabel) + self.fileTimeLengthLineEdit = QtGui.QLineEdit(self.formLayoutWidget_4) + self.fileTimeLengthLineEdit.setObjectName("fileTimeLengthLineEdit") + self.fileTimeLayout.setWidget(2, QtGui.QFormLayout.FieldRole, self.fileTimeLengthLineEdit) + self.sysGroupBox = QtGui.QGroupBox(self.filePosBox) + self.sysGroupBox.setGeometry(QtCore.QRect(530, 0, 200, 120)) + self.sysGroupBox.setMinimumSize(QtCore.QSize(200, 0)) + self.sysGroupBox.setObjectName("sysGroupBox") + self.formLayoutWidget_3 = QtGui.QWidget(self.sysGroupBox) + self.formLayoutWidget_3.setGeometry(QtCore.QRect(0, 20, 191, 91)) + self.formLayoutWidget_3.setObjectName("formLayoutWidget_3") + self.formLayout_2 = QtGui.QFormLayout(self.formLayoutWidget_3) + self.formLayout_2.setObjectName("formLayout_2") + self.sampleRateLabel = QtGui.QLabel(self.formLayoutWidget_3) + self.sampleRateLabel.setObjectName("sampleRateLabel") + self.formLayout_2.setWidget(0, QtGui.QFormLayout.LabelRole, self.sampleRateLabel) + self.sampleRateLineEdit = QtGui.QLineEdit(self.formLayoutWidget_3) + self.sampleRateLineEdit.setMinimumSize(QtCore.QSize(0, 0)) + self.sampleRateLineEdit.setObjectName("sampleRateLineEdit") + self.formLayout_2.setWidget(0, QtGui.QFormLayout.FieldRole, self.sampleRateLineEdit) + self.displayGroupBox = QtGui.QGroupBox(self.filePosBox) + self.displayGroupBox.setGeometry(QtCore.QRect(730, 0, 170, 120)) + self.displayGroupBox.setMinimumSize(QtCore.QSize(170, 0)) + self.displayGroupBox.setObjectName("displayGroupBox") + self.verticalLayoutWidget = QtGui.QWidget(self.displayGroupBox) + self.verticalLayoutWidget.setGeometry(QtCore.QRect(0, 20, 160, 91)) + self.verticalLayoutWidget.setObjectName("verticalLayoutWidget") + self.verticalLayout = QtGui.QVBoxLayout(self.verticalLayoutWidget) + self.verticalLayout.setObjectName("verticalLayout") + self.colorComboBox = QtGui.QComboBox(self.verticalLayoutWidget) + self.colorComboBox.setObjectName("colorComboBox") + self.verticalLayout.addWidget(self.colorComboBox) + spacerItem = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.verticalLayout.addItem(spacerItem) + self.gridLayout.addWidget(self.filePosBox, 3, 0, 1, 1) MainWindow.setCentralWidget(self.centralwidget) self.menubar = QtGui.QMenuBar(MainWindow) - self.menubar.setGeometry(QtCore.QRect(0, 0, 927, 24)) + self.menubar.setGeometry(QtCore.QRect(0, 0, 927, 25)) self.menubar.setObjectName("menubar") self.menu_File = QtGui.QMenu(self.menubar) self.menu_File.setObjectName("menu_File") @@ -220,30 +184,28 @@ class Ui_MainWindow(object): def retranslateUi(self, MainWindow): MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow", "MainWindow", None, QtGui.QApplication.UnicodeUTF8)) + self.tabGroup.setTabText(self.tabGroup.indexOf(self.timeTab), QtGui.QApplication.translate("MainWindow", "Time Domain", None, QtGui.QApplication.UnicodeUTF8)) + self.fftPropBox.setTitle(QtGui.QApplication.translate("MainWindow", "FFT Properties", None, QtGui.QApplication.UnicodeUTF8)) + self.psdFFTSizeLabel.setText(QtGui.QApplication.translate("MainWindow", "FFT Size", None, QtGui.QApplication.UnicodeUTF8)) + self.tabGroup.setTabText(self.tabGroup.indexOf(self.freqTab), QtGui.QApplication.translate("MainWindow", "Frequency Domain", None, QtGui.QApplication.UnicodeUTF8)) + self.groupBox.setTitle(QtGui.QApplication.translate("MainWindow", "Spectrogram Properties", None, QtGui.QApplication.UnicodeUTF8)) + self.specFFTLabel.setText(QtGui.QApplication.translate("MainWindow", "FFT Size", None, QtGui.QApplication.UnicodeUTF8)) + self.tabGroup.setTabText(self.tabGroup.indexOf(self.specTab), QtGui.QApplication.translate("MainWindow", "Spectrogram", None, QtGui.QApplication.UnicodeUTF8)) self.filePosBox.setTitle(QtGui.QApplication.translate("MainWindow", "File Position", None, QtGui.QApplication.UnicodeUTF8)) + self.filePosStartLabel.setText(QtGui.QApplication.translate("MainWindow", "Start", None, QtGui.QApplication.UnicodeUTF8)) self.filePosStopLabel.setText(QtGui.QApplication.translate("MainWindow", "Stop", None, QtGui.QApplication.UnicodeUTF8)) self.filePosLengthLabel.setText(QtGui.QApplication.translate("MainWindow", "Length", None, QtGui.QApplication.UnicodeUTF8)) - self.filePosStartLabel.setText(QtGui.QApplication.translate("MainWindow", "Start", None, QtGui.QApplication.UnicodeUTF8)) self.fileTimeStartLabel.setText(QtGui.QApplication.translate("MainWindow", "time start (sec)", None, QtGui.QApplication.UnicodeUTF8)) self.fileTimeStopLabel.setText(QtGui.QApplication.translate("MainWindow", "time stop (sec)", None, QtGui.QApplication.UnicodeUTF8)) self.fileTimeLengthLabel.setText(QtGui.QApplication.translate("MainWindow", "time length (sec)", None, QtGui.QApplication.UnicodeUTF8)) - self.displayGroupBox.setTitle(QtGui.QApplication.translate("MainWindow", "Display Properties", None, QtGui.QApplication.UnicodeUTF8)) - self.lineWidthLabel.setText(QtGui.QApplication.translate("MainWindow", "Line Width", None, QtGui.QApplication.UnicodeUTF8)) - self.lineStyleLabel.setText(QtGui.QApplication.translate("MainWindow", "Line Style", None, QtGui.QApplication.UnicodeUTF8)) - self.styleSizeLabel.setText(QtGui.QApplication.translate("MainWindow", "Style Size", None, QtGui.QApplication.UnicodeUTF8)) self.sysGroupBox.setTitle(QtGui.QApplication.translate("MainWindow", "System Properties", None, QtGui.QApplication.UnicodeUTF8)) self.sampleRateLabel.setText(QtGui.QApplication.translate("MainWindow", "Sample Rate", None, QtGui.QApplication.UnicodeUTF8)) - self.tabGroup.setTabText(self.tabGroup.indexOf(self.timeTab), QtGui.QApplication.translate("MainWindow", "Time Domain", None, QtGui.QApplication.UnicodeUTF8)) - self.fftPropBox.setTitle(QtGui.QApplication.translate("MainWindow", "FFT Properties", None, QtGui.QApplication.UnicodeUTF8)) - self.psdFFTSizeLabel.setText(QtGui.QApplication.translate("MainWindow", "FFT Size", None, QtGui.QApplication.UnicodeUTF8)) - self.tabGroup.setTabText(self.tabGroup.indexOf(self.freqTab), QtGui.QApplication.translate("MainWindow", "Frequency Domain", None, QtGui.QApplication.UnicodeUTF8)) - self.groupBox.setTitle(QtGui.QApplication.translate("MainWindow", "Spectrogram Properties", None, QtGui.QApplication.UnicodeUTF8)) - self.specFFTLabel.setText(QtGui.QApplication.translate("MainWindow", "FFT Size", None, QtGui.QApplication.UnicodeUTF8)) - self.tabGroup.setTabText(self.tabGroup.indexOf(self.specTab), QtGui.QApplication.translate("MainWindow", "Spectrogram", None, QtGui.QApplication.UnicodeUTF8)) + self.displayGroupBox.setTitle(QtGui.QApplication.translate("MainWindow", "Display Properties", None, QtGui.QApplication.UnicodeUTF8)) self.menu_File.setTitle(QtGui.QApplication.translate("MainWindow", "&File", None, QtGui.QApplication.UnicodeUTF8)) self.action_open.setText(QtGui.QApplication.translate("MainWindow", "&Open", None, QtGui.QApplication.UnicodeUTF8)) self.action_open.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+O", None, QtGui.QApplication.UnicodeUTF8)) self.action_exit.setText(QtGui.QApplication.translate("MainWindow", "E&xit", None, QtGui.QApplication.UnicodeUTF8)) self.action_reload.setText(QtGui.QApplication.translate("MainWindow", "&Reload", None, QtGui.QApplication.UnicodeUTF8)) + self.action_reload.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+R", None, QtGui.QApplication.UnicodeUTF8)) from PyQt4 import Qwt5 diff --git a/gr-utils/src/python/pyqt_plot.ui b/gr-utils/src/python/pyqt_plot.ui index 7244d24c9..55c72fda2 100644 --- a/gr-utils/src/python/pyqt_plot.ui +++ b/gr-utils/src/python/pyqt_plot.ui @@ -1,488 +1,373 @@ -<ui version="4.0" > +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> <class>MainWindow</class> - <widget class="QMainWindow" name="MainWindow" > - <property name="geometry" > + <widget class="QMainWindow" name="MainWindow"> + <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>927</width> - <height>718</height> + <height>696</height> </rect> </property> - <property name="windowTitle" > + <property name="windowTitle"> <string>MainWindow</string> </property> - <widget class="QWidget" name="centralwidget" > - <layout class="QGridLayout" name="gridLayout" > - <item row="1" column="0" colspan="3" > - <widget class="QScrollBar" name="plotHBar" > - <property name="orientation" > + <widget class="QWidget" name="centralwidget"> + <layout class="QGridLayout" name="gridLayout"> + <item row="2" column="0" colspan="2"> + <widget class="QScrollBar" name="plotHBar"> + <property name="orientation"> <enum>Qt::Horizontal</enum> </property> </widget> </item> - <item row="2" column="0" > - <widget class="QGroupBox" name="filePosBox" > - <property name="minimumSize" > + <item row="1" column="0"> + <widget class="QTabWidget" name="tabGroup"> + <property name="currentIndex"> + <number>0</number> + </property> + <widget class="QWidget" name="timeTab"> + <attribute name="title"> + <string>Time Domain</string> + </attribute> + <layout class="QHBoxLayout" name="horizontalLayout"> + <item> + <widget class="QwtPlot" name="timePlot"/> + </item> + </layout> + </widget> + <widget class="QWidget" name="freqTab"> + <attribute name="title"> + <string>Frequency Domain</string> + </attribute> + <layout class="QHBoxLayout" name="horizontalLayout_2"> + <item> + <widget class="QGroupBox" name="fftPropBox"> + <property name="minimumSize"> + <size> + <width>160</width> + <height>0</height> + </size> + </property> + <property name="title"> + <string>FFT Properties</string> + </property> + <layout class="QFormLayout" name="formLayout_4"> + <property name="fieldGrowthPolicy"> + <enum>QFormLayout::AllNonFixedFieldsGrow</enum> + </property> + <item row="0" column="1"> + <widget class="QComboBox" name="psdFFTComboBox"> + <property name="minimumSize"> + <size> + <width>96</width> + <height>0</height> + </size> + </property> + <property name="maximumSize"> + <size> + <width>96</width> + <height>16777215</height> + </size> + </property> + </widget> + </item> + <item row="0" column="0"> + <widget class="QLabel" name="psdFFTSizeLabel"> + <property name="text"> + <string>FFT Size</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QwtPlot" name="freqPlot"/> + </item> + </layout> + </widget> + <widget class="QWidget" name="specTab"> + <attribute name="title"> + <string>Spectrogram</string> + </attribute> + <layout class="QHBoxLayout" name="horizontalLayout_3"> + <item> + <widget class="QGroupBox" name="groupBox"> + <property name="title"> + <string>Spectrogram Properties</string> + </property> + <layout class="QFormLayout" name="formLayout_3"> + <item row="1" column="0"> + <widget class="QLabel" name="specFFTLabel"> + <property name="text"> + <string>FFT Size</string> + </property> + </widget> + </item> + <item row="1" column="1"> + <widget class="QComboBox" name="specFFTComboBox"> + <property name="minimumSize"> + <size> + <width>96</width> + <height>0</height> + </size> + </property> + <property name="maximumSize"> + <size> + <width>96</width> + <height>16777215</height> + </size> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QwtPlot" name="specPlot"/> + </item> + </layout> + <zorder>specPlot</zorder> + <zorder>groupBox</zorder> + </widget> + </widget> + </item> + <item row="3" column="0"> + <widget class="QGroupBox" name="filePosBox"> + <property name="minimumSize"> <size> <width>0</width> <height>120</height> </size> </property> - <property name="title" > + <property name="title"> <string>File Position</string> </property> - <layout class="QGridLayout" name="gridLayout_4" > - <item row="0" column="0" > - <layout class="QFormLayout" name="filePosLayout" > - <item row="0" column="1" > - <widget class="QLineEdit" name="filePosStartLineEdit" > - <property name="minimumSize" > - <size> - <width>50</width> - <height>0</height> - </size> - </property> - <property name="maximumSize" > - <size> - <width>100</width> - <height>16777215</height> - </size> - </property> - </widget> - </item> - <item row="1" column="0" > - <widget class="QLabel" name="filePosStopLabel" > - <property name="text" > - <string>Stop</string> - </property> - </widget> - </item> - <item row="1" column="1" > - <widget class="QLineEdit" name="filePosStopLineEdit" > - <property name="minimumSize" > - <size> - <width>50</width> - <height>0</height> - </size> - </property> - <property name="maximumSize" > - <size> - <width>100</width> - <height>16777215</height> - </size> - </property> - </widget> - </item> - <item row="2" column="0" > - <widget class="QLabel" name="filePosLengthLabel" > - <property name="text" > - <string>Length</string> + <widget class="QWidget" name="formLayoutWidget_2"> + <property name="geometry"> + <rect> + <x>0</x> + <y>20</y> + <width>160</width> + <height>92</height> + </rect> + </property> + <layout class="QFormLayout" name="filePosLayout"> + <item row="0" column="0"> + <widget class="QLabel" name="filePosStartLabel"> + <property name="text"> + <string>Start</string> + </property> + </widget> + </item> + <item row="0" column="1"> + <widget class="QLineEdit" name="filePosStartLineEdit"/> + </item> + <item row="1" column="0"> + <widget class="QLabel" name="filePosStopLabel"> + <property name="text"> + <string>Stop</string> + </property> + </widget> + </item> + <item row="1" column="1"> + <widget class="QLineEdit" name="filePosStopLineEdit"/> + </item> + <item row="2" column="0"> + <widget class="QLabel" name="filePosLengthLabel"> + <property name="text"> + <string>Length</string> + </property> + </widget> + </item> + <item row="2" column="1"> + <widget class="QLineEdit" name="filePosLengthLineEdit"/> + </item> + </layout> + </widget> + <widget class="QWidget" name="formLayoutWidget_4"> + <property name="geometry"> + <rect> + <x>180</x> + <y>20</y> + <width>231</width> + <height>92</height> + </rect> + </property> + <layout class="QFormLayout" name="fileTimeLayout"> + <item row="0" column="0"> + <widget class="QLabel" name="fileTimeStartLabel"> + <property name="text"> + <string>time start (sec)</string> + </property> + </widget> + </item> + <item row="0" column="1"> + <widget class="QLineEdit" name="fileTimeStartLineEdit"/> + </item> + <item row="1" column="0"> + <widget class="QLabel" name="fileTimeStopLabel"> + <property name="text"> + <string>time stop (sec)</string> + </property> + </widget> + </item> + <item row="1" column="1"> + <widget class="QLineEdit" name="fileTimeStopLineEdit"/> + </item> + <item row="2" column="0"> + <widget class="QLabel" name="fileTimeLengthLabel"> + <property name="text"> + <string>time length (sec)</string> + </property> + </widget> + </item> + <item row="2" column="1"> + <widget class="QLineEdit" name="fileTimeLengthLineEdit"/> + </item> + </layout> + </widget> + <widget class="QGroupBox" name="sysGroupBox"> + <property name="geometry"> + <rect> + <x>530</x> + <y>0</y> + <width>200</width> + <height>120</height> + </rect> + </property> + <property name="minimumSize"> + <size> + <width>200</width> + <height>0</height> + </size> + </property> + <property name="title"> + <string>System Properties</string> + </property> + <widget class="QWidget" name="formLayoutWidget_3"> + <property name="geometry"> + <rect> + <x>0</x> + <y>20</y> + <width>191</width> + <height>91</height> + </rect> + </property> + <layout class="QFormLayout" name="formLayout_2"> + <item row="0" column="0"> + <widget class="QLabel" name="sampleRateLabel"> + <property name="text"> + <string>Sample Rate</string> </property> </widget> </item> - <item row="2" column="1" > - <widget class="QLineEdit" name="filePosLengthLineEdit" > - <property name="minimumSize" > + <item row="0" column="1"> + <widget class="QLineEdit" name="sampleRateLineEdit"> + <property name="minimumSize"> <size> - <width>50</width> + <width>0</width> <height>0</height> </size> </property> - <property name="maximumSize" > - <size> - <width>100</width> - <height>16777215</height> - </size> - </property> - </widget> - </item> - <item row="0" column="0" > - <widget class="QLabel" name="filePosStartLabel" > - <property name="text" > - <string>Start</string> - </property> </widget> </item> </layout> - </item> - <item row="0" column="1" > - <layout class="QFormLayout" name="fileTimeLayout" > - <item row="0" column="0" > - <widget class="QLabel" name="fileTimeStartLabel" > - <property name="text" > - <string>time start (sec)</string> - </property> - </widget> - </item> - <item row="0" column="1" > - <widget class="QLineEdit" name="fileTimeStartLineEdit" > - <property name="minimumSize" > - <size> - <width>50</width> - <height>0</height> - </size> - </property> - <property name="maximumSize" > - <size> - <width>100</width> - <height>16777215</height> - </size> - </property> - </widget> - </item> - <item row="1" column="0" > - <widget class="QLabel" name="fileTimeStopLabel" > - <property name="text" > - <string>time stop (sec)</string> - </property> - </widget> - </item> - <item row="1" column="1" > - <widget class="QLineEdit" name="fileTimeStopLineEdit" > - <property name="minimumSize" > - <size> - <width>50</width> - <height>0</height> - </size> - </property> - <property name="maximumSize" > - <size> - <width>100</width> - <height>16777215</height> - </size> - </property> - </widget> - </item> - <item row="2" column="0" > - <widget class="QLabel" name="fileTimeLengthLabel" > - <property name="text" > - <string>time length (sec)</string> - </property> - </widget> + </widget> + </widget> + <widget class="QGroupBox" name="displayGroupBox"> + <property name="geometry"> + <rect> + <x>730</x> + <y>0</y> + <width>170</width> + <height>120</height> + </rect> + </property> + <property name="minimumSize"> + <size> + <width>170</width> + <height>0</height> + </size> + </property> + <property name="title"> + <string>Display Properties</string> + </property> + <widget class="QWidget" name="verticalLayoutWidget"> + <property name="geometry"> + <rect> + <x>0</x> + <y>20</y> + <width>160</width> + <height>91</height> + </rect> + </property> + <layout class="QVBoxLayout" name="verticalLayout"> + <item> + <widget class="QComboBox" name="colorComboBox"/> </item> - <item row="2" column="1" > - <widget class="QLineEdit" name="fileTimeLengthLineEdit" > - <property name="minimumSize" > - <size> - <width>50</width> - <height>0</height> - </size> + <item> + <spacer name="verticalSpacer"> + <property name="orientation"> + <enum>Qt::Vertical</enum> </property> - <property name="maximumSize" > + <property name="sizeHint" stdset="0"> <size> - <width>100</width> - <height>16777215</height> + <width>20</width> + <height>40</height> </size> </property> - </widget> + </spacer> </item> </layout> - </item> - </layout> - </widget> - </item> - <item row="2" column="2" > - <widget class="QGroupBox" name="displayGroupBox" > - <property name="minimumSize" > - <size> - <width>170</width> - <height>0</height> - </size> - </property> - <property name="title" > - <string>Display Properties</string> - </property> - <layout class="QGridLayout" name="gridLayout_2" > - <item row="0" column="0" colspan="2" > - <widget class="QComboBox" name="colorComboBox" /> - </item> - <item row="1" column="1" > - <widget class="QSpinBox" name="lineWidthSpinBox" > - <property name="minimumSize" > - <size> - <width>100</width> - <height>0</height> - </size> - </property> - <property name="maximumSize" > - <size> - <width>100</width> - <height>16777215</height> - </size> - </property> - </widget> - </item> - <item row="1" column="0" > - <widget class="QLabel" name="lineWidthLabel" > - <property name="text" > - <string>Line Width</string> - </property> - </widget> - </item> - <item row="2" column="0" > - <widget class="QLabel" name="lineStyleLabel" > - <property name="text" > - <string>Line Style</string> - </property> - </widget> - </item> - <item row="2" column="1" > - <widget class="QComboBox" name="lineStyleComboBox" > - <property name="minimumSize" > - <size> - <width>100</width> - <height>0</height> - </size> - </property> - <property name="maximumSize" > - <size> - <width>100</width> - <height>16777215</height> - </size> - </property> - </widget> - </item> - <item row="3" column="0" > - <widget class="QLabel" name="styleSizeLabel" > - <property name="text" > - <string>Style Size</string> - </property> - </widget> - </item> - <item row="3" column="1" > - <widget class="QSpinBox" name="styleSizeSpinBox" > - <property name="minimumSize" > - <size> - <width>100</width> - <height>0</height> - </size> - </property> - <property name="maximumSize" > - <size> - <width>100</width> - <height>16777215</height> - </size> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item row="2" column="1" > - <widget class="QGroupBox" name="sysGroupBox" > - <property name="minimumSize" > - <size> - <width>200</width> - <height>0</height> - </size> - </property> - <property name="title" > - <string>System Properties</string> - </property> - <layout class="QFormLayout" name="formLayout" > - <property name="fieldGrowthPolicy" > - <enum>QFormLayout::AllNonFixedFieldsGrow</enum> - </property> - <item row="0" column="0" > - <widget class="QLabel" name="sampleRateLabel" > - <property name="text" > - <string>Sample Rate</string> - </property> - </widget> - </item> - <item row="0" column="1" > - <widget class="QLineEdit" name="sampleRateLineEdit" > - <property name="minimumSize" > - <size> - <width>50</width> - <height>0</height> - </size> - </property> - <property name="maximumSize" > - <size> - <width>100</width> - <height>16777215</height> - </size> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item row="0" column="0" colspan="3" > - <widget class="QFrame" name="frame" > - <property name="frameShape" > - <enum>QFrame::StyledPanel</enum> - </property> - <property name="frameShadow" > - <enum>QFrame::Raised</enum> - </property> - <layout class="QGridLayout" name="gridLayout_3" > - <item row="0" column="0" > - <widget class="QTabWidget" name="tabGroup" > - <property name="minimumSize" > - <size> - <width>0</width> - <height>0</height> - </size> - </property> - <property name="currentIndex" > - <number>0</number> - </property> - <widget class="QWidget" name="timeTab" > - <attribute name="title" > - <string>Time Domain</string> - </attribute> - <layout class="QHBoxLayout" name="horizontalLayout" > - <item> - <widget class="QwtPlot" name="timePlot" /> - </item> - </layout> - <zorder>timePlot</zorder> - </widget> - <widget class="QWidget" name="freqTab" > - <attribute name="title" > - <string>Frequency Domain</string> - </attribute> - <layout class="QHBoxLayout" name="horizontalLayout_2" > - <item> - <widget class="QGroupBox" name="fftPropBox" > - <property name="minimumSize" > - <size> - <width>160</width> - <height>0</height> - </size> - </property> - <property name="title" > - <string>FFT Properties</string> - </property> - <layout class="QFormLayout" name="formLayout_4" > - <property name="fieldGrowthPolicy" > - <enum>QFormLayout::AllNonFixedFieldsGrow</enum> - </property> - <item row="0" column="0" > - <widget class="QLabel" name="psdFFTSizeLabel" > - <property name="text" > - <string>FFT Size</string> - </property> - </widget> - </item> - <item row="0" column="1" > - <widget class="QComboBox" name="psdFFTComboBox" > - <property name="minimumSize" > - <size> - <width>96</width> - <height>0</height> - </size> - </property> - <property name="maximumSize" > - <size> - <width>96</width> - <height>16777215</height> - </size> - </property> - </widget> - </item> - </layout> - <zorder>psdFFTSizeLabel</zorder> - <zorder>psdFFTComboBox</zorder> - </widget> - </item> - <item> - <widget class="QwtPlot" name="freqPlot" /> - </item> - </layout> - </widget> - <widget class="QWidget" name="specTab" > - <attribute name="title" > - <string>Spectrogram</string> - </attribute> - <layout class="QHBoxLayout" name="horizontalLayout_3" > - <item> - <widget class="QGroupBox" name="groupBox" > - <property name="title" > - <string>Spectrogram Properties</string> - </property> - <layout class="QFormLayout" name="formLayout_3" > - <item row="1" column="0" > - <widget class="QLabel" name="specFFTLabel" > - <property name="text" > - <string>FFT Size</string> - </property> - </widget> - </item> - <item row="1" column="1" > - <widget class="QComboBox" name="specFFTComboBox" > - <property name="minimumSize" > - <size> - <width>96</width> - <height>0</height> - </size> - </property> - <property name="maximumSize" > - <size> - <width>96</width> - <height>16777215</height> - </size> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item> - <widget class="QwtPlot" name="specPlot" /> - </item> - </layout> - <zorder>specPlot</zorder> - <zorder>groupBox</zorder> - </widget> - </widget> - </item> - </layout> - <zorder>tabGroup</zorder> + </widget> + </widget> </widget> </item> </layout> </widget> - <widget class="QMenuBar" name="menubar" > - <property name="geometry" > + <widget class="QMenuBar" name="menubar"> + <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>927</width> - <height>24</height> + <height>25</height> </rect> </property> - <widget class="QMenu" name="menu_File" > - <property name="title" > + <widget class="QMenu" name="menu_File"> + <property name="title"> <string>&File</string> </property> - <addaction name="action_open" /> - <addaction name="action_reload" /> - <addaction name="action_exit" /> + <addaction name="action_open"/> + <addaction name="action_reload"/> + <addaction name="action_exit"/> </widget> - <addaction name="menu_File" /> + <addaction name="menu_File"/> </widget> - <widget class="QStatusBar" name="statusbar" /> - <action name="action_open" > - <property name="text" > + <widget class="QStatusBar" name="statusbar"/> + <action name="action_open"> + <property name="text"> <string>&Open</string> </property> - <property name="shortcut" > + <property name="shortcut"> <string>Ctrl+O</string> </property> </action> - <action name="action_exit" > - <property name="text" > + <action name="action_exit"> + <property name="text"> <string>E&xit</string> </property> </action> - <action name="action_reload" > - <property name="text" > + <action name="action_reload"> + <property name="text"> <string>&Reload</string> </property> + <property name="shortcut"> + <string>Ctrl+R</string> + </property> </action> </widget> <customwidgets> @@ -500,11 +385,11 @@ <receiver>MainWindow</receiver> <slot>close()</slot> <hints> - <hint type="sourcelabel" > + <hint type="sourcelabel"> <x>-1</x> <y>-1</y> </hint> - <hint type="destinationlabel" > + <hint type="destinationlabel"> <x>399</x> <y>347</y> </hint> diff --git a/grc/blocks/Makefile.am b/grc/blocks/Makefile.am index 617a3bf60..7c769c4b4 100644 --- a/grc/blocks/Makefile.am +++ b/grc/blocks/Makefile.am @@ -144,6 +144,7 @@ dist_ourdata_DATA = \ gr_packed_to_unpacked_xx.xml \ gr_peak_detector2_fb.xml \ gr_peak_detector_xb.xml \ + gr_pfb_clock_sync.xml \ gr_phase_modulator_fc.xml \ gr_pll_carriertracking_cc.xml \ gr_pll_freqdet_cf.xml \ diff --git a/grc/blocks/block_tree.xml b/grc/blocks/block_tree.xml index 296f0ee91..509956d3b 100644 --- a/grc/blocks/block_tree.xml +++ b/grc/blocks/block_tree.xml @@ -124,6 +124,7 @@ <cat> <name>Synchronizers</name> <block>gr_clock_recovery_mm_xx</block> + <block>gr_pfb_clock_sync_ccf</block> <block>gr_costas_loop_cc</block> <block>gr_dd_mpsk_sync_cc</block> @@ -167,7 +168,7 @@ <block>band_pass_filter</block> <block>band_reject_filter</block> <block>root_raised_cosine_filter</block> - <!-- Filters that take taps as aruments --> + <!-- Filters that take taps as arguments --> <block>gr_fir_filter_xxx</block> <block>gr_interp_fir_filter_xxx</block> <block>gr_fft_filter_xxx</block> @@ -178,7 +179,7 @@ <!-- Filter banks --> <block>blks2_synthesis_filterbank</block> <block>blks2_analysis_filterbank</block> - <!-- Polyphase filers --> + <!-- Polyphase filters --> <block>blks2_pfb_arb_resampler_ccf</block> <!-- Other filters --> <block>gr_single_pole_iir_filter_xx</block> diff --git a/grc/blocks/gr_pfb_clock_sync.xml b/grc/blocks/gr_pfb_clock_sync.xml new file mode 100644 index 000000000..9e2f3fa9c --- /dev/null +++ b/grc/blocks/gr_pfb_clock_sync.xml @@ -0,0 +1,53 @@ +<?xml version="1.0"?> +<!-- +################################################### +## Polyphase Filter based Clock Sync +################################################### + --> +<block> + <name>Polyphase Clock Sync</name> + <key>gr_pfb_clock_sync_ccf</key> + <import>from gnuradio import gr</import> + <make>gr.pfb_clock_sync_ccf($sps, $gain, $taps, $filter_size, $init_phase)</make> + <callback>set_taps($taps)</callback> + <callback>set_gain($gain)</callback> + + <param> + <name>Samples/Symbol</name> + <key>sps</key> + <type>real</type> + </param> + <param> + <name>Gain</name> + <key>gain</key> + <type>real</type> + </param> + <param> + <name>Taps</name> + <key>taps</key> + <type>real_vector</type> + </param> + <param> + <name>Filter Size</name> + <key>filter_size</key> + <type>int</type> + </param> + <param> + <name>Initial Phase</name> + <key>init_phase</key> + <type>real</type> + </param> + <sink> + <name>in</name> + <type>complex</type> + </sink> + <source> + <name>out</name> + <type>complex</type> + </source> + <source> + <name>err</name> + <type>float</type> + <optional>1</optional> + </source> +</block> diff --git a/grc/blocks/options.xml b/grc/blocks/options.xml index 1798a69f8..4d0dd2899 100644 --- a/grc/blocks/options.xml +++ b/grc/blocks/options.xml @@ -78,19 +78,36 @@ else: self.stop(); self.wait()</callback> <hide>#if $generate_options() == 'hb' then 'none' else 'all'#</hide> </param> <param> + <name>Run Options</name> + <key>run_options</key> + <value>prompt</value> + <type>enum</type> + <hide>#if $generate_options() == 'no_gui' then 'none' else 'all'#</hide> + <option> + <name>Run to Completion</name> + <key>run</key> + </option> + <option> + <name>Prompt for Exit</name> + <key>prompt</key> + </option> + </param> + <param> <name>Run</name> <key>run</key> <value>True</value> <type>bool</type> - <hide>#if $generate_options() == 'wx_gui' - #if str($run) == 'True' -part#slurp + <hide> +#if $generate_options() == 'wx_gui' + #if $run() + part #else -none#slurp + none #end if #else -all#slurp -#end if</hide> + all +#end if + </hide> <option> <name>Autostart</name> <key>True</key> diff --git a/grc/gui/PropsDialog.py b/grc/gui/PropsDialog.py index a7822b228..cc84fd088 100644 --- a/grc/gui/PropsDialog.py +++ b/grc/gui/PropsDialog.py @@ -93,15 +93,14 @@ class PropsDialog(gtk.Dialog): Ex: Added, removed, type change, hide change... To the props dialog, the hide setting of 'none' and 'part' are identical. Therfore, the props dialog only cares if the hide setting is/not 'all'. - Make a hash that uniquely represents the params state. + Make a hash that uniquely represents the params' state. @return true if changed """ old_hash = self._hash - self._hash = 0 - for param in self._block.get_params(): - self._hash ^= hash(param) - self._hash ^= hash(param.get_type()) - self._hash ^= hash(param.get_hide() == 'all') + #create a tuple of things from each param that affects the params box + self._hash = hash(tuple([( + hash(param), param.get_type(), param.get_hide() == 'all', + ) for param in self._block.get_params()])) return self._hash != old_hash def _handle_changed(self, *args): diff --git a/grc/python/flow_graph.tmpl b/grc/python/flow_graph.tmpl index dce4037d5..31d99a61c 100644 --- a/grc/python/flow_graph.tmpl +++ b/grc/python/flow_graph.tmpl @@ -233,9 +233,14 @@ if __name__ == '__main__': #if $generate_options == 'wx_gui' tb.Run($flow_graph.get_option('run')) #elif $generate_options == 'no_gui' + #set $run_options = $flow_graph.get_option('run_options') + #if $run_options == 'prompt' tb.start() raw_input('Press Enter to quit: ') tb.stop() + #elif $run_options == 'run' + tb.run() + #end if #end if #end if diff --git a/usrp2/fpga/control_lib/newfifo/fifo_2clock.v b/usrp2/fpga/control_lib/newfifo/fifo_2clock.v index 07ae090f2..34c85ccb4 100644 --- a/usrp2/fpga/control_lib/newfifo/fifo_2clock.v +++ b/usrp2/fpga/control_lib/newfifo/fifo_2clock.v @@ -19,28 +19,28 @@ module fifo_2clock if(WIDTH==36) if(SIZE==9) fifo_xlnx_512x36_2clk fifo_xlnx_512x36_2clk - (.rst(rst), + (.rst(arst), .wr_clk(wclk),.din(datain),.full(full),.wr_en(write),.wr_data_count(level_wclk), .rd_clk(rclk),.dout(dataout),.empty(empty),.rd_en(read),.rd_data_count(level_rclk) ); else if(SIZE==11) fifo_xlnx_2Kx36_2clk fifo_xlnx_2Kx36_2clk - (.rst(rst), + (.rst(arst), .wr_clk(wclk),.din(datain),.full(full),.wr_en(write),.wr_data_count(level_wclk), .rd_clk(rclk),.dout(dataout),.empty(empty),.rd_en(read),.rd_data_count(level_rclk) ); else if(SIZE==6) fifo_xlnx_64x36_2clk fifo_xlnx_64x36_2clk - (.rst(rst), + (.rst(arst), .wr_clk(wclk),.din(datain),.full(full),.wr_en(write),.wr_data_count(level_wclk), .rd_clk(rclk),.dout(dataout),.empty(empty),.rd_en(read),.rd_data_count(level_rclk) ); else fifo_xlnx_512x36_2clk fifo_xlnx_512x36_2clk - (.rst(rst), + (.rst(arst), .wr_clk(wclk),.din(datain),.full(full),.wr_en(write),.wr_data_count(level_wclk), .rd_clk(rclk),.dout(dataout),.empty(empty),.rd_en(read),.rd_data_count(level_rclk) ); else if((WIDTH==19)|(WIDTH==18)) if(SIZE==4) fifo_xlnx_16x19_2clk fifo_xlnx_16x19_2clk - (.rst(rst), + (.rst(arst), .wr_clk(wclk),.din(datain),.full(full),.wr_en(write),.wr_data_count(level_wclk), .rd_clk(rclk),.dout(dataout),.empty(empty),.rd_en(read),.rd_data_count(level_rclk) ); endgenerate diff --git a/version.sh b/version.sh new file mode 100644 index 000000000..b2cad877d --- /dev/null +++ b/version.sh @@ -0,0 +1,4 @@ +MAJOR_VERSION=3 +API_COMPAT=3 +MINOR_VERSION=git +MAINT_VERSION= |