diff options
Diffstat (limited to 'gr-wxgui/lib')
-rw-r--r-- | gr-wxgui/lib/CMakeLists.txt | 98 | ||||
-rw-r--r-- | gr-wxgui/lib/gnuradio-wxgui.rc.in | 54 | ||||
-rw-r--r-- | gr-wxgui/lib/histo_sink_f_impl.cc | 186 | ||||
-rw-r--r-- | gr-wxgui/lib/histo_sink_f_impl.h | 63 | ||||
-rw-r--r-- | gr-wxgui/lib/oscope_guts.cc | 439 | ||||
-rw-r--r-- | gr-wxgui/lib/oscope_sink_f_impl.cc | 83 | ||||
-rw-r--r-- | gr-wxgui/lib/oscope_sink_f_impl.h | 51 | ||||
-rw-r--r-- | gr-wxgui/lib/oscope_sink_x.cc | 161 |
8 files changed, 0 insertions, 1135 deletions
diff --git a/gr-wxgui/lib/CMakeLists.txt b/gr-wxgui/lib/CMakeLists.txt deleted file mode 100644 index 2f1f6135f3..0000000000 --- a/gr-wxgui/lib/CMakeLists.txt +++ /dev/null @@ -1,98 +0,0 @@ -# Copyright 2012-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. - -######################################################################## -# Setup the include and linker paths -######################################################################## -include_directories( - ${CMAKE_CURRENT_SOURCE_DIR} - ${CMAKE_CURRENT_BINARY_DIR} - ${CMAKE_CURRENT_BINARY_DIR}/../include - ${GR_WXGUI_INCLUDE_DIRS} - ${GNURADIO_RUNTIME_INCLUDE_DIRS} - ${VOLK_INCLUDE_DIRS} - ${Boost_INCLUDE_DIRS} -) - -link_directories(${Boost_LIBRARY_DIRS}) - -if(ENABLE_GR_CTRLPORT) - ADD_DEFINITIONS(-DGR_CTRLPORT) -endif(ENABLE_GR_CTRLPORT) - -######################################################################## -# Setup library -######################################################################## -list(APPEND gr_wxgui_sources - histo_sink_f_impl.cc - oscope_guts.cc - oscope_sink_x.cc - oscope_sink_f_impl.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-wxgui.rc.in - ${CMAKE_CURRENT_BINARY_DIR}/gnuradio-wxgui.rc - @ONLY) - - list(APPEND gr_wxgui_sources - ${CMAKE_CURRENT_BINARY_DIR}/gnuradio-wxgui.rc - ) -ENDIF(MSVC) - -list(APPEND wxgui_libs - gnuradio-runtime - ${VOLK_LIBRARIES} - ${Boost_LIBRARIES} - ${BLOCKS_LIBRARIES} - ${LOG4CPP_LIBRARIES} -) - -add_library(gnuradio-wxgui SHARED ${gr_wxgui_sources}) - -target_link_libraries(gnuradio-wxgui ${wxgui_libs}) -GR_LIBRARY_FOO(gnuradio-wxgui) - -if(ENABLE_STATIC_LIBS) - if(ENABLE_GR_CTRLPORT) - # Remove GR_CTRLPORT set this target's definitions. - # Makes sure we don't try to use ControlPort stuff in source files - GET_DIRECTORY_PROPERTY(STATIC_DEFS COMPILE_DEFINITIONS) - list(REMOVE_ITEM STATIC_DEFS "GR_CTRLPORT") - SET_PROPERTY(DIRECTORY PROPERTY COMPILE_DEFINITIONS "${STATIC_DEFS}") - - # readd it to the target since we removed it from the directory-wide list. - SET_PROPERTY(TARGET gnuradio-wxgui APPEND PROPERTY COMPILE_DEFINITIONS "GR_CTRLPORT") - endif(ENABLE_GR_CTRLPORT) - - add_library(gnuradio-wxgui_static STATIC ${gr_wxgui_sources}) - - if(NOT WIN32) - set_target_properties(gnuradio-wxgui_static - PROPERTIES OUTPUT_NAME gnuradio-wxgui) - endif(NOT WIN32) - - install(TARGETS gnuradio-wxgui_static - ARCHIVE DESTINATION lib${LIB_SUFFIX} # .lib file - ) -endif(ENABLE_STATIC_LIBS) diff --git a/gr-wxgui/lib/gnuradio-wxgui.rc.in b/gr-wxgui/lib/gnuradio-wxgui.rc.in deleted file mode 100644 index 126db75091..0000000000 --- a/gr-wxgui/lib/gnuradio-wxgui.rc.in +++ /dev/null @@ -1,54 +0,0 @@ -/* -*- 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-blocks" - VALUE "FileVersion", "@VERSION@" - VALUE "InternalName", "gnuradio-blocks.dll" - VALUE "LegalCopyright", "Licensed under GPLv3 or any later version" - VALUE "OriginalFilename", "gnuradio-blocks.dll" - VALUE "ProductName", "gnuradio-blocks" - VALUE "ProductVersion", "@VERSION@" - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x409, 1200 - END - END diff --git a/gr-wxgui/lib/histo_sink_f_impl.cc b/gr-wxgui/lib/histo_sink_f_impl.cc deleted file mode 100644 index f10540fa36..0000000000 --- a/gr-wxgui/lib/histo_sink_f_impl.cc +++ /dev/null @@ -1,186 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2009-2011,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. - */ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include "histo_sink_f_impl.h" -#include <gnuradio/io_signature.h> -#include <boost/math/special_functions/round.hpp> - -namespace gr { - namespace wxgui { - - static float get_clean_num(float num) - { - if(num == 0) - return 0; - /* extract sign and exponent from num */ - int sign = (num < 0) ? -1 : 1; num = fabs(num); - float exponent = floor(log10(num)); - /* search for closest number with base 1, 2, 5, 10 */ - float closest_num = 10*pow(10, exponent); - if(fabs(num - 1*pow(10, exponent)) < fabs(num - closest_num)) - closest_num = 1*pow(10, exponent); - if(fabs(num - 2*pow(10, exponent)) < fabs(num - closest_num)) - closest_num = 2*pow(10, exponent); - if(fabs(num - 5*pow(10, exponent)) < fabs(num - closest_num)) - closest_num = 5*pow(10, exponent); - return sign*closest_num; - } - - histo_sink_f::sptr - histo_sink_f::make(msg_queue::sptr msgq) - { - return gnuradio::get_initial_sptr - (new histo_sink_f_impl(msgq)); - } - - histo_sink_f_impl::histo_sink_f_impl(msg_queue::sptr msgq) - : sync_block("histo_sink_f", - io_signature::make(1, 1, sizeof(float)), - io_signature::make(0, 0, 0)), - d_msgq(msgq), d_num_bins(11), d_frame_size(1000), - d_sample_count(0), d_bins(NULL), d_samps(NULL) - { - //allocate arrays and clear - set_num_bins(d_num_bins); - set_frame_size(d_frame_size); - } - - histo_sink_f_impl::~histo_sink_f_impl(void) - { - delete [] d_samps; - delete [] d_bins; - } - - int - histo_sink_f_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]; - gr::thread::scoped_lock guard(d_mutex); // hold mutex for duration of this function - for(unsigned int i = 0; i < (unsigned int)noutput_items; i++) { - d_samps[d_sample_count] = in[i]; - d_sample_count++; - /* processed a frame? */ - if(d_sample_count == d_frame_size) { - send_frame(); - clear(); - } - } - return noutput_items; - } - - void - histo_sink_f_impl::send_frame(void) - { - /* output queue full, drop the data */ - if(d_msgq->full_p()) - return; - /* find the minimum and maximum */ - float minimum = d_samps[0]; - float maximum = d_samps[0]; - for(unsigned int i = 0; i < d_frame_size; i++) { - if(d_samps[i] < minimum) minimum = d_samps[i]; - if(d_samps[i] > maximum) maximum = d_samps[i]; - } - minimum = get_clean_num(minimum); - maximum = get_clean_num(maximum); - if(minimum == maximum || minimum > maximum) - return; //useless data or screw up? - /* load the bins */ - int index; - float bin_width = (maximum - minimum)/(d_num_bins-1); - for(unsigned int i = 0; i < d_sample_count; i++) { - index = boost::math::iround((d_samps[i] - minimum)/bin_width); - /* ensure the index range in case a small floating point error is involed */ - if(index < 0) - index = 0; - if(index >= (int)d_num_bins) - index = d_num_bins-1; - d_bins[index]++; - } - /* Build a message to hold the output records */ - message::sptr msg = message::make(0, minimum, maximum, d_num_bins*sizeof(float)); - float *out = (float *)msg->msg(); // get pointer to raw message buffer - /* normalize the bins and put into message */ - for(unsigned int i = 0; i < d_num_bins; i++) { - out[i] = ((float)d_bins[i])/d_frame_size; - } - /* send the message */ - d_msgq->handle(msg); - } - - void - histo_sink_f_impl::clear(void) - { - d_sample_count = 0; - /* zero the bins */ - for(unsigned int i = 0; i < d_num_bins; i++) { - d_bins[i] = 0; - } - } - - /************************************************** - * Getters - **************************************************/ - unsigned int - histo_sink_f_impl::get_frame_size(void) - { - return d_frame_size; - } - - unsigned int - histo_sink_f_impl::get_num_bins(void) - { - return d_num_bins; - } - - /************************************************** - * Setters - **************************************************/ - void - histo_sink_f_impl::set_frame_size(unsigned int frame_size) - { - gr::thread::scoped_lock guard(d_mutex); // hold mutex for duration of this function - d_frame_size = frame_size; - /* allocate a new sample array */ - delete [] d_samps; - d_samps = new float[d_frame_size]; - clear(); - } - - void - histo_sink_f_impl::set_num_bins(unsigned int num_bins) { - gr::thread::scoped_lock guard(d_mutex); // hold mutex for duration of this function - d_num_bins = num_bins; - /* allocate a new bin array */ - delete [] d_bins; - d_bins = new unsigned int[d_num_bins]; - clear(); - } - - } /* namespace wxgui */ -} /* namespace gr */ diff --git a/gr-wxgui/lib/histo_sink_f_impl.h b/gr-wxgui/lib/histo_sink_f_impl.h deleted file mode 100644 index 6c16a8a465..0000000000 --- a/gr-wxgui/lib/histo_sink_f_impl.h +++ /dev/null @@ -1,63 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2009,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. - */ - -#ifndef INCLUDED_GR_HISTO_SINK_F_IMPL_H -#define INCLUDED_GR_HISTO_SINK_F_IMPL_H - -#include <gnuradio/wxgui/histo_sink_f.h> - -namespace gr { - namespace wxgui { - - class histo_sink_f_impl : public histo_sink_f - { - private: - msg_queue::sptr d_msgq; - unsigned int d_num_bins; - unsigned int d_frame_size; - unsigned int d_sample_count; - unsigned int *d_bins; - float *d_samps; - gr::thread::mutex d_mutex; - - void send_frame(void); - void clear(void); - - public: - histo_sink_f_impl(msg_queue::sptr msgq); - ~histo_sink_f_impl(void); - - int work(int noutput_items, - gr_vector_const_void_star &input_items, - gr_vector_void_star &output_items); - - unsigned int get_frame_size(void); - unsigned int get_num_bins(void); - - void set_frame_size(unsigned int frame_size); - void set_num_bins(unsigned int num_bins); - }; - - } /* namespace wxgui */ -} /* namespace gr */ - -#endif /* INCLUDED_GR_HISTO_SINK_F_IMPL_H */ diff --git a/gr-wxgui/lib/oscope_guts.cc b/gr-wxgui/lib/oscope_guts.cc deleted file mode 100644 index 3e826ff386..0000000000 --- a/gr-wxgui/lib/oscope_guts.cc +++ /dev/null @@ -1,439 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2003,2005,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. - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -#include <gnuradio/wxgui/oscope_guts.h> -#include <stdexcept> -#include <stdio.h> -#include <algorithm> -#include <unistd.h> -#include <math.h> -#include <assert.h> - -namespace gr { - namespace wxgui { - - /* - * Bad performance if it's large, and flaky triggering if it's too small - */ - static const int OUTPUT_RECORD_SIZE = 1024; // Must be power of 2 - - /* - * For (slow-updated) STRIPCHART triggering, we make the record - * size larger, since we potentially want to be able to "see" - * hours of data. This works as long as the update rates to a - * STRIPCHART are low, which they generally are--that's rather - * what a stripchart is all about! - */ - static const int SCHART_MULT = 8; - - - static inline int - wrap_bi(int buffer_index, int mx) // wrap buffer index - { - return buffer_index & (mx - 1); - } - - static inline int - incr_bi(int buffer_index, int mx) // increment buffer index - { - return wrap_bi(buffer_index + 1, mx); - } - - static inline int - decr_bi(int buffer_index, int mx) // decrement buffer index - { - return wrap_bi(buffer_index - 1, mx); - } - - oscope_guts::oscope_guts(double sample_rate, msg_queue::sptr msgq) - : d_nchannels(1), - d_msgq(msgq), - d_trigger_mode(TRIG_MODE_AUTO), - d_trigger_slope(TRIG_SLOPE_POS), - d_trigger_channel(0), - d_sample_rate(sample_rate), - d_update_rate(20), - d_trigger_level(0), - d_obi(0), - d_state(HOLD_OFF), - d_decimator_count(0), - d_decimator_count_init(1), - d_hold_off_count(0), - d_hold_off_count_init(OUTPUT_RECORD_SIZE/2-1), - d_pre_trigger_count(0), - d_post_trigger_count(0), - d_post_trigger_count_init(OUTPUT_RECORD_SIZE/2) - { - for(int i = 0; i < MAX_CHANNELS; i++) - d_buffer[i] = 0; - - for(int i = 0; i < MAX_CHANNELS; i++) { - d_buffer[i] = new float[OUTPUT_RECORD_SIZE*SCHART_MULT]; - for(int j = 0; j < OUTPUT_RECORD_SIZE*SCHART_MULT; j++) - d_buffer[i][j] = 0.0; - } - - // be sure buffer is full before first write - enter_hold_off(); - update_rate_or_decimation_changed(); - } - - oscope_guts::~oscope_guts() - { - for(int i = 0; i < MAX_CHANNELS; i++) - delete [] d_buffer[i]; - } - - // MANIPULATORS - void - oscope_guts::process_sample(const float *channel_data) - { - d_decimator_count--; - if(d_decimator_count > 0) - return; - - d_decimator_count = d_decimator_count_init; - - if(d_trigger_mode != TRIG_MODE_STRIPCHART) { - for(int i = 0; i < d_nchannels; i++) - d_buffer[i][d_obi] = channel_data[i]; // copy data into buffer - - switch(d_state) { - case HOLD_OFF: - d_hold_off_count--; - if(d_hold_off_count <= 0) - enter_look_for_trigger (); - break; - - case LOOK_FOR_TRIGGER: - if(found_trigger()) - enter_post_trigger(); - break; - - case POST_TRIGGER: - d_post_trigger_count--; - if(d_post_trigger_count <= 0) { - write_output_records(); - enter_hold_off(); - } - break; - - default: - assert(0); - } - - d_obi = incr_bi(d_obi, OUTPUT_RECORD_SIZE); - } - else { - for(int i = 0; i < d_nchannels; i++) { - for(int j = (OUTPUT_RECORD_SIZE*SCHART_MULT)-1; j > 0; j--) { - d_buffer[i][j] = d_buffer[i][j-1]; - } - d_buffer[i][0] = channel_data[i]; - } - d_trigger_off = 0; - write_output_records(); - } - } - - /* - * Functions called on state entry - */ - - void - oscope_guts::enter_hold_off() - { - d_state = HOLD_OFF; - d_hold_off_count = d_hold_off_count_init; - } - - void - oscope_guts::enter_look_for_trigger() - { - d_pre_trigger_count = 0; - d_state = LOOK_FOR_TRIGGER; - } - - void - oscope_guts::enter_post_trigger() - { - d_state = POST_TRIGGER; - d_post_trigger_count = d_post_trigger_count_init; - //ensure that the trigger offset is no more than than half a sample - if(d_trigger_off > .5) - d_trigger_off -= 1; - else - d_post_trigger_count--; - } - - // ---------------------------------------------------------------- - // returns true if trigger found - - bool - oscope_guts::found_trigger() - { - int mx = d_trigger_mode == TRIG_MODE_STRIPCHART ? OUTPUT_RECORD_SIZE*SCHART_MULT : - OUTPUT_RECORD_SIZE; - - float prev_sample = d_buffer[d_trigger_channel][decr_bi(d_obi, mx)]; - float new_sample = d_buffer[d_trigger_channel][d_obi]; - - switch(d_trigger_mode) { - - case TRIG_MODE_AUTO: //too many samples without a trigger - d_pre_trigger_count++; - if(d_pre_trigger_count > OUTPUT_RECORD_SIZE/2) - return true; - - case TRIG_MODE_NORM: //look for trigger - switch(d_trigger_slope) { - - case TRIG_SLOPE_POS: //trigger point in pos slope? - if(new_sample < d_trigger_level || prev_sample >= d_trigger_level) - return false; - break; - - case TRIG_SLOPE_NEG: //trigger point in neg slope? - if(new_sample > d_trigger_level || prev_sample <= d_trigger_level) - return false; - break; - } - - //calculate the trigger offset in % sample - d_trigger_off = (d_trigger_level - prev_sample)/(new_sample - prev_sample); - return true; - - case TRIG_MODE_FREE: //free run mode, always trigger - d_trigger_off = 0; - return true; - - default: - assert(0); - return false; - } - } - - // ---------------------------------------------------------------- - // write output records (duh!) - - void - oscope_guts::write_output_records() - { - int mx; - - mx = d_trigger_mode == TRIG_MODE_STRIPCHART ? - OUTPUT_RECORD_SIZE*SCHART_MULT : OUTPUT_RECORD_SIZE; - - // if the output queue if full, drop the data like its hot. - if(d_msgq->full_p()) - return; - // Build a message to hold the output records - message::sptr msg = - message::make(0, // msg type - d_nchannels, // arg1 for other side - mx, // arg2 for other side - ((d_nchannels * mx) + 1) * sizeof(float)); // sizeof payload - - float *out = (float *)msg->msg(); // get pointer to raw message buffer - - for(int ch = 0; ch < d_nchannels; ch++) { - // note that d_obi + 1 points at the oldest sample in the buffer - for(int i = 0; i < mx; i++) { - out[i] = d_buffer[ch][wrap_bi(d_obi + 1 + i, mx)]; - } - out += mx; - } - //Set the last sample as the trigger offset: - // The non gl scope sink will not look at this last sample. - // The gl scope sink will use this last sample as an offset. - out[0] = d_trigger_off; - d_msgq->handle(msg); // send the msg - } - - // ---------------------------------------------------------------- - - bool - oscope_guts::set_update_rate(double update_rate) - { - d_update_rate = std::min(std::max (1./10., update_rate), d_sample_rate); - update_rate_or_decimation_changed(); - return true; - } - - bool - oscope_guts::set_decimation_count(int decimator_count) - { - decimator_count = std::max(1, decimator_count); - d_decimator_count_init = decimator_count; - update_rate_or_decimation_changed(); - return true; - } - - bool - oscope_guts::set_sample_rate(double sample_rate) - { - d_sample_rate = sample_rate; - return set_update_rate(update_rate()); - } - - void - oscope_guts::update_rate_or_decimation_changed() - { - d_hold_off_count_init = - (int)rint(d_sample_rate / d_update_rate / d_decimator_count_init); - } - - bool - oscope_guts::set_trigger_channel(int channel) - { - if(channel >= 0 && channel < d_nchannels) { - d_trigger_channel = channel; - trigger_changed (); - return true; - } - - return false; - } - - bool - oscope_guts::set_trigger_mode(trigger_mode mode) - { - d_trigger_mode = mode; - trigger_changed(); - return true; - } - - bool - oscope_guts::set_trigger_slope(trigger_slope slope) - { - d_trigger_slope = slope; - trigger_changed(); - return true; - } - - bool - oscope_guts::set_trigger_level(double trigger_level) - { - d_trigger_level = trigger_level; - trigger_changed(); - return true; - } - - bool - oscope_guts::set_trigger_level_auto() - { - // find the level 1/2 way between the min and the max - - float min_v = d_buffer[d_trigger_channel][0]; - float max_v = d_buffer[d_trigger_channel][0]; - - for(int i = 1; i < OUTPUT_RECORD_SIZE; i++) { - min_v = std::min (min_v, d_buffer[d_trigger_channel][i]); - max_v = std::max (max_v, d_buffer[d_trigger_channel][i]); - } - return set_trigger_level((min_v + max_v) * 0.5); - } - - bool - oscope_guts::set_num_channels(int nchannels) - { - if(nchannels > 0 && nchannels <= MAX_CHANNELS) { - d_nchannels = nchannels; - return true; - } - return false; - } - - void - oscope_guts::trigger_changed() - { - enter_look_for_trigger(); - } - - // ACCESSORS - - int - oscope_guts::num_channels() const - { - return d_nchannels; - } - - double - oscope_guts::sample_rate() const - { - return d_sample_rate; - } - - double - oscope_guts::update_rate() const - { - return d_update_rate; - } - - int - oscope_guts::get_decimation_count() const - { - return d_decimator_count_init; - } - - int - oscope_guts::get_trigger_channel() const - { - return d_trigger_channel; - } - - trigger_mode - oscope_guts::get_trigger_mode() const - { - return d_trigger_mode; - } - - trigger_slope - oscope_guts::get_trigger_slope() const - { - return d_trigger_slope; - } - - double - oscope_guts::get_trigger_level() const - { - return d_trigger_level; - } - - int - oscope_guts::get_samples_per_output_record() const - { - int mx; - - mx = OUTPUT_RECORD_SIZE; - if(d_trigger_mode == TRIG_MODE_STRIPCHART) { - mx = OUTPUT_RECORD_SIZE*SCHART_MULT; - } - return mx; - } - - } /* namespace wxgui */ -} /* namespace gr */ diff --git a/gr-wxgui/lib/oscope_sink_f_impl.cc b/gr-wxgui/lib/oscope_sink_f_impl.cc deleted file mode 100644 index 9993040ffd..0000000000 --- a/gr-wxgui/lib/oscope_sink_f_impl.cc +++ /dev/null @@ -1,83 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2003-2005,2010,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. - */ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include "oscope_sink_f_impl.h" -#include <gnuradio/wxgui/oscope_sink_x.h> -#include <gnuradio/wxgui/oscope_guts.h> -#include <gnuradio/io_signature.h> - -namespace gr { - namespace wxgui { - - oscope_sink_f::sptr - oscope_sink_f::make(double sampling_rate, msg_queue::sptr msgq) - { - return gnuradio::get_initial_sptr - (new oscope_sink_f_impl(sampling_rate, msgq)); - } - - oscope_sink_f_impl::oscope_sink_f_impl(double sampling_rate, msg_queue::sptr msgq) - : oscope_sink_x("oscope_sink_f", - io_signature::make(1, oscope_guts::MAX_CHANNELS, - sizeof(float)), - sampling_rate), - d_msgq(msgq) - { - d_guts = new oscope_guts(d_sampling_rate, d_msgq); - } - - oscope_sink_f_impl::~oscope_sink_f_impl() - { - } - - bool - oscope_sink_f_impl::check_topology(int ninputs, int noutputs) - { - return d_guts->set_num_channels(ninputs); - } - - int - oscope_sink_f_impl::work(int noutput_items, - gr_vector_const_void_star &input_items, - gr_vector_void_star &output_items) - { - int ni = input_items.size(); - float tmp[oscope_guts::MAX_CHANNELS]; - - for(int i = 0; i < noutput_items; i++) { - - // FIXME for now, copy the data. Fix later if reqd - for(int ch = 0; ch < ni; ch++) - tmp[ch] = ((const float*)input_items[ch])[i]; - - d_guts->process_sample(tmp); - } - - return noutput_items; - } - - } /* namespace wxgui */ -} /* namespace gr */ diff --git a/gr-wxgui/lib/oscope_sink_f_impl.h b/gr-wxgui/lib/oscope_sink_f_impl.h deleted file mode 100644 index 81688f53a5..0000000000 --- a/gr-wxgui/lib/oscope_sink_f_impl.h +++ /dev/null @@ -1,51 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2003-2005,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. - */ - -#ifndef INCLUDED_GR_OSCOPE_SINK_F_IMPL_H -#define INCLUDED_GR_OSCOPE_SINK_F_IMPL_H - -#include <gnuradio/wxgui/oscope_sink_f.h> - -namespace gr { - namespace wxgui { - - class oscope_sink_f_impl : public oscope_sink_f - { - private: - msg_queue::sptr d_msgq; - - public: - oscope_sink_f_impl(double sampling_rate, msg_queue::sptr msgq); - ~oscope_sink_f_impl(); - - bool check_topology(int ninputs, int noutputs); - - int work(int noutput_items, - gr_vector_const_void_star &input_items, - gr_vector_void_star &output_items); - }; - - } /* namespace wxgui */ -} /* namespace gr */ - -#endif /* INCLUDED_GR_OSCOPE_SINK_F_IMPL_H */ - diff --git a/gr-wxgui/lib/oscope_sink_x.cc b/gr-wxgui/lib/oscope_sink_x.cc deleted file mode 100644 index ac865318ec..0000000000 --- a/gr-wxgui/lib/oscope_sink_x.cc +++ /dev/null @@ -1,161 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2003,2004,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. - */ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <gnuradio/wxgui/oscope_sink_x.h> -#include <gnuradio/wxgui/oscope_guts.h> -#include <gnuradio/io_signature.h> - -namespace gr { - namespace wxgui { - - oscope_sink_x::oscope_sink_x(const std::string name, - gr::io_signature::sptr input_sig, - double sampling_rate) - : sync_block(name, input_sig, - io_signature::make(0, 0, 0)), - d_sampling_rate(sampling_rate), d_guts(0) - { - } - - oscope_sink_x::~oscope_sink_x() - { - delete d_guts; - } - - // ---------------------------------------------------------------- - - bool - oscope_sink_x::set_update_rate(double update_rate) - { - return d_guts->set_update_rate(update_rate); - } - - bool - oscope_sink_x::set_decimation_count(int decimation_count) - { - return d_guts->set_decimation_count(decimation_count); - } - - bool - oscope_sink_x::set_trigger_channel(int channel) - { - return d_guts->set_trigger_channel(channel); - } - - bool - oscope_sink_x::set_trigger_mode(trigger_mode mode) - { - return d_guts->set_trigger_mode(mode); - } - - bool - oscope_sink_x::set_trigger_slope(trigger_slope slope) - { - return d_guts->set_trigger_slope(slope); - } - - bool - oscope_sink_x::set_trigger_level(double trigger_level) - { - return d_guts->set_trigger_level(trigger_level); - } - - bool - oscope_sink_x::set_trigger_level_auto() - { - return d_guts->set_trigger_level_auto(); - } - - bool - oscope_sink_x::set_sample_rate(double sample_rate) - { - return d_guts->set_sample_rate(sample_rate); - } - - bool - oscope_sink_x::set_num_channels(int nchannels) - { - return d_guts->set_num_channels(nchannels); - } - - // ACCESSORS - - int - oscope_sink_x::num_channels() const - { - return d_guts->num_channels(); - } - - double - oscope_sink_x::sample_rate() const - { - return d_guts->sample_rate(); - } - - double - oscope_sink_x::update_rate() const - { - return d_guts->update_rate(); - } - - int - oscope_sink_x::get_decimation_count() const - { - return d_guts->get_decimation_count(); - } - - int - oscope_sink_x::get_trigger_channel() const - { - return d_guts->get_trigger_channel(); - } - - trigger_mode - oscope_sink_x::get_trigger_mode() const - { - return d_guts->get_trigger_mode(); - } - - trigger_slope - oscope_sink_x::get_trigger_slope() const - { - return d_guts->get_trigger_slope(); - } - - double - oscope_sink_x::get_trigger_level() const - { - return d_guts->get_trigger_level(); - } - - int - oscope_sink_x::get_samples_per_output_record() const - { - return d_guts->get_samples_per_output_record(); - } - - } /* namespace wxgui */ -} /* namespace gr */ |