diff options
author | Ben Reynwar | 2010-11-03 22:29:09 -0700 |
---|---|---|
committer | Ben Reynwar | 2010-11-03 22:29:09 -0700 |
commit | a89d85d0bff906d68ecc5293b0c45fc6170c5cb5 (patch) | |
tree | 8d44a02ea34f65e54352ef8cb6ffbf93b4c37cac | |
parent | a20c127a9469aeac9ec60bf432c4128c49349f34 (diff) | |
parent | 1fa9a8ea31115b878bff48d2259fc72d1a37b52c (diff) | |
download | gnuradio-a89d85d0bff906d68ecc5293b0c45fc6170c5cb5.tar.gz gnuradio-a89d85d0bff906d68ecc5293b0c45fc6170c5cb5.tar.bz2 gnuradio-a89d85d0bff906d68ecc5293b0c45fc6170c5cb5.zip |
Merge branch 'grorg-master'
36 files changed, 313 insertions, 120 deletions
diff --git a/Makefile.common b/Makefile.common index fb83b9470..95dacf987 100644 --- a/Makefile.common +++ b/Makefile.common @@ -57,8 +57,8 @@ libspudir = $(libdir)spu # This used to be set in configure.ac but is now defined here for all # Makefiles when this fragment is included. -STD_DEFINES_AND_INCLUDES = $(DEFINES) $(BOOST_CPPFLAGS) \ - $(GNURADIO_INCLUDES) $(GRUEL_INCLUDES) +STD_DEFINES_AND_INCLUDES = $(DEFINES) $(GNURADIO_INCLUDES) \ + $(GRUEL_INCLUDES) $(BOOST_CPPFLAGS) # when including for compilation from pre-installed libraries and such, # need to make sure those are put last on the compile command diff --git a/gcell/lib/runtime/Makefile.am b/gcell/lib/runtime/Makefile.am index 4d13790cd..3ce637636 100644 --- a/gcell/lib/runtime/Makefile.am +++ b/gcell/lib/runtime/Makefile.am @@ -23,8 +23,8 @@ include $(top_srcdir)/Makefile.common IBM_PPU_SYNC_INCLUDES = -I$(top_srcdir)/gcell/ibm/sync/ppu_source -AM_CPPFLAGS = $(DEFINES) $(BOOST_CPPFLAGS) $(CPPUNIT_INCLUDES) \ - $(GCELL_INCLUDES) $(IBM_PPU_SYNC_INCLUDES) $(WITH_INCLUDES) +AM_CPPFLAGS = $(DEFINES) $(GCELL_INCLUDES) $(IBM_PPU_SYNC_INCLUDES) \ + $(BOOST_CPPFLAGS) $(CPPUNIT_INCLUDES) $(WITH_INCLUDES) dist_bin_SCRIPTS = gcell-embedspu-libtool diff --git a/gnuradio-core/src/lib/filter/gr_pfb_channelizer_ccf.cc b/gnuradio-core/src/lib/filter/gr_pfb_channelizer_ccf.cc index cb67b8104..db16a634b 100644 --- a/gnuradio-core/src/lib/filter/gr_pfb_channelizer_ccf.cc +++ b/gnuradio-core/src/lib/filter/gr_pfb_channelizer_ccf.cc @@ -55,7 +55,6 @@ gr_pfb_channelizer_ccf::gr_pfb_channelizer_ccf (unsigned int numchans, // This tests the specified input sample rate to see if it conforms to this // requirement within a few significant figures. double intp = 0; - double x = (10000.0*rint(numchans / oversample_rate)) / 10000.0; double fltp = modf(numchans / oversample_rate, &intp); if(fltp != 0.0) throw std::invalid_argument("gr_pfb_channelizer: oversample rate must be N/i for i in [1, N]"); diff --git a/gnuradio-core/src/lib/filter/gri_fir_filter_with_buffer_XXX.cc.t b/gnuradio-core/src/lib/filter/gri_fir_filter_with_buffer_XXX.cc.t index c0d061c81..154068840 100644 --- a/gnuradio-core/src/lib/filter/gri_fir_filter_with_buffer_XXX.cc.t +++ b/gnuradio-core/src/lib/filter/gri_fir_filter_with_buffer_XXX.cc.t @@ -77,6 +77,26 @@ void return (@O_TYPE@)out; } +@O_TYPE@ +@NAME@::filter (const @I_TYPE@ input[], unsigned long dec) +{ + unsigned int i; + + for(i = 0; i < dec; i++) { + d_buffer[d_idx] = input[i]; + d_buffer[d_idx+ntaps()] = input[i]; + d_idx++; + if(d_idx >= ntaps()) + d_idx = 0; + } + + @ACC_TYPE@ out = 0; + for(i = 0; i < ntaps(); i++) { + out += @INPUT_CAST@ d_buffer[d_idx + i] * d_taps[i]; + } + return (@O_TYPE@)out; +} + void @NAME@::filterN (@O_TYPE@ output[], const @I_TYPE@ input[], @@ -86,3 +106,16 @@ void output[i] = filter(input[i]); } } + +void +@NAME@::filterNdec (@O_TYPE@ output[], + const @I_TYPE@ input[], + unsigned long n, + unsigned long decimate) +{ + unsigned long j = 0; + for(unsigned long i = 0; i < n; i++) { + output[i] = filter(&input[j], decimate); + j += decimate; + } +} diff --git a/gnuradio-core/src/lib/filter/gri_fir_filter_with_buffer_XXX.h.t b/gnuradio-core/src/lib/filter/gri_fir_filter_with_buffer_XXX.h.t index d566b3674..23d64b65d 100644 --- a/gnuradio-core/src/lib/filter/gri_fir_filter_with_buffer_XXX.h.t +++ b/gnuradio-core/src/lib/filter/gri_fir_filter_with_buffer_XXX.h.t @@ -69,13 +69,25 @@ public: /*! * \brief compute a single output value. * - * \p input must have ntaps() valid entries. - * input[0] .. input[ntaps() - 1] are referenced to compute the output value. + * \p input is a single input value of the filter type * * \returns the filtered input value. */ @O_TYPE@ filter (@I_TYPE@ input); + + /*! + * \brief compute a single output value; designed for decimating filters. + * + * \p input is a single input value of the filter type. The value of dec is the + * decimating value of the filter, so input[] must have dec valid values. + * The filter pushes dec number of items onto the circ. buffer before computing + * a single output. + * + * \returns the filtered input value. + */ + @O_TYPE@ filter (const @I_TYPE@ input[], unsigned long dec); + /*! * \brief compute an array of N output values. * @@ -93,7 +105,7 @@ public: * compute the output values. */ void filterNdec (@O_TYPE@ output[], const @I_TYPE@ input[], - unsigned long n, unsigned decimate); + unsigned long n, unsigned long decimate); /*! * \brief install \p new_taps as the current taps. diff --git a/gnuradio-core/src/lib/filter/gri_fir_filter_with_buffer_ccf.h b/gnuradio-core/src/lib/filter/gri_fir_filter_with_buffer_ccf.h index 2b69f8b03..bd7fa33cf 100644 --- a/gnuradio-core/src/lib/filter/gri_fir_filter_with_buffer_ccf.h +++ b/gnuradio-core/src/lib/filter/gri_fir_filter_with_buffer_ccf.h @@ -69,13 +69,25 @@ public: /*! * \brief compute a single output value. * - * \p input must have ntaps() valid entries. - * input[0] .. input[ntaps() - 1] are referenced to compute the output value. + * \p input is a single input value of the filter type * * \returns the filtered input value. */ gr_complex filter (gr_complex input); + + /*! + * \brief compute a single output value; designed for decimating filters. + * + * \p input is a single input value of the filter type. The value of dec is the + * decimating value of the filter, so input[] must have dec valid values. + * The filter pushes dec number of items onto the circ. buffer before computing + * a single output. + * + * \returns the filtered input value. + */ + gr_complex filter (const gr_complex input[], unsigned long dec); + /*! * \brief compute an array of N output values. * @@ -93,7 +105,7 @@ public: * compute the output values. */ void filterNdec (gr_complex output[], const gr_complex input[], - unsigned long n, unsigned decimate); + unsigned long n, unsigned long decimate); /*! * \brief install \p new_taps as the current taps. diff --git a/gnuradio-core/src/lib/filter/qa_gri_fir_filter_with_buffer_ccc.cc b/gnuradio-core/src/lib/filter/qa_gri_fir_filter_with_buffer_ccc.cc index cff81ab13..e87d93ebf 100644 --- a/gnuradio-core/src/lib/filter/qa_gri_fir_filter_with_buffer_ccc.cc +++ b/gnuradio-core/src/lib/filter/qa_gri_fir_filter_with_buffer_ccc.cc @@ -73,14 +73,31 @@ ref_dotprod (const i_type input[], const tap_type taps[], int ntaps) return sum; } +void +qa_gri_fir_filter_with_buffer_ccc::t1 () +{ + test_decimate(1); +} + +void +qa_gri_fir_filter_with_buffer_ccc::t2 () +{ + test_decimate(2); +} + +void +qa_gri_fir_filter_with_buffer_ccc::t3 () +{ + test_decimate(5); +} + // // Test for ntaps in [0,9], and input lengths in [0,17]. // This ensures that we are building the shifted taps correctly, // and exercises all corner cases on input alignment and length. // - void -qa_gri_fir_filter_with_buffer_ccc::t1 () +qa_gri_fir_filter_with_buffer_ccc::test_decimate(unsigned int decimate) { const int MAX_TAPS = 9; const int OUTPUT_LEN = 17; @@ -107,11 +124,13 @@ qa_gri_fir_filter_with_buffer_ccc::t1 () // compute expected output values memset(dline, 0, INPUT_LEN*sizeof(i_type)); - for (int o = 0; o < ol; o++){ + for (int o = 0; o < (int)(ol/decimate); o++){ // use an actual delay line for this test - for(int oo = INPUT_LEN-1; oo > 0; oo--) - dline[oo] = dline[oo-1]; - dline[0] = input[o]; + for(int dd = 0; dd < (int)decimate; dd++) { + for(int oo = INPUT_LEN-1; oo > 0; oo--) + dline[oo] = dline[oo-1]; + dline[0] = input[decimate*o+dd]; + } expected_output[o] = ref_dotprod (dline, taps, n); } @@ -121,7 +140,7 @@ qa_gri_fir_filter_with_buffer_ccc::t1 () // zero the output, then do the filtering memset (actual_output, 0, sizeof (actual_output)); - f1->filterN (actual_output, input, ol); + f1->filterNdec (actual_output, input, ol/decimate, decimate); // check results // @@ -130,7 +149,7 @@ qa_gri_fir_filter_with_buffer_ccc::t1 () // arithmetic, while the SSE version is using 32 bit float point // arithmetic. - for (int o = 0; o < ol; o++){ + for (int o = 0; o < (int)(ol/decimate); o++){ CPPUNIT_ASSERT_COMPLEXES_EQUAL(expected_output[o], actual_output[o], abs (expected_output[o]) * ERR_DELTA); } diff --git a/gnuradio-core/src/lib/filter/qa_gri_fir_filter_with_buffer_ccc.h b/gnuradio-core/src/lib/filter/qa_gri_fir_filter_with_buffer_ccc.h index 411a66a9a..f9f206f66 100644 --- a/gnuradio-core/src/lib/filter/qa_gri_fir_filter_with_buffer_ccc.h +++ b/gnuradio-core/src/lib/filter/qa_gri_fir_filter_with_buffer_ccc.h @@ -29,13 +29,16 @@ class qa_gri_fir_filter_with_buffer_ccc : public CppUnit::TestCase { CPPUNIT_TEST_SUITE (qa_gri_fir_filter_with_buffer_ccc); CPPUNIT_TEST (t1); + CPPUNIT_TEST (t2); + CPPUNIT_TEST (t3); CPPUNIT_TEST_SUITE_END (); private: + void test_decimate(unsigned int decimate); void t1 (); - // void t2 (); - // void t3 (); + void t2 (); + void t3 (); }; diff --git a/gnuradio-core/src/lib/filter/qa_gri_fir_filter_with_buffer_ccf.cc b/gnuradio-core/src/lib/filter/qa_gri_fir_filter_with_buffer_ccf.cc index f2e09db1c..c25853b1e 100644 --- a/gnuradio-core/src/lib/filter/qa_gri_fir_filter_with_buffer_ccf.cc +++ b/gnuradio-core/src/lib/filter/qa_gri_fir_filter_with_buffer_ccf.cc @@ -80,14 +80,31 @@ ref_dotprod (const i_type input[], const tap_type taps[], int ntaps) return sum; } +void +qa_gri_fir_filter_with_buffer_ccf::t1 () +{ + test_decimate(1); +} + +void +qa_gri_fir_filter_with_buffer_ccf::t2 () +{ + test_decimate(2); +} + +void +qa_gri_fir_filter_with_buffer_ccf::t3 () +{ + test_decimate(5); +} + // // Test for ntaps in [0,9], and input lengths in [0,17]. // This ensures that we are building the shifted taps correctly, // and exercises all corner cases on input alignment and length. // - void -qa_gri_fir_filter_with_buffer_ccf::t1 () +qa_gri_fir_filter_with_buffer_ccf::test_decimate (unsigned int decimate) { const int MAX_TAPS = 9; const int OUTPUT_LEN = 17; @@ -114,11 +131,13 @@ qa_gri_fir_filter_with_buffer_ccf::t1 () // compute expected output values memset(dline, 0, INPUT_LEN*sizeof(i_type)); - for (int o = 0; o < ol; o++){ + for (int o = 0; o < (int)(ol/decimate); o++){ // use an actual delay line for this test - for(int oo = INPUT_LEN-1; oo > 0; oo--) - dline[oo] = dline[oo-1]; - dline[0] = input[o]; + for(int dd = 0; dd < (int)decimate; dd++) { + for(int oo = INPUT_LEN-1; oo > 0; oo--) + dline[oo] = dline[oo-1]; + dline[0] = input[decimate*o+dd]; + } expected_output[o] = ref_dotprod (dline, taps, n); } @@ -128,7 +147,7 @@ qa_gri_fir_filter_with_buffer_ccf::t1 () // zero the output, then do the filtering memset (actual_output, 0, sizeof (actual_output)); - f1->filterN (actual_output, input, ol); + f1->filterNdec (actual_output, input, ol/decimate, decimate); // check results // @@ -137,7 +156,7 @@ qa_gri_fir_filter_with_buffer_ccf::t1 () // arithmetic, while the SSE version is using 32 bit float point // arithmetic. - for (int o = 0; o < ol; o++){ + for (int o = 0; o < (int)(ol/decimate); o++){ CPPUNIT_ASSERT_COMPLEXES_EQUAL(expected_output[o], actual_output[o], abs (expected_output[o]) * ERR_DELTA); } diff --git a/gnuradio-core/src/lib/filter/qa_gri_fir_filter_with_buffer_ccf.h b/gnuradio-core/src/lib/filter/qa_gri_fir_filter_with_buffer_ccf.h index b80be70a7..924b4bc2e 100644 --- a/gnuradio-core/src/lib/filter/qa_gri_fir_filter_with_buffer_ccf.h +++ b/gnuradio-core/src/lib/filter/qa_gri_fir_filter_with_buffer_ccf.h @@ -29,13 +29,16 @@ class qa_gri_fir_filter_with_buffer_ccf : public CppUnit::TestCase { CPPUNIT_TEST_SUITE (qa_gri_fir_filter_with_buffer_ccf); CPPUNIT_TEST (t1); + CPPUNIT_TEST (t2); + CPPUNIT_TEST (t3); CPPUNIT_TEST_SUITE_END (); private: + void test_decimate(unsigned int decimate); void t1 (); - // void t2 (); - // void t3 (); + void t2 (); + void t3 (); }; diff --git a/gnuradio-core/src/lib/filter/qa_gri_fir_filter_with_buffer_fcc.cc b/gnuradio-core/src/lib/filter/qa_gri_fir_filter_with_buffer_fcc.cc index de0da9f1c..19f270200 100644 --- a/gnuradio-core/src/lib/filter/qa_gri_fir_filter_with_buffer_fcc.cc +++ b/gnuradio-core/src/lib/filter/qa_gri_fir_filter_with_buffer_fcc.cc @@ -80,14 +80,32 @@ ref_dotprod (const i_type input[], const tap_type taps[], int ntaps) return sum; } +void +qa_gri_fir_filter_with_buffer_fcc::t1() +{ + test_decimate(1); +} + +void +qa_gri_fir_filter_with_buffer_fcc::t2() +{ + test_decimate(2); +} + +void +qa_gri_fir_filter_with_buffer_fcc::t3() +{ + test_decimate(5); +} + + // // Test for ntaps in [0,9], and input lengths in [0,17]. // This ensures that we are building the shifted taps correctly, // and exercises all corner cases on input alignment and length. // - void -qa_gri_fir_filter_with_buffer_fcc::t1 () +qa_gri_fir_filter_with_buffer_fcc::test_decimate(unsigned int decimate) { const int MAX_TAPS = 9; const int OUTPUT_LEN = 17; @@ -114,11 +132,13 @@ qa_gri_fir_filter_with_buffer_fcc::t1 () // compute expected output values memset(dline, 0, INPUT_LEN*sizeof(i_type)); - for (int o = 0; o < ol; o++){ + for (int o = 0; o < (int)(ol/decimate); o++){ // use an actual delay line for this test - for(int oo = INPUT_LEN-1; oo > 0; oo--) - dline[oo] = dline[oo-1]; - dline[0] = input[o]; + for(int dd = 0; dd < (int)decimate; dd++) { + for(int oo = INPUT_LEN-1; oo > 0; oo--) + dline[oo] = dline[oo-1]; + dline[0] = input[decimate*o+dd]; + } expected_output[o] = ref_dotprod (dline, taps, n); } @@ -128,7 +148,7 @@ qa_gri_fir_filter_with_buffer_fcc::t1 () // zero the output, then do the filtering memset (actual_output, 0, sizeof (actual_output)); - f1->filterN (actual_output, input, ol); + f1->filterNdec (actual_output, input, ol/decimate, decimate); // check results // @@ -137,7 +157,7 @@ qa_gri_fir_filter_with_buffer_fcc::t1 () // arithmetic, while the SSE version is using 32 bit float point // arithmetic. - for (int o = 0; o < ol; o++){ + for (int o = 0; o < (int)(ol/decimate); o++){ CPPUNIT_ASSERT_COMPLEXES_EQUAL(expected_output[o], actual_output[o], abs (expected_output[o]) * ERR_DELTA); } diff --git a/gnuradio-core/src/lib/filter/qa_gri_fir_filter_with_buffer_fcc.h b/gnuradio-core/src/lib/filter/qa_gri_fir_filter_with_buffer_fcc.h index 81b39f488..6201800f9 100644 --- a/gnuradio-core/src/lib/filter/qa_gri_fir_filter_with_buffer_fcc.h +++ b/gnuradio-core/src/lib/filter/qa_gri_fir_filter_with_buffer_fcc.h @@ -29,13 +29,16 @@ class qa_gri_fir_filter_with_buffer_fcc : public CppUnit::TestCase { CPPUNIT_TEST_SUITE (qa_gri_fir_filter_with_buffer_fcc); CPPUNIT_TEST (t1); + CPPUNIT_TEST (t2); + CPPUNIT_TEST (t3); CPPUNIT_TEST_SUITE_END (); private: + void test_decimate(unsigned int decimate); void t1 (); - // void t2 (); - // void t3 (); + void t2 (); + void t3 (); }; diff --git a/gnuradio-core/src/lib/filter/qa_gri_fir_filter_with_buffer_fff.cc b/gnuradio-core/src/lib/filter/qa_gri_fir_filter_with_buffer_fff.cc index ce689a54b..8401e484b 100644 --- a/gnuradio-core/src/lib/filter/qa_gri_fir_filter_with_buffer_fff.cc +++ b/gnuradio-core/src/lib/filter/qa_gri_fir_filter_with_buffer_fff.cc @@ -69,14 +69,31 @@ ref_dotprod (const i_type input[], const tap_type taps[], int ntaps) return sum; } +void +qa_gri_fir_filter_with_buffer_fff::t1 () +{ + test_decimate(1); +} + +void +qa_gri_fir_filter_with_buffer_fff::t2 () +{ + test_decimate(2); +} + +void +qa_gri_fir_filter_with_buffer_fff::t3 () +{ + test_decimate(5); +} + // // Test for ntaps in [0,9], and input lengths in [0,17]. // This ensures that we are building the shifted taps correctly, // and exercises all corner cases on input alignment and length. // - void -qa_gri_fir_filter_with_buffer_fff::t1 () +qa_gri_fir_filter_with_buffer_fff::test_decimate(unsigned int decimate) { const int MAX_TAPS = 9; const int OUTPUT_LEN = 17; @@ -103,11 +120,13 @@ qa_gri_fir_filter_with_buffer_fff::t1 () // compute expected output values memset(dline, 0, INPUT_LEN*sizeof(i_type)); - for (int o = 0; o < ol; o++){ + for (int o = 0; o < (int)(ol/decimate); o++){ // use an actual delay line for this test - for(int oo = INPUT_LEN-1; oo > 0; oo--) - dline[oo] = dline[oo-1]; - dline[0] = input[o]; + for(int dd = 0; dd < (int)decimate; dd++) { + for(int oo = INPUT_LEN-1; oo > 0; oo--) + dline[oo] = dline[oo-1]; + dline[0] = input[decimate*o+dd]; + } expected_output[o] = ref_dotprod (dline, taps, n); } @@ -117,7 +136,7 @@ qa_gri_fir_filter_with_buffer_fff::t1 () // zero the output, then do the filtering memset (actual_output, 0, sizeof (actual_output)); - f1->filterN (actual_output, input, ol); + f1->filterNdec (actual_output, input, ol/decimate, decimate); // check results // @@ -126,7 +145,7 @@ qa_gri_fir_filter_with_buffer_fff::t1 () // arithmetic, while the SSE version is using 32 bit float point // arithmetic. - for (int o = 0; o < ol; o++){ + for (int o = 0; o < (int)(ol/decimate); o++){ CPPUNIT_ASSERT_DOUBLES_EQUAL(expected_output[o], actual_output[o], fabsf (expected_output[o]) * ERR_DELTA); } diff --git a/gnuradio-core/src/lib/filter/qa_gri_fir_filter_with_buffer_fff.h b/gnuradio-core/src/lib/filter/qa_gri_fir_filter_with_buffer_fff.h index 5bb6c3e93..54a9cdc53 100644 --- a/gnuradio-core/src/lib/filter/qa_gri_fir_filter_with_buffer_fff.h +++ b/gnuradio-core/src/lib/filter/qa_gri_fir_filter_with_buffer_fff.h @@ -29,13 +29,16 @@ class qa_gri_fir_filter_with_buffer_fff : public CppUnit::TestCase { CPPUNIT_TEST_SUITE (qa_gri_fir_filter_with_buffer_fff); CPPUNIT_TEST (t1); + CPPUNIT_TEST (t2); + CPPUNIT_TEST (t3); CPPUNIT_TEST_SUITE_END (); private: + void test_decimate(unsigned int decimate); void t1 (); - // void t2 (); - // void t3 (); + void t2 (); + void t3 (); }; diff --git a/gnuradio-core/src/lib/filter/qa_gri_fir_filter_with_buffer_fsf.cc b/gnuradio-core/src/lib/filter/qa_gri_fir_filter_with_buffer_fsf.cc index f09a1d7ac..091505380 100644 --- a/gnuradio-core/src/lib/filter/qa_gri_fir_filter_with_buffer_fsf.cc +++ b/gnuradio-core/src/lib/filter/qa_gri_fir_filter_with_buffer_fsf.cc @@ -67,14 +67,31 @@ ref_dotprod (const i_type input[], const tap_type taps[], int ntaps) return (o_type)sum; } +void +qa_gri_fir_filter_with_buffer_fsf::t1 () +{ + test_decimate(1); +} + +void +qa_gri_fir_filter_with_buffer_fsf::t2 () +{ + test_decimate(2); +} + +void +qa_gri_fir_filter_with_buffer_fsf::t3 () +{ + test_decimate(5); +} + // // Test for ntaps in [0,9], and input lengths in [0,17]. // This ensures that we are building the shifted taps correctly, // and exercises all corner cases on input alignment and length. // - void -qa_gri_fir_filter_with_buffer_fsf::t1 () +qa_gri_fir_filter_with_buffer_fsf::test_decimate (unsigned int decimate) { const int MAX_TAPS = 9; const int OUTPUT_LEN = 17; @@ -101,11 +118,13 @@ qa_gri_fir_filter_with_buffer_fsf::t1 () // compute expected output values memset(dline, 0, INPUT_LEN*sizeof(i_type)); - for (int o = 0; o < ol; o++){ + for (int o = 0; o < (int)(ol/decimate); o++){ // use an actual delay line for this test - for(int oo = INPUT_LEN-1; oo > 0; oo--) - dline[oo] = dline[oo-1]; - dline[0] = input[o]; + for(int dd = 0; dd < (int)decimate; dd++) { + for(int oo = INPUT_LEN-1; oo > 0; oo--) + dline[oo] = dline[oo-1]; + dline[0] = input[decimate*o+dd]; + } expected_output[o] = ref_dotprod (dline, taps, n); } @@ -115,10 +134,10 @@ qa_gri_fir_filter_with_buffer_fsf::t1 () // zero the output, then do the filtering memset (actual_output, 0, sizeof (actual_output)); - f1->filterN (actual_output, input, ol); + f1->filterNdec (actual_output, input, ol/decimate, decimate); // check results - for (int o = 0; o < ol; o++){ + for (int o = 0; o < (int)(ol/decimate); o++){ CPPUNIT_ASSERT_EQUAL(expected_output[o], actual_output[o]); } delete f1; diff --git a/gnuradio-core/src/lib/filter/qa_gri_fir_filter_with_buffer_fsf.h b/gnuradio-core/src/lib/filter/qa_gri_fir_filter_with_buffer_fsf.h index 38899b352..9c901464e 100644 --- a/gnuradio-core/src/lib/filter/qa_gri_fir_filter_with_buffer_fsf.h +++ b/gnuradio-core/src/lib/filter/qa_gri_fir_filter_with_buffer_fsf.h @@ -29,13 +29,16 @@ class qa_gri_fir_filter_with_buffer_fsf : public CppUnit::TestCase { CPPUNIT_TEST_SUITE (qa_gri_fir_filter_with_buffer_fsf); CPPUNIT_TEST (t1); + CPPUNIT_TEST (t2); + CPPUNIT_TEST (t3); CPPUNIT_TEST_SUITE_END (); private: - + void test_decimate(unsigned int decimate); + void t1 (); - // void t2 (); - // void t3 (); + void t2 (); + void t3 (); }; diff --git a/gnuradio-core/src/lib/filter/qa_gri_fir_filter_with_buffer_scc.cc b/gnuradio-core/src/lib/filter/qa_gri_fir_filter_with_buffer_scc.cc index 4ba433ebf..03cd71022 100644 --- a/gnuradio-core/src/lib/filter/qa_gri_fir_filter_with_buffer_scc.cc +++ b/gnuradio-core/src/lib/filter/qa_gri_fir_filter_with_buffer_scc.cc @@ -80,14 +80,31 @@ ref_dotprod (const i_type input[], const tap_type taps[], int ntaps) return sum; } +void +qa_gri_fir_filter_with_buffer_scc::t1 () +{ + test_decimate(1); +} + +void +qa_gri_fir_filter_with_buffer_scc::t2 () +{ + test_decimate(2); +} + +void +qa_gri_fir_filter_with_buffer_scc::t3 () +{ + test_decimate(5); +} + // // Test for ntaps in [0,9], and input lengths in [0,17]. // This ensures that we are building the shifted taps correctly, // and exercises all corner cases on input alignment and length. // - void -qa_gri_fir_filter_with_buffer_scc::t1 () +qa_gri_fir_filter_with_buffer_scc::test_decimate (unsigned int decimate) { const int MAX_TAPS = 9; const int OUTPUT_LEN = 17; @@ -114,11 +131,13 @@ qa_gri_fir_filter_with_buffer_scc::t1 () // compute expected output values memset(dline, 0, INPUT_LEN*sizeof(i_type)); - for (int o = 0; o < ol; o++){ + for (int o = 0; o < (int)(ol/decimate); o++){ // use an actual delay line for this test - for(int oo = INPUT_LEN-1; oo > 0; oo--) - dline[oo] = dline[oo-1]; - dline[0] = input[o]; + for(int dd = 0; dd < (int)decimate; dd++) { + for(int oo = INPUT_LEN-1; oo > 0; oo--) + dline[oo] = dline[oo-1]; + dline[0] = input[decimate*o+dd]; + } expected_output[o] = ref_dotprod (dline, taps, n); } @@ -128,7 +147,7 @@ qa_gri_fir_filter_with_buffer_scc::t1 () // zero the output, then do the filtering memset (actual_output, 0, sizeof (actual_output)); - f1->filterN (actual_output, input, ol); + f1->filterNdec (actual_output, input, ol/decimate, decimate); // check results // @@ -137,7 +156,7 @@ qa_gri_fir_filter_with_buffer_scc::t1 () // arithmetic, while the SSE version is using 32 bit float point // arithmetic. - for (int o = 0; o < ol; o++){ + for (int o = 0; o < (int)(ol/decimate); o++){ CPPUNIT_ASSERT_COMPLEXES_EQUAL(expected_output[o], actual_output[o], abs (expected_output[o]) * ERR_DELTA); } diff --git a/gnuradio-core/src/lib/filter/qa_gri_fir_filter_with_buffer_scc.h b/gnuradio-core/src/lib/filter/qa_gri_fir_filter_with_buffer_scc.h index fd9fe5b76..970ca3749 100644 --- a/gnuradio-core/src/lib/filter/qa_gri_fir_filter_with_buffer_scc.h +++ b/gnuradio-core/src/lib/filter/qa_gri_fir_filter_with_buffer_scc.h @@ -29,13 +29,16 @@ class qa_gri_fir_filter_with_buffer_scc : public CppUnit::TestCase { CPPUNIT_TEST_SUITE (qa_gri_fir_filter_with_buffer_scc); CPPUNIT_TEST (t1); + CPPUNIT_TEST (t2); + CPPUNIT_TEST (t3); CPPUNIT_TEST_SUITE_END (); private: + void test_decimate(unsigned int decimate); void t1 (); - // void t2 (); - // void t3 (); + void t2 (); + void t3 (); }; diff --git a/gnuradio-core/src/lib/general/gr_fll_band_edge_cc.cc b/gnuradio-core/src/lib/general/gr_fll_band_edge_cc.cc index ff997e7a9..c32398e6d 100644 --- a/gnuradio-core/src/lib/general/gr_fll_band_edge_cc.cc +++ b/gnuradio-core/src/lib/general/gr_fll_band_edge_cc.cc @@ -161,8 +161,9 @@ gr_fll_band_edge_cc::work (int noutput_items, const gr_complex *in = (const gr_complex *) input_items[0]; gr_complex *out = (gr_complex *) output_items[0]; - float *frq, *phs; - gr_complex *err; + float *frq = NULL; + float *phs = NULL; + gr_complex *err = NULL; if(output_items.size() > 2) { frq = (float *) output_items[1]; phs = (float *) output_items[2]; diff --git a/gnuradio-core/src/lib/runtime/Makefile.am b/gnuradio-core/src/lib/runtime/Makefile.am index abd789a1d..f67e8843d 100644 --- a/gnuradio-core/src/lib/runtime/Makefile.am +++ b/gnuradio-core/src/lib/runtime/Makefile.am @@ -1,5 +1,5 @@ # -# Copyright 2003,2004,2007,2008,2009 Free Software Foundation, Inc. +# Copyright 2003,2004,2007,2008,2009,2010 Free Software Foundation, Inc. # # This file is part of GNU Radio # @@ -21,7 +21,7 @@ include $(top_srcdir)/Makefile.common -AM_CPPFLAGS = $(STD_DEFINES_AND_INCLUDES) $(CPPUNIT_INCLUDES) $(GRUEL_INCLUDES) $(WITH_INCLUDES) +AM_CPPFLAGS = $(GRUEL_INCLUDES) $(STD_DEFINES_AND_INCLUDES) $(CPPUNIT_INCLUDES) $(WITH_INCLUDES) noinst_LTLIBRARIES = libruntime.la libruntime-qa.la diff --git a/gnuradio-core/src/lib/swig/Makefile.am b/gnuradio-core/src/lib/swig/Makefile.am index 242f27d9c..1a50b8c8e 100644 --- a/gnuradio-core/src/lib/swig/Makefile.am +++ b/gnuradio-core/src/lib/swig/Makefile.am @@ -1,5 +1,5 @@ # -# Copyright 2001,2003,2004,2005,2006,2007,2008,2009 Free Software Foundation, Inc. +# Copyright 2001,2003,2004,2005,2006,2007,2008,2009,2010 Free Software Foundation, Inc. # # This file is part of GNU Radio # @@ -22,7 +22,7 @@ include $(top_srcdir)/Makefile.common if PYTHON -AM_CPPFLAGS = $(STD_DEFINES_AND_INCLUDES) $(PYTHON_CPPFLAGS) -I$(srcdir) \ +AM_CPPFLAGS = -I$(srcdir) $(STD_DEFINES_AND_INCLUDES) $(PYTHON_CPPFLAGS) \ $(WITH_INCLUDES) EXTRA_DIST = gen-swig-bug-fix diff --git a/gnuradio-examples/c++/dial_tone/Makefile.am b/gnuradio-examples/c++/dial_tone/Makefile.am index ea34beee8..188275fca 100644 --- a/gnuradio-examples/c++/dial_tone/Makefile.am +++ b/gnuradio-examples/c++/dial_tone/Makefile.am @@ -1,5 +1,5 @@ # -# Copyright 2006,2008,2009 Free Software Foundation, Inc. +# Copyright 2006,2008,2009,2010 Free Software Foundation, Inc. # # This file is part of GNU Radio # @@ -22,9 +22,10 @@ include $(top_srcdir)/Makefile.common # For compiling within the GNU Radio build tree -AM_CPPFLAGS=$(STD_DEFINES_AND_INCLUDES) \ - -I$(top_srcdir)/gr-audio-alsa/src \ - $(WITH_INCLUDES) +AM_CPPFLAGS = \ + -I$(top_srcdir)/gr-audio-alsa/src \ + $(STD_DEFINES_AND_INCLUDES) \ + $(WITH_INCLUDES) GR_AUDIO_ALSA_LA=$(top_builddir)/gr-audio-alsa/src/libgnuradio-audio-alsa.la diff --git a/gr-gcell/src/Makefile.am b/gr-gcell/src/Makefile.am index 63dc156b1..60ec6cc73 100644 --- a/gr-gcell/src/Makefile.am +++ b/gr-gcell/src/Makefile.am @@ -1,5 +1,5 @@ # -# Copyright 2008,2009 Free Software Foundation, Inc. +# Copyright 2008,2009,2010 Free Software Foundation, Inc. # # This file is part of GNU Radio # @@ -22,7 +22,7 @@ include $(top_srcdir)/Makefile.common SUBDIRS = . examples -AM_CPPFLAGS = $(STD_DEFINES_AND_INCLUDES) $(GCELL_INCLUDES) \ +AM_CPPFLAGS = $(GCELL_INCLUDES) $(STD_DEFINES_AND_INCLUDES) \ $(PYTHON_CPPFLAGS) $(WITH_INCLUDES) # ---------------------------------------------------------------- diff --git a/gr-noaa/swig/Makefile.am b/gr-noaa/swig/Makefile.am index 73645e92b..410b23fe6 100644 --- a/gr-noaa/swig/Makefile.am +++ b/gr-noaa/swig/Makefile.am @@ -1,5 +1,5 @@ # -# Copyright 2004,2005,2006,2008,2009 Free Software Foundation, Inc. +# Copyright 2004,2005,2006,2008,2009,2010 Free Software Foundation, Inc. # # This file is part of GNU Radio # @@ -22,10 +22,10 @@ include $(top_srcdir)/Makefile.common AM_CPPFLAGS = \ + -I$(top_srcdir)/gr-noaa/lib \ $(STD_DEFINES_AND_INCLUDES) \ $(PYTHON_CPPFLAGS) \ - $(WITH_INCLUDES) \ - -I$(top_srcdir)/gr-noaa/lib + $(WITH_INCLUDES) if PYTHON # ---------------------------------------------------------------- diff --git a/gr-pager/swig/Makefile.am b/gr-pager/swig/Makefile.am index 9e1a45219..c59bdb0f2 100644 --- a/gr-pager/swig/Makefile.am +++ b/gr-pager/swig/Makefile.am @@ -1,5 +1,5 @@ # -# Copyright 2004,2005,2006,2008,2009 Free Software Foundation, Inc. +# Copyright 2004,2005,2006,2008,2009,2010 Free Software Foundation, Inc. # # This file is part of GNU Radio # @@ -22,10 +22,10 @@ include $(top_srcdir)/Makefile.common AM_CPPFLAGS = \ + -I$(top_srcdir)/gr-pager/lib \ $(STD_DEFINES_AND_INCLUDES) \ $(PYTHON_CPPFLAGS) \ - $(WITH_INCLUDES) \ - -I$(top_srcdir)/gr-pager/lib + $(WITH_INCLUDES) ############################## # SWIG interface and library diff --git a/gr-qtgui/src/lib/Makefile.am b/gr-qtgui/src/lib/Makefile.am index 4ba637ad6..1ee3c8e3d 100644 --- a/gr-qtgui/src/lib/Makefile.am +++ b/gr-qtgui/src/lib/Makefile.am @@ -21,8 +21,8 @@ include $(top_srcdir)/Makefile.common -AM_CPPFLAGS = $(STD_DEFINES_AND_INCLUDES) $(PYTHON_CPPFLAGS) \ - $(QT_INCLUDES) -I. $(WITH_INCLUDES) +AM_CPPFLAGS = -I. $(STD_DEFINES_AND_INCLUDES) $(PYTHON_CPPFLAGS) \ + $(QT_INCLUDES) $(WITH_INCLUDES) # Only include these files in the build if qtgui passes configure checks # This is mostly to help make distcheck pass diff --git a/gr-usrp/apps/Makefile.am b/gr-usrp/apps/Makefile.am index 92938061f..0f3a21bb4 100644 --- a/gr-usrp/apps/Makefile.am +++ b/gr-usrp/apps/Makefile.am @@ -1,5 +1,5 @@ # -# Copyright 2008,2009 Free Software Foundation, Inc. +# Copyright 2008,2009,2010 Free Software Foundation, Inc. # # This file is part of GNU Radio # @@ -22,19 +22,20 @@ include $(top_srcdir)/Makefile.common # For compiling within the GNU Radio build tree -AM_CPPFLAGS=$(STD_DEFINES_AND_INCLUDES) \ - -I$(top_srcdir)/gr-usrp/src \ - $(USRP_INCLUDES) \ - $(WITH_INCLUDES) +AM_CPPFLAGS = \ + -I$(top_srcdir)/gr-usrp/src \ + $(USRP_INCLUDES) \ + $(STD_DEFINES_AND_INCLUDES) \ + $(WITH_INCLUDES) GR_USRP_LA=$(top_builddir)/gr-usrp/src/libgnuradio-usrp.la # For compiling outside the tree, these will get fished out by pkgconfig LDADD = \ + $(GR_USRP_LA) \ $(BOOST_LDFLAGS) \ - $(BOOST_PROGRAM_OPTIONS_LIB) \ - $(GR_USRP_LA) + $(BOOST_PROGRAM_OPTIONS_LIB) noinst_PROGRAMS = \ usrp_rx_cfile \ diff --git a/gr-usrp/src/Makefile.am b/gr-usrp/src/Makefile.am index 572a22485..db5be4ade 100644 --- a/gr-usrp/src/Makefile.am +++ b/gr-usrp/src/Makefile.am @@ -1,5 +1,5 @@ # -# Copyright 2004,2005,2006,2008,2009 Free Software Foundation, Inc. +# Copyright 2004,2005,2006,2008,2009,2010 Free Software Foundation, Inc. # # This file is part of GNU Radio # @@ -34,9 +34,9 @@ noinst_PYTHON = qa_usrp.py # The straight C++ library AM_CPPFLAGS = \ + $(USRP_INCLUDES) \ $(STD_DEFINES_AND_INCLUDES) \ $(PYTHON_CPPFLAGS) \ - $(USRP_INCLUDES) \ $(USB_INCLUDES) \ $(WITH_INCLUDES) diff --git a/gr-usrp2/src/Makefile.am b/gr-usrp2/src/Makefile.am index 03b6d0dd9..0d55d73ba 100644 --- a/gr-usrp2/src/Makefile.am +++ b/gr-usrp2/src/Makefile.am @@ -1,5 +1,5 @@ # -# Copyright 2004,2005,2006,2008,2009 Free Software Foundation, Inc. +# Copyright 2004,2005,2006,2008,2009,2010 Free Software Foundation, Inc. # # This file is part of GNU Radio # @@ -42,10 +42,10 @@ DISTCLEANFILES = run_tests # libgr-usrp.so # ---------------------------------------------------------------------- AM_CPPFLAGS = \ - $(STD_DEFINES_AND_INCLUDES) \ $(GRUEL_INCLUDES) \ - $(PYTHON_CPPFLAGS) \ $(USRP2_INCLUDES) \ + $(STD_DEFINES_AND_INCLUDES) \ + $(PYTHON_CPPFLAGS) \ $(WITH_INCLUDES) lib_LTLIBRARIES = libgnuradio-usrp2.la diff --git a/gruel/src/lib/Makefile.am b/gruel/src/lib/Makefile.am index 1bcd26e90..5c3302f19 100644 --- a/gruel/src/lib/Makefile.am +++ b/gruel/src/lib/Makefile.am @@ -23,8 +23,8 @@ include $(top_srcdir)/Makefile.common SUBDIRS = pmt msg -AM_CPPFLAGS = $(DEFINES) $(BOOST_CPPFLAGS) $(CPPUNIT_INCLUDES) $(GRUEL_INCLUDES) $(WITH_INCLUDES) - +AM_CPPFLAGS = $(DEFINES) $(GRUEL_INCLUDES) $(BOOST_CPPFLAGS) \ + $(CPPUNIT_INCLUDES) $(WITH_INCLUDES) TESTS = test_gruel diff --git a/gruel/src/lib/msg/Makefile.am b/gruel/src/lib/msg/Makefile.am index 13a657067..9dbaf10f5 100644 --- a/gruel/src/lib/msg/Makefile.am +++ b/gruel/src/lib/msg/Makefile.am @@ -1,5 +1,5 @@ # -# Copyright 2009 Free Software Foundation, Inc. +# Copyright 2009,2010 Free Software Foundation, Inc. # # This file is part of GNU Radio # @@ -21,7 +21,8 @@ include $(top_srcdir)/Makefile.common -AM_CPPFLAGS = $(DEFINES) $(BOOST_CPPFLAGS) $(GRUEL_INCLUDES) $(WITH_INCLUDES) +AM_CPPFLAGS = $(DEFINES) $(GRUEL_INCLUDES) \ + $(BOOST_CPPFLAGS) $(WITH_INCLUDES) noinst_LTLIBRARIES = libmsg.la diff --git a/gruel/src/lib/pmt/Makefile.am b/gruel/src/lib/pmt/Makefile.am index 8750cbdf8..d3efc1afa 100644 --- a/gruel/src/lib/pmt/Makefile.am +++ b/gruel/src/lib/pmt/Makefile.am @@ -1,5 +1,5 @@ # -# Copyright 2008,2009 Free Software Foundation, Inc. +# Copyright 2008,2009,2010 Free Software Foundation, Inc. # # This file is part of GNU Radio # @@ -21,8 +21,8 @@ include $(top_srcdir)/Makefile.common -AM_CPPFLAGS = $(DEFINES) $(BOOST_CPPFLAGS) $(CPPUNIT_INCLUDES) $(GRUEL_INCLUDES) $(WITH_INCLUDES) - +AM_CPPFLAGS = $(DEFINES) $(GRUEL_INCLUDES) $(BOOST_CPPFLAGS) \ + $(CPPUNIT_INCLUDES) $(WITH_INCLUDES) noinst_LTLIBRARIES = libpmt.la diff --git a/usrp/host/lib/Makefile.am b/usrp/host/lib/Makefile.am index 23889fc85..b8b60fa98 100644 --- a/usrp/host/lib/Makefile.am +++ b/usrp/host/lib/Makefile.am @@ -33,7 +33,7 @@ libusrp_la_common_LIBADD = \ # darwin fusb requires gruel (for threading) if FUSB_TECH_darwin -AM_CPPFLAGS = $(common_INCLUDES) $(GRUEL_INCLUDES) $(BOOST_CPPFLAGS) $(WITH_INCLUDES) +AM_CPPFLAGS = $(GRUEL_INCLUDES) $(common_INCLUDES) $(BOOST_CPPFLAGS) $(WITH_INCLUDES) libusrp_la_LIBADD = $(libusrp_la_common_LIBADD) $(GRUEL_LA) libusrp_la_LDFLAGS = $(libusrp_la_common_LDFLAGS) -framework CoreFoundation else diff --git a/usrp/host/swig/Makefile.am b/usrp/host/swig/Makefile.am index d2e6b8bc1..c846f267b 100644 --- a/usrp/host/swig/Makefile.am +++ b/usrp/host/swig/Makefile.am @@ -1,5 +1,5 @@ # -# Copyright 2001,2003,2004,2006,2007,2008,2009 Free Software Foundation, Inc. +# Copyright 2001,2003,2004,2006,2007,2008,2009,2010 Free Software Foundation, Inc. # # This file is part of GNU Radio # @@ -23,8 +23,8 @@ include $(top_srcdir)/Makefile.common AM_CPPFLAGS = \ $(USRP_INCLUDES) \ - $(PYTHON_CPPFLAGS) \ -I$(srcdir) \ + $(PYTHON_CPPFLAGS) \ $(USB_INCLUDES) \ $(WITH_INCLUDES) diff --git a/usrp2/host/apps/Makefile.am b/usrp2/host/apps/Makefile.am index 4a26898fa..087ab9e31 100644 --- a/usrp2/host/apps/Makefile.am +++ b/usrp2/host/apps/Makefile.am @@ -1,5 +1,5 @@ # -# Copyright 2007, 2008 Free Software Foundation, Inc. +# Copyright 2007,2008,2010 Free Software Foundation, Inc. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -19,9 +19,9 @@ include $(top_srcdir)/Makefile.common AM_CPPFLAGS = \ $(USRP2_INCLUDES) \ + $(GRUEL_INCLUDES) \ $(STD_DEFINES_AND_INCLUDES) \ - $(CPPUNIT_INCLUDES) \ - $(GRUEL_INCLUDES) + $(CPPUNIT_INCLUDES) LDADD = \ $(USRP2_LA) \ diff --git a/usrp2/host/lib/Makefile.am b/usrp2/host/lib/Makefile.am index 209cb7095..85bec4673 100644 --- a/usrp2/host/lib/Makefile.am +++ b/usrp2/host/lib/Makefile.am @@ -19,10 +19,10 @@ include $(top_srcdir)/Makefile.common AM_CPPFLAGS = \ $(USRP2_INCLUDES) \ - $(BOOST_CPPFLAGS) \ + $(GRUEL_INCLUDES) \ $(STD_DEFINES_AND_INCLUDES) \ - $(CPPUNIT_INCLUDES) \ - $(GRUEL_INCLUDES) + $(BOOST_CPPFLAGS) \ + $(CPPUNIT_INCLUDES) bin_PROGRAMS = usrp2_socket_opener usrp2_socket_opener_SOURCES = usrp2_socket_opener.cc |