summaryrefslogtreecommitdiff
path: root/gr-analog/lib
diff options
context:
space:
mode:
Diffstat (limited to 'gr-analog/lib')
-rw-r--r--gr-analog/lib/CMakeLists.txt18
-rw-r--r--gr-analog/lib/gnuradio-analog.rc.in55
-rw-r--r--gr-analog/lib/plateau_detector_fb_impl.cc82
-rw-r--r--gr-analog/lib/plateau_detector_fb_impl.h50
4 files changed, 204 insertions, 1 deletions
diff --git a/gr-analog/lib/CMakeLists.txt b/gr-analog/lib/CMakeLists.txt
index f7d6723b4e..396ff04654 100644
--- a/gr-analog/lib/CMakeLists.txt
+++ b/gr-analog/lib/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2012 Free Software Foundation, Inc.
+# Copyright 2012-2013 Free Software Foundation, Inc.
#
# This file is part of GNU Radio
#
@@ -121,6 +121,7 @@ list(APPEND analog_sources
fmdet_cf_impl.cc
frequency_modulator_fc_impl.cc
phase_modulator_fc_impl.cc
+ plateau_detector_fb_impl.cc
pll_carriertracking_cc_impl.cc
pll_freqdet_cf_impl.cc
pll_refout_cc_impl.cc
@@ -135,6 +136,21 @@ list(APPEND analog_sources
sincos.cc
)
+#Add Windows DLL resource file if using MSVC
+IF(MSVC)
+ include(${CMAKE_SOURCE_DIR}/cmake/Modules/GrVersion.cmake)
+
+ configure_file(
+ ${CMAKE_CURRENT_SOURCE_DIR}/gnuradio-analog.rc.in
+ ${CMAKE_CURRENT_BINARY_DIR}/gnuradio-analog.rc
+ @ONLY)
+
+ list(APPEND analog_sources
+ ${CMAKE_CURRENT_BINARY_DIR}/gnuradio-analog.rc
+ )
+
+ENDIF(MSVC)
+
list(APPEND analog_libs
volk
gnuradio-core
diff --git a/gr-analog/lib/gnuradio-analog.rc.in b/gr-analog/lib/gnuradio-analog.rc.in
new file mode 100644
index 0000000000..7c8c1919f0
--- /dev/null
+++ b/gr-analog/lib/gnuradio-analog.rc.in
@@ -0,0 +1,55 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2013 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include <afxres.h>
+
+VS_VERSION_INFO VERSIONINFO
+ FILEVERSION @MAJOR_VERSION@,@API_COMPAT@,@RC_MINOR_VERSION@,@RC_MAINT_VERSION@
+ PRODUCTVERSION @MAJOR_VERSION@,@API_COMPAT@,@RC_MINOR_VERSION@,@RC_MAINT_VERSION@
+ FILEFLAGSMASK 0x3fL
+#ifndef NDEBUG
+ FILEFLAGS 0x0L
+#else
+ FILEFLAGS 0x1L
+#endif
+ FILEOS VOS__WINDOWS32
+ FILETYPE VFT_DLL
+ FILESUBTYPE VFT2_DRV_INSTALLABLE
+ BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "040904b0"
+ BEGIN
+ VALUE "FileDescription", "gnuradio-analog"
+ VALUE "FileVersion", "@VERSION@"
+ VALUE "InternalName", "gnuradio-analog.dll"
+ VALUE "LegalCopyright", "Licensed under GPLv3 or any later version"
+ VALUE "OriginalFilename", "gnuradio-analog.dll"
+ VALUE "ProductName", "gnuradio-analog"
+ VALUE "ProductVersion", "@VERSION@"
+ END
+ END
+ BLOCK "VarFileInfo"
+ BEGIN
+ VALUE "Translation", 0x409, 1200
+ END
+ END
diff --git a/gr-analog/lib/plateau_detector_fb_impl.cc b/gr-analog/lib/plateau_detector_fb_impl.cc
new file mode 100644
index 0000000000..0d2890bc55
--- /dev/null
+++ b/gr-analog/lib/plateau_detector_fb_impl.cc
@@ -0,0 +1,82 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2012 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <gr_io_signature.h>
+#include "plateau_detector_fb_impl.h"
+
+namespace gr {
+ namespace analog {
+
+plateau_detector_fb::sptr
+plateau_detector_fb::make(int max_len, float threshold)
+{
+ return gnuradio::get_initial_sptr (new plateau_detector_fb_impl(max_len, threshold));
+}
+
+plateau_detector_fb_impl::plateau_detector_fb_impl(int max_len, float threshold)
+ : gr_sync_block("plateau_detector_fb",
+ gr_make_io_signature(1, 1, sizeof (float)),
+ gr_make_io_signature(1, 1, sizeof (char))),
+ d_max_len(max_len),
+ d_threshold(threshold)
+{}
+
+plateau_detector_fb_impl::~plateau_detector_fb_impl()
+{
+}
+
+int
+plateau_detector_fb_impl::work(int noutput_items,
+ gr_vector_const_void_star &input_items,
+ gr_vector_void_star &output_items)
+{
+ const float *in = (const float *) input_items[0];
+ unsigned char *out = (unsigned char *) output_items[0];
+ int flank_start;
+
+ memset((void *) out, 0x00, noutput_items);
+ int i;
+ for (i = 0; i < noutput_items; i++) {
+ if (in[i] >= d_threshold) {
+ if (noutput_items-i < 2*d_max_len) { // If we can't finish, come back later
+ break;
+ }
+ flank_start = i;
+ while (i < noutput_items && in[i] >= d_threshold)
+ i++;
+ if ((i - flank_start) > 1) { // 1 Sample is not a plateau
+ out[flank_start + (i-flank_start)/2] = 1;
+ i = std::min(i+d_max_len, noutput_items-1);
+ }
+ }
+ }
+
+ return i;
+}
+
+ } /* namespace analog */
+} /* namespace gr */
+
diff --git a/gr-analog/lib/plateau_detector_fb_impl.h b/gr-analog/lib/plateau_detector_fb_impl.h
new file mode 100644
index 0000000000..daf1dd56d9
--- /dev/null
+++ b/gr-analog/lib/plateau_detector_fb_impl.h
@@ -0,0 +1,50 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2012 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_ANALOG_PLATEAU_DETECTOR_FB_IMPL_H
+#define INCLUDED_ANALOG_PLATEAU_DETECTOR_FB_IMPL_H
+
+#include <analog/plateau_detector_fb.h>
+
+namespace gr {
+ namespace analog {
+
+class plateau_detector_fb_impl : public plateau_detector_fb
+{
+ private:
+ int d_max_len;
+ float d_threshold;
+
+ public:
+ plateau_detector_fb_impl(int max_len, float threshold);
+ ~plateau_detector_fb_impl();
+
+ int work(int noutput_items,
+ gr_vector_const_void_star &input_items,
+ gr_vector_void_star &output_items);
+};
+
+ } // namespace analog
+} // namespace gr
+
+#endif /* INCLUDED_ANALOG_PLATEAU_DETECTOR_FB_IMPL_H */
+