diff options
29 files changed, 85 insertions, 224 deletions
diff --git a/cmake/Modules/GrPackage.cmake b/cmake/Modules/GrPackage.cmake index 857d07c4d..d398d7265 100644 --- a/cmake/Modules/GrPackage.cmake +++ b/cmake/Modules/GrPackage.cmake @@ -112,7 +112,6 @@ set(CPACK_DEBIAN_PACKAGE_DEPENDS "python-numpy" "libqt4-core" "libqwt5-qt4" - "libqwtplot3d-qt4-0" "python-qt4" "python-gtk2" "python-lxml" diff --git a/cmake/cmake_uninstall.cmake.in b/cmake/cmake_uninstall.cmake.in index 6031a6ca9..9ae1ae4bd 100644 --- a/cmake/cmake_uninstall.cmake.in +++ b/cmake/cmake_uninstall.cmake.in @@ -17,6 +17,15 @@ FOREACH(file ${files}) IF(NOT "${rm_retval}" STREQUAL 0) MESSAGE(FATAL_ERROR "Problem when removing \"$ENV{DESTDIR}${file}\"") ENDIF(NOT "${rm_retval}" STREQUAL 0) + ELSEIF(IS_SYMLINK "$ENV{DESTDIR}${file}") + EXEC_PROGRAM( + "@CMAKE_COMMAND@" ARGS "-E remove \"$ENV{DESTDIR}${file}\"" + OUTPUT_VARIABLE rm_out + RETURN_VALUE rm_retval + ) + IF(NOT "${rm_retval}" STREQUAL 0) + MESSAGE(FATAL_ERROR "Problem when removing \"$ENV{DESTDIR}${file}\"") + ENDIF(NOT "${rm_retval}" STREQUAL 0) ELSE(EXISTS "$ENV{DESTDIR}${file}") MESSAGE(STATUS "File \"$ENV{DESTDIR}${file}\" does not exist.") ENDIF(EXISTS "$ENV{DESTDIR}${file}") diff --git a/config/gr_qwtplot3d.m4 b/config/gr_qwtplot3d.m4 deleted file mode 100644 index 758dfbc3e..000000000 --- a/config/gr_qwtplot3d.m4 +++ /dev/null @@ -1,151 +0,0 @@ -dnl -dnl Copyright 2008 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. -dnl - -dnl Configure paths for library qwtplot3d. -dnl -dnl GR_QWTPLOT3D([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]) -dnl -dnl Test for library qwtplot3d, set QWTPLOT3D_CFLAGS and QWTPLOT3D_LIBS if found. Assumes -dnl QT_CFLAGS and QT_LIBS have already been correctly set. -dnl - -AC_DEFUN([GR_QWTPLOT3D], -[ - dnl QWTPLOT3D Library Version - - dnl Save the environment - AC_LANG_PUSH(C++) - qwtplot3d_save_CPPFLAGS="$CPPFLAGS" - qwtplot3d_save_LIBS="$LIBS" - libqwtplot3d_ok=yes - - dnl Allow user to specify where QWTPLOT3D files are - AC_ARG_WITH([qwtplot3d-libdir], - [ --with-qwtplot3d-libdir=path Prefix where QWTPLOT3D library is installed (optional)], - [qwtplot3d_libdir="$withval"], [qwtplot3d_libdir=""]) - - AC_ARG_WITH([qwtplot3d-incdir], - [ --with-qwtplot3d-incdir=path Prefix where QWTPLOT3D include files are (optional)], - [qwtplot3d_incdir="$withval"], [qwtplot3d_incdir=""]) - - AC_ARG_WITH([qwtplot3d-lib], - [ --with-qwtplot3d-lib=library QWT Plot3D library name (optional)], - [qwtplot3d_lib="$withval"], [qwtplot3d_lib=""]) - - - dnl Check for presence of header files - dnl if not user-specified, try the first include dir (Ubuntu), then - dnl try the second include dir (Fedora) - CPPFLAGS="$CPPFLAGS $QTCORE_CFLAGS $QTGUI_CFLAGS $QWT_CFLAGS" - - dnl if not set by user - if test "$qwtplot3d_incdir" = "" ; then - dnl check qwtplot3d/qwtplot3d.h (as in Fedora) - AC_CHECK_HEADER( - [qwtplot3d/qwt3d_plot.h], - [qwtplot3d_qwtplot3d_h=yes], - [qwtplot3d_qwtplot3d_h=no] - ) - dnl If it was found, set the flags and move on - if test "$qwtplot3d_qwtplot3d_h" = "yes" ; then - QWTPLOT3D_CFLAGS="$QWTPLOT3D_CFLAGS -I/usr/include/qwtplot3d" - else - dnl otherwise, check qwtplot3d-qt4/qwtplot3d.h (as in Ubuntu) - AC_CHECK_HEADER( - [qwtplot3d-qt4/qwt3d_plot.h], - [qwtplot3d_qt4_qwtplot3d_h=yes], - [qwtplot3d_qt4_qwtplot3d_h=no] - ) - dnl if it was found, set the flags and move on - if test "$qwtplot3d_qt4_qwtplot3d_h" = "yes" ; then - QWTPLOT3D_CFLAGS="$QWTPLOT3D_CFLAGS -I/usr/include/qwtplot3d-qt4" - else - dnl otherwise, qwtplot3d.h wasn't found, so set the flag to no - libqwtplot3d_ok=no - fi - fi - else - dnl Using the user-specified include directory - QWTPLOT3D_CFLAGS="$QWTPLOT3D_CFLAGS -I$qwtplot3d_incdir" - AC_CHECK_HEADER( - [$qwtplot3d_incdir/qwt3d_plot.h], - [], - [libqwtplot3d_ok=no]) - fi - - dnl Don't bother going on if we can't find the headers - if test "$libqwtplot3d_ok" = "yes" ; then - - dnl Check for QWTPLOT3D library (qwtplot3d or qwtplot3d-qt4) - - dnl User-defined QWTPLOT3D library path - if test "$qwtplot3d_libdir" != "" ; then - QWTPLOT3D_LIBS="-L$qwtplot3d_libdir $QWTPLOT3D_LIBS" - fi - - dnl temporarily set these so the AC_CHECK_LIB works - CPPFLAGS="$CPPFLAGS $QWTPLOT3D_CFLAGS" - LIBS="$qwtplot3d_save_LIBS $QT_LIBS $QWTPLOT3D_LIBS -lqwtplot3d-qt4" - - dnl If the user specified a qwtplot3d library name, use it here - if test "$qwtplot3d_lib" != "" ; then - AC_CHECK_LIB([$qwtplot3d_lib], [main], [libqwtplot3d_ok=yes], [libqwtplot3d_ok=no]) - - else - dnl Check for 'main' in libqwtplot3d-qt4 - AC_CHECK_LIB([qwtplot3d-qt4], [main], [libqwtplot3d_ok=yes], [libqwtplot3d_ok=no]) - - dnl If library found properly, set the flag and move on - if test "$libqwtplot3d_ok" = "yes" ; then - QWTPLOT3D_LIBS="$QWTPLOT3D_LIBS -lqwtplot3d-qt4" - else - dnl Otherwise, check for 'main' in libqwtplot3d - LIBS="$qwtplot3d_save_LIBS $QT_LIBS $QWTPLOT3D_LIBS -lqwtplot3d" - AC_CHECK_LIB([qwtplot3d], [main], [libqwtplot3d_ok=yes], [libqwtplot3d_ok=no]) - if test "$libqwtplot3d_ok" = "yes" ; then - QWTPLOT3D_LIBS="$QWTPLOT3D_LIBS -lqwtplot3d" - else - AC_MSG_RESULT([Could not link to libqwtplot3d.so]) - fi - fi - fi - else - AC_MSG_RESULT([Could not find qwtplot3d headers]) - fi - - dnl Restore saved variables - LIBS="$qwtplot3d_save_LIBS" - CPPFLAGS="$qwtplot3d_save_CPPFLAGS" - AC_LANG_POP - - dnl Execute user actions - if test "x$libqwtplot3d_ok" = "xyes" ; then - ifelse([$1], , :, [$1]) - else - QWTPLOT3D_CFLAGS="" - QWTPLOT3D_LIBDIRS="" - ifelse([$2], , :, [$2]) - fi - - dnl Export our variables - AC_SUBST(QWTPLOT3D_CFLAGS) - AC_SUBST(QWTPLOT3D_LIBS) -]) diff --git a/docs/doxygen/Doxyfile.in b/docs/doxygen/Doxyfile.in index a3e78e97d..d5614d90c 100644 --- a/docs/doxygen/Doxyfile.in +++ b/docs/doxygen/Doxyfile.in @@ -638,6 +638,7 @@ EXCLUDE = @abs_top_builddir@/docs/doxygen/html \ @abs_top_builddir@/gr-video-sdl/src/video_sdl.py \ @abs_top_builddir@/gr-wxgui/src/python \ @abs_top_builddir@/grc \ + @abs_top_builddir@/_CPack_Packages \ @abs_top_srcdir@/cmake \ @abs_top_srcdir@/gr-qtgui/lib diff --git a/gnuradio-core/src/lib/reed-solomon/char.h b/gnuradio-core/src/lib/reed-solomon/char.h index 8010fb0b9..762e9e295 100644 --- a/gnuradio-core/src/lib/reed-solomon/char.h +++ b/gnuradio-core/src/lib/reed-solomon/char.h @@ -21,7 +21,7 @@ struct rs { unsigned char iprim; /* prim-th root of 1, index form */ }; -static inline int modnn(struct rs *rs,int x){ +static inline unsigned int modnn(struct rs *rs, unsigned int x){ while (x >= rs->nn) { x -= rs->nn; x = (x >> rs->mm) + (x & rs->nn); diff --git a/gnuradio-core/src/lib/reed-solomon/decode_rs.c b/gnuradio-core/src/lib/reed-solomon/decode_rs.c index ba60b89ee..4b7d27cec 100644 --- a/gnuradio-core/src/lib/reed-solomon/decode_rs.c +++ b/gnuradio-core/src/lib/reed-solomon/decode_rs.c @@ -30,7 +30,7 @@ DTYPE *data, int *eras_pos, int no_eras){ struct rs *rs = (struct rs *)p; #endif int deg_lambda, el, deg_omega; - int i, j, r,k; + int i, j, r, k; #ifdef MAX_ARRAY DTYPE u,q,tmp,num1,num2,den,discr_r; DTYPE lambda[MAX_ARRAY], s[MAX_ARRAY]; /* Err+Eras Locator poly @@ -47,11 +47,11 @@ DTYPE *data, int *eras_pos, int no_eras){ int syn_error, count; /* form the syndromes; i.e., evaluate data(x) at roots of g(x) */ - for(i=0;i<NROOTS;i++) + for(i=0;(unsigned int)i<NROOTS;i++) s[i] = data[0]; - for(j=1;j<NN;j++){ - for(i=0;i<NROOTS;i++){ + for(j=1;(unsigned int)j<NN;j++){ + for(i=0;(unsigned int)i<NROOTS;i++){ if(s[i] == 0){ s[i] = data[j]; } else { @@ -62,7 +62,7 @@ DTYPE *data, int *eras_pos, int no_eras){ /* Convert syndromes to index form, checking for nonzero condition */ syn_error = 0; - for(i=0;i<NROOTS;i++){ + for(i=0;(unsigned int)i<NROOTS;i++){ syn_error |= s[i]; s[i] = INDEX_OF[s[i]]; } @@ -125,7 +125,7 @@ DTYPE *data, int *eras_pos, int no_eras){ #endif #endif } - for(i=0;i<NROOTS+1;i++) + for(i=0;(unsigned int)i<NROOTS+1;i++) b[i] = INDEX_OF[lambda[i]]; /* @@ -134,7 +134,7 @@ DTYPE *data, int *eras_pos, int no_eras){ */ r = no_eras; el = no_eras; - while (++r <= NROOTS) { /* r is the step number */ + while ((unsigned int)(++r) <= NROOTS) { /* r is the step number */ /* Compute discrepancy at the r-th step in poly-form */ discr_r = 0; for (i = 0; i < r; i++){ @@ -150,7 +150,7 @@ DTYPE *data, int *eras_pos, int no_eras){ } else { /* 7 lines below: T(x) <-- lambda(x) - discr_r*x*b(x) */ t[0] = lambda[0]; - for (i = 0 ; i < NROOTS; i++) { + for (i = 0 ; (unsigned int)i < NROOTS; i++) { if(b[i] != A0) t[i+1] = lambda[i+1] ^ ALPHA_TO[MODNN(discr_r + b[i])]; else @@ -162,7 +162,7 @@ DTYPE *data, int *eras_pos, int no_eras){ * 2 lines below: B(x) <-- inv(discr_r) * * lambda(x) */ - for (i = 0; i <= NROOTS; i++) + for (i = 0; (unsigned int)i <= NROOTS; i++) b[i] = (lambda[i] == 0) ? A0 : MODNN(INDEX_OF[lambda[i]] - discr_r + NN); } else { /* 2 lines below: B(x) <-- x*B(x) */ @@ -175,7 +175,7 @@ DTYPE *data, int *eras_pos, int no_eras){ /* Convert lambda to index form and compute deg(lambda(x)) */ deg_lambda = 0; - for(i=0;i<NROOTS+1;i++){ + for(i=0;(unsigned int)i<NROOTS+1;i++){ lambda[i] = INDEX_OF[lambda[i]]; if(lambda[i] != A0) deg_lambda = i; @@ -183,7 +183,7 @@ DTYPE *data, int *eras_pos, int no_eras){ /* Find roots of the error+erasure locator polynomial by Chien search */ memcpy(®[1],&lambda[1],NROOTS*sizeof(reg[0])); count = 0; /* Number of roots of lambda(x) */ - for (i = 1,k=IPRIM-1; i <= NN; i++,k = MODNN(k+IPRIM)) { + for (i = 1,k=IPRIM-1; (unsigned int)i <= NN; i++,k = MODNN(k+IPRIM)) { q = 1; /* lambda[0] is always 0 */ for (j = deg_lambda; j > 0; j--){ if (reg[j] != A0) { @@ -218,7 +218,7 @@ DTYPE *data, int *eras_pos, int no_eras){ * x**NROOTS). in index form. Also find deg(omega). */ deg_omega = 0; - for (i = 0; i < NROOTS;i++){ + for (i = 0; (unsigned int)i < NROOTS;i++){ tmp = 0; j = (deg_lambda < i) ? deg_lambda : i; for(;j >= 0; j--){ @@ -245,7 +245,7 @@ DTYPE *data, int *eras_pos, int no_eras){ den = 0; /* lambda[i+1] for i even is the formal derivative lambda_pr of lambda[i] */ - for (i = min(deg_lambda,NROOTS-1) & ~1; i >= 0; i -=2) { + for (i = (int)min((unsigned int)deg_lambda,NROOTS-1) & ~1; i >= 0; i -=2) { if(lambda[i+1] != A0) den ^= ALPHA_TO[MODNN(lambda[i+1] + i * root[j])]; } diff --git a/gnuradio-core/src/lib/reed-solomon/encode_rs.c b/gnuradio-core/src/lib/reed-solomon/encode_rs.c index 9d56d0bf1..cd31f32c6 100644 --- a/gnuradio-core/src/lib/reed-solomon/encode_rs.c +++ b/gnuradio-core/src/lib/reed-solomon/encode_rs.c @@ -20,7 +20,7 @@ DTYPE *data, DTYPE *bb){ #ifndef FIXED struct rs *rs = (struct rs *)p; #endif - int i, j; + unsigned int i, j; DTYPE feedback; memset(bb,0,NROOTS*sizeof(DTYPE)); diff --git a/gnuradio-core/src/lib/reed-solomon/exercise.c b/gnuradio-core/src/lib/reed-solomon/exercise.c index 987fe1aeb..be3d3bd13 100644 --- a/gnuradio-core/src/lib/reed-solomon/exercise.c +++ b/gnuradio-core/src/lib/reed-solomon/exercise.c @@ -48,13 +48,13 @@ int trials){ #endif #if MAX_ARRAY DTYPE block[MAX_ARRAY],tblock[MAX_ARRAY]; - int i; + unsigned int i; int errors; int errlocs[MAX_ARRAY]; int derrlocs[MAX_ARRAY]; #else DTYPE block[NN],tblock[NN]; - int i; + unsigned int i; int errors; int errlocs[NN]; int derrlocs[NROOTS]; @@ -66,7 +66,7 @@ int trials){ while(trials-- != 0){ /* Test up to the error correction capacity of the code */ - for(errors=0;errors <= NROOTS/2;errors++){ + for(errors=0;(unsigned int)errors <= NROOTS/2;errors++){ /* Load block with random data and encode */ for(i=0;i<NN-NROOTS;i++) @@ -83,7 +83,7 @@ int trials){ memset(errlocs,0,sizeof(errlocs)); memset(derrlocs,0,sizeof(derrlocs)); erasures=0; - for(i=0;i<errors;i++){ + for(i=0;i<(unsigned int)errors;i++){ do { errval = random() & NN; } while(errval == 0); /* Error value must be nonzero */ @@ -113,7 +113,7 @@ int trials){ printf(" decoder says %d errors, true number is %d\n",derrors,errors); decoder_errors++; } - for(i=0;i<derrors;i++){ + for(i=0;i<(unsigned int)derrors;i++){ if(errlocs[derrlocs[i]] == 0){ PRINTPARM printf(" decoder indicates error in location %d without error\n",i); diff --git a/gnuradio-core/src/lib/reed-solomon/init_rs.c b/gnuradio-core/src/lib/reed-solomon/init_rs.c index 11d7c8170..4ec77cd72 100644 --- a/gnuradio-core/src/lib/reed-solomon/init_rs.c +++ b/gnuradio-core/src/lib/reed-solomon/init_rs.c @@ -34,16 +34,17 @@ void FREE_RS(void *p){ void *INIT_RS(unsigned int symsize,unsigned int gfpoly,unsigned fcr,unsigned prim, unsigned int nroots){ struct rs *rs; - int i, j, sr,root,iprim; + int sr,root,iprim; + unsigned int i, j; if(symsize > 8*sizeof(DTYPE)) return NULL; /* Need version with ints rather than chars */ - if(fcr >= (1<<symsize)) + if(fcr >= (1u<<symsize)) return NULL; - if(prim == 0 || prim >= (1<<symsize)) + if(prim == 0 || prim >= (1u<<symsize)) return NULL; - if(nroots >= (1<<symsize)) + if(nroots >= (1u<<symsize)) return NULL; /* Can't have more roots than symbol values! */ rs = (struct rs *)calloc(1,sizeof(struct rs)); diff --git a/gr-audio/lib/alsa/audio_alsa_source.cc b/gr-audio/lib/alsa/audio_alsa_source.cc index 2f4506f71..08d4996a8 100644 --- a/gr-audio/lib/alsa/audio_alsa_source.cc +++ b/gr-audio/lib/alsa/audio_alsa_source.cc @@ -308,7 +308,7 @@ audio_alsa_source::work_s16 (int noutput_items, gr_vector_void_star &output_items) { typedef gr_int16 sample_t; // the type of samples we're creating - static const int NBITS = 16; // # of bits in a sample + static const float scale_factor = 1.0 / std::pow(2.0f, 16-1); unsigned int nchan = output_items.size (); float **out = (float **) &output_items[0]; @@ -329,7 +329,7 @@ audio_alsa_source::work_s16 (int noutput_items, bi = 0; for (unsigned int i = 0; i < d_period_size; i++){ for (unsigned int chan = 0; chan < nchan; chan++){ - out[chan][i] = (float) buf[bi++] * (1.0 / (float) ((1L << (NBITS-1)) - 1)); + out[chan][i] = (float) buf[bi++] * scale_factor; } } @@ -346,7 +346,7 @@ audio_alsa_source::work_s16_2x1 (int noutput_items, gr_vector_void_star &output_items) { typedef gr_int16 sample_t; // the type of samples we're creating - static const int NBITS = 16; // # of bits in a sample + static const float scale_factor = 1.0 / std::pow(2.0f, 16-1); unsigned int nchan = output_items.size (); float **out = (float **) &output_items[0]; @@ -370,7 +370,7 @@ audio_alsa_source::work_s16_2x1 (int noutput_items, for (unsigned int i = 0; i < d_period_size; i++){ int t = (buf[bi] + buf[bi+1]) / 2; bi += 2; - out[0][i] = (float) t * (1.0 / (float) ((1L << (NBITS-1)) - 1)); + out[0][i] = (float) t * scale_factor; } return d_period_size; @@ -385,7 +385,7 @@ audio_alsa_source::work_s32 (int noutput_items, gr_vector_void_star &output_items) { typedef gr_int32 sample_t; // the type of samples we're creating - static const int NBITS = 32; // # of bits in a sample + static const float scale_factor = 1.0 / std::pow(2.0f, 32-1); unsigned int nchan = output_items.size (); float **out = (float **) &output_items[0]; @@ -406,7 +406,7 @@ audio_alsa_source::work_s32 (int noutput_items, bi = 0; for (unsigned int i = 0; i < d_period_size; i++){ for (unsigned int chan = 0; chan < nchan; chan++){ - out[chan][i] = (float) buf[bi++] * (1.0 / (float) ((1L << (NBITS-1)) - 1)); + out[chan][i] = (float) buf[bi++] * scale_factor; } } @@ -423,7 +423,7 @@ audio_alsa_source::work_s32_2x1 (int noutput_items, gr_vector_void_star &output_items) { typedef gr_int32 sample_t; // the type of samples we're creating - static const int NBITS = 32; // # of bits in a sample + static const float scale_factor = 1.0 / std::pow(2.0f, 32-1); unsigned int nchan = output_items.size (); float **out = (float **) &output_items[0]; @@ -447,7 +447,7 @@ audio_alsa_source::work_s32_2x1 (int noutput_items, for (unsigned int i = 0; i < d_period_size; i++){ int t = (buf[bi] + buf[bi+1]) / 2; bi += 2; - out[0][i] = (float) t * (1.0 / (float) ((1L << (NBITS-1)) - 1)); + out[0][i] = (float) t * scale_factor; } return d_period_size; diff --git a/gr-trellis/doc/test_tcm.py b/gr-trellis/doc/test_tcm.py index 0472535c1..2ff1c3db8 100644 --- a/gr-trellis/doc/test_tcm.py +++ b/gr-trellis/doc/test_tcm.py @@ -2,7 +2,7 @@ from gnuradio import gr from gnuradio import audio -from gnuradio import trellis +from gnuradio import trellis, digital from gnuradio import eng_notation import math import sys @@ -24,7 +24,7 @@ def run_test (f,Kb,bitspersymbol,K,dimensionality,constellation,N0,seed): noise = gr.noise_source_f(gr.GR_GAUSSIAN,math.sqrt(N0/2),seed) # RX - metrics = trellis.metrics_f(f.O(),dimensionality,constellation,trellis.TRELLIS_EUCLIDEAN) # data preprocessing to generate metrics for Viterbi + metrics = trellis.metrics_f(f.O(),dimensionality,constellation,digital.TRELLIS_EUCLIDEAN) # data preprocessing to generate metrics for Viterbi va = trellis.viterbi_s(f,K,0,-1) # Put -1 if the Initial/Final states are not set. fsmi2s = gr.unpacked_to_packed_ss(bitspersymbol,gr.GR_MSB_FIRST) # pack FSM input symbols to shorts dst = gr.check_lfsr_32k_s(); diff --git a/gr-trellis/doc/test_viterbi_equalization1.py b/gr-trellis/doc/test_viterbi_equalization1.py index 93b852e85..638e83e81 100755 --- a/gr-trellis/doc/test_viterbi_equalization1.py +++ b/gr-trellis/doc/test_viterbi_equalization1.py @@ -2,7 +2,7 @@ from gnuradio import gr from gnuradio import audio -from gnuradio import trellis +from gnuradio import trellis, digital from gnuradio import eng_notation import math import sys @@ -32,9 +32,9 @@ def run_test (f,Kb,bitspersymbol,K,channel,modulation,dimensionality,tot_constel # RX skip = gr.skiphead(gr.sizeof_float, L) # skip the first L samples since you know they are coming from the L zero symbols - #metrics = trellis.metrics_f(f.O(),dimensionality,tot_constellation,trellis.TRELLIS_EUCLIDEAN) # data preprocessing to generate metrics for Viterbi + #metrics = trellis.metrics_f(f.O(),dimensionality,tot_constellation,digital.TRELLIS_EUCLIDEAN) # data preprocessing to generate metrics for Viterbi #va = trellis.viterbi_s(f,K+L,0,0) # Put -1 if the Initial/Final states are not set. - va = trellis.viterbi_combined_s(f,K+L,0,0,dimensionality,tot_constellation,trellis.TRELLIS_EUCLIDEAN) # using viterbi_combined_s instead of metrics_f/viterbi_s allows larger packet lengths because metrics_f is complaining for not being able to allocate large buffers. This is due to the large f.O() in this application... + va = trellis.viterbi_combined_s(f,K+L,0,0,dimensionality,tot_constellation,digital.TRELLIS_EUCLIDEAN) # using viterbi_combined_s instead of metrics_f/viterbi_s allows larger packet lengths because metrics_f is complaining for not being able to allocate large buffers. This is due to the large f.O() in this application... dst = gr.vector_sink_s() tb.connect (src,mod) diff --git a/gr-trellis/src/examples/test_cpm.py b/gr-trellis/src/examples/test_cpm.py index b5bdaae44..06d54b1a6 100755 --- a/gr-trellis/src/examples/test_cpm.py +++ b/gr-trellis/src/examples/test_cpm.py @@ -8,7 +8,7 @@ ################################################## from gnuradio import gr -from gnuradio import trellis +from gnuradio import trellis, digital from gnuradio.gr import firdes from grc_gnuradio import blks2 as grc_blks2 import math @@ -103,7 +103,8 @@ def run_test(seed,blocksize): gr_fir_filter_xxx_0_0_0 = gr.fir_filter_ccc(Q, MF[1].conjugate()) gr_streams_to_stream_0 = gr.streams_to_stream(gr.sizeof_gr_complex*1, int(N)) gr_skiphead_0 = gr.skiphead(gr.sizeof_gr_complex*1, int(N*(1+0))) - viterbi = trellis.viterbi_combined_cb(f, head+blocksize+tail, 0, -1, int(N), constellation, trellis.TRELLIS_EUCLIDEAN) + viterbi = trellis.viterbi_combined_cb(f, head+blocksize+tail, 0, -1, int(N), + constellation, digital.TRELLIS_EUCLIDEAN) gr_vector_sink_x_0 = gr.vector_sink_b() diff --git a/gr-trellis/src/examples/test_pccc_turbo1.py b/gr-trellis/src/examples/test_pccc_turbo1.py index 1173d0734..7f1ea26ae 100755 --- a/gr-trellis/src/examples/test_pccc_turbo1.py +++ b/gr-trellis/src/examples/test_pccc_turbo1.py @@ -1,7 +1,7 @@ #!/usr/bin/env python from gnuradio import gr -from gnuradio import trellis +from gnuradio import trellis, digital from gnuradio import eng_notation import math import sys @@ -27,7 +27,7 @@ def run_test (fo,fi,interleaver,Kb,bitspersymbol,K,dimensionality,constellation, noise = gr.noise_source_f(gr.GR_GAUSSIAN,math.sqrt(N0/2),seed) # RX - metrics_in = trellis.metrics_f(fi.O()*fo.O(),dimensionality,constellation,trellis.TRELLIS_EUCLIDEAN) # data preprocessing to generate metrics for innner SISO + metrics_in = trellis.metrics_f(fi.O()*fo.O(),dimensionality,constellation,digital.TRELLIS_EUCLIDEAN) # data preprocessing to generate metrics for innner SISO scale = gr.multiply_const_ff(1.0/N0) dec = trellis.pccc_decoder_s(fo,0,-1,fi,0,-1,interleaver,K,IT,trellis.TRELLIS_MIN_SUM) diff --git a/gr-trellis/src/examples/test_sccc_hard.py b/gr-trellis/src/examples/test_sccc_hard.py index 1a81bc59b..e732ac2c0 100755 --- a/gr-trellis/src/examples/test_sccc_hard.py +++ b/gr-trellis/src/examples/test_sccc_hard.py @@ -1,7 +1,7 @@ #!/usr/bin/env python from gnuradio import gr -from gnuradio import trellis +from gnuradio import trellis, digital from gnuradio import eng_notation import math import sys @@ -26,10 +26,10 @@ def run_test (fo,fi,interleaver,Kb,bitspersymbol,K,dimensionality,constellation, noise = gr.noise_source_f(gr.GR_GAUSSIAN,math.sqrt(N0/2),seed) # RX - metrics_in = trellis.metrics_f(fi.O(),dimensionality,constellation,trellis.TRELLIS_EUCLIDEAN) # data preprocessing to generate metrics for innner Viterbi + metrics_in = trellis.metrics_f(fi.O(),dimensionality,constellation,digital.TRELLIS_EUCLIDEAN) # data preprocessing to generate metrics for innner Viterbi va_in = trellis.viterbi_s(fi,K,0,-1) # Put -1 if the Initial/Final states are not set. deinter = trellis.permutation(interleaver.K(),interleaver.DEINTER(),1,gr.sizeof_short) - metrics_out = trellis.metrics_s(fo.O(),1,[0,1,2,3],trellis.TRELLIS_HARD_SYMBOL) # data preprocessing to generate metrics for outer Viterbi (hard decisions) + metrics_out = trellis.metrics_s(fo.O(),1,[0,1,2,3],digital.TRELLIS_HARD_SYMBOL) # data preprocessing to generate metrics for outer Viterbi (hard decisions) va_out = trellis.viterbi_s(fo,K,0,-1) # Put -1 if the Initial/Final states are not set. fsmi2s = gr.unpacked_to_packed_ss(bitspersymbol,gr.GR_MSB_FIRST) # pack FSM input symbols to shorts dst = gr.check_lfsr_32k_s() diff --git a/gr-trellis/src/examples/test_sccc_soft.py b/gr-trellis/src/examples/test_sccc_soft.py index ea296e1e9..1c71e4ca7 100755 --- a/gr-trellis/src/examples/test_sccc_soft.py +++ b/gr-trellis/src/examples/test_sccc_soft.py @@ -1,7 +1,7 @@ #!/usr/bin/env python from gnuradio import gr -from gnuradio import trellis +from gnuradio import trellis, digital from gnuradio import eng_notation import math import sys @@ -29,7 +29,7 @@ def run_test (fo,fi,interleaver,Kb,bitspersymbol,K,dimensionality,constellation, noise = gr.noise_source_f(gr.GR_GAUSSIAN,math.sqrt(N0/2),seed) # RX - metrics_in = trellis.metrics_f(fi.O(),dimensionality,constellation,trellis.TRELLIS_EUCLIDEAN) # data preprocessing to generate metrics for innner Viterbi + metrics_in = trellis.metrics_f(fi.O(),dimensionality,constellation,digital.TRELLIS_EUCLIDEAN) # data preprocessing to generate metrics for innner Viterbi gnd = gr.vector_source_f([0],True); siso_in = trellis.siso_f(fi,K,0,-1,True,False,trellis.TRELLIS_MIN_SUM) # Put -1 if the Initial/Final states are not set. deinter = trellis.permutation(interleaver.K(),interleaver.DEINTER(),fi.I(),gr.sizeof_float) diff --git a/gr-trellis/src/examples/test_sccc_turbo.py b/gr-trellis/src/examples/test_sccc_turbo.py index 703ee410b..b1007a864 100755 --- a/gr-trellis/src/examples/test_sccc_turbo.py +++ b/gr-trellis/src/examples/test_sccc_turbo.py @@ -1,7 +1,7 @@ #!/usr/bin/env python from gnuradio import gr -from gnuradio import trellis +from gnuradio import trellis, digital from gnuradio import eng_notation import math import sys @@ -11,7 +11,7 @@ import fsm_utils def make_rx(tb,fo,fi,dimensionality,constellation,K,interleaver,IT,Es,N0,type): - metrics_in = trellis.metrics_f(fi.O(),dimensionality,constellation,trellis.TRELLIS_EUCLIDEAN) # data preprocessing to generate metrics for innner Viterbi + metrics_in = trellis.metrics_f(fi.O(),dimensionality,constellation,digital.TRELLIS_EUCLIDEAN) # data preprocessing to generate metrics for innner Viterbi scale = gr.multiply_const_ff(1.0/N0) gnd = gr.vector_source_f([0],True); diff --git a/gr-trellis/src/examples/test_sccc_turbo1.py b/gr-trellis/src/examples/test_sccc_turbo1.py index 8a630c0d4..ad2ed6bf9 100755 --- a/gr-trellis/src/examples/test_sccc_turbo1.py +++ b/gr-trellis/src/examples/test_sccc_turbo1.py @@ -1,7 +1,7 @@ #!/usr/bin/env python from gnuradio import gr -from gnuradio import trellis +from gnuradio import trellis, digital from gnuradio import eng_notation import math import sys @@ -24,7 +24,7 @@ def run_test (fo,fi,interleaver,Kb,bitspersymbol,K,dimensionality,constellation, noise = gr.noise_source_f(gr.GR_GAUSSIAN,math.sqrt(N0/2),seed) # RX - dec = trellis.sccc_decoder_combined_fs(fo,0,-1,fi,0,-1,interleaver,K,IT,trellis.TRELLIS_MIN_SUM,dimensionality,constellation,trellis.TRELLIS_EUCLIDEAN,1.0) + dec = trellis.sccc_decoder_combined_fs(fo,0,-1,fi,0,-1,interleaver,K,IT,trellis.TRELLIS_MIN_SUM,dimensionality,constellation,digital.TRELLIS_EUCLIDEAN,1.0) fsmi2s = gr.unpacked_to_packed_ss(bitspersymbol,gr.GR_MSB_FIRST) # pack FSM input symbols to shorts dst = gr.check_lfsr_32k_s() diff --git a/gr-trellis/src/examples/test_sccc_turbo2.py b/gr-trellis/src/examples/test_sccc_turbo2.py index a47f6400e..fdb92adc8 100755 --- a/gr-trellis/src/examples/test_sccc_turbo2.py +++ b/gr-trellis/src/examples/test_sccc_turbo2.py @@ -1,7 +1,7 @@ #!/usr/bin/env python from gnuradio import gr -from gnuradio import trellis +from gnuradio import trellis, digital from gnuradio import eng_notation import math import sys @@ -24,7 +24,7 @@ def run_test (fo,fi,interleaver,Kb,bitspersymbol,K,dimensionality,constellation, noise = gr.noise_source_f(gr.GR_GAUSSIAN,math.sqrt(N0/2),seed) # RX - metrics_in = trellis.metrics_f(fi.O(),dimensionality,constellation,trellis.TRELLIS_EUCLIDEAN) # data preprocessing to generate metrics for innner SISO + metrics_in = trellis.metrics_f(fi.O(),dimensionality,constellation,digital.TRELLIS_EUCLIDEAN) # data preprocessing to generate metrics for innner SISO scale = gr.multiply_const_ff(1.0/N0) dec = trellis.sccc_decoder_s(fo,0,-1,fi,0,-1,interleaver,K,IT,trellis.TRELLIS_MIN_SUM) fsmi2s = gr.unpacked_to_packed_ss(bitspersymbol,gr.GR_MSB_FIRST) # pack FSM input symbols to shorts diff --git a/gr-trellis/src/examples/test_tcm.py b/gr-trellis/src/examples/test_tcm.py index d2e3c6271..62fd5135e 100755 --- a/gr-trellis/src/examples/test_tcm.py +++ b/gr-trellis/src/examples/test_tcm.py @@ -1,7 +1,7 @@ #!/usr/bin/env python from gnuradio import gr -from gnuradio import trellis +from gnuradio import trellis, digital from gnuradio import eng_notation import math import sys @@ -31,7 +31,7 @@ def run_test (f,Kb,bitspersymbol,K,dimensionality,constellation,N0,seed): noise = gr.noise_source_f(gr.GR_GAUSSIAN,math.sqrt(N0/2),seed) # RX - metrics = trellis.metrics_f(f.O(),dimensionality,constellation,trellis.TRELLIS_EUCLIDEAN) # data preprocessing to generate metrics for Viterbi + metrics = trellis.metrics_f(f.O(),dimensionality,constellation,digital.TRELLIS_EUCLIDEAN) # data preprocessing to generate metrics for Viterbi va = trellis.viterbi_s(f,K,0,-1) # Put -1 if the Initial/Final states are not set. fsmi2s = gr.unpacked_to_packed_ss(bitspersymbol,gr.GR_MSB_FIRST) # pack FSM input symbols to shorts #s2b = gr.packed_to_unpacked_ss(1,gr.GR_MSB_FIRST) # unpack shorts to bits diff --git a/gr-trellis/src/examples/test_tcm_bit.py b/gr-trellis/src/examples/test_tcm_bit.py index 008e1e6f0..cc5caefbc 100755 --- a/gr-trellis/src/examples/test_tcm_bit.py +++ b/gr-trellis/src/examples/test_tcm_bit.py @@ -1,7 +1,7 @@ #!/usr/bin/env python from gnuradio import gr -from gnuradio import trellis +from gnuradio import trellis, digital from gnuradio import eng_notation import math import sys @@ -34,7 +34,7 @@ def run_test (f,Kb,bitspersymbol,K,dimensionality,constellation,N0,seed): # RX - metrics = trellis.metrics_f(f.O(),dimensionality,constellation,trellis.TRELLIS_EUCLIDEAN) # data preprocessing to generate metrics for Viterbi + metrics = trellis.metrics_f(f.O(),dimensionality,constellation,digital.TRELLIS_EUCLIDEAN) # data preprocessing to generate metrics for Viterbi va = trellis.viterbi_s(f,K,0,-1) # Put -1 if the Initial/Final states are not set. fsmi2s = gr.unpacked_to_packed_ss(bitspersymbol,gr.GR_MSB_FIRST) # pack FSM input symbols to shorts s2b = gr.packed_to_unpacked_ss(1,gr.GR_MSB_FIRST) # unpack shorts to bits diff --git a/gr-trellis/src/examples/test_tcm_combined.py b/gr-trellis/src/examples/test_tcm_combined.py index f9b698ae9..55a3043b8 100755 --- a/gr-trellis/src/examples/test_tcm_combined.py +++ b/gr-trellis/src/examples/test_tcm_combined.py @@ -1,7 +1,7 @@ #!/usr/bin/env python from gnuradio import gr -from gnuradio import trellis +from gnuradio import trellis, digital from gnuradio import eng_notation import math import sys @@ -27,7 +27,7 @@ def run_test (f,Kb,bitspersymbol,K,dimensionality,constellation,N0,seed): # RX - va = trellis.viterbi_combined_fs(f,K,0,-1,dimensionality,constellation,trellis.TRELLIS_EUCLIDEAN) # Put -1 if the Initial/Final states are not set. + va = trellis.viterbi_combined_fs(f,K,0,-1,dimensionality,constellation,digital.TRELLIS_EUCLIDEAN) # Put -1 if the Initial/Final states are not set. fsmi2s = gr.unpacked_to_packed_ss(bitspersymbol,gr.GR_MSB_FIRST) # pack FSM input symbols to shorts dst = gr.check_lfsr_32k_s(); diff --git a/gr-trellis/src/examples/test_tcm_parallel.py b/gr-trellis/src/examples/test_tcm_parallel.py index 94761fd01..2b722c09e 100755 --- a/gr-trellis/src/examples/test_tcm_parallel.py +++ b/gr-trellis/src/examples/test_tcm_parallel.py @@ -1,7 +1,7 @@ #!/usr/bin/env python from gnuradio import gr -from gnuradio import trellis +from gnuradio import trellis, digital from gnuradio import eng_notation import math import sys @@ -29,7 +29,7 @@ def run_test (f,Kb,bitspersymbol,K,dimensionality,constellation,N0,seed,P): noise.append(gr.noise_source_f(gr.GR_GAUSSIAN,math.sqrt(N0/2),seed)) # RX - metrics = trellis.metrics_f(f.O(),dimensionality,constellation,trellis.TRELLIS_EUCLIDEAN) # data preprocessing to generate metrics for Viterbi + metrics = trellis.metrics_f(f.O(),dimensionality,constellation,digital.TRELLIS_EUCLIDEAN) # data preprocessing to generate metrics for Viterbi va = trellis.viterbi_s(f,K,0,-1) # Put -1 if the Initial/Final states are not set. p2s = gr.streams_to_stream(gr.sizeof_short,P) # parallel to serial fsmi2s=gr.unpacked_to_packed_ss(bitspersymbol,gr.GR_MSB_FIRST) # pack FSM input symbols to shorts diff --git a/gr-trellis/src/examples/test_turbo_equalization.py b/gr-trellis/src/examples/test_turbo_equalization.py index 0bf691222..6fa6749f0 100755 --- a/gr-trellis/src/examples/test_turbo_equalization.py +++ b/gr-trellis/src/examples/test_turbo_equalization.py @@ -1,7 +1,7 @@ #!/usr/bin/env python from gnuradio import gr -from gnuradio import trellis +from gnuradio import trellis, digital from gnuradio import eng_notation import math import sys @@ -9,7 +9,7 @@ import fsm_utils def make_rx(tb,fo,fi,dimensionality,tot_constellation,K,interleaver,IT,Es,N0,type): - metrics_in = trellis.metrics_f(fi.O(),dimensionality,tot_constellation,trellis.TRELLIS_EUCLIDEAN) # data preprocessing to generate metrics for innner SISO + metrics_in = trellis.metrics_f(fi.O(),dimensionality,tot_constellation,digital.TRELLIS_EUCLIDEAN) # data preprocessing to generate metrics for innner SISO scale = gr.multiply_const_ff(1.0/N0) gnd = gr.vector_source_f([0],True); diff --git a/gr-trellis/src/examples/test_turbo_equalization1.py b/gr-trellis/src/examples/test_turbo_equalization1.py index feae4ce89..15a8f6809 100755 --- a/gr-trellis/src/examples/test_turbo_equalization1.py +++ b/gr-trellis/src/examples/test_turbo_equalization1.py @@ -1,7 +1,7 @@ #!/usr/bin/env python from gnuradio import gr -from gnuradio import trellis +from gnuradio import trellis, digital from gnuradio import eng_notation import math import sys @@ -9,7 +9,7 @@ import random import fsm_utils def make_rx(tb,fo,fi,dimensionality,tot_constellation,K,interleaver,IT,Es,N0,type): - metrics_in = trellis.metrics_f(fi.O(),dimensionality,tot_constellation,trellis.TRELLIS_EUCLIDEAN) # data preprocessing to generate metrics for innner SISO + metrics_in = trellis.metrics_f(fi.O(),dimensionality,tot_constellation,digital.TRELLIS_EUCLIDEAN) # data preprocessing to generate metrics for innner SISO scale = gr.multiply_const_ff(1.0/N0) gnd = gr.vector_source_f([0],True); diff --git a/gr-trellis/src/examples/test_turbo_equalization2.py b/gr-trellis/src/examples/test_turbo_equalization2.py index ff14299c6..7e4341cba 100755 --- a/gr-trellis/src/examples/test_turbo_equalization2.py +++ b/gr-trellis/src/examples/test_turbo_equalization2.py @@ -1,7 +1,7 @@ #!/usr/bin/env python from gnuradio import gr -from gnuradio import trellis +from gnuradio import trellis, digital from gnuradio import eng_notation import math import sys @@ -20,7 +20,7 @@ def make_rx(tb,fo,fi,dimensionality,tot_constellation,K,interleaver,IT,Es,N0,typ # generate all blocks for it in range(IT): inter.append( trellis.permutation(interleaver.K(),interleaver.INTER(),fi.I(),gr.sizeof_float) ) - siso_in.append( trellis.siso_combined_f(fi,K,0,-1,True,False,type,dimensionality,tot_constellation,trellis.TRELLIS_EUCLIDEAN) ) + siso_in.append( trellis.siso_combined_f(fi,K,0,-1,True,False,type,dimensionality,tot_constellation,digital.TRELLIS_EUCLIDEAN) ) deinter.append( trellis.permutation(interleaver.K(),interleaver.DEINTER(),fi.I(),gr.sizeof_float) ) if it < IT-1: siso_out.append( trellis.siso_f(fo,K,0,-1,False,True,type) ) diff --git a/gr-trellis/src/examples/test_viterbi_equalization.py b/gr-trellis/src/examples/test_viterbi_equalization.py index eda692024..d290a0d0a 100755 --- a/gr-trellis/src/examples/test_viterbi_equalization.py +++ b/gr-trellis/src/examples/test_viterbi_equalization.py @@ -1,7 +1,7 @@ #!/usr/bin/env python from gnuradio import gr -from gnuradio import trellis +from gnuradio import trellis, digital from gnuradio import eng_notation import math import sys @@ -23,7 +23,7 @@ def run_test (f,Kb,bitspersymbol,K,dimensionality,tot_constellation,N0,seed): noise = gr.noise_source_f(gr.GR_GAUSSIAN,math.sqrt(N0/2),seed) # RX - metrics = trellis.metrics_f(f.O(),dimensionality,tot_constellation,trellis.TRELLIS_EUCLIDEAN) # data preprocessing to generate metrics for Viterbi + metrics = trellis.metrics_f(f.O(),dimensionality,tot_constellation,digital.TRELLIS_EUCLIDEAN) # data preprocessing to generate metrics for Viterbi va = trellis.viterbi_s(f,K,0,-1) # Put -1 if the Initial/Final states are not set. fsmi2s = gr.unpacked_to_packed_ss(bitspersymbol,gr.GR_MSB_FIRST) # pack FSM input symbols to shorts dst = gr.check_lfsr_32k_s(); diff --git a/gr-trellis/src/examples/test_viterbi_equalization1.py b/gr-trellis/src/examples/test_viterbi_equalization1.py index 3a65b9363..41f777551 100755 --- a/gr-trellis/src/examples/test_viterbi_equalization1.py +++ b/gr-trellis/src/examples/test_viterbi_equalization1.py @@ -1,7 +1,7 @@ #!/usr/bin/env python from gnuradio import gr -from gnuradio import trellis +from gnuradio import trellis, digital from gnuradio import eng_notation import math import sys @@ -31,9 +31,9 @@ def run_test (f,Kb,bitspersymbol,K,channel,modulation,dimensionality,tot_constel # RX skip = gr.skiphead(gr.sizeof_float, L) # skip the first L samples since you know they are coming from the L zero symbols - #metrics = trellis.metrics_f(f.O(),dimensionality,tot_constellation,trellis.TRELLIS_EUCLIDEAN) # data preprocessing to generate metrics for Viterbi + #metrics = trellis.metrics_f(f.O(),dimensionality,tot_constellation,digital.TRELLIS_EUCLIDEAN) # data preprocessing to generate metrics for Viterbi #va = trellis.viterbi_s(f,K+L,-1,0) # Put -1 if the Initial/Final states are not set. - va = trellis.viterbi_combined_fs(f,K+L,0,0,dimensionality,tot_constellation,trellis.TRELLIS_EUCLIDEAN) # using viterbi_combined_fs instead of metrics_f/viterbi_s allows larger packet lengths because metrics_f is complaining for not being able to allocate large buffers. This is due to the large f.O() in this application... + va = trellis.viterbi_combined_fs(f,K+L,0,0,dimensionality,tot_constellation,digital.TRELLIS_EUCLIDEAN) # using viterbi_combined_fs instead of metrics_f/viterbi_s allows larger packet lengths because metrics_f is complaining for not being able to allocate large buffers. This is due to the large f.O() in this application... dst = gr.vector_sink_s() tb.connect (src,mod) diff --git a/grc/grc_gnuradio/blks2/packet.py b/grc/grc_gnuradio/blks2/packet.py index 50de99ac9..2a4876338 100644 --- a/grc/grc_gnuradio/blks2/packet.py +++ b/grc/grc_gnuradio/blks2/packet.py @@ -18,7 +18,8 @@ # Boston, MA 02110-1301, USA. # -from gnuradio import gr, packet_utils +from gnuradio import gr +from gnuradio.digital import packet_utils import gnuradio.gr.gr_threading as _threading ##payload length in bytes |