From d4f6b86a9bdea09c2c158b9982559a727f8c6a0b Mon Sep 17 00:00:00 2001 From: Tom Rondeau <trondeau@vt.edu> Date: Sun, 17 Mar 2013 12:24:38 -0400 Subject: blocks: converting references to vector source/sink, null source/sink, nop, copy, head, skiphead, vector_map, and annotator blocks to use gr-blocks. --- gr-wxgui/python/common.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'gr-wxgui/python') diff --git a/gr-wxgui/python/common.py b/gr-wxgui/python/common.py index 57fc530f88..48a62a28ab 100644 --- a/gr-wxgui/python/common.py +++ b/gr-wxgui/python/common.py @@ -24,6 +24,7 @@ ################################################## import wx from gnuradio import gr +from gnuradio import blocks RUN_ALWAYS = gr.prefs().get_bool ('wxgui', 'run_always', False) @@ -47,7 +48,7 @@ class wxgui_hb(object): """ try: assert points[0] == self or points[0][0] == self - copy = gr.copy(self._hb.input_signature().sizeof_stream_item(0)) + copy = blocks.copy(self._hb.input_signature().sizeof_stream_item(0)) handler = self._handler_factory(copy.set_enabled) if RUN_ALWAYS == False: handler(False) #initially disable the copy block -- cgit v1.2.3 From b33eb2258771d34113949628159b52d39074fa83 Mon Sep 17 00:00:00 2001 From: Tom Rondeau <trondeau@vt.edu> Date: Mon, 18 Mar 2013 11:42:11 -0400 Subject: examples: updating many examples for changes in modules and namespaces. --- gr-analog/grc/analog_am_demod_cf.xml | 47 +++ gr-analog/grc/analog_block_tree.xml | 9 + gr-analog/grc/analog_fm_deemph.xml | 31 ++ gr-analog/grc/analog_fm_demod_cf.xml | 68 +++++ gr-analog/grc/analog_fm_preemph.xml | 31 ++ gr-analog/grc/analog_nbfm_rx.xml | 48 +++ gr-analog/grc/analog_nbfm_tx.xml | 48 +++ gr-analog/grc/analog_wfm_rcv.xml | 33 +++ gr-analog/grc/analog_wfm_rcv_pll.xml | 37 +++ gr-analog/grc/analog_wfm_tx.xml | 48 +++ gr-fcd/examples/grc/fcd_apt_rx.grc | 490 ++++++++++++++++--------------- gr-fcd/examples/grc/fcd_nfm_rx.grc | 154 +++++----- gr-filter/grc/CMakeLists.txt | 1 + gr-filter/grc/filter_block_tree.xml | 1 + gr-uhd/examples/grc/uhd_const_wave.grc | 240 ++++++++------- gr-uhd/examples/grc/uhd_fft.grc | 72 ++--- gr-uhd/examples/grc/uhd_rx_dpsk.grc | 80 ++++- gr-uhd/examples/grc/uhd_tx_dpsk.grc | 180 +++++++----- gr-uhd/examples/grc/uhd_wbfm_receive.grc | 138 +++++---- gr-wxgui/python/constsink_gl.py | 3 +- grc/blocks/blks2_am_demod_cf.xml | 47 --- grc/blocks/blks2_fm_deemph.xml | 31 -- grc/blocks/blks2_fm_demod_cf.xml | 68 ----- grc/blocks/blks2_fm_preemph.xml | 31 -- grc/blocks/blks2_nbfm_rx.xml | 48 --- grc/blocks/blks2_nbfm_tx.xml | 48 --- grc/blocks/blks2_wfm_rcv.xml | 33 --- grc/blocks/blks2_wfm_rcv_pll.xml | 37 --- grc/blocks/blks2_wfm_tx.xml | 48 --- 29 files changed, 1161 insertions(+), 989 deletions(-) create mode 100644 gr-analog/grc/analog_am_demod_cf.xml create mode 100644 gr-analog/grc/analog_fm_deemph.xml create mode 100644 gr-analog/grc/analog_fm_demod_cf.xml create mode 100644 gr-analog/grc/analog_fm_preemph.xml create mode 100644 gr-analog/grc/analog_nbfm_rx.xml create mode 100644 gr-analog/grc/analog_nbfm_tx.xml create mode 100644 gr-analog/grc/analog_wfm_rcv.xml create mode 100644 gr-analog/grc/analog_wfm_rcv_pll.xml create mode 100644 gr-analog/grc/analog_wfm_tx.xml delete mode 100644 grc/blocks/blks2_am_demod_cf.xml delete mode 100644 grc/blocks/blks2_fm_deemph.xml delete mode 100644 grc/blocks/blks2_fm_demod_cf.xml delete mode 100644 grc/blocks/blks2_fm_preemph.xml delete mode 100644 grc/blocks/blks2_nbfm_rx.xml delete mode 100644 grc/blocks/blks2_nbfm_tx.xml delete mode 100644 grc/blocks/blks2_wfm_rcv.xml delete mode 100644 grc/blocks/blks2_wfm_rcv_pll.xml delete mode 100644 grc/blocks/blks2_wfm_tx.xml (limited to 'gr-wxgui/python') diff --git a/gr-analog/grc/analog_am_demod_cf.xml b/gr-analog/grc/analog_am_demod_cf.xml new file mode 100644 index 0000000000..b066882bda --- /dev/null +++ b/gr-analog/grc/analog_am_demod_cf.xml @@ -0,0 +1,47 @@ +<?xml version="1.0"?> +<!-- +################################################### +##AM Demod +################################################### + --> +<block> + <name>AM Demod</name> + <key>analog_am_demod_cf</key> + <import>from gnuradio import analog</import> + <make>analog.am_demod_cf( + channel_rate=$chan_rate, + audio_decim=$audio_decim, + audio_pass=$audio_pass, + audio_stop=$audio_stop, +)</make> + <param> + <name>Channel Rate</name> + <key>chan_rate</key> + <type>real</type> + </param> + <param> + <name>Audio Decimation</name> + <key>audio_decim</key> + <type>int</type> + </param> + <param> + <name>Audio Pass</name> + <key>audio_pass</key> + <value>5000</value> + <type>real</type> + </param> + <param> + <name>Audio Stop</name> + <key>audio_stop</key> + <value>5500</value> + <type>real</type> + </param> + <sink> + <name>in</name> + <type>complex</type> + </sink> + <source> + <name>out</name> + <type>float</type> + </source> +</block> diff --git a/gr-analog/grc/analog_block_tree.xml b/gr-analog/grc/analog_block_tree.xml index 1c4e46c914..fdb6db27ac 100644 --- a/gr-analog/grc/analog_block_tree.xml +++ b/gr-analog/grc/analog_block_tree.xml @@ -46,6 +46,15 @@ <block>analog_frequency_modulator_fc</block> <block>analog_phase_modulator_fc</block> <block>analog_quadrature_demod_cf</block> + <block>analog_nbfm_tx</block> + <block>analog_nbfm_rx</block> + <block>analog_wfm_tx</block> + <block>analog_wfm_rcv</block> + <block>analog_wfm_rcv_pll</block> + <block>analog_am_demod_cf</block> + <block>analog_fm_demod_cf</block> + <block>analog_fm_deemph</block> + <block>analog_fm_preemph</block> </cat> <cat> <name>Sources</name> diff --git a/gr-analog/grc/analog_fm_deemph.xml b/gr-analog/grc/analog_fm_deemph.xml new file mode 100644 index 0000000000..0fcb5a87d4 --- /dev/null +++ b/gr-analog/grc/analog_fm_deemph.xml @@ -0,0 +1,31 @@ +<?xml version="1.0"?> +<!-- +################################################### +##FM Deemphasis +################################################### + --> +<block> + <name>FM Deemphasis</name> + <key>analog_fm_deemph</key> + <import>from gnuradio import analog</import> + <make>analog.fm_deemph(fs=$samp_rate, tau=$tau)</make> + <param> + <name>Sample Rate</name> + <key>samp_rate</key> + <type>real</type> + </param> + <param> + <name>Tau</name> + <key>tau</key> + <value>75e-6</value> + <type>real</type> + </param> + <sink> + <name>in</name> + <type>float</type> + </sink> + <source> + <name>out</name> + <type>float</type> + </source> +</block> diff --git a/gr-analog/grc/analog_fm_demod_cf.xml b/gr-analog/grc/analog_fm_demod_cf.xml new file mode 100644 index 0000000000..c903ddfc73 --- /dev/null +++ b/gr-analog/grc/analog_fm_demod_cf.xml @@ -0,0 +1,68 @@ +<?xml version="1.0"?> +<!-- +################################################### +##FM Demod +################################################### + --> +<block> + <name>FM Demod</name> + <key>analog_fm_demod_cf</key> + <import>from gnuradio import analog</import> + <make>analog.fm_demod_cf( + channel_rate=$chan_rate, + audio_decim=$audio_decim, + deviation=$deviation, + audio_pass=$audio_pass, + audio_stop=$audio_stop, + gain=$gain, + tau=$tau, +)</make> + <param> + <name>Channel Rate</name> + <key>chan_rate</key> + <type>real</type> + </param> + <param> + <name>Audio Decimation</name> + <key>audio_decim</key> + <type>int</type> + </param> + <param> + <name>Deviation</name> + <key>deviation</key> + <value>75000</value> + <type>real</type> + </param> + <param> + <name>Audio Pass</name> + <key>audio_pass</key> + <value>15000</value> + <type>real</type> + </param> + <param> + <name>Audio Stop</name> + <key>audio_stop</key> + <value>16000</value> + <type>real</type> + </param> + <param> + <name>Gain</name> + <key>gain</key> + <value>1.0</value> + <type>real</type> + </param> + <param> + <name>Tau</name> + <key>tau</key> + <value>75e-6</value> + <type>real</type> + </param> + <sink> + <name>in</name> + <type>complex</type> + </sink> + <source> + <name>out</name> + <type>float</type> + </source> +</block> diff --git a/gr-analog/grc/analog_fm_preemph.xml b/gr-analog/grc/analog_fm_preemph.xml new file mode 100644 index 0000000000..fb898b87f3 --- /dev/null +++ b/gr-analog/grc/analog_fm_preemph.xml @@ -0,0 +1,31 @@ +<?xml version="1.0"?> +<!-- +################################################### +##FM Preemphasis +################################################### + --> +<block> + <name>FM Preemphasis</name> + <key>analog_fm_preemph</key> + <import>from gnuradio import analog</import> + <make>analog.fm_preemph(fs=$samp_rate, tau=$tau)</make> + <param> + <name>Sample Rate</name> + <key>samp_rate</key> + <type>real</type> + </param> + <param> + <name>Tau</name> + <key>tau</key> + <value>75e-6</value> + <type>real</type> + </param> + <sink> + <name>in</name> + <type>float</type> + </sink> + <source> + <name>out</name> + <type>float</type> + </source> +</block> diff --git a/gr-analog/grc/analog_nbfm_rx.xml b/gr-analog/grc/analog_nbfm_rx.xml new file mode 100644 index 0000000000..cc690c7b6b --- /dev/null +++ b/gr-analog/grc/analog_nbfm_rx.xml @@ -0,0 +1,48 @@ +<?xml version="1.0"?> +<!-- +################################################### +##NBFM Receive +################################################### + --> +<block> + <name>NBFM Receive</name> + <key>analog_nbfm_rx</key> + <import>from gnuradio import analog</import> + <make>analog.nbfm_rx( + audio_rate=$audio_rate, + quad_rate=$quad_rate, + tau=$tau, + max_dev=$max_dev, +)</make> + <param> + <name>Audio Rate</name> + <key>audio_rate</key> + <type>int</type> + </param> + <param> + <name>Quadrature Rate</name> + <key>quad_rate</key> + <type>int</type> + </param> + <param> + <name>Tau</name> + <key>tau</key> + <value>75e-6</value> + <type>real</type> + </param> + <param> + <name>Max Deviation</name> + <key>max_dev</key> + <value>5e3</value> + <type>real</type> + </param> + <check>$quad_rate%$audio_rate == 0</check> + <sink> + <name>in</name> + <type>complex</type> + </sink> + <source> + <name>out</name> + <type>float</type> + </source> +</block> diff --git a/gr-analog/grc/analog_nbfm_tx.xml b/gr-analog/grc/analog_nbfm_tx.xml new file mode 100644 index 0000000000..b3d3451cf7 --- /dev/null +++ b/gr-analog/grc/analog_nbfm_tx.xml @@ -0,0 +1,48 @@ +<?xml version="1.0"?> +<!-- +################################################### +##NBFM Transmit +################################################### + --> +<block> + <name>NBFM Transmit</name> + <key>analog_nbfm_tx</key> + <import>from gnuradio import analog</import> + <make>analog.nbfm_tx( + audio_rate=$audio_rate, + quad_rate=$quad_rate, + tau=$tau, + max_dev=$max_dev, +)</make> + <param> + <name>Audio Rate</name> + <key>audio_rate</key> + <type>int</type> + </param> + <param> + <name>Quadrature Rate</name> + <key>quad_rate</key> + <type>int</type> + </param> + <param> + <name>Tau</name> + <key>tau</key> + <value>75e-6</value> + <type>real</type> + </param> + <param> + <name>Max Deviation</name> + <key>max_dev</key> + <value>5e3</value> + <type>real</type> + </param> + <check>$quad_rate%$audio_rate == 0</check> + <sink> + <name>in</name> + <type>float</type> + </sink> + <source> + <name>out</name> + <type>complex</type> + </source> +</block> diff --git a/gr-analog/grc/analog_wfm_rcv.xml b/gr-analog/grc/analog_wfm_rcv.xml new file mode 100644 index 0000000000..ce2abb92de --- /dev/null +++ b/gr-analog/grc/analog_wfm_rcv.xml @@ -0,0 +1,33 @@ +<?xml version="1.0"?> +<!-- +################################################### +##WBFM Receive +################################################### + --> +<block> + <name>WBFM Receive</name> + <key>analog_wfm_rcv</key> + <import>from gnuradio import analog</import> + <make>analog.wfm_rcv( + quad_rate=$quad_rate, + audio_decimation=$audio_decimation, +)</make> + <param> + <name>Quadrature Rate</name> + <key>quad_rate</key> + <type>real</type> + </param> + <param> + <name>Audio Decimation</name> + <key>audio_decimation</key> + <type>int</type> + </param> + <sink> + <name>in</name> + <type>complex</type> + </sink> + <source> + <name>out</name> + <type>float</type> + </source> +</block> diff --git a/gr-analog/grc/analog_wfm_rcv_pll.xml b/gr-analog/grc/analog_wfm_rcv_pll.xml new file mode 100644 index 0000000000..db31ed9bee --- /dev/null +++ b/gr-analog/grc/analog_wfm_rcv_pll.xml @@ -0,0 +1,37 @@ +<?xml version="1.0"?> +<!-- +################################################### +##WBFM Receive PLL +################################################### + --> +<block> + <name>WBFM Receive PLL</name> + <key>analog_wfm_rcv_pll</key> + <import>from gnuradio import analog</import> + <make>analog.wfm_rcv_pll( + demod_rate=$quad_rate, + audio_decimation=$audio_decimation, +)</make> + <param> + <name>Quadrature Rate</name> + <key>quad_rate</key> + <type>real</type> + </param> + <param> + <name>Audio Decimation</name> + <key>audio_decimation</key> + <type>int</type> + </param> + <sink> + <name>in</name> + <type>complex</type> + </sink> + <source> + <name>Lout</name> + <type>float</type> + </source> + <source> + <name>Rout</name> + <type>float</type> + </source> +</block> diff --git a/gr-analog/grc/analog_wfm_tx.xml b/gr-analog/grc/analog_wfm_tx.xml new file mode 100644 index 0000000000..0e00f05fb2 --- /dev/null +++ b/gr-analog/grc/analog_wfm_tx.xml @@ -0,0 +1,48 @@ +<?xml version="1.0"?> +<!-- +################################################### +##WBFM Transmit +################################################### + --> +<block> + <name>WBFM Transmit</name> + <key>analog_wfm_tx</key> + <import>from gnuradio import analog</import> + <make>analog.wfm_tx( + audio_rate=$audio_rate, + quad_rate=$quad_rate, + tau=$tau, + max_dev=$max_dev, +)</make> + <param> + <name>Audio Rate</name> + <key>audio_rate</key> + <type>int</type> + </param> + <param> + <name>Quadrature Rate</name> + <key>quad_rate</key> + <type>int</type> + </param> + <param> + <name>Tau</name> + <key>tau</key> + <value>75e-6</value> + <type>real</type> + </param> + <param> + <name>Max Deviation</name> + <key>max_dev</key> + <value>75e3</value> + <type>real</type> + </param> + <check>$quad_rate%$audio_rate == 0</check> + <sink> + <name>in</name> + <type>float</type> + </sink> + <source> + <name>out</name> + <type>complex</type> + </source> +</block> diff --git a/gr-fcd/examples/grc/fcd_apt_rx.grc b/gr-fcd/examples/grc/fcd_apt_rx.grc index 41a806a102..3c88db7edd 100644 --- a/gr-fcd/examples/grc/fcd_apt_rx.grc +++ b/gr-fcd/examples/grc/fcd_apt_rx.grc @@ -1,6 +1,6 @@ <?xml version='1.0' encoding='ASCII'?> <flow_graph> - <timestamp>Sun May 8 18:01:53 2011</timestamp> + <timestamp>Mon Mar 18 10:04:36 2013</timestamp> <block> <key>options</key> <param> @@ -43,6 +43,10 @@ <key>run</key> <value>True</value> </param> + <param> + <key>max_nouts</key> + <value>0</value> + </param> <param> <key>realtime_scheduling</key> <value></value> @@ -57,57 +61,42 @@ </param> </block> <block> - <key>variable</key> + <key>variable_static_text</key> <param> <key>id</key> - <value>samp_rate</value> + <value>rec_info</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>value</key> - <value>96000</value> - </param> - <param> - <key>_coordinate</key> - <value>(200, 9)</value> + <key>label</key> + <value>Recording to</value> </param> <param> - <key>_rotation</key> - <value>0</value> + <key>value</key> + <value>wav_file</value> </param> - </block> - <block> - <key>audio_sink</key> <param> - <key>id</key> - <value>audio_sink</value> + <key>converver</key> + <value>str_converter</value> </param> <param> - <key>_enabled</key> - <value>True</value> + <key>formatter</key> + <value>None</value> </param> <param> - <key>samp_rate</key> - <value>48000</value> + <key>grid_pos</key> + <value>1,1,1,1</value> </param> <param> - <key>device_name</key> + <key>notebook</key> <value></value> </param> - <param> - <key>ok_to_block</key> - <value>True</value> - </param> - <param> - <key>num_inputs</key> - <value>1</value> - </param> <param> <key>_coordinate</key> - <value>(794, 355)</value> + <value>(641, 14)</value> </param> <param> <key>_rotation</key> @@ -115,46 +104,54 @@ </param> </block> <block> - <key>blks2_fm_demod_cf</key> + <key>fcd_source_c</key> <param> <key>id</key> - <value>blks2_fm_demod_cf</value> + <value>fcd_source_c_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>chan_rate</key> - <value>samp_rate</value> + <key>device_name</key> + <value>hw:1</value> </param> <param> - <key>audio_decim</key> - <value>2</value> + <key>freq</key> + <value>sat_freq</value> </param> <param> - <key>deviation</key> - <value>max_dev</value> + <key>lna</key> + <value>fcd_lna_gain</value> </param> <param> - <key>audio_pass</key> - <value>5000</value> + <key>mixer</key> + <value>+12</value> </param> <param> - <key>audio_stop</key> - <value>7000</value> + <key>ppm</key> + <value>-120</value> </param> <param> - <key>gain</key> - <value>1.0</value> + <key>dci</key> + <value>0.0</value> </param> <param> - <key>tau</key> - <value>75e-6</value> + <key>dcq</key> + <value>0.0</value> + </param> + <param> + <key>iq_phase</key> + <value>0.0</value> + </param> + <param> + <key>iq_gain</key> + <value>1.0</value> </param> <param> <key>_coordinate</key> - <value>(568, 307)</value> + <value>(68, 215)</value> </param> <param> <key>_rotation</key> @@ -162,38 +159,50 @@ </param> </block> <block> - <key>blks2_rational_resampler_xxx</key> + <key>variable_chooser</key> <param> <key>id</key> - <value>blks2_rational_resampler_xxx_0</value> + <value>fcd_lna_gain</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>type</key> - <value>fff</value> + <key>label</key> + <value>LNA gain [dB]</value> </param> <param> - <key>decim</key> - <value>48000</value> + <key>value</key> + <value>20.0</value> </param> <param> - <key>interp</key> - <value>11025</value> + <key>choices</key> + <value>[30.0, 25.0, 20.0, 17.5, 15.0, 12.5, 10.0, 7.5, 5.0, 2.5, 0.0, -2.5, -5.0]</value> </param> <param> - <key>taps</key> + <key>labels</key> <value>[]</value> </param> <param> - <key>fractional_bw</key> - <value>0</value> + <key>type</key> + <value>drop_down</value> + </param> + <param> + <key>style</key> + <value>wx.RA_HORIZONTAL</value> + </param> + <param> + <key>grid_pos</key> + <value>2,0,1,1</value> + </param> + <param> + <key>notebook</key> + <value></value> </param> <param> <key>_coordinate</key> - <value>(516, 522)</value> + <value>(247, 405)</value> </param> <param> <key>_rotation</key> @@ -201,45 +210,50 @@ </param> </block> <block> - <key>variable</key> + <key>variable_chooser</key> <param> <key>id</key> - <value>wav_file</value> + <value>sat_freq</value> </param> <param> <key>_enabled</key> <value>True</value> </param> + <param> + <key>label</key> + <value>Satellite</value> + </param> <param> <key>value</key> - <value>prefix + datetime.now().strftime("%Y.%m.%d.%H.%M.%S") + ".wav"</value> + <value>137500000</value> </param> <param> - <key>_coordinate</key> - <value>(762, 652)</value> + <key>choices</key> + <value>[137500000,137620000,137912500,137100000]</value> </param> <param> - <key>_rotation</key> - <value>0</value> + <key>labels</key> + <value>["NOAA-15","NOAA-17","NOAA-18","NOAA-19"]</value> </param> - </block> - <block> - <key>variable</key> <param> - <key>id</key> - <value>prefix</value> + <key>type</key> + <value>drop_down</value> </param> <param> - <key>_enabled</key> - <value>True</value> + <key>style</key> + <value>wx.RA_HORIZONTAL</value> </param> <param> - <key>value</key> - <value>"FCD_APT_REC-"</value> + <key>grid_pos</key> + <value>1,0,1,1</value> + </param> + <param> + <key>notebook</key> + <value></value> </param> <param> <key>_coordinate</key> - <value>(625, 653)</value> + <value>(58, 403)</value> </param> <param> <key>_rotation</key> @@ -247,108 +261,113 @@ </param> </block> <block> - <key>import</key> + <key>wxgui_fftsink2</key> <param> <key>id</key> - <value>import_0</value> + <value>fftsink</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>import</key> - <value>from datetime import datetime</value> + <key>type</key> + <value>complex</value> </param> <param> - <key>_coordinate</key> - <value>(508, 653)</value> + <key>title</key> + <value>FCD Spectrum</value> </param> <param> - <key>_rotation</key> - <value>0</value> + <key>samp_rate</key> + <value>samp_rate</value> </param> - </block> - <block> - <key>blocks_wavfile_sink</key> <param> - <key>id</key> - <value>wavfile_sink</value> + <key>baseband_freq</key> + <value>sat_freq</value> </param> <param> - <key>_enabled</key> - <value>True</value> + <key>y_per_div</key> + <value>10</value> </param> <param> - <key>file</key> - <value>wav_file</value> + <key>y_divs</key> + <value>10</value> </param> <param> - <key>nchan</key> - <value>1</value> + <key>ref_level</key> + <value>0.0</value> </param> <param> - <key>samp_rate</key> - <value>11025</value> + <key>ref_scale</key> + <value>1.0</value> </param> <param> - <key>bits_per_sample</key> - <value>16</value> + <key>fft_size</key> + <value>512</value> </param> <param> - <key>_coordinate</key> - <value>(805, 530)</value> + <key>fft_rate</key> + <value>15</value> </param> <param> - <key>_rotation</key> + <key>peak_hold</key> + <value>False</value> + </param> + <param> + <key>average</key> + <value>False</value> + </param> + <param> + <key>avg_alpha</key> <value>0</value> </param> - </block> - <block> - <key>variable_chooser</key> <param> - <key>id</key> - <value>sat_freq</value> + <key>win</key> + <value>None</value> </param> <param> - <key>_enabled</key> - <value>True</value> + <key>win_size</key> + <value></value> </param> <param> - <key>label</key> - <value>Satellite</value> + <key>grid_pos</key> + <value>0,0,1,2</value> </param> <param> - <key>value</key> - <value>137500000</value> + <key>notebook</key> + <value></value> </param> <param> - <key>choices</key> - <value>[137500000,137620000,137912500,137100000]</value> + <key>freqvar</key> + <value>None</value> </param> <param> - <key>labels</key> - <value>["NOAA-15","NOAA-17","NOAA-18","NOAA-19"]</value> + <key>_coordinate</key> + <value>(375, 11)</value> </param> <param> - <key>type</key> - <value>drop_down</value> + <key>_rotation</key> + <value>0</value> </param> + </block> + <block> + <key>variable</key> <param> - <key>style</key> - <value>wx.RA_HORIZONTAL</value> + <key>id</key> + <value>samp_rate</value> </param> <param> - <key>grid_pos</key> - <value>1,0,1,1</value> + <key>_enabled</key> + <value>True</value> </param> <param> - <key>notebook</key> - <value></value> + <key>value</key> + <value>96000</value> </param> <param> <key>_coordinate</key> - <value>(18, 479)</value> + <value>(190, 11)</value> </param> <param> <key>_rotation</key> @@ -371,7 +390,7 @@ </param> <param> <key>_coordinate</key> - <value>(299, 10)</value> + <value>(282, 11)</value> </param> <param> <key>_rotation</key> @@ -379,50 +398,57 @@ </param> </block> <block> - <key>variable_chooser</key> + <key>blocks_wavfile_sink</key> <param> <key>id</key> - <value>fcd_lna_gain</value> + <value>wavfile_sink</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>label</key> - <value>LNA gain [dB]</value> + <key>file</key> + <value>wav_file</value> </param> <param> - <key>value</key> - <value>20.0</value> + <key>nchan</key> + <value>1</value> </param> <param> - <key>choices</key> - <value>[30.0, 25.0, 20.0, 17.5, 15.0, 12.5, 10.0, 7.5, 5.0, 2.5, 0.0, -2.5, -5.0]</value> + <key>samp_rate</key> + <value>11025</value> </param> <param> - <key>labels</key> - <value>[]</value> + <key>bits_per_sample</key> + <value>16</value> </param> <param> - <key>type</key> - <value>drop_down</value> + <key>_coordinate</key> + <value>(845, 431)</value> </param> <param> - <key>style</key> - <value>wx.RA_HORIZONTAL</value> + <key>_rotation</key> + <value>0</value> </param> + </block> + <block> + <key>import</key> <param> - <key>grid_pos</key> - <value>2,0,1,1</value> + <key>id</key> + <value>import_0</value> </param> <param> - <key>notebook</key> - <value></value> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>import</key> + <value>from datetime import datetime</value> </param> <param> <key>_coordinate</key> - <value>(207, 481)</value> + <value>(552, 523)</value> </param> <param> <key>_rotation</key> @@ -430,42 +456,45 @@ </param> </block> <block> - <key>variable_static_text</key> + <key>variable</key> <param> <key>id</key> - <value>rec_info</value> + <value>prefix</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>label</key> - <value>Recording to</value> + <key>value</key> + <value>"FCD_APT_REC-"</value> </param> <param> - <key>value</key> - <value>wav_file</value> + <key>_coordinate</key> + <value>(669, 523)</value> </param> <param> - <key>converver</key> - <value>str_converter</value> + <key>_rotation</key> + <value>0</value> </param> + </block> + <block> + <key>variable</key> <param> - <key>formatter</key> - <value>None</value> + <key>id</key> + <value>wav_file</value> </param> <param> - <key>grid_pos</key> - <value>1,1,1,1</value> + <key>_enabled</key> + <value>True</value> </param> <param> - <key>notebook</key> - <value></value> + <key>value</key> + <value>prefix + datetime.now().strftime("%Y.%m.%d.%H.%M.%S") + ".wav"</value> </param> <param> <key>_coordinate</key> - <value>(641, 14)</value> + <value>(806, 522)</value> </param> <param> <key>_rotation</key> @@ -520,7 +549,7 @@ </param> <param> <key>_coordinate</key> - <value>(334, 307)</value> + <value>(374, 231)</value> </param> <param> <key>_rotation</key> @@ -528,50 +557,34 @@ </param> </block> <block> - <key>fcd_source_c</key> + <key>audio_sink</key> <param> <key>id</key> - <value>fcd_source_c_0</value> + <value>audio_sink</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>device_name</key> - <value>hw:1</value> - </param> - <param> - <key>freq</key> - <value>sat_freq</value> - </param> - <param> - <key>lna</key> - <value>fcd_lna_gain</value> - </param> - <param> - <key>ppm</key> - <value>-120</value> - </param> - <param> - <key>dci</key> - <value>0.0</value> + <key>samp_rate</key> + <value>48000</value> </param> <param> - <key>dcq</key> - <value>0.0</value> + <key>device_name</key> + <value></value> </param> <param> - <key>iq_phase</key> - <value>0.0</value> + <key>ok_to_block</key> + <value>True</value> </param> <param> - <key>iq_gain</key> - <value>1.0</value> + <key>num_inputs</key> + <value>1</value> </param> <param> <key>_coordinate</key> - <value>(25, 299)</value> + <value>(834, 279)</value> </param> <param> <key>_rotation</key> @@ -579,10 +592,10 @@ </param> </block> <block> - <key>wxgui_fftsink2</key> + <key>rational_resampler_xxx</key> <param> <key>id</key> - <value>fftsink</value> + <value>rational_resampler_xxx_0</value> </param> <param> <key>_enabled</key> @@ -590,75 +603,74 @@ </param> <param> <key>type</key> - <value>complex</value> - </param> - <param> - <key>title</key> - <value>FCD Spectrum</value> + <value>fff</value> </param> <param> - <key>samp_rate</key> - <value>samp_rate</value> + <key>interp</key> + <value>11025</value> </param> <param> - <key>baseband_freq</key> - <value>sat_freq</value> + <key>decim</key> + <value>48000</value> </param> <param> - <key>y_per_div</key> - <value>10</value> + <key>taps</key> + <value>[]</value> </param> <param> - <key>y_divs</key> - <value>10</value> + <key>fbw</key> + <value>0</value> </param> <param> - <key>ref_level</key> - <value>0.0</value> + <key>_coordinate</key> + <value>(591, 423)</value> </param> <param> - <key>ref_scale</key> - <value>1.0</value> + <key>_rotation</key> + <value>0</value> </param> + </block> + <block> + <key>analog_fm_demod_cf</key> <param> - <key>fft_size</key> - <value>512</value> + <key>id</key> + <value>analog_fm_demod_cf_0</value> </param> <param> - <key>fft_rate</key> - <value>15</value> + <key>_enabled</key> + <value>True</value> </param> <param> - <key>peak_hold</key> - <value>False</value> + <key>chan_rate</key> + <value>samp_rate</value> </param> <param> - <key>average</key> - <value>False</value> + <key>audio_decim</key> + <value>2</value> </param> <param> - <key>avg_alpha</key> - <value>0</value> + <key>deviation</key> + <value>max_dev</value> </param> <param> - <key>win</key> - <value>None</value> + <key>audio_pass</key> + <value>5000</value> </param> <param> - <key>win_size</key> - <value></value> + <key>audio_stop</key> + <value>7000</value> </param> <param> - <key>grid_pos</key> - <value>0,0,1,2</value> + <key>gain</key> + <value>1.0</value> </param> <param> - <key>notebook</key> - <value></value> + <key>tau</key> + <value>75e-6</value> </param> <param> <key>_coordinate</key> - <value>(335, 103)</value> + <value>(605, 231)</value> </param> <param> <key>_rotation</key> @@ -666,38 +678,38 @@ </param> </block> <connection> - <source_block_id>low_pass_filter</source_block_id> - <sink_block_id>blks2_fm_demod_cf</sink_block_id> + <source_block_id>rational_resampler_xxx_0</source_block_id> + <sink_block_id>wavfile_sink</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>blks2_fm_demod_cf</source_block_id> - <sink_block_id>audio_sink</sink_block_id> + <source_block_id>fcd_source_c_0</source_block_id> + <sink_block_id>fftsink</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>blks2_rational_resampler_xxx_0</source_block_id> - <sink_block_id>wavfile_sink</sink_block_id> + <source_block_id>fcd_source_c_0</source_block_id> + <sink_block_id>low_pass_filter</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>blks2_fm_demod_cf</source_block_id> - <sink_block_id>blks2_rational_resampler_xxx_0</sink_block_id> + <source_block_id>low_pass_filter</source_block_id> + <sink_block_id>analog_fm_demod_cf_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>fcd_source_c_0</source_block_id> - <sink_block_id>low_pass_filter</sink_block_id> + <source_block_id>analog_fm_demod_cf_0</source_block_id> + <sink_block_id>audio_sink</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>fcd_source_c_0</source_block_id> - <sink_block_id>fftsink</sink_block_id> + <source_block_id>analog_fm_demod_cf_0</source_block_id> + <sink_block_id>rational_resampler_xxx_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> diff --git a/gr-fcd/examples/grc/fcd_nfm_rx.grc b/gr-fcd/examples/grc/fcd_nfm_rx.grc index 96d6f55e2e..afe343a834 100644 --- a/gr-fcd/examples/grc/fcd_nfm_rx.grc +++ b/gr-fcd/examples/grc/fcd_nfm_rx.grc @@ -1,6 +1,6 @@ <?xml version='1.0' encoding='ASCII'?> <flow_graph> - <timestamp>Tue Nov 6 12:24:50 2012</timestamp> + <timestamp>Mon Mar 18 10:11:39 2013</timestamp> <block> <key>options</key> <param> @@ -378,37 +378,6 @@ <value>0</value> </param> </block> - <block> - <key>blocks_multiply_const_vxx</key> - <param> - <key>id</key> - <value>blocks_multiply_const_vxx_1</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>float</value> - </param> - <param> - <key>const</key> - <value>af_gain</value> - </param> - <param> - <key>vlen</key> - <value>1</value> - </param> - <param> - <key>_coordinate</key> - <value>(674, 507)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> <block> <key>audio_sink</key> <param> @@ -879,41 +848,6 @@ <value>0</value> </param> </block> - <block> - <key>blks2_nbfm_rx</key> - <param> - <key>id</key> - <value>nbfm_normal</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>audio_rate</key> - <value>48000</value> - </param> - <param> - <key>quad_rate</key> - <value>96000</value> - </param> - <param> - <key>tau</key> - <value>75e-6</value> - </param> - <param> - <key>max_dev</key> - <value>5e3</value> - </param> - <param> - <key>_coordinate</key> - <value>(441, 483)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> <block> <key>low_pass_filter</key> <param> @@ -962,7 +896,7 @@ </param> <param> <key>_coordinate</key> - <value>(742, 258)</value> + <value>(742, 266)</value> </param> <param> <key>_rotation</key> @@ -996,6 +930,72 @@ <value>0</value> </param> </block> + <block> + <key>blocks_multiply_const_vxx</key> + <param> + <key>id</key> + <value>blocks_multiply_const_vxx_1</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>float</value> + </param> + <param> + <key>const</key> + <value>af_gain</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(674, 507)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>analog_nbfm_rx</key> + <param> + <key>id</key> + <value>analog_nbfm_rx_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>audio_rate</key> + <value>48000</value> + </param> + <param> + <key>quad_rate</key> + <value>96000</value> + </param> + <param> + <key>tau</key> + <value>75e-6</value> + </param> + <param> + <key>max_dev</key> + <value>5e3</value> + </param> + <param> + <key>_coordinate</key> + <value>(440, 483)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> <connection> <source_block_id>blocks_multiply_const_vxx_1</source_block_id> <sink_block_id>audio_sink</sink_block_id> @@ -1008,12 +1008,6 @@ <source_key>0</source_key> <sink_key>0</sink_key> </connection> - <connection> - <source_block_id>nbfm_normal</source_block_id> - <sink_block_id>blocks_multiply_const_vxx_1</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> <connection> <source_block_id>fcd_source_c_1</source_block_id> <sink_block_id>freq_xlating_fir_filter_xxx_0</sink_block_id> @@ -1032,15 +1026,21 @@ <source_key>0</source_key> <sink_key>0</sink_key> </connection> + <connection> + <source_block_id>low_pass_filter</source_block_id> + <sink_block_id>analog_simple_squelch_cc_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> <connection> <source_block_id>analog_simple_squelch_cc_0</source_block_id> - <sink_block_id>nbfm_normal</sink_block_id> + <sink_block_id>analog_nbfm_rx_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>low_pass_filter</source_block_id> - <sink_block_id>analog_simple_squelch_cc_0</sink_block_id> + <source_block_id>analog_nbfm_rx_0</source_block_id> + <sink_block_id>blocks_multiply_const_vxx_1</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> diff --git a/gr-filter/grc/CMakeLists.txt b/gr-filter/grc/CMakeLists.txt index 1ca23d560e..3a2af83da9 100644 --- a/gr-filter/grc/CMakeLists.txt +++ b/gr-filter/grc/CMakeLists.txt @@ -33,6 +33,7 @@ install(FILES filter_pfb_decimator.xml filter_pfb_interpolator.xml filter_pfb_synthesizer.xml + filter_rational_resampler_xxx.xml filter_rational_resampler_base_xxx.xml filter_single_pole_iir_filter_xx.xml filter_low_pass_filter.xml diff --git a/gr-filter/grc/filter_block_tree.xml b/gr-filter/grc/filter_block_tree.xml index 9b72dcf605..a9dfd56549 100644 --- a/gr-filter/grc/filter_block_tree.xml +++ b/gr-filter/grc/filter_block_tree.xml @@ -51,6 +51,7 @@ <block>pfb_decimator_ccf</block> <block>pfb_interpolator_ccf</block> <block>pfb_synthesizer_ccf</block> + <block>rational_resampler_xxx</block> <block>rational_resampler_base_xxx</block> <block>single_pole_iir_filter_xx</block> </cat> diff --git a/gr-uhd/examples/grc/uhd_const_wave.grc b/gr-uhd/examples/grc/uhd_const_wave.grc index c64721c833..46596109de 100644 --- a/gr-uhd/examples/grc/uhd_const_wave.grc +++ b/gr-uhd/examples/grc/uhd_const_wave.grc @@ -1,27 +1,59 @@ <?xml version='1.0' encoding='ASCII'?> <flow_graph> - <timestamp>Sat Oct 8 10:24:27 2011</timestamp> + <timestamp>Mon Mar 18 11:04:05 2013</timestamp> <block> - <key>const_source_x</key> + <key>options</key> <param> <key>id</key> - <value>const_source_x_0</value> + <value>uhd_const_wave</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>type</key> - <value>complex</value> + <key>title</key> + <value>UHD Constant Wave</value> </param> <param> - <key>const</key> - <value>ampl</value> + <key>author</key> + <value>Example</value> + </param> + <param> + <key>description</key> + <value>Tune UHD Device</value> + </param> + <param> + <key>window_size</key> + <value>1280, 1024</value> + </param> + <param> + <key>generate_options</key> + <value>wx_gui</value> + </param> + <param> + <key>category</key> + <value>Custom</value> + </param> + <param> + <key>run_options</key> + <value>prompt</value> + </param> + <param> + <key>run</key> + <value>True</value> + </param> + <param> + <key>max_nouts</key> + <value>0</value> + </param> + <param> + <key>realtime_scheduling</key> + <value></value> </param> <param> <key>_coordinate</key> - <value>(102, 193)</value> + <value>(10, 10)</value> </param> <param> <key>_rotation</key> @@ -194,54 +226,69 @@ </param> </block> <block> - <key>options</key> + <key>parameter</key> <param> <key>id</key> - <value>uhd_const_wave</value> + <value>address</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>title</key> - <value>UHD Constant Wave</value> + <key>label</key> + <value>IP Address</value> </param> <param> - <key>author</key> - <value>Example</value> + <key>value</key> + <value>addr=192.168.11.2</value> </param> <param> - <key>description</key> - <value>Tune UHD Device</value> + <key>type</key> + <value>string</value> </param> <param> - <key>window_size</key> - <value>1280, 1024</value> + <key>short_id</key> + <value>a</value> </param> <param> - <key>generate_options</key> - <value>wx_gui</value> + <key>_coordinate</key> + <value>(188, 12)</value> </param> <param> - <key>category</key> - <value>Custom</value> + <key>_rotation</key> + <value>0</value> </param> + </block> + <block> + <key>parameter</key> <param> - <key>run_options</key> - <value>prompt</value> + <key>id</key> + <value>samp_rate</value> </param> <param> - <key>run</key> + <key>_enabled</key> <value>True</value> </param> <param> - <key>realtime_scheduling</key> - <value></value> + <key>label</key> + <value>Sample Rate</value> + </param> + <param> + <key>value</key> + <value>1e6</value> + </param> + <param> + <key>type</key> + <value>eng_float</value> + </param> + <param> + <key>short_id</key> + <value>s</value> </param> <param> <key>_coordinate</key> - <value>(10, 10)</value> + <value>(342, 14)</value> </param> <param> <key>_rotation</key> @@ -252,7 +299,7 @@ <key>parameter</key> <param> <key>id</key> - <value>address</value> + <value>freq</value> </param> <param> <key>_enabled</key> @@ -260,23 +307,23 @@ </param> <param> <key>label</key> - <value>IP Address</value> + <value>Default Frequency</value> </param> <param> <key>value</key> - <value>addr=192.168.11.2</value> + <value>2.45e9</value> </param> <param> <key>type</key> - <value>string</value> + <value>eng_float</value> </param> <param> <key>short_id</key> - <value>a</value> + <value>f</value> </param> <param> <key>_coordinate</key> - <value>(188, 12)</value> + <value>(468, 14)</value> </param> <param> <key>_rotation</key> @@ -287,7 +334,7 @@ <key>parameter</key> <param> <key>id</key> - <value>samp_rate</value> + <value>gain</value> </param> <param> <key>_enabled</key> @@ -295,11 +342,11 @@ </param> <param> <key>label</key> - <value>Sample Rate</value> + <value>Default Gain</value> </param> <param> <key>value</key> - <value>1e6</value> + <value>0</value> </param> <param> <key>type</key> @@ -307,11 +354,11 @@ </param> <param> <key>short_id</key> - <value>s</value> + <value>g</value> </param> <param> <key>_coordinate</key> - <value>(342, 14)</value> + <value>(616, 13)</value> </param> <param> <key>_rotation</key> @@ -330,7 +377,15 @@ </param> <param> <key>type</key> - <value>complex</value> + <value>fc32</value> + </param> + <param> + <key>otw</key> + <value></value> + </param> + <param> + <key>stream_args</key> + <value></value> </param> <param> <key>dev_addr</key> @@ -349,7 +404,11 @@ <value>1</value> </param> <param> - <key>ref_source0</key> + <key>clock_source0</key> + <value></value> + </param> + <param> + <key>time_source0</key> <value></value> </param> <param> @@ -357,7 +416,11 @@ <value></value> </param> <param> - <key>ref_source1</key> + <key>clock_source1</key> + <value></value> + </param> + <param> + <key>time_source1</key> <value></value> </param> <param> @@ -365,7 +428,11 @@ <value></value> </param> <param> - <key>ref_source2</key> + <key>clock_source2</key> + <value></value> + </param> + <param> + <key>time_source2</key> <value></value> </param> <param> @@ -373,7 +440,11 @@ <value></value> </param> <param> - <key>ref_source3</key> + <key>clock_source3</key> + <value></value> + </param> + <param> + <key>time_source3</key> <value></value> </param> <param> @@ -381,7 +452,11 @@ <value></value> </param> <param> - <key>ref_source4</key> + <key>clock_source4</key> + <value></value> + </param> + <param> + <key>time_source4</key> <value></value> </param> <param> @@ -389,7 +464,11 @@ <value></value> </param> <param> - <key>ref_source5</key> + <key>clock_source5</key> + <value></value> + </param> + <param> + <key>time_source5</key> <value></value> </param> <param> @@ -397,7 +476,11 @@ <value></value> </param> <param> - <key>ref_source6</key> + <key>clock_source6</key> + <value></value> + </param> + <param> + <key>time_source6</key> <value></value> </param> <param> @@ -405,7 +488,11 @@ <value></value> </param> <param> - <key>ref_source7</key> + <key>clock_source7</key> + <value></value> + </param> + <param> + <key>time_source7</key> <value></value> </param> <param> @@ -942,69 +1029,26 @@ </param> </block> <block> - <key>parameter</key> + <key>analog_const_source_x</key> <param> <key>id</key> - <value>freq</value> + <value>analog_const_source_x_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> - <param> - <key>label</key> - <value>Default Frequency</value> - </param> - <param> - <key>value</key> - <value>2.45e9</value> - </param> - <param> - <key>type</key> - <value>eng_float</value> - </param> - <param> - <key>short_id</key> - <value>f</value> - </param> - <param> - <key>_coordinate</key> - <value>(468, 14)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>parameter</key> - <param> - <key>id</key> - <value>gain</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>label</key> - <value>Default Gain</value> - </param> - <param> - <key>value</key> - <value>0</value> - </param> <param> <key>type</key> - <value>eng_float</value> + <value>complex</value> </param> <param> - <key>short_id</key> - <value>g</value> + <key>const</key> + <value>ampl</value> </param> <param> <key>_coordinate</key> - <value>(616, 13)</value> + <value>(74, 193)</value> </param> <param> <key>_rotation</key> @@ -1012,7 +1056,7 @@ </param> </block> <connection> - <source_block_id>const_source_x_0</source_block_id> + <source_block_id>analog_const_source_x_0</source_block_id> <sink_block_id>uhd_usrp_sink_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> diff --git a/gr-uhd/examples/grc/uhd_fft.grc b/gr-uhd/examples/grc/uhd_fft.grc index 2582b5e3b1..1db98ab8aa 100644 --- a/gr-uhd/examples/grc/uhd_fft.grc +++ b/gr-uhd/examples/grc/uhd_fft.grc @@ -1,6 +1,6 @@ <?xml version='1.0' encoding='ASCII'?> <flow_graph> - <timestamp>Mon Jun 18 14:20:11 2012</timestamp> + <timestamp>Mon Mar 18 11:09:57 2013</timestamp> <block> <key>options</key> <param> @@ -1145,41 +1145,6 @@ <value>0</value> </param> </block> - <block> - <key>parameter</key> - <param> - <key>id</key> - <value>address</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>label</key> - <value>IP Address</value> - </param> - <param> - <key>value</key> - <value></value> - </param> - <param> - <key>type</key> - <value>string</value> - </param> - <param> - <key>short_id</key> - <value>a</value> - </param> - <param> - <key>_coordinate</key> - <value>(190, 15)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> <block> <key>wxgui_fftsink2</key> <param> @@ -1507,6 +1472,41 @@ <value>0</value> </param> </block> + <block> + <key>parameter</key> + <param> + <key>id</key> + <value>address</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>label</key> + <value>IP Address</value> + </param> + <param> + <key>value</key> + <value></value> + </param> + <param> + <key>type</key> + <value>string</value> + </param> + <param> + <key>short_id</key> + <value>a</value> + </param> + <param> + <key>_coordinate</key> + <value>(190, 15)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> <connection> <source_block_id>uhd_usrp_source_0</source_block_id> <sink_block_id>wxgui_scopesink2_0</sink_block_id> diff --git a/gr-uhd/examples/grc/uhd_rx_dpsk.grc b/gr-uhd/examples/grc/uhd_rx_dpsk.grc index b40c541629..8a9faa4b73 100644 --- a/gr-uhd/examples/grc/uhd_rx_dpsk.grc +++ b/gr-uhd/examples/grc/uhd_rx_dpsk.grc @@ -1,6 +1,6 @@ <?xml version='1.0' encoding='ASCII'?> <flow_graph> - <timestamp>Sat Oct 8 15:08:55 2011</timestamp> + <timestamp>Mon Mar 18 11:10:25 2013</timestamp> <block> <key>options</key> <param> @@ -43,6 +43,10 @@ <key>run</key> <value>True</value> </param> + <param> + <key>max_nouts</key> + <value>0</value> + </param> <param> <key>realtime_scheduling</key> <value></value> @@ -603,6 +607,10 @@ <key>notebook</key> <value></value> </param> + <param> + <key>freqvar</key> + <value>None</value> + </param> <param> <key>_coordinate</key> <value>(710, 236)</value> @@ -635,20 +643,20 @@ <value>0.35</value> </param> <param> - <key>phase_bw</key> + <key>freq_bw</key> <value>6.28/100.0</value> </param> <param> - <key>timing_bw</key> + <key>phase_bw</key> <value>6.28/100.0</value> </param> <param> - <key>omega_relative_limit</key> - <value>0.005</value> + <key>timing_bw</key> + <value>6.28/100.0</value> </param> <param> - <key>gray_coded</key> - <value>True</value> + <key>mod_code</key> + <value>"gray"</value> </param> <param> <key>verbose</key> @@ -793,7 +801,15 @@ </param> <param> <key>type</key> - <value>complex</value> + <value>fc32</value> + </param> + <param> + <key>otw</key> + <value></value> + </param> + <param> + <key>stream_args</key> + <value></value> </param> <param> <key>dev_addr</key> @@ -812,7 +828,11 @@ <value>1</value> </param> <param> - <key>ref_source0</key> + <key>clock_source0</key> + <value></value> + </param> + <param> + <key>time_source0</key> <value></value> </param> <param> @@ -820,7 +840,11 @@ <value></value> </param> <param> - <key>ref_source1</key> + <key>clock_source1</key> + <value></value> + </param> + <param> + <key>time_source1</key> <value></value> </param> <param> @@ -828,7 +852,11 @@ <value></value> </param> <param> - <key>ref_source2</key> + <key>clock_source2</key> + <value></value> + </param> + <param> + <key>time_source2</key> <value></value> </param> <param> @@ -836,7 +864,11 @@ <value></value> </param> <param> - <key>ref_source3</key> + <key>clock_source3</key> + <value></value> + </param> + <param> + <key>time_source3</key> <value></value> </param> <param> @@ -844,7 +876,11 @@ <value></value> </param> <param> - <key>ref_source4</key> + <key>clock_source4</key> + <value></value> + </param> + <param> + <key>time_source4</key> <value></value> </param> <param> @@ -852,7 +888,11 @@ <value></value> </param> <param> - <key>ref_source5</key> + <key>clock_source5</key> + <value></value> + </param> + <param> + <key>time_source5</key> <value></value> </param> <param> @@ -860,7 +900,11 @@ <value></value> </param> <param> - <key>ref_source6</key> + <key>clock_source6</key> + <value></value> + </param> + <param> + <key>time_source6</key> <value></value> </param> <param> @@ -868,7 +912,11 @@ <value></value> </param> <param> - <key>ref_source7</key> + <key>clock_source7</key> + <value></value> + </param> + <param> + <key>time_source7</key> <value></value> </param> <param> diff --git a/gr-uhd/examples/grc/uhd_tx_dpsk.grc b/gr-uhd/examples/grc/uhd_tx_dpsk.grc index 38318bef4b..b5f8e41054 100644 --- a/gr-uhd/examples/grc/uhd_tx_dpsk.grc +++ b/gr-uhd/examples/grc/uhd_tx_dpsk.grc @@ -1,6 +1,65 @@ <?xml version='1.0' encoding='ASCII'?> <flow_graph> - <timestamp>Sat Oct 8 14:55:39 2011</timestamp> + <timestamp>Mon Mar 18 11:11:06 2013</timestamp> + <block> + <key>options</key> + <param> + <key>id</key> + <value>uhd_tx_dpsk</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>title</key> + <value>UHD TX DPSK</value> + </param> + <param> + <key>author</key> + <value></value> + </param> + <param> + <key>description</key> + <value></value> + </param> + <param> + <key>window_size</key> + <value>1280, 1024</value> + </param> + <param> + <key>generate_options</key> + <value>wx_gui</value> + </param> + <param> + <key>category</key> + <value>Custom</value> + </param> + <param> + <key>run_options</key> + <value>prompt</value> + </param> + <param> + <key>run</key> + <value>True</value> + </param> + <param> + <key>max_nouts</key> + <value>0</value> + </param> + <param> + <key>realtime_scheduling</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(10, 10)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> <block> <key>variable</key> <param> @@ -321,8 +380,8 @@ <value>0.35</value> </param> <param> - <key>gray_coded</key> - <value>True</value> + <key>mod_code</key> + <value>"gray"</value> </param> <param> <key>verbose</key> @@ -423,7 +482,15 @@ </param> <param> <key>type</key> - <value>complex</value> + <value>fc32</value> + </param> + <param> + <key>otw</key> + <value></value> + </param> + <param> + <key>stream_args</key> + <value></value> </param> <param> <key>dev_addr</key> @@ -442,7 +509,11 @@ <value>1</value> </param> <param> - <key>ref_source0</key> + <key>clock_source0</key> + <value></value> + </param> + <param> + <key>time_source0</key> <value></value> </param> <param> @@ -450,7 +521,11 @@ <value></value> </param> <param> - <key>ref_source1</key> + <key>clock_source1</key> + <value></value> + </param> + <param> + <key>time_source1</key> <value></value> </param> <param> @@ -458,7 +533,11 @@ <value></value> </param> <param> - <key>ref_source2</key> + <key>clock_source2</key> + <value></value> + </param> + <param> + <key>time_source2</key> <value></value> </param> <param> @@ -466,7 +545,11 @@ <value></value> </param> <param> - <key>ref_source3</key> + <key>clock_source3</key> + <value></value> + </param> + <param> + <key>time_source3</key> <value></value> </param> <param> @@ -474,7 +557,11 @@ <value></value> </param> <param> - <key>ref_source4</key> + <key>clock_source4</key> + <value></value> + </param> + <param> + <key>time_source4</key> <value></value> </param> <param> @@ -482,7 +569,11 @@ <value></value> </param> <param> - <key>ref_source5</key> + <key>clock_source5</key> + <value></value> + </param> + <param> + <key>time_source5</key> <value></value> </param> <param> @@ -490,7 +581,11 @@ <value></value> </param> <param> - <key>ref_source6</key> + <key>clock_source6</key> + <value></value> + </param> + <param> + <key>time_source6</key> <value></value> </param> <param> @@ -498,7 +593,11 @@ <value></value> </param> <param> - <key>ref_source7</key> + <key>clock_source7</key> + <value></value> + </param> + <param> + <key>time_source7</key> <value></value> </param> <param> @@ -1144,63 +1243,12 @@ <value></value> </param> <param> - <key>_coordinate</key> - <value>(827, 299)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>options</key> - <param> - <key>id</key> - <value>uhd_tx_dpsk</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>title</key> - <value>UHD TX DPSK</value> - </param> - <param> - <key>author</key> - <value></value> - </param> - <param> - <key>description</key> - <value></value> - </param> - <param> - <key>window_size</key> - <value>1280, 1024</value> - </param> - <param> - <key>generate_options</key> - <value>wx_gui</value> - </param> - <param> - <key>category</key> - <value>Custom</value> - </param> - <param> - <key>run_options</key> - <value>prompt</value> - </param> - <param> - <key>run</key> - <value>True</value> - </param> - <param> - <key>realtime_scheduling</key> - <value></value> + <key>freqvar</key> + <value>None</value> </param> <param> <key>_coordinate</key> - <value>(10, 10)</value> + <value>(827, 299)</value> </param> <param> <key>_rotation</key> diff --git a/gr-uhd/examples/grc/uhd_wbfm_receive.grc b/gr-uhd/examples/grc/uhd_wbfm_receive.grc index 943e82cf31..e19015a790 100644 --- a/gr-uhd/examples/grc/uhd_wbfm_receive.grc +++ b/gr-uhd/examples/grc/uhd_wbfm_receive.grc @@ -1,6 +1,6 @@ <?xml version='1.0' encoding='ASCII'?> <flow_graph> - <timestamp>Tue Apr 24 16:59:09 2012</timestamp> + <timestamp>Mon Mar 18 11:13:02 2013</timestamp> <block> <key>options</key> <param> @@ -43,6 +43,10 @@ <key>run</key> <value>True</value> </param> + <param> + <key>max_nouts</key> + <value>0</value> + </param> <param> <key>realtime_scheduling</key> <value></value> @@ -1040,41 +1044,6 @@ <value>0</value> </param> </block> - <block> - <key>parameter</key> - <param> - <key>id</key> - <value>address</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>label</key> - <value>IP Address</value> - </param> - <param> - <key>value</key> - <value>addr=192.168.10.2</value> - </param> - <param> - <key>type</key> - <value>string</value> - </param> - <param> - <key>short_id</key> - <value>a</value> - </param> - <param> - <key>_coordinate</key> - <value>(199, 14)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> <block> <key>parameter</key> <param> @@ -1180,33 +1149,6 @@ <value>0</value> </param> </block> - <block> - <key>blks2_wfm_rcv</key> - <param> - <key>id</key> - <value>blks2_wfm_rcv</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>quad_rate</key> - <value>samp_rate</value> - </param> - <param> - <key>audio_decimation</key> - <value>audio_decim</value> - </param> - <param> - <key>_coordinate</key> - <value>(626, 153)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> <block> <key>low_pass_filter</key> <param> @@ -1363,6 +1305,10 @@ <key>notebook</key> <value></value> </param> + <param> + <key>freqvar</key> + <value>None</value> + </param> <param> <key>_coordinate</key> <value>(624, 278)</value> @@ -1372,6 +1318,68 @@ <value>0</value> </param> </block> + <block> + <key>analog_wfm_rcv</key> + <param> + <key>id</key> + <value>analog_wfm_rcv</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>quad_rate</key> + <value>samp_rate</value> + </param> + <param> + <key>audio_decimation</key> + <value>audio_decim</value> + </param> + <param> + <key>_coordinate</key> + <value>(625, 153)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>parameter</key> + <param> + <key>id</key> + <value>address</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>label</key> + <value>IP Address</value> + </param> + <param> + <key>value</key> + <value>addr=192.168.10.2</value> + </param> + <param> + <key>type</key> + <value>string</value> + </param> + <param> + <key>short_id</key> + <value>a</value> + </param> + <param> + <key>_coordinate</key> + <value>(199, 14)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> <connection> <source_block_id>blocks_multiply_const_vxx</source_block_id> <sink_block_id>audio_sink</sink_block_id> @@ -1379,14 +1387,14 @@ <sink_key>0</sink_key> </connection> <connection> - <source_block_id>blks2_wfm_rcv</source_block_id> + <source_block_id>analog_wfm_rcv</source_block_id> <sink_block_id>blocks_multiply_const_vxx</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> <source_block_id>low_pass_filter_0</source_block_id> - <sink_block_id>blks2_wfm_rcv</sink_block_id> + <sink_block_id>analog_wfm_rcv</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> diff --git a/gr-wxgui/python/constsink_gl.py b/gr-wxgui/python/constsink_gl.py index 0313e7fea0..dea76ea753 100644 --- a/gr-wxgui/python/constsink_gl.py +++ b/gr-wxgui/python/constsink_gl.py @@ -26,6 +26,7 @@ import const_window import common from gnuradio import gr from gnuradio import blocks +from gnuradio import analog from pubsub import pubsub from constants import * import sys @@ -100,7 +101,7 @@ class const_sink_c(gr.hier_block2, common.wxgui_hb): # gain_omega, # omega_limit, #) - agc = gr.feedforward_agc_cc(16, 1) + agc = analog.feedforward_agc_cc(16, 1) msgq = gr.msg_queue(2) sink = blocks.message_sink(gr.sizeof_gr_complex*const_size, msgq, True) #controller diff --git a/grc/blocks/blks2_am_demod_cf.xml b/grc/blocks/blks2_am_demod_cf.xml deleted file mode 100644 index 898c613beb..0000000000 --- a/grc/blocks/blks2_am_demod_cf.xml +++ /dev/null @@ -1,47 +0,0 @@ -<?xml version="1.0"?> -<!-- -################################################### -##AM Demod -################################################### - --> -<block> - <name>AM Demod</name> - <key>blks2_am_demod_cf</key> - <import>from gnuradio import blks2</import> - <make>blks2.am_demod_cf( - channel_rate=$chan_rate, - audio_decim=$audio_decim, - audio_pass=$audio_pass, - audio_stop=$audio_stop, -)</make> - <param> - <name>Channel Rate</name> - <key>chan_rate</key> - <type>real</type> - </param> - <param> - <name>Audio Decimation</name> - <key>audio_decim</key> - <type>int</type> - </param> - <param> - <name>Audio Pass</name> - <key>audio_pass</key> - <value>5000</value> - <type>real</type> - </param> - <param> - <name>Audio Stop</name> - <key>audio_stop</key> - <value>5500</value> - <type>real</type> - </param> - <sink> - <name>in</name> - <type>complex</type> - </sink> - <source> - <name>out</name> - <type>float</type> - </source> -</block> diff --git a/grc/blocks/blks2_fm_deemph.xml b/grc/blocks/blks2_fm_deemph.xml deleted file mode 100644 index 6f38dab6d0..0000000000 --- a/grc/blocks/blks2_fm_deemph.xml +++ /dev/null @@ -1,31 +0,0 @@ -<?xml version="1.0"?> -<!-- -################################################### -##FM Deemphasis -################################################### - --> -<block> - <name>FM Deemphasis</name> - <key>blks2_fm_deemph</key> - <import>from gnuradio import blks2</import> - <make>blks2.fm_deemph(fs=$samp_rate, tau=$tau)</make> - <param> - <name>Sample Rate</name> - <key>samp_rate</key> - <type>real</type> - </param> - <param> - <name>Tau</name> - <key>tau</key> - <value>75e-6</value> - <type>real</type> - </param> - <sink> - <name>in</name> - <type>float</type> - </sink> - <source> - <name>out</name> - <type>float</type> - </source> -</block> diff --git a/grc/blocks/blks2_fm_demod_cf.xml b/grc/blocks/blks2_fm_demod_cf.xml deleted file mode 100644 index 2ce1fb9732..0000000000 --- a/grc/blocks/blks2_fm_demod_cf.xml +++ /dev/null @@ -1,68 +0,0 @@ -<?xml version="1.0"?> -<!-- -################################################### -##FM Demod -################################################### - --> -<block> - <name>FM Demod</name> - <key>blks2_fm_demod_cf</key> - <import>from gnuradio import blks2</import> - <make>blks2.fm_demod_cf( - channel_rate=$chan_rate, - audio_decim=$audio_decim, - deviation=$deviation, - audio_pass=$audio_pass, - audio_stop=$audio_stop, - gain=$gain, - tau=$tau, -)</make> - <param> - <name>Channel Rate</name> - <key>chan_rate</key> - <type>real</type> - </param> - <param> - <name>Audio Decimation</name> - <key>audio_decim</key> - <type>int</type> - </param> - <param> - <name>Deviation</name> - <key>deviation</key> - <value>75000</value> - <type>real</type> - </param> - <param> - <name>Audio Pass</name> - <key>audio_pass</key> - <value>15000</value> - <type>real</type> - </param> - <param> - <name>Audio Stop</name> - <key>audio_stop</key> - <value>16000</value> - <type>real</type> - </param> - <param> - <name>Gain</name> - <key>gain</key> - <value>1.0</value> - <type>real</type> - </param> - <param> - <name>Tau</name> - <key>tau</key> - <value>75e-6</value> - <type>real</type> - </param> - <sink> - <name>in</name> - <type>complex</type> - </sink> - <source> - <name>out</name> - <type>float</type> - </source> -</block> diff --git a/grc/blocks/blks2_fm_preemph.xml b/grc/blocks/blks2_fm_preemph.xml deleted file mode 100644 index 672a7a7b28..0000000000 --- a/grc/blocks/blks2_fm_preemph.xml +++ /dev/null @@ -1,31 +0,0 @@ -<?xml version="1.0"?> -<!-- -################################################### -##FM Preemphasis -################################################### - --> -<block> - <name>FM Preemphasis</name> - <key>blks2_fm_preemph</key> - <import>from gnuradio import blks2</import> - <make>blks2.fm_preemph(fs=$samp_rate, tau=$tau)</make> - <param> - <name>Sample Rate</name> - <key>samp_rate</key> - <type>real</type> - </param> - <param> - <name>Tau</name> - <key>tau</key> - <value>75e-6</value> - <type>real</type> - </param> - <sink> - <name>in</name> - <type>float</type> - </sink> - <source> - <name>out</name> - <type>float</type> - </source> -</block> diff --git a/grc/blocks/blks2_nbfm_rx.xml b/grc/blocks/blks2_nbfm_rx.xml deleted file mode 100644 index d332b9a6b0..0000000000 --- a/grc/blocks/blks2_nbfm_rx.xml +++ /dev/null @@ -1,48 +0,0 @@ -<?xml version="1.0"?> -<!-- -################################################### -##NBFM Receive -################################################### - --> -<block> - <name>NBFM Receive</name> - <key>blks2_nbfm_rx</key> - <import>from gnuradio import blks2</import> - <make>blks2.nbfm_rx( - audio_rate=$audio_rate, - quad_rate=$quad_rate, - tau=$tau, - max_dev=$max_dev, -)</make> - <param> - <name>Audio Rate</name> - <key>audio_rate</key> - <type>int</type> - </param> - <param> - <name>Quadrature Rate</name> - <key>quad_rate</key> - <type>int</type> - </param> - <param> - <name>Tau</name> - <key>tau</key> - <value>75e-6</value> - <type>real</type> - </param> - <param> - <name>Max Deviation</name> - <key>max_dev</key> - <value>5e3</value> - <type>real</type> - </param> - <check>$quad_rate%$audio_rate == 0</check> - <sink> - <name>in</name> - <type>complex</type> - </sink> - <source> - <name>out</name> - <type>float</type> - </source> -</block> diff --git a/grc/blocks/blks2_nbfm_tx.xml b/grc/blocks/blks2_nbfm_tx.xml deleted file mode 100644 index 3aa7ede0e2..0000000000 --- a/grc/blocks/blks2_nbfm_tx.xml +++ /dev/null @@ -1,48 +0,0 @@ -<?xml version="1.0"?> -<!-- -################################################### -##NBFM Transmit -################################################### - --> -<block> - <name>NBFM Transmit</name> - <key>blks2_nbfm_tx</key> - <import>from gnuradio import blks2</import> - <make>blks2.nbfm_tx( - audio_rate=$audio_rate, - quad_rate=$quad_rate, - tau=$tau, - max_dev=$max_dev, -)</make> - <param> - <name>Audio Rate</name> - <key>audio_rate</key> - <type>int</type> - </param> - <param> - <name>Quadrature Rate</name> - <key>quad_rate</key> - <type>int</type> - </param> - <param> - <name>Tau</name> - <key>tau</key> - <value>75e-6</value> - <type>real</type> - </param> - <param> - <name>Max Deviation</name> - <key>max_dev</key> - <value>5e3</value> - <type>real</type> - </param> - <check>$quad_rate%$audio_rate == 0</check> - <sink> - <name>in</name> - <type>float</type> - </sink> - <source> - <name>out</name> - <type>complex</type> - </source> -</block> diff --git a/grc/blocks/blks2_wfm_rcv.xml b/grc/blocks/blks2_wfm_rcv.xml deleted file mode 100644 index 37fb3ba8c4..0000000000 --- a/grc/blocks/blks2_wfm_rcv.xml +++ /dev/null @@ -1,33 +0,0 @@ -<?xml version="1.0"?> -<!-- -################################################### -##WBFM Receive -################################################### - --> -<block> - <name>WBFM Receive</name> - <key>blks2_wfm_rcv</key> - <import>from gnuradio import blks2</import> - <make>blks2.wfm_rcv( - quad_rate=$quad_rate, - audio_decimation=$audio_decimation, -)</make> - <param> - <name>Quadrature Rate</name> - <key>quad_rate</key> - <type>real</type> - </param> - <param> - <name>Audio Decimation</name> - <key>audio_decimation</key> - <type>int</type> - </param> - <sink> - <name>in</name> - <type>complex</type> - </sink> - <source> - <name>out</name> - <type>float</type> - </source> -</block> diff --git a/grc/blocks/blks2_wfm_rcv_pll.xml b/grc/blocks/blks2_wfm_rcv_pll.xml deleted file mode 100644 index 2771350cfd..0000000000 --- a/grc/blocks/blks2_wfm_rcv_pll.xml +++ /dev/null @@ -1,37 +0,0 @@ -<?xml version="1.0"?> -<!-- -################################################### -##WBFM Receive PLL -################################################### - --> -<block> - <name>WBFM Receive PLL</name> - <key>blks2_wfm_rcv_pll</key> - <import>from gnuradio import blks2</import> - <make>blks2.wfm_rcv_pll( - demod_rate=$quad_rate, - audio_decimation=$audio_decimation, -)</make> - <param> - <name>Quadrature Rate</name> - <key>quad_rate</key> - <type>real</type> - </param> - <param> - <name>Audio Decimation</name> - <key>audio_decimation</key> - <type>int</type> - </param> - <sink> - <name>in</name> - <type>complex</type> - </sink> - <source> - <name>Lout</name> - <type>float</type> - </source> - <source> - <name>Rout</name> - <type>float</type> - </source> -</block> diff --git a/grc/blocks/blks2_wfm_tx.xml b/grc/blocks/blks2_wfm_tx.xml deleted file mode 100644 index cff92d8190..0000000000 --- a/grc/blocks/blks2_wfm_tx.xml +++ /dev/null @@ -1,48 +0,0 @@ -<?xml version="1.0"?> -<!-- -################################################### -##WBFM Transmit -################################################### - --> -<block> - <name>WBFM Transmit</name> - <key>blks2_wfm_tx</key> - <import>from gnuradio import blks2</import> - <make>blks2.wfm_tx( - audio_rate=$audio_rate, - quad_rate=$quad_rate, - tau=$tau, - max_dev=$max_dev, -)</make> - <param> - <name>Audio Rate</name> - <key>audio_rate</key> - <type>int</type> - </param> - <param> - <name>Quadrature Rate</name> - <key>quad_rate</key> - <type>int</type> - </param> - <param> - <name>Tau</name> - <key>tau</key> - <value>75e-6</value> - <type>real</type> - </param> - <param> - <name>Max Deviation</name> - <key>max_dev</key> - <value>75e3</value> - <type>real</type> - </param> - <check>$quad_rate%$audio_rate == 0</check> - <sink> - <name>in</name> - <type>float</type> - </sink> - <source> - <name>out</name> - <type>complex</type> - </source> -</block> -- cgit v1.2.3 From c856fe0106bcbcad871452014af2eb459a32e916 Mon Sep 17 00:00:00 2001 From: Tom Rondeau <trondeau@vt.edu> Date: Mon, 18 Mar 2013 15:55:38 -0400 Subject: wxgui: Moved oscope and histogram bases into wxgui. This makes gr-wxgui more like a normal component that generates a libgnuradio-wxgui.so file. --- gnuradio-core/CMakeLists.txt | 1 - gnuradio-core/src/lib/CMakeLists.txt | 1 - gnuradio-core/src/lib/io/CMakeLists.txt | 58 --- gnuradio-core/src/lib/io/gr_histo_sink.i | 39 -- gnuradio-core/src/lib/io/gr_histo_sink_f.cc | 165 -------- gnuradio-core/src/lib/io/gr_histo_sink_f.h | 71 ---- gnuradio-core/src/lib/io/gr_oscope_guts.cc | 437 -------------------- gnuradio-core/src/lib/io/gr_oscope_guts.h | 123 ------ gnuradio-core/src/lib/io/gr_oscope_sink.i | 77 ---- gnuradio-core/src/lib/io/gr_oscope_sink_f.cc | 78 ---- gnuradio-core/src/lib/io/gr_oscope_sink_f.h | 63 --- gnuradio-core/src/lib/io/gr_oscope_sink_x.cc | 156 -------- gnuradio-core/src/lib/io/gr_oscope_sink_x.h | 77 ---- gnuradio-core/src/lib/io/gr_trigger_mode.h | 38 -- gnuradio-core/src/lib/io/io.i | 37 -- gnuradio-core/src/lib/swig/CMakeLists.txt | 2 +- gnuradio-core/src/lib/swig/gnuradio_core.py | 1 - gnuradio-core/src/lib/swig/gnuradio_core_io.i | 32 -- gr-audio/examples/grc/cvsd_sweep.grc | 6 +- gr-digital/examples/demod/ber_simulation.grc | 2 +- gr-digital/examples/demod/digital_freq_lock.grc | 4 +- gr-digital/examples/demod/dpsk_loopback.grc | 2 +- gr-digital/examples/demod/pam_sync.grc | 4 +- gr-digital/examples/demod/pam_timing.grc | 10 +- gr-howto-write-a-block/apps/howto_square.grc | 4 +- gr-howto-write-a-block/apps/howto_square.py | 4 +- gr-noaa/examples/usrp_rx_hrpt.grc | 2 +- .../examples/grc/interference_cancellation.grc | 2 +- gr-trellis/examples/grc/pccc.grc | 2 +- gr-trellis/examples/grc/pccc1.grc | 2 +- gr-trellis/examples/grc/sccc.grc | 2 +- gr-trellis/examples/grc/sccc1.grc | 2 +- gr-uhd/apps/uhd_fft | 4 + gr-uhd/examples/grc/uhd_dpsk_mod.grc | 2 +- gr-uhd/examples/grc/uhd_fft.grc | 6 +- gr-wxgui/CMakeLists.txt | 16 +- gr-wxgui/grc/wxgui_constellationsink2.xml | 1 + gr-wxgui/grc/wxgui_fftsink2.xml | 1 + gr-wxgui/grc/wxgui_histosink2.xml | 1 + gr-wxgui/grc/wxgui_numbersink2.xml | 1 + gr-wxgui/grc/wxgui_scopesink2.xml | 10 +- gr-wxgui/grc/wxgui_termsink.xml | 1 + gr-wxgui/grc/wxgui_waterfallsink2.xml | 1 + gr-wxgui/include/wxgui/CMakeLists.txt | 32 ++ gr-wxgui/include/wxgui/api.h | 33 ++ gr-wxgui/include/wxgui/histo_sink_f.h | 55 +++ gr-wxgui/include/wxgui/oscope_guts.h | 131 ++++++ gr-wxgui/include/wxgui/oscope_sink_f.h | 53 +++ gr-wxgui/include/wxgui/oscope_sink_x.h | 91 +++++ gr-wxgui/include/wxgui/trigger_mode.h | 44 +++ gr-wxgui/lib/CMakeLists.txt | 78 ++++ gr-wxgui/lib/gnuradio-wxgui.rc.in | 54 +++ gr-wxgui/lib/histo_sink_f_impl.cc | 186 +++++++++ gr-wxgui/lib/histo_sink_f_impl.h | 63 +++ gr-wxgui/lib/oscope_guts.cc | 439 +++++++++++++++++++++ gr-wxgui/lib/oscope_sink_f_impl.cc | 84 ++++ gr-wxgui/lib/oscope_sink_f_impl.h | 51 +++ gr-wxgui/lib/oscope_sink_x.cc | 161 ++++++++ gr-wxgui/python/__init__.py | 2 + gr-wxgui/python/histosink_gl.py | 3 +- gr-wxgui/python/scope_window.py | 23 +- gr-wxgui/python/scopesink_gl.py | 13 +- gr-wxgui/python/scopesink_nongl.py | 11 +- gr-wxgui/python/waterfallsink_nongl.py | 4 +- gr-wxgui/swig/CMakeLists.txt | 57 +++ gr-wxgui/swig/wxgui_swig.i | 43 ++ grc/examples/xmlrpc/xmlrpc_server.grc | 2 +- 67 files changed, 1745 insertions(+), 1516 deletions(-) delete mode 100644 gnuradio-core/src/lib/io/CMakeLists.txt delete mode 100644 gnuradio-core/src/lib/io/gr_histo_sink.i delete mode 100644 gnuradio-core/src/lib/io/gr_histo_sink_f.cc delete mode 100644 gnuradio-core/src/lib/io/gr_histo_sink_f.h delete mode 100644 gnuradio-core/src/lib/io/gr_oscope_guts.cc delete mode 100644 gnuradio-core/src/lib/io/gr_oscope_guts.h delete mode 100644 gnuradio-core/src/lib/io/gr_oscope_sink.i delete mode 100644 gnuradio-core/src/lib/io/gr_oscope_sink_f.cc delete mode 100644 gnuradio-core/src/lib/io/gr_oscope_sink_f.h delete mode 100644 gnuradio-core/src/lib/io/gr_oscope_sink_x.cc delete mode 100644 gnuradio-core/src/lib/io/gr_oscope_sink_x.h delete mode 100644 gnuradio-core/src/lib/io/gr_trigger_mode.h delete mode 100644 gnuradio-core/src/lib/io/io.i delete mode 100644 gnuradio-core/src/lib/swig/gnuradio_core_io.i create mode 100644 gr-wxgui/include/wxgui/CMakeLists.txt create mode 100644 gr-wxgui/include/wxgui/api.h create mode 100644 gr-wxgui/include/wxgui/histo_sink_f.h create mode 100644 gr-wxgui/include/wxgui/oscope_guts.h create mode 100644 gr-wxgui/include/wxgui/oscope_sink_f.h create mode 100644 gr-wxgui/include/wxgui/oscope_sink_x.h create mode 100644 gr-wxgui/include/wxgui/trigger_mode.h create mode 100644 gr-wxgui/lib/CMakeLists.txt create mode 100644 gr-wxgui/lib/gnuradio-wxgui.rc.in create mode 100644 gr-wxgui/lib/histo_sink_f_impl.cc create mode 100644 gr-wxgui/lib/histo_sink_f_impl.h create mode 100644 gr-wxgui/lib/oscope_guts.cc create mode 100644 gr-wxgui/lib/oscope_sink_f_impl.cc create mode 100644 gr-wxgui/lib/oscope_sink_f_impl.h create mode 100644 gr-wxgui/lib/oscope_sink_x.cc create mode 100644 gr-wxgui/swig/CMakeLists.txt create mode 100644 gr-wxgui/swig/wxgui_swig.i (limited to 'gr-wxgui/python') diff --git a/gnuradio-core/CMakeLists.txt b/gnuradio-core/CMakeLists.txt index 9e910aa6bb..154a078826 100644 --- a/gnuradio-core/CMakeLists.txt +++ b/gnuradio-core/CMakeLists.txt @@ -52,7 +52,6 @@ GR_SET_GLOBAL(GNURADIO_CORE_INCLUDE_DIRS ${CMAKE_CURRENT_BINARY_DIR}/src/lib/filter ${CMAKE_CURRENT_SOURCE_DIR}/src/lib/filter ${CMAKE_CURRENT_SOURCE_DIR}/src/lib/missing - ${CMAKE_CURRENT_SOURCE_DIR}/src/lib/io ${CMAKE_CURRENT_BINARY_DIR}/src/lib/swig ${CMAKE_CURRENT_SOURCE_DIR}/src/lib/swig ${CMAKE_CURRENT_SOURCE_DIR}/src/lib/hier diff --git a/gnuradio-core/src/lib/CMakeLists.txt b/gnuradio-core/src/lib/CMakeLists.txt index b5a41ec430..c72be94db5 100644 --- a/gnuradio-core/src/lib/CMakeLists.txt +++ b/gnuradio-core/src/lib/CMakeLists.txt @@ -28,7 +28,6 @@ include(${CMAKE_CURRENT_SOURCE_DIR}/ConfigChecks.cmake) GR_INCLUDE_SUBDIRECTORY(missing) GR_INCLUDE_SUBDIRECTORY(runtime) GR_INCLUDE_SUBDIRECTORY(general) -GR_INCLUDE_SUBDIRECTORY(io) list(APPEND gnuradio_core_sources bug_work_around_6.cc) list(APPEND test_gnuradio_core_sources bug_work_around_6.cc) diff --git a/gnuradio-core/src/lib/io/CMakeLists.txt b/gnuradio-core/src/lib/io/CMakeLists.txt deleted file mode 100644 index ee8e9befa5..0000000000 --- a/gnuradio-core/src/lib/io/CMakeLists.txt +++ /dev/null @@ -1,58 +0,0 @@ -# Copyright 2010-2011 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. - -######################################################################## -# This file included, use CMake directory variables -######################################################################## - -######################################################################## -# Append gnuradio-core library sources -######################################################################## -list(APPEND gnuradio_core_sources - ${CMAKE_CURRENT_SOURCE_DIR}/gr_histo_sink_f.cc - ${CMAKE_CURRENT_SOURCE_DIR}/gr_oscope_guts.cc - ${CMAKE_CURRENT_SOURCE_DIR}/gr_oscope_sink_f.cc - ${CMAKE_CURRENT_SOURCE_DIR}/gr_oscope_sink_x.cc -) - -######################################################################## -# Install runtime headers -######################################################################## -install(FILES - ${CMAKE_CURRENT_SOURCE_DIR}/gr_histo_sink_f.h - ${CMAKE_CURRENT_SOURCE_DIR}/gr_oscope_guts.h - ${CMAKE_CURRENT_SOURCE_DIR}/gr_oscope_sink_f.h - ${CMAKE_CURRENT_SOURCE_DIR}/gr_oscope_sink_x.h - ${CMAKE_CURRENT_SOURCE_DIR}/gr_trigger_mode.h - DESTINATION ${GR_INCLUDE_DIR}/gnuradio - COMPONENT "core_devel" -) - -######################################################################## -# Install swig headers -######################################################################## -if(ENABLE_PYTHON) -install(FILES - ${CMAKE_CURRENT_SOURCE_DIR}/io.i - ${CMAKE_CURRENT_SOURCE_DIR}/gr_histo_sink.i - ${CMAKE_CURRENT_SOURCE_DIR}/gr_oscope_sink.i - DESTINATION ${GR_INCLUDE_DIR}/gnuradio/swig - COMPONENT "core_swig" -) -endif(ENABLE_PYTHON) diff --git a/gnuradio-core/src/lib/io/gr_histo_sink.i b/gnuradio-core/src/lib/io/gr_histo_sink.i deleted file mode 100644 index 14079e1907..0000000000 --- a/gnuradio-core/src/lib/io/gr_histo_sink.i +++ /dev/null @@ -1,39 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2009 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. - */ - - -GR_SWIG_BLOCK_MAGIC(gr,histo_sink_f) - -gr_histo_sink_f_sptr gr_make_histo_sink_f (gr_msg_queue_sptr msgq); - -class gr_histo_sink_f : public gr_sync_block -{ -public: - ~gr_histo_sink_f (void); - - 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); - -}; diff --git a/gnuradio-core/src/lib/io/gr_histo_sink_f.cc b/gnuradio-core/src/lib/io/gr_histo_sink_f.cc deleted file mode 100644 index fc0c12ce64..0000000000 --- a/gnuradio-core/src/lib/io/gr_histo_sink_f.cc +++ /dev/null @@ -1,165 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2009,2010,2011 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_histo_sink_f.h> -#include <gr_io_signature.h> -#include <boost/math/special_functions/round.hpp> - -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; -} - -gr_histo_sink_f_sptr -gr_make_histo_sink_f (gr_msg_queue_sptr msgq) -{ - return gnuradio::get_initial_sptr(new gr_histo_sink_f (msgq)); -} - -gr_histo_sink_f::gr_histo_sink_f (gr_msg_queue_sptr msgq) - : gr_sync_block ("histo_sink_f", gr_make_io_signature (1, 1, sizeof (float)), gr_make_io_signature (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); -} - -gr_histo_sink_f::~gr_histo_sink_f (void) -{ - delete [] d_samps; - delete [] d_bins; -} - -int -gr_histo_sink_f::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]; - gruel::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 -gr_histo_sink_f::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 */ - gr_message_sptr msg = gr_make_message(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 -gr_histo_sink_f::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 -gr_histo_sink_f::get_frame_size(void){ - return d_frame_size; -} - -unsigned int -gr_histo_sink_f::get_num_bins(void){ - return d_num_bins; -} - -/************************************************** - * Setters - **************************************************/ -void -gr_histo_sink_f::set_frame_size(unsigned int frame_size){ - gruel::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 -gr_histo_sink_f::set_num_bins(unsigned int num_bins){ - gruel::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(); -} diff --git a/gnuradio-core/src/lib/io/gr_histo_sink_f.h b/gnuradio-core/src/lib/io/gr_histo_sink_f.h deleted file mode 100644 index 934066ba20..0000000000 --- a/gnuradio-core/src/lib/io/gr_histo_sink_f.h +++ /dev/null @@ -1,71 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2009 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_H -#define INCLUDED_GR_HISTO_SINK_F_H - -#include <gr_core_api.h> -#include <gr_sync_block.h> -#include <gr_msg_queue.h> -#include <gruel/thread.h> - -class gr_histo_sink_f; -typedef boost::shared_ptr<gr_histo_sink_f> gr_histo_sink_f_sptr; - -GR_CORE_API gr_histo_sink_f_sptr gr_make_histo_sink_f (gr_msg_queue_sptr msgq); - -/*! - * \brief Histogram module. - * \ingroup sink_blk - */ -class GR_CORE_API gr_histo_sink_f : public gr_sync_block -{ -private: - gr_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; - gruel::mutex d_mutex; - - friend GR_CORE_API gr_histo_sink_f_sptr gr_make_histo_sink_f (gr_msg_queue_sptr msgq); - gr_histo_sink_f (gr_msg_queue_sptr msgq); - void send_frame(void); - void clear(void); - -public: - ~gr_histo_sink_f (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); - -}; - -#endif /* INCLUDED_GR_HISTO_SINK_F_H */ diff --git a/gnuradio-core/src/lib/io/gr_oscope_guts.cc b/gnuradio-core/src/lib/io/gr_oscope_guts.cc deleted file mode 100644 index a5ea3002a9..0000000000 --- a/gnuradio-core/src/lib/io/gr_oscope_guts.cc +++ /dev/null @@ -1,437 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2003,2005 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_oscope_guts.h> -#include <stdexcept> -#include <stdio.h> -#include <algorithm> -#include <unistd.h> -#include <math.h> -#include <assert.h> - -/* - * 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); -} - -gr_oscope_guts::gr_oscope_guts (double sample_rate, gr_msg_queue_sptr msgq) - : d_nchannels (1), - d_msgq (msgq), - d_trigger_mode (gr_TRIG_MODE_AUTO), - d_trigger_slope (gr_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 (); -} - -gr_oscope_guts::~gr_oscope_guts () -{ - for (int i = 0; i < MAX_CHANNELS; i++) - delete [] d_buffer[i]; -} - -// MANIPULATORS - -// \p channel_data points to nchannels float values. These are the values -// for each channel at this sample time. - -void -gr_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 != gr_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 -gr_oscope_guts::enter_hold_off () -{ - d_state = HOLD_OFF; - d_hold_off_count = d_hold_off_count_init; -} - -void -gr_oscope_guts::enter_look_for_trigger () -{ - d_pre_trigger_count = 0; - d_state = LOOK_FOR_TRIGGER; -} - -void -gr_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 -gr_oscope_guts::found_trigger () -{ - int mx = d_trigger_mode == gr_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 gr_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 gr_TRIG_MODE_NORM: //look for trigger - switch (d_trigger_slope){ - - case gr_TRIG_SLOPE_POS: //trigger point in pos slope? - if (new_sample < d_trigger_level || prev_sample >= d_trigger_level) return false; - break; - - case gr_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 gr_TRIG_MODE_FREE: //free run mode, always trigger - d_trigger_off = 0; - return true; - - default: - assert (0); - return false; - } -} - -// ---------------------------------------------------------------- -// write output records (duh!) - -void -gr_oscope_guts::write_output_records () -{ - int mx; - - mx = d_trigger_mode == gr_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 - gr_message_sptr msg = - gr_make_message(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 -gr_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 -gr_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 -gr_oscope_guts::set_sample_rate(double sample_rate) -{ - d_sample_rate = sample_rate; - return set_update_rate(update_rate()); -} - - -void -gr_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 -gr_oscope_guts::set_trigger_channel (int channel) -{ - if (channel >= 0 && channel < d_nchannels){ - d_trigger_channel = channel; - trigger_changed (); - return true; - } - - return false; -} - -bool -gr_oscope_guts::set_trigger_mode (gr_trigger_mode mode) -{ - d_trigger_mode = mode; - trigger_changed (); - return true; -} - -bool -gr_oscope_guts::set_trigger_slope (gr_trigger_slope slope) -{ - d_trigger_slope = slope; - trigger_changed (); - return true; -} - -bool -gr_oscope_guts::set_trigger_level (double trigger_level) -{ - d_trigger_level = trigger_level; - trigger_changed (); - return true; -} - -bool -gr_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 -gr_oscope_guts::set_num_channels(int nchannels) -{ - if (nchannels > 0 && nchannels <= MAX_CHANNELS){ - d_nchannels = nchannels; - return true; - } - return false; -} - - -void -gr_oscope_guts::trigger_changed () -{ - enter_look_for_trigger (); -} - -// ACCESSORS - -int -gr_oscope_guts::num_channels () const -{ - return d_nchannels; -} - -double -gr_oscope_guts::sample_rate () const -{ - return d_sample_rate; -} - -double -gr_oscope_guts::update_rate () const -{ - return d_update_rate; -} - -int -gr_oscope_guts::get_decimation_count () const -{ - return d_decimator_count_init; -} - -int -gr_oscope_guts::get_trigger_channel () const -{ - return d_trigger_channel; -} - -gr_trigger_mode -gr_oscope_guts::get_trigger_mode () const -{ - return d_trigger_mode; -} - -gr_trigger_slope -gr_oscope_guts::get_trigger_slope () const -{ - return d_trigger_slope; -} - -double -gr_oscope_guts::get_trigger_level () const -{ - return d_trigger_level; -} - -int -gr_oscope_guts::get_samples_per_output_record () const -{ - int mx; - - mx = OUTPUT_RECORD_SIZE; - if (d_trigger_mode == gr_TRIG_MODE_STRIPCHART) - { - mx = OUTPUT_RECORD_SIZE*SCHART_MULT; - } - return mx; -} diff --git a/gnuradio-core/src/lib/io/gr_oscope_guts.h b/gnuradio-core/src/lib/io/gr_oscope_guts.h deleted file mode 100644 index bc9513c7e7..0000000000 --- a/gnuradio-core/src/lib/io/gr_oscope_guts.h +++ /dev/null @@ -1,123 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2003,2005 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_GUTS_H -#define INCLUDED_GR_OSCOPE_GUTS_H - -#include <gr_core_api.h> -#include <gr_trigger_mode.h> -#include <gr_msg_queue.h> - -/*! - * \brief guts of oscilloscope trigger and buffer module - * - * This module processes sets of samples provided the \p process_sample - * method. When appropriate given the updateRate, sampleRate and - * trigger conditions, process_sample will periodically write output - * records of captured data to output_fd. For each trigger event, - * nchannels records will be written. Each record consists of - * get_samples_per_output_record binary floats. The trigger instant - * occurs at the 1/2 way point in the buffer. Thus, output records - * consist of 50% pre-trigger data and 50% post-trigger data. - */ - -class GR_CORE_API gr_oscope_guts { -public: - static const int MAX_CHANNELS = 8; -private: - enum scope_state { HOLD_OFF, LOOK_FOR_TRIGGER, POST_TRIGGER }; - - int d_nchannels; // how many channels - gr_msg_queue_sptr d_msgq; // message queue we stuff output records into - gr_trigger_mode d_trigger_mode; - gr_trigger_slope d_trigger_slope; - int d_trigger_channel; // which channel to watch for trigger condition - double d_sample_rate; // input sample rate in Hz - double d_update_rate; // approx freq to produce an output record (Hz) - double d_trigger_level; - - int d_obi; // output buffer index - float *d_buffer[MAX_CHANNELS]; - - scope_state d_state; - int d_decimator_count; - int d_decimator_count_init; - int d_hold_off_count; - int d_hold_off_count_init; - int d_pre_trigger_count; - int d_post_trigger_count; - int d_post_trigger_count_init; - float d_trigger_off; //%sample trigger is off - - // NOT IMPLEMENTED - gr_oscope_guts (const gr_oscope_guts &rhs); // no copy constructor - gr_oscope_guts &operator= (const gr_oscope_guts &rhs); // no assignment operator - - void trigger_changed (); - void update_rate_or_decimation_changed (); - bool found_trigger (); // returns true if found - void write_output_records (); - - void enter_hold_off (); // called on state entry - void enter_look_for_trigger (); - void enter_post_trigger (); - -public: - // CREATORS - gr_oscope_guts (double sample_rate, gr_msg_queue_sptr msgq); - ~gr_oscope_guts (); - - // MANIPULATORS - - /*! - * \p channel_data points to nchannels float values. These are the values - * for each channel at this sample time. - */ - void process_sample (const float *channel_data); - - bool set_update_rate (double update_rate); - bool set_decimation_count (int decimation_count); - bool set_trigger_channel (int channel); - bool set_trigger_mode (gr_trigger_mode mode); - bool set_trigger_slope (gr_trigger_slope slope); - bool set_trigger_level (double trigger_level); - bool set_trigger_level_auto (); // set to 50% level - bool set_sample_rate(double sample_rate); - bool set_num_channels(int nchannels); - - - // ACCESSORS - int num_channels () const; - double sample_rate () const; - double update_rate () const; - int get_decimation_count () const; - int get_trigger_channel () const; - gr_trigger_mode get_trigger_mode () const; - gr_trigger_slope get_trigger_slope () const; - double get_trigger_level () const; - - // # of samples written to each output record. - int get_samples_per_output_record () const; -}; - -#endif /* INCLUDED_GR_OSCOPE_GUTS_H */ diff --git a/gnuradio-core/src/lib/io/gr_oscope_sink.i b/gnuradio-core/src/lib/io/gr_oscope_sink.i deleted file mode 100644 index 3d7072ed45..0000000000 --- a/gnuradio-core/src/lib/io/gr_oscope_sink.i +++ /dev/null @@ -1,77 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2004 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 gr_trigger_mode.h - -// GR_SWIG_BLOCK_MAGIC(gr,oscope_sink_x) - -%ignore gr_oscope_sink_x; -class gr_oscope_sink_x : public gr_sync_block -{ - protected: - gr_oscope_sink_x (const std::string name, - gr_io_signature_sptr input_sig, - double sample_rate); - - public: - ~gr_oscope_sink_x (); - - bool set_update_rate (double update_rate); - bool set_decimation_count (int decimation_count); - bool set_trigger_channel (int channel); - bool set_trigger_mode (gr_trigger_mode mode); - bool set_trigger_slope (gr_trigger_slope slope); - bool set_trigger_level (double trigger_level); - bool set_trigger_level_auto (); // set to 50% level - bool set_sample_rate(double sample_rate); - - // ACCESSORS - int num_channels () const; - double sample_rate () const; - double update_rate () const; - int get_decimation_count () const; - int get_trigger_channel () const; - gr_trigger_mode get_trigger_mode () const; - gr_trigger_slope get_trigger_slope () const; - double get_trigger_level () const; - - // # of samples written to each output record. - int get_samples_per_output_record () const; -}; - -// ---------------------------------------------------------------- - -GR_SWIG_BLOCK_MAGIC(gr,oscope_sink_f) - -gr_oscope_sink_f_sptr -gr_make_oscope_sink_f (double sample_rate, gr_msg_queue_sptr msgq); - -class gr_oscope_sink_f : public gr_oscope_sink_x -{ -private: - gr_oscope_sink_f (double sample_rate, gr_msg_queue_sptr msgq); - -public: - ~gr_oscope_sink_f (); -}; - -// ---------------------------------------------------------------- diff --git a/gnuradio-core/src/lib/io/gr_oscope_sink_f.cc b/gnuradio-core/src/lib/io/gr_oscope_sink_f.cc deleted file mode 100644 index 493a25e81e..0000000000 --- a/gnuradio-core/src/lib/io/gr_oscope_sink_f.cc +++ /dev/null @@ -1,78 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2003,2004,2005,2010 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_oscope_sink_f.h> -#include <gr_io_signature.h> -#include <gr_oscope_guts.h> - - -gr_oscope_sink_f_sptr -gr_make_oscope_sink_f (double sampling_rate, gr_msg_queue_sptr msgq) -{ - return gnuradio::get_initial_sptr(new gr_oscope_sink_f (sampling_rate, msgq)); -} - - -gr_oscope_sink_f::gr_oscope_sink_f (double sampling_rate, gr_msg_queue_sptr msgq) - : gr_oscope_sink_x ("oscope_sink_f", - gr_make_io_signature (1, gr_oscope_guts::MAX_CHANNELS, sizeof (float)), - sampling_rate), - d_msgq(msgq) -{ - d_guts = new gr_oscope_guts (d_sampling_rate, d_msgq); -} - - -bool -gr_oscope_sink_f::check_topology (int ninputs, int noutputs) -{ - return d_guts->set_num_channels(ninputs); -} - - -gr_oscope_sink_f::~gr_oscope_sink_f () -{ -} - -int -gr_oscope_sink_f::work (int noutput_items, - gr_vector_const_void_star &input_items, - gr_vector_void_star &output_items) -{ - int ni = input_items.size (); - float tmp[gr_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; -} diff --git a/gnuradio-core/src/lib/io/gr_oscope_sink_f.h b/gnuradio-core/src/lib/io/gr_oscope_sink_f.h deleted file mode 100644 index 8d434d2bc4..0000000000 --- a/gnuradio-core/src/lib/io/gr_oscope_sink_f.h +++ /dev/null @@ -1,63 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2003,2004,2005 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_H -#define INCLUDED_GR_OSCOPE_SINK_F_H - -#include <gr_core_api.h> -#include <gr_oscope_sink_x.h> -#include <gr_msg_queue.h> - -class gr_oscope_sink_f; -typedef boost::shared_ptr<gr_oscope_sink_x> gr_oscope_sink_f_sptr; - -GR_CORE_API gr_oscope_sink_f_sptr gr_make_oscope_sink_f (double sampling_rate, gr_msg_queue_sptr msgq); - - -/*! - * \brief Building block for python oscilloscope module. - * \ingroup sink_blk - * - * Accepts multiple float streams. - */ -class GR_CORE_API gr_oscope_sink_f : public gr_oscope_sink_x -{ -private: - friend GR_CORE_API gr_oscope_sink_f_sptr - gr_make_oscope_sink_f (double sampling_rate, gr_msg_queue_sptr msgq); - - gr_oscope_sink_f (double sampling_rate, gr_msg_queue_sptr msgq); - - gr_msg_queue_sptr d_msgq; - - public: - ~gr_oscope_sink_f (); - - int work (int noutput_items, - gr_vector_const_void_star &input_items, - gr_vector_void_star &output_items); - - bool check_topology (int ninputs, int noutputs); -}; - -#endif /* INCLUDED_GR_OSCOPE_SINK_F_H */ - diff --git a/gnuradio-core/src/lib/io/gr_oscope_sink_x.cc b/gnuradio-core/src/lib/io/gr_oscope_sink_x.cc deleted file mode 100644 index 9580dbf6a3..0000000000 --- a/gnuradio-core/src/lib/io/gr_oscope_sink_x.cc +++ /dev/null @@ -1,156 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2003,2004 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_oscope_sink_x.h> -#include <gr_io_signature.h> -#include <gr_oscope_guts.h> - - -gr_oscope_sink_x::gr_oscope_sink_x (const std::string name, - gr_io_signature_sptr input_sig, - double sampling_rate) - : gr_sync_block (name, input_sig, gr_make_io_signature (0, 0, 0)), - d_sampling_rate (sampling_rate), d_guts (0) -{ -} - -gr_oscope_sink_x::~gr_oscope_sink_x () -{ - delete d_guts; -} - -// ---------------------------------------------------------------- - -bool -gr_oscope_sink_x::set_update_rate (double update_rate) -{ - return d_guts->set_update_rate (update_rate); -} - -bool -gr_oscope_sink_x::set_decimation_count (int decimation_count) -{ - return d_guts->set_decimation_count (decimation_count); -} - -bool -gr_oscope_sink_x::set_trigger_channel (int channel) -{ - return d_guts->set_trigger_channel (channel); -} - -bool -gr_oscope_sink_x::set_trigger_mode (gr_trigger_mode mode) -{ - return d_guts->set_trigger_mode (mode); -} - -bool -gr_oscope_sink_x::set_trigger_slope (gr_trigger_slope slope) -{ - return d_guts->set_trigger_slope (slope); -} - -bool -gr_oscope_sink_x::set_trigger_level (double trigger_level) -{ - return d_guts->set_trigger_level (trigger_level); -} - - -bool -gr_oscope_sink_x::set_trigger_level_auto () -{ - return d_guts->set_trigger_level_auto (); -} - -bool -gr_oscope_sink_x::set_sample_rate (double sample_rate) -{ - return d_guts->set_sample_rate (sample_rate); -} - -bool -gr_oscope_sink_x::set_num_channels (int nchannels) -{ - return d_guts->set_num_channels (nchannels); -} - -// ACCESSORS - -int -gr_oscope_sink_x::num_channels () const -{ - return d_guts->num_channels (); -} - -double -gr_oscope_sink_x::sample_rate () const -{ - return d_guts->sample_rate (); -} - -double -gr_oscope_sink_x::update_rate () const -{ - return d_guts->update_rate (); -} - -int -gr_oscope_sink_x::get_decimation_count () const -{ - return d_guts->get_decimation_count (); -} - -int -gr_oscope_sink_x::get_trigger_channel () const -{ - return d_guts->get_trigger_channel (); -} - -gr_trigger_mode -gr_oscope_sink_x::get_trigger_mode () const -{ - return d_guts->get_trigger_mode (); -} - -gr_trigger_slope -gr_oscope_sink_x::get_trigger_slope () const -{ - return d_guts->get_trigger_slope (); -} - -double -gr_oscope_sink_x::get_trigger_level () const -{ - return d_guts->get_trigger_level (); -} - -int -gr_oscope_sink_x::get_samples_per_output_record () const -{ - return d_guts->get_samples_per_output_record (); -} diff --git a/gnuradio-core/src/lib/io/gr_oscope_sink_x.h b/gnuradio-core/src/lib/io/gr_oscope_sink_x.h deleted file mode 100644 index 153d0937ab..0000000000 --- a/gnuradio-core/src/lib/io/gr_oscope_sink_x.h +++ /dev/null @@ -1,77 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2003,2004 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_X_H -#define INCLUDED_GR_OSCOPE_SINK_X_H - -#include <gr_core_api.h> -#include <gr_sync_block.h> -#include <gr_trigger_mode.h> - -class gr_oscope_guts; - -/*! - * \brief Abstract class for python oscilloscope module. - * \ingroup sink_blk - * - * Don't instantiate this. Use gr_oscope_sink_f or gr_oscope_sink_c instead. - */ -class GR_CORE_API gr_oscope_sink_x : public gr_sync_block -{ -protected: - double d_sampling_rate; - gr_oscope_guts *d_guts; - - gr_oscope_sink_x (const std::string name, - gr_io_signature_sptr input_sig, - double sampling_rate); - -public: - ~gr_oscope_sink_x (); - - bool set_update_rate (double update_rate); - bool set_decimation_count (int decimation_count); - bool set_trigger_channel (int channel); - bool set_trigger_mode (gr_trigger_mode mode); - bool set_trigger_slope (gr_trigger_slope slope); - bool set_trigger_level (double trigger_level); - bool set_trigger_level_auto (); // set to 50% level - bool set_sample_rate(double sample_rate); - bool set_num_channels (int nchannels); - - - // ACCESSORS - int num_channels () const; - double sample_rate () const; - double update_rate () const; - int get_decimation_count () const; - int get_trigger_channel () const; - gr_trigger_mode get_trigger_mode () const; - gr_trigger_slope get_trigger_slope () const; - double get_trigger_level () const; - - // # of samples written to each output record. - int get_samples_per_output_record () const; - -}; - -#endif /* INCLUDED_GR_OSCOPE_SINK_X_H */ diff --git a/gnuradio-core/src/lib/io/gr_trigger_mode.h b/gnuradio-core/src/lib/io/gr_trigger_mode.h deleted file mode 100644 index be131686b4..0000000000 --- a/gnuradio-core/src/lib/io/gr_trigger_mode.h +++ /dev/null @@ -1,38 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2003,2004 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_TRIGGER_MODE_H -#define INCLUDED_GR_TRIGGER_MODE_H - -enum gr_trigger_mode { - gr_TRIG_MODE_FREE, - gr_TRIG_MODE_AUTO, - gr_TRIG_MODE_NORM, - gr_TRIG_MODE_STRIPCHART, -}; - -enum gr_trigger_slope { - gr_TRIG_SLOPE_POS, - gr_TRIG_SLOPE_NEG, -}; - -#endif /* INCLUDED_GR_TRIGGER_MODE_H */ diff --git a/gnuradio-core/src/lib/io/io.i b/gnuradio-core/src/lib/io/io.i deleted file mode 100644 index 2c8def973c..0000000000 --- a/gnuradio-core/src/lib/io/io.i +++ /dev/null @@ -1,37 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2004,2007 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_histo_sink_f.h> -#include <gr_oscope_sink_x.h> -#include <gr_oscope_sink_f.h> -%} - -%include "gr_histo_sink.i" -%include "gr_oscope_sink.i" - - diff --git a/gnuradio-core/src/lib/swig/CMakeLists.txt b/gnuradio-core/src/lib/swig/CMakeLists.txt index a397339eeb..f098597df0 100644 --- a/gnuradio-core/src/lib/swig/CMakeLists.txt +++ b/gnuradio-core/src/lib/swig/CMakeLists.txt @@ -60,7 +60,7 @@ link_directories(${Boost_LIBRARY_DIRS}) set(GR_SWIG_TARGET_DEPS gnuradio_core_generated_sources general_generated filter_generated pmt_swig) -foreach(what runtime general io) +foreach(what runtime general) SET(GR_SWIG_DOC_FILE ${CMAKE_CURRENT_BINARY_DIR}/${what}_swig_doc.i) SET(GR_SWIG_DOC_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/../${what} ${CMAKE_CURRENT_BINARY_DIR}/../${what}) GR_SWIG_MAKE(gnuradio_core_${what} gnuradio_core_${what}.i) diff --git a/gnuradio-core/src/lib/swig/gnuradio_core.py b/gnuradio-core/src/lib/swig/gnuradio_core.py index 98e415f31a..09d00fcdc1 100644 --- a/gnuradio-core/src/lib/swig/gnuradio_core.py +++ b/gnuradio-core/src/lib/swig/gnuradio_core.py @@ -22,4 +22,3 @@ from gnuradio_core_runtime import * from gnuradio_core_general import * -from gnuradio_core_io import * diff --git a/gnuradio-core/src/lib/swig/gnuradio_core_io.i b/gnuradio-core/src/lib/swig/gnuradio_core_io.i deleted file mode 100644 index 522b12b347..0000000000 --- a/gnuradio-core/src/lib/swig/gnuradio_core_io.i +++ /dev/null @@ -1,32 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2006,2009,2010 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 this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - */ - -%include "io_swig_doc.i" - -#ifndef SWIGIMPORTED -%module(directors="1") gnuradio_core_io -#endif - - //%feature("autodoc", "1"); // generate python docstrings - -%include "gnuradio.i" // the common stuff - -%include "io.i" diff --git a/gr-audio/examples/grc/cvsd_sweep.grc b/gr-audio/examples/grc/cvsd_sweep.grc index 496fd4f8e7..00da399da1 100644 --- a/gr-audio/examples/grc/cvsd_sweep.grc +++ b/gr-audio/examples/grc/cvsd_sweep.grc @@ -520,7 +520,7 @@ </param> <param> <key>trig_mode</key> - <value>gr.gr_TRIG_MODE_AUTO</value> + <value>wxgui.TRIG_MODE_AUTO</value> </param> <param> <key>y_axis_label</key> @@ -595,7 +595,7 @@ </param> <param> <key>trig_mode</key> - <value>gr.gr_TRIG_MODE_AUTO</value> + <value>wxgui.TRIG_MODE_AUTO</value> </param> <param> <key>y_axis_label</key> @@ -761,7 +761,7 @@ </param> <param> <key>trig_mode</key> - <value>gr.gr_TRIG_MODE_AUTO</value> + <value>wxgui.TRIG_MODE_AUTO</value> </param> <param> <key>y_axis_label</key> diff --git a/gr-digital/examples/demod/ber_simulation.grc b/gr-digital/examples/demod/ber_simulation.grc index b216912a6f..d0bec741c3 100644 --- a/gr-digital/examples/demod/ber_simulation.grc +++ b/gr-digital/examples/demod/ber_simulation.grc @@ -537,7 +537,7 @@ </param> <param> <key>trig_mode</key> - <value>gr.gr_TRIG_MODE_AUTO</value> + <value>wxgui.TRIG_MODE_AUTO</value> </param> <param> <key>y_axis_label</key> diff --git a/gr-digital/examples/demod/digital_freq_lock.grc b/gr-digital/examples/demod/digital_freq_lock.grc index 965768ece3..399d52488d 100644 --- a/gr-digital/examples/demod/digital_freq_lock.grc +++ b/gr-digital/examples/demod/digital_freq_lock.grc @@ -244,7 +244,7 @@ </param> <param> <key>trig_mode</key> - <value>gr.gr_TRIG_MODE_AUTO</value> + <value>wxgui.TRIG_MODE_AUTO</value> </param> <param> <key>y_axis_label</key> @@ -630,7 +630,7 @@ </param> <param> <key>trig_mode</key> - <value>gr.gr_TRIG_MODE_AUTO</value> + <value>wxgui.TRIG_MODE_AUTO</value> </param> <param> <key>y_axis_label</key> diff --git a/gr-digital/examples/demod/dpsk_loopback.grc b/gr-digital/examples/demod/dpsk_loopback.grc index 9befa69b6c..daa076c47b 100644 --- a/gr-digital/examples/demod/dpsk_loopback.grc +++ b/gr-digital/examples/demod/dpsk_loopback.grc @@ -374,7 +374,7 @@ </param> <param> <key>trig_mode</key> - <value>gr.gr_TRIG_MODE_AUTO</value> + <value>wxgui.TRIG_MODE_AUTO</value> </param> <param> <key>y_axis_label</key> diff --git a/gr-digital/examples/demod/pam_sync.grc b/gr-digital/examples/demod/pam_sync.grc index 693b112088..d8497e423d 100644 --- a/gr-digital/examples/demod/pam_sync.grc +++ b/gr-digital/examples/demod/pam_sync.grc @@ -228,7 +228,7 @@ </param> <param> <key>trig_mode</key> - <value>gr.gr_TRIG_MODE_AUTO</value> + <value>wxgui.TRIG_MODE_AUTO</value> </param> <param> <key>y_axis_label</key> @@ -1054,7 +1054,7 @@ </param> <param> <key>trig_mode</key> - <value>gr.gr_TRIG_MODE_AUTO</value> + <value>wxgui.TRIG_MODE_AUTO</value> </param> <param> <key>y_axis_label</key> diff --git a/gr-digital/examples/demod/pam_timing.grc b/gr-digital/examples/demod/pam_timing.grc index 632477821a..50dd8a1c86 100644 --- a/gr-digital/examples/demod/pam_timing.grc +++ b/gr-digital/examples/demod/pam_timing.grc @@ -519,7 +519,7 @@ </param> <param> <key>trig_mode</key> - <value>gr.gr_TRIG_MODE_AUTO</value> + <value>wxgui.TRIG_MODE_AUTO</value> </param> <param> <key>y_axis_label</key> @@ -594,7 +594,7 @@ </param> <param> <key>trig_mode</key> - <value>gr.gr_TRIG_MODE_AUTO</value> + <value>wxgui.TRIG_MODE_AUTO</value> </param> <param> <key>y_axis_label</key> @@ -669,7 +669,7 @@ </param> <param> <key>trig_mode</key> - <value>gr.gr_TRIG_MODE_AUTO</value> + <value>wxgui.TRIG_MODE_AUTO</value> </param> <param> <key>y_axis_label</key> @@ -744,7 +744,7 @@ </param> <param> <key>trig_mode</key> - <value>gr.gr_TRIG_MODE_AUTO</value> + <value>wxgui.TRIG_MODE_AUTO</value> </param> <param> <key>y_axis_label</key> @@ -819,7 +819,7 @@ </param> <param> <key>trig_mode</key> - <value>gr.gr_TRIG_MODE_AUTO</value> + <value>wxgui.TRIG_MODE_AUTO</value> </param> <param> <key>y_axis_label</key> diff --git a/gr-howto-write-a-block/apps/howto_square.grc b/gr-howto-write-a-block/apps/howto_square.grc index ee2c8db271..0eea15426c 100644 --- a/gr-howto-write-a-block/apps/howto_square.grc +++ b/gr-howto-write-a-block/apps/howto_square.grc @@ -143,7 +143,7 @@ </param> <param> <key>trig_mode</key> - <value>gr.gr_TRIG_MODE_AUTO</value> + <value>wxgui.TRIG_MODE_AUTO</value> </param> <param> <key>y_axis_label</key> @@ -303,7 +303,7 @@ </param> <param> <key>trig_mode</key> - <value>gr.gr_TRIG_MODE_AUTO</value> + <value>wxgui.TRIG_MODE_AUTO</value> </param> <param> <key>y_axis_label</key> diff --git a/gr-howto-write-a-block/apps/howto_square.py b/gr-howto-write-a-block/apps/howto_square.py index 4a9bfe3f8e..818e776232 100755 --- a/gr-howto-write-a-block/apps/howto_square.py +++ b/gr-howto-write-a-block/apps/howto_square.py @@ -42,7 +42,7 @@ class howto_square(grc_wxgui.top_block_gui): ac_couple=False, xy_mode=False, num_inputs=1, - trig_mode=gr.gr_TRIG_MODE_AUTO, + trig_mode=wxgui.TRIG_MODE_AUTO, y_axis_label="Counts", ) self.Add(self.sink2.win) @@ -56,7 +56,7 @@ class howto_square(grc_wxgui.top_block_gui): ac_couple=False, xy_mode=False, num_inputs=1, - trig_mode=gr.gr_TRIG_MODE_AUTO, + trig_mode=wxgui.TRIG_MODE_AUTO, y_axis_label="Counts", ) self.Add(self.sink.win) diff --git a/gr-noaa/examples/usrp_rx_hrpt.grc b/gr-noaa/examples/usrp_rx_hrpt.grc index 1f61a8880f..56d07446bf 100644 --- a/gr-noaa/examples/usrp_rx_hrpt.grc +++ b/gr-noaa/examples/usrp_rx_hrpt.grc @@ -1667,7 +1667,7 @@ </param> <param> <key>trig_mode</key> - <value>gr.gr_TRIG_MODE_AUTO</value> + <value>wxgui.TRIG_MODE_AUTO</value> </param> <param> <key>y_axis_label</key> diff --git a/gr-trellis/examples/grc/interference_cancellation.grc b/gr-trellis/examples/grc/interference_cancellation.grc index 29452311c6..4555a244a9 100644 --- a/gr-trellis/examples/grc/interference_cancellation.grc +++ b/gr-trellis/examples/grc/interference_cancellation.grc @@ -969,7 +969,7 @@ </param> <param> <key>trig_mode</key> - <value>gr.gr_TRIG_MODE_AUTO</value> + <value>wxgui.TRIG_MODE_AUTO</value> </param> <param> <key>y_axis_label</key> diff --git a/gr-trellis/examples/grc/pccc.grc b/gr-trellis/examples/grc/pccc.grc index 359cfefc83..c0e587a09e 100644 --- a/gr-trellis/examples/grc/pccc.grc +++ b/gr-trellis/examples/grc/pccc.grc @@ -389,7 +389,7 @@ </param> <param> <key>trig_mode</key> - <value>gr.gr_TRIG_MODE_AUTO</value> + <value>wxgui.TRIG_MODE_AUTO</value> </param> <param> <key>y_axis_label</key> diff --git a/gr-trellis/examples/grc/pccc1.grc b/gr-trellis/examples/grc/pccc1.grc index 8f58404794..4507cae890 100644 --- a/gr-trellis/examples/grc/pccc1.grc +++ b/gr-trellis/examples/grc/pccc1.grc @@ -389,7 +389,7 @@ </param> <param> <key>trig_mode</key> - <value>gr.gr_TRIG_MODE_AUTO</value> + <value>wxgui.TRIG_MODE_AUTO</value> </param> <param> <key>y_axis_label</key> diff --git a/gr-trellis/examples/grc/sccc.grc b/gr-trellis/examples/grc/sccc.grc index ee532da9fe..ec84665c14 100644 --- a/gr-trellis/examples/grc/sccc.grc +++ b/gr-trellis/examples/grc/sccc.grc @@ -395,7 +395,7 @@ </param> <param> <key>trig_mode</key> - <value>gr.gr_TRIG_MODE_AUTO</value> + <value>wxgui.TRIG_MODE_AUTO</value> </param> <param> <key>y_axis_label</key> diff --git a/gr-trellis/examples/grc/sccc1.grc b/gr-trellis/examples/grc/sccc1.grc index fa6506ba18..332ec6bdd7 100644 --- a/gr-trellis/examples/grc/sccc1.grc +++ b/gr-trellis/examples/grc/sccc1.grc @@ -631,7 +631,7 @@ </param> <param> <key>trig_mode</key> - <value>gr.gr_TRIG_MODE_AUTO</value> + <value>wxgui.TRIG_MODE_AUTO</value> </param> <param> <key>y_axis_label</key> diff --git a/gr-uhd/apps/uhd_fft b/gr-uhd/apps/uhd_fft index 800a5fab84..f16f2d71b5 100755 --- a/gr-uhd/apps/uhd_fft +++ b/gr-uhd/apps/uhd_fft @@ -38,6 +38,10 @@ except ImportError: sys.stderr.write("Error importing GNU Radio's wxgui. Please make sure gr-wxgui is installed.\n") sys.exit(1) +import os +print os.getpid() +raw_input() + class app_top_block(stdgui2.std_top_block): def __init__(self, frame, panel, vbox, argv): stdgui2.std_top_block.__init__(self, frame, panel, vbox, argv) diff --git a/gr-uhd/examples/grc/uhd_dpsk_mod.grc b/gr-uhd/examples/grc/uhd_dpsk_mod.grc index 9caafbb6ac..8387890372 100644 --- a/gr-uhd/examples/grc/uhd_dpsk_mod.grc +++ b/gr-uhd/examples/grc/uhd_dpsk_mod.grc @@ -226,7 +226,7 @@ </param> <param> <key>trig_mode</key> - <value>gr.gr_TRIG_MODE_AUTO</value> + <value>wxgui.TRIG_MODE_AUTO</value> </param> <param> <key>y_axis_label</key> diff --git a/gr-uhd/examples/grc/uhd_fft.grc b/gr-uhd/examples/grc/uhd_fft.grc index 1db98ab8aa..08e5f70edb 100644 --- a/gr-uhd/examples/grc/uhd_fft.grc +++ b/gr-uhd/examples/grc/uhd_fft.grc @@ -1,6 +1,6 @@ <?xml version='1.0' encoding='ASCII'?> <flow_graph> - <timestamp>Mon Mar 18 11:09:57 2013</timestamp> + <timestamp>Mon Mar 18 15:42:27 2013</timestamp> <block> <key>options</key> <param> @@ -248,7 +248,7 @@ </param> <param> <key>trig_mode</key> - <value>gr.gr_TRIG_MODE_AUTO</value> + <value>wxgui.TRIG_MODE_AUTO</value> </param> <param> <key>y_axis_label</key> @@ -1488,7 +1488,7 @@ </param> <param> <key>value</key> - <value></value> + <value>addr=192.168.11.2</value> </param> <param> <key>type</key> diff --git a/gr-wxgui/CMakeLists.txt b/gr-wxgui/CMakeLists.txt index 04c4a26569..52e0a7061d 100644 --- a/gr-wxgui/CMakeLists.txt +++ b/gr-wxgui/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright 2011 Free Software Foundation, Inc. +# Copyright 2011,2013 Free Software Foundation, Inc. # # This file is part of GNU Radio # @@ -22,8 +22,8 @@ ######################################################################## include(GrPython) -GR_PYTHON_CHECK_MODULE("wx >= 2.8" wx "wx.version().split()[0] >= '2.8'" WX_FOUND) -GR_PYTHON_CHECK_MODULE("numpy" numpy True NUMPY_FOUND) +GR_PYTHON_CHECK_MODULE("wx >= 2.8" wx "wx.version().split()[0] >= '2.8'" WX_FOUND) +GR_PYTHON_CHECK_MODULE("numpy" numpy True NUMPY_FOUND) ######################################################################## # Register component @@ -50,6 +50,13 @@ GR_REGISTER_COMPONENT("gr-wxgui" ENABLE_GR_WXGUI ######################################################################## if(ENABLE_GR_WXGUI) +GR_SET_GLOBAL(GR_WXGUI_INCLUDE_DIRS + ${CMAKE_CURRENT_SOURCE_DIR}/lib + ${CMAKE_CURRENT_SOURCE_DIR}/include + ${CMAKE_CURRENT_BINARY_DIR}/lib + ${CMAKE_CURRENT_BINARY_DIR}/include +) + ######################################################################## # Setup CPack components ######################################################################## @@ -86,7 +93,10 @@ install( ######################################################################## # Add subdirectories ######################################################################## +add_subdirectory(include/wxgui) +add_subdirectory(lib) add_subdirectory(grc) +add_subdirectory(swig) add_subdirectory(python) endif(ENABLE_GR_WXGUI) diff --git a/gr-wxgui/grc/wxgui_constellationsink2.xml b/gr-wxgui/grc/wxgui_constellationsink2.xml index f9df9d4acd..1c0789e2c0 100644 --- a/gr-wxgui/grc/wxgui_constellationsink2.xml +++ b/gr-wxgui/grc/wxgui_constellationsink2.xml @@ -9,6 +9,7 @@ <key>wxgui_constellationsink2</key> <category>WX GUI Widgets</category> <import>from gnuradio.wxgui import constsink_gl</import> + <import>from gnuradio import wxgui</import> <make>#set $parent = $notebook() and 'self.%s.GetPage(%s)'%$notebook() or 'self' constsink_gl.const_sink_c( $(parent).GetWin(), diff --git a/gr-wxgui/grc/wxgui_fftsink2.xml b/gr-wxgui/grc/wxgui_fftsink2.xml index ff5c47b85c..086f7de753 100644 --- a/gr-wxgui/grc/wxgui_fftsink2.xml +++ b/gr-wxgui/grc/wxgui_fftsink2.xml @@ -10,6 +10,7 @@ <category>WX GUI Widgets</category> <import>from gnuradio.fft import window</import> <import>from gnuradio.wxgui import fftsink2</import> + <import>from gnuradio import wxgui</import> <make>#set $parent = $notebook() and 'self.%s.GetPage(%s)'%$notebook() or 'self' fftsink2.$(type.fcn)( $(parent).GetWin(), diff --git a/gr-wxgui/grc/wxgui_histosink2.xml b/gr-wxgui/grc/wxgui_histosink2.xml index f4f6a29597..39237755e8 100644 --- a/gr-wxgui/grc/wxgui_histosink2.xml +++ b/gr-wxgui/grc/wxgui_histosink2.xml @@ -9,6 +9,7 @@ <key>wxgui_histosink2</key> <category>WX GUI Widgets</category> <import>from gnuradio.wxgui import histosink_gl</import> + <import>from gnuradio import wxgui</import> <make>#set $parent = $notebook() and 'self.%s.GetPage(%s)'%$notebook() or 'self' histosink_gl.histo_sink_f( $(parent).GetWin(), diff --git a/gr-wxgui/grc/wxgui_numbersink2.xml b/gr-wxgui/grc/wxgui_numbersink2.xml index 2559266101..8e47db26e2 100644 --- a/gr-wxgui/grc/wxgui_numbersink2.xml +++ b/gr-wxgui/grc/wxgui_numbersink2.xml @@ -9,6 +9,7 @@ <key>wxgui_numbersink2</key> <category>WX GUI Widgets</category> <import>from gnuradio.wxgui import numbersink2</import> + <import>from gnuradio import wxgui</import> <make>#set $parent = $notebook() and 'self.%s.GetPage(%s)'%$notebook() or 'self' numbersink2.$(type.fcn)( $(parent).GetWin(), diff --git a/gr-wxgui/grc/wxgui_scopesink2.xml b/gr-wxgui/grc/wxgui_scopesink2.xml index dbf983e112..596fe03397 100644 --- a/gr-wxgui/grc/wxgui_scopesink2.xml +++ b/gr-wxgui/grc/wxgui_scopesink2.xml @@ -9,7 +9,7 @@ <key>wxgui_scopesink2</key> <category>WX GUI Widgets</category> <import>from gnuradio.wxgui import scopesink2</import> - <import>from gnuradio import gr</import> + <import>from gnuradio import wxgui</import> <make>#set $parent = $notebook() and 'self.%s.GetPage(%s)'%$notebook() or 'self' scopesink2.$(type.fcn)( $(parent).GetWin(), @@ -143,19 +143,19 @@ $(parent).GridAdd(self.$(id).win, $(', '.join(map(str, $grid_pos())))) <type>enum</type> <option> <name>Auto</name> - <key>gr.gr_TRIG_MODE_AUTO</key> + <key>wxgui.TRIG_MODE_AUTO</key> </option> <option> <name>Normal</name> - <key>gr.gr_TRIG_MODE_NORM</key> + <key>wxgui.TRIG_MODE_NORM</key> </option> <option> <name>Freerun</name> - <key>gr.gr_TRIG_MODE_FREE</key> + <key>wxgui.TRIG_MODE_FREE</key> </option> <option> <name>Stripchart</name> - <key>gr.gr_TRIG_MODE_STRIPCHART</key> + <key>wxgui.TRIG_MODE_STRIPCHART</key> </option> </param> <param> diff --git a/gr-wxgui/grc/wxgui_termsink.xml b/gr-wxgui/grc/wxgui_termsink.xml index 3e35c75788..a13927926b 100644 --- a/gr-wxgui/grc/wxgui_termsink.xml +++ b/gr-wxgui/grc/wxgui_termsink.xml @@ -10,6 +10,7 @@ <category>WX GUI Widgets</category> <import>from gnuradio.wxgui import termsink</import> + <import>from gnuradio import wxgui</import> <make>#set $parent = $notebook() and 'self.%s.GetPage(%s)'%$notebook() or 'self' termsink.termsink( diff --git a/gr-wxgui/grc/wxgui_waterfallsink2.xml b/gr-wxgui/grc/wxgui_waterfallsink2.xml index c02901d336..971e90f413 100644 --- a/gr-wxgui/grc/wxgui_waterfallsink2.xml +++ b/gr-wxgui/grc/wxgui_waterfallsink2.xml @@ -10,6 +10,7 @@ <category>WX GUI Widgets</category> <import>from gnuradio.fft import window</import> <import>from gnuradio.wxgui import waterfallsink2</import> + <import>from gnuradio import wxgui</import> <make>#set $parent = $notebook() and 'self.%s.GetPage(%s)'%$notebook() or 'self' waterfallsink2.$(type.fcn)( $(parent).GetWin(), diff --git a/gr-wxgui/include/wxgui/CMakeLists.txt b/gr-wxgui/include/wxgui/CMakeLists.txt new file mode 100644 index 0000000000..fad84792e1 --- /dev/null +++ b/gr-wxgui/include/wxgui/CMakeLists.txt @@ -0,0 +1,32 @@ +# 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. + +######################################################################## +# Install header files +######################################################################## +install(FILES + api.h + histo_sink_f.h + oscope_guts.h + oscope_sink_f.h + oscope_sink_x.h + trigger_mode.h + DESTINATION ${GR_INCLUDE_DIR}/gnuradio/wxgui + COMPONENT "wxgui_devel" +) diff --git a/gr-wxgui/include/wxgui/api.h b/gr-wxgui/include/wxgui/api.h new file mode 100644 index 0000000000..442e112e4b --- /dev/null +++ b/gr-wxgui/include/wxgui/api.h @@ -0,0 +1,33 @@ +/* + * 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. + */ + +#ifndef INCLUDED_WXGUI_API_H +#define INCLUDED_WXGUI_API_H + +#include <gruel/attributes.h> + +#ifdef gnuradio_wxgui_EXPORTS +# define WXGUI_API __GR_ATTR_EXPORT +#else +# define WXGUI_API __GR_ATTR_IMPORT +#endif + +#endif /* INCLUDED_WXGUI_API_H */ diff --git a/gr-wxgui/include/wxgui/histo_sink_f.h b/gr-wxgui/include/wxgui/histo_sink_f.h new file mode 100644 index 0000000000..f65517ca35 --- /dev/null +++ b/gr-wxgui/include/wxgui/histo_sink_f.h @@ -0,0 +1,55 @@ +/* -*- 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_H +#define INCLUDED_GR_HISTO_SINK_F_H + +#include <wxgui/api.h> +#include <gr_sync_block.h> +#include <gr_msg_queue.h> + +namespace gr { + namespace wxgui { + + /*! + * \brief Histogram module. + * \ingroup sink_blk + */ + class WXGUI_API histo_sink_f : virtual public gr_sync_block + { + public: + // gr::blocks::histo_sink_f::sptr + typedef boost::shared_ptr<histo_sink_f> sptr; + + static sptr make(gr_msg_queue_sptr msgq); + + virtual unsigned int get_frame_size(void) = 0; + virtual unsigned int get_num_bins(void) = 0; + + virtual void set_frame_size(unsigned int frame_size) = 0; + virtual void set_num_bins(unsigned int num_bins) = 0; + }; + + } /* namespace wxgui */ +} /* namespace gr */ + +#endif /* INCLUDED_GR_HISTO_SINK_F_H */ diff --git a/gr-wxgui/include/wxgui/oscope_guts.h b/gr-wxgui/include/wxgui/oscope_guts.h new file mode 100644 index 0000000000..a6abd81539 --- /dev/null +++ b/gr-wxgui/include/wxgui/oscope_guts.h @@ -0,0 +1,131 @@ +/* -*- 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_GUTS_H +#define INCLUDED_GR_OSCOPE_GUTS_H + +#include <wxgui/api.h> +#include <wxgui/trigger_mode.h> +#include <gr_msg_queue.h> + +namespace gr { + namespace wxgui { + + /*! + * \brief guts of oscilloscope trigger and buffer module + * + * This module processes sets of samples provided the \p + * process_sample method. When appropriate given the updateRate, + * sampleRate and trigger conditions, process_sample will + * periodically write output records of captured data to + * output_fd. For each trigger event, nchannels records will be + * written. Each record consists of get_samples_per_output_record + * binary floats. The trigger instant occurs at the 1/2 way point + * in the buffer. Thus, output records consist of 50% pre-trigger + * data and 50% post-trigger data. + */ + + class WXGUI_API oscope_guts + { + public: + static const int MAX_CHANNELS = 8; + + private: + enum scope_state { HOLD_OFF, LOOK_FOR_TRIGGER, POST_TRIGGER }; + + int d_nchannels; // how many channels + gr_msg_queue_sptr d_msgq; // message queue we stuff output records into + trigger_mode d_trigger_mode; + trigger_slope d_trigger_slope; + int d_trigger_channel; // which channel to watch for trigger condition + double d_sample_rate; // input sample rate in Hz + double d_update_rate; // approx freq to produce an output record (Hz) + double d_trigger_level; + + int d_obi; // output buffer index + float *d_buffer[MAX_CHANNELS]; + + scope_state d_state; + int d_decimator_count; + int d_decimator_count_init; + int d_hold_off_count; + int d_hold_off_count_init; + int d_pre_trigger_count; + int d_post_trigger_count; + int d_post_trigger_count_init; + float d_trigger_off; //%sample trigger is off + + // NOT IMPLEMENTED + oscope_guts(const oscope_guts &rhs); // no copy constructor + oscope_guts &operator= (const oscope_guts &rhs); // no assignment operator + + void trigger_changed(); + void update_rate_or_decimation_changed(); + bool found_trigger(); // returns true if found + void write_output_records(); + + void enter_hold_off(); // called on state entry + void enter_look_for_trigger(); + void enter_post_trigger(); + + public: + // CREATORS + oscope_guts(double sample_rate, gr_msg_queue_sptr msgq); + ~oscope_guts(); + + // MANIPULATORS + + /*! + * \param channel_data points to nchannels float values. These + * are the values for each channel at this sample time. + */ + void process_sample(const float *channel_data); + + bool set_update_rate(double update_rate); + bool set_decimation_count(int decimation_count); + bool set_trigger_channel(int channel); + bool set_trigger_mode(trigger_mode mode); + bool set_trigger_slope(trigger_slope slope); + bool set_trigger_level(double trigger_level); + bool set_trigger_level_auto(); // set to 50% level + bool set_sample_rate(double sample_rate); + bool set_num_channels(int nchannels); + + // ACCESSORS + int num_channels() const; + double sample_rate() const; + double update_rate() const; + int get_decimation_count() const; + int get_trigger_channel() const; + trigger_mode get_trigger_mode() const; + trigger_slope get_trigger_slope() const; + double get_trigger_level() const; + + // # of samples written to each output record. + int get_samples_per_output_record() const; + }; + + } /* namespace wxgui */ +} /* namespace gr */ + +#endif /* INCLUDED_GR_OSCOPE_GUTS_H */ diff --git a/gr-wxgui/include/wxgui/oscope_sink_f.h b/gr-wxgui/include/wxgui/oscope_sink_f.h new file mode 100644 index 0000000000..a7c7657d40 --- /dev/null +++ b/gr-wxgui/include/wxgui/oscope_sink_f.h @@ -0,0 +1,53 @@ +/* -*- 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_H +#define INCLUDED_GR_OSCOPE_SINK_F_H + +#include <wxgui/api.h> +#include <wxgui/oscope_sink_x.h> +#include <gr_msg_queue.h> + +namespace gr { + namespace wxgui { + + /*! + * \brief Building block for python oscilloscope module. + * \ingroup sink_blk + * + * Accepts multiple float streams. + */ + class WXGUI_API oscope_sink_f + : virtual public oscope_sink_x + { + public: + // gr::blocks::oscope_sink_f::sptr + typedef boost::shared_ptr<oscope_sink_f> sptr; + + static sptr make(double sampling_rate, gr_msg_queue_sptr msgq); + }; + + } /* namespace wxgui */ +} /* namespace gr */ + +#endif /* INCLUDED_GR_OSCOPE_SINK_F_H */ + diff --git a/gr-wxgui/include/wxgui/oscope_sink_x.h b/gr-wxgui/include/wxgui/oscope_sink_x.h new file mode 100644 index 0000000000..17fa9a0f5a --- /dev/null +++ b/gr-wxgui/include/wxgui/oscope_sink_x.h @@ -0,0 +1,91 @@ +/* -*- 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. + */ + +#ifndef INCLUDED_GR_OSCOPE_SINK_X_H +#define INCLUDED_GR_OSCOPE_SINK_X_H + +#include <wxgui/api.h> +#include <wxgui/trigger_mode.h> +#include <wxgui/oscope_guts.h> +#include <gr_sync_block.h> + +namespace gr { + namespace wxgui { + + /*! + * \brief Abstract class for python oscilloscope module. + * \ingroup sink_blk + * + * Don't instantiate this. Use gr::blocks::oscope_sink_f instead. + */ + class WXGUI_API oscope_sink_x : public gr_sync_block + { + protected: + double d_sampling_rate; + oscope_guts *d_guts; + + oscope_sink_x() {}; + oscope_sink_x(const std::string name, + gr_io_signature_sptr input_sig, + double sampling_rate); + public: + virtual ~oscope_sink_x(); + + //// gr::blocks::oscope_sink_x::sptr + //typedef boost::shared_ptr<oscope_sink_x> sptr; + // + //static sptr make(const std::string name, + // gr_io_signature_sptr input_sig, + // double sampling_rate); + + bool set_update_rate(double update_rate); + bool set_decimation_count(int decimation_count); + bool set_trigger_channel(int channel); + bool set_trigger_mode(trigger_mode mode); + bool set_trigger_slope(trigger_slope slope); + bool set_trigger_level(double trigger_level); + bool set_trigger_level_auto(); + bool set_sample_rate(double sample_rate); + bool set_num_channels(int nchannels); + + // ACCESSORS + int num_channels() const; + double sample_rate() const; + double update_rate() const; + int get_decimation_count() const; + int get_trigger_channel() const; + trigger_mode get_trigger_mode() const; + trigger_slope get_trigger_slope() const; + double get_trigger_level() const; + + // # of samples written to each output record. + int get_samples_per_output_record() const; + + virtual int work(int noutput_items, + gr_vector_const_void_star &input_items, + gr_vector_void_star &output_items) = 0; + }; + + } /* namespace wxgui */ +} /* namespace gr */ + +#endif /* INCLUDED_GR_OSCOPE_SINK_X_H */ diff --git a/gr-wxgui/include/wxgui/trigger_mode.h b/gr-wxgui/include/wxgui/trigger_mode.h new file mode 100644 index 0000000000..11654ef6c5 --- /dev/null +++ b/gr-wxgui/include/wxgui/trigger_mode.h @@ -0,0 +1,44 @@ +/* -*- 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. + */ + +#ifndef INCLUDED_GR_TRIGGER_MODE_H +#define INCLUDED_GR_TRIGGER_MODE_H + +namespace gr { + namespace wxgui { + + enum trigger_mode { + TRIG_MODE_FREE, + TRIG_MODE_AUTO, + TRIG_MODE_NORM, + TRIG_MODE_STRIPCHART, + }; + + enum trigger_slope { + TRIG_SLOPE_POS, + TRIG_SLOPE_NEG, + }; + + } /* namespace wxgui */ +} /* namespace gr */ + +#endif /* INCLUDED_GR_TRIGGER_MODE_H */ diff --git a/gr-wxgui/lib/CMakeLists.txt b/gr-wxgui/lib/CMakeLists.txt new file mode 100644 index 0000000000..8c7c56fdcc --- /dev/null +++ b/gr-wxgui/lib/CMakeLists.txt @@ -0,0 +1,78 @@ +# 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_CORE_INCLUDE_DIRS} + ${VOLK_INCLUDE_DIRS} + ${GRUEL_INCLUDE_DIRS} + ${Boost_INCLUDE_DIRS} +) + +link_directories(${Boost_LIBRARY_DIRS}) + +if(ENABLE_GR_CTRLPORT) + ADD_DEFINITIONS(-DGR_CTRLPORT) + include_directories(${ICE_INCLUDE_DIR}) +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-core + volk + ${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 + RUNTIME_COMPONENT "wxgui_runtime" + DEVEL_COMPONENT "wxgui_devel") diff --git a/gr-wxgui/lib/gnuradio-wxgui.rc.in b/gr-wxgui/lib/gnuradio-wxgui.rc.in new file mode 100644 index 0000000000..126db75091 --- /dev/null +++ b/gr-wxgui/lib/gnuradio-wxgui.rc.in @@ -0,0 +1,54 @@ +/* -*- 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 new file mode 100644 index 0000000000..f9459ac8d9 --- /dev/null +++ b/gr-wxgui/lib/histo_sink_f_impl.cc @@ -0,0 +1,186 @@ +/* -*- 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 <gr_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(gr_msg_queue_sptr msgq) + { + return gnuradio::get_initial_sptr + (new histo_sink_f_impl(msgq)); + } + + histo_sink_f_impl::histo_sink_f_impl(gr_msg_queue_sptr msgq) + : gr_sync_block("histo_sink_f", + gr_make_io_signature(1, 1, sizeof(float)), + gr_make_io_signature(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]; + gruel::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 */ + gr_message_sptr msg = gr_make_message(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) + { + gruel::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) { + gruel::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 new file mode 100644 index 0000000000..e160e0e550 --- /dev/null +++ b/gr-wxgui/lib/histo_sink_f_impl.h @@ -0,0 +1,63 @@ +/* -*- 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 <wxgui/histo_sink_f.h> + +namespace gr { + namespace wxgui { + + class histo_sink_f_impl : public histo_sink_f + { + private: + gr_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; + gruel::mutex d_mutex; + + void send_frame(void); + void clear(void); + + public: + histo_sink_f_impl(gr_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 new file mode 100644 index 0000000000..3d1f085a6f --- /dev/null +++ b/gr-wxgui/lib/oscope_guts.cc @@ -0,0 +1,439 @@ +/* -*- 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 <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, gr_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 + gr_message_sptr msg = + gr_make_message(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 new file mode 100644 index 0000000000..a95bf58827 --- /dev/null +++ b/gr-wxgui/lib/oscope_sink_f_impl.cc @@ -0,0 +1,84 @@ +/* -*- 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 <wxgui/oscope_sink_x.h> +#include <wxgui/oscope_guts.h> +#include <gr_io_signature.h> + +namespace gr { + namespace wxgui { + + oscope_sink_f::sptr + oscope_sink_f::make(double sampling_rate, gr_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, gr_msg_queue_sptr msgq) + : oscope_sink_x("oscope_sink_f", + gr_make_io_signature(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) + { + GR_LOG_DEBUG(d_logger, "oscopy_sink_f check_topology"); + 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 new file mode 100644 index 0000000000..6ad28a885f --- /dev/null +++ b/gr-wxgui/lib/oscope_sink_f_impl.h @@ -0,0 +1,51 @@ +/* -*- 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 <wxgui/oscope_sink_f.h> + +namespace gr { + namespace wxgui { + + class oscope_sink_f_impl : public oscope_sink_f + { + private: + gr_msg_queue_sptr d_msgq; + + public: + oscope_sink_f_impl(double sampling_rate, gr_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 new file mode 100644 index 0000000000..417442979c --- /dev/null +++ b/gr-wxgui/lib/oscope_sink_x.cc @@ -0,0 +1,161 @@ +/* -*- 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 <wxgui/oscope_sink_x.h> +#include <wxgui/oscope_guts.h> +#include <gr_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) + : gr_sync_block(name, input_sig, + gr_make_io_signature(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 */ diff --git a/gr-wxgui/python/__init__.py b/gr-wxgui/python/__init__.py index 07dbaf1620..dd81647fe9 100644 --- a/gr-wxgui/python/__init__.py +++ b/gr-wxgui/python/__init__.py @@ -22,3 +22,5 @@ ''' Provides a GUI interface using the Wx backend. ''' + +from wxgui_swig import * diff --git a/gr-wxgui/python/histosink_gl.py b/gr-wxgui/python/histosink_gl.py index 6fa7539aa7..2126d63191 100644 --- a/gr-wxgui/python/histosink_gl.py +++ b/gr-wxgui/python/histosink_gl.py @@ -27,6 +27,7 @@ import common from gnuradio import gr from gnuradio import analog from gnuradio import blocks +from gnuradio import wxgui from pubsub import pubsub from constants import * @@ -55,7 +56,7 @@ class histo_sink_f(gr.hier_block2, common.wxgui_hb): ) #blocks msgq = gr.msg_queue(2) - histo = gr.histo_sink_f(msgq) + histo = wxgui.histo_sink_f(msgq) histo.set_num_bins(num_bins) histo.set_frame_size(frame_size) #controller diff --git a/gr-wxgui/python/scope_window.py b/gr-wxgui/python/scope_window.py index 306e1757f1..357998bf95 100644 --- a/gr-wxgui/python/scope_window.py +++ b/gr-wxgui/python/scope_window.py @@ -30,6 +30,7 @@ import time import pubsub from constants import * from gnuradio import gr #for gr.prefs, trigger modes +from gnuradio import wxgui import forms ################################################## @@ -38,21 +39,21 @@ import forms DEFAULT_FRAME_RATE = gr.prefs().get_long('wxgui', 'scope_rate', 30) PERSIST_ALPHA_MIN_EXP, PERSIST_ALPHA_MAX_EXP = -2, 0 SLIDER_STEPS = 100 -DEFAULT_TRIG_MODE = gr.prefs().get_long('wxgui', 'trig_mode', gr.gr_TRIG_MODE_AUTO) +DEFAULT_TRIG_MODE = gr.prefs().get_long('wxgui', 'trig_mode', wxgui.TRIG_MODE_AUTO) DEFAULT_WIN_SIZE = (600, 300) COUPLING_MODES = ( ('DC', False), ('AC', True), ) TRIGGER_MODES = ( - ('Freerun', gr.gr_TRIG_MODE_FREE), - ('Auto', gr.gr_TRIG_MODE_AUTO), - ('Normal', gr.gr_TRIG_MODE_NORM), - ('Stripchart', gr.gr_TRIG_MODE_STRIPCHART), + ('Freerun', wxgui.TRIG_MODE_FREE), + ('Auto', wxgui.TRIG_MODE_AUTO), + ('Normal', wxgui.TRIG_MODE_NORM), + ('Stripchart', wxgui.TRIG_MODE_STRIPCHART), ) TRIGGER_SLOPES = ( - ('Pos +', gr.gr_TRIG_SLOPE_POS), - ('Neg -', gr.gr_TRIG_SLOPE_NEG), + ('Pos +', wxgui.TRIG_SLOPE_POS), + ('Neg -', wxgui.TRIG_SLOPE_NEG), ) CHANNEL_COLOR_SPECS = ( (0.3, 0.3, 1.0), @@ -281,7 +282,7 @@ class control_panel(wx.Panel): ) def disable_all(trigger_mode): for widget in (trigger_slope_chooser, trigger_channel_chooser, trigger_level_buttons, trigger_level_button): - widget.Disable(trigger_mode == gr.gr_TRIG_MODE_FREE) + widget.Disable(trigger_mode == wxgui.TRIG_MODE_FREE) parent.subscribe(TRIGGER_MODE_KEY, disable_all) disable_all(parent[TRIGGER_MODE_KEY]) ################################################## @@ -480,12 +481,12 @@ class scope_window(wx.Panel, pubsub.pubsub): self[TRIGGER_CHANNEL_KEY] = 0 self[TRIGGER_MODE_KEY] = trig_mode - self[TRIGGER_SLOPE_KEY] = gr.gr_TRIG_SLOPE_POS + self[TRIGGER_SLOPE_KEY] = wxgui.TRIG_SLOPE_POS self[T_FRAC_OFF_KEY] = 0.5 self[USE_PERSISTENCE_KEY] = use_persistence self[PERSIST_ALPHA_KEY] = persist_alpha - if self[TRIGGER_MODE_KEY] == gr.gr_TRIG_MODE_STRIPCHART: + if self[TRIGGER_MODE_KEY] == wxgui.TRIG_MODE_STRIPCHART: self[T_FRAC_OFF_KEY] = 0.0 for i in range(num_inputs): @@ -639,7 +640,7 @@ class scope_window(wx.Panel, pubsub.pubsub): if self[TRIGGER_LEVEL_KEY] < self.get_y_min(): self[TRIGGER_LEVEL_KEY] = self.get_y_min(); return #disable the trigger channel - if not self[TRIGGER_SHOW_KEY] or self[XY_MODE_KEY] or self[TRIGGER_MODE_KEY] == gr.gr_TRIG_MODE_FREE: + if not self[TRIGGER_SHOW_KEY] or self[XY_MODE_KEY] or self[TRIGGER_MODE_KEY] == wxgui.TRIG_MODE_FREE: self.plotter.clear_waveform(channel='Trig') else: #show trigger channel trigger_level = self[TRIGGER_LEVEL_KEY] diff --git a/gr-wxgui/python/scopesink_gl.py b/gr-wxgui/python/scopesink_gl.py index 21d7169026..b2d5670c77 100644 --- a/gr-wxgui/python/scopesink_gl.py +++ b/gr-wxgui/python/scopesink_gl.py @@ -26,6 +26,8 @@ import scope_window import common from gnuradio import gr, filter from gnuradio import blocks +from gnuradio import analog +from gnuradio import wxgui from pubsub import pubsub from constants import * import math @@ -101,7 +103,7 @@ class _scope_sink_base(gr.hier_block2, common.wxgui_hb): ) #scope msgq = gr.msg_queue(2) - scope = gr.oscope_sink_f(sample_rate, msgq) + scope = wxgui.oscope_sink_f(sample_rate, msgq) #controller self.controller = pubsub() self.controller.subscribe(SAMPLE_RATE_KEY, scope.set_sample_rate) @@ -207,12 +209,13 @@ class test_top_block (stdgui2.std_top_block): # Generate a complex sinusoid ampl=1.0e3 - self.src0 = analog.sig_source_c(input_rate, gr.GR_SIN_WAVE, + self.src0 = analog.sig_source_c(input_rate, analog.GR_SIN_WAVE, 25.1e3*input_rate/default_input_rate, ampl) - self.noise = analog.sig_source_c (input_rate, analog.GR_SIN_WAVE, - 11.1*25.1e3*input_rate/default_input_rate, ampl/10) + self.noise = analog.sig_source_c(input_rate, analog.GR_SIN_WAVE, + 11.1*25.1e3*input_rate/default_input_rate, + ampl/10) #self.noise = analog.noise_source_c(analog.GR_GAUSSIAN, ampl/10) - self.combine = analog.add_cc() + self.combine = blocks.add_cc() # We add this throttle block so that this demo doesn't suck down # all the CPU available. You normally wouldn't use it... diff --git a/gr-wxgui/python/scopesink_nongl.py b/gr-wxgui/python/scopesink_nongl.py index 2c5ff9278a..28a473860f 100644 --- a/gr-wxgui/python/scopesink_nongl.py +++ b/gr-wxgui/python/scopesink_nongl.py @@ -23,6 +23,7 @@ from gnuradio import gr, gru, eng_notation from gnuradio import analog from gnuradio import blocks +from gnuradio import wxgui from gnuradio.wxgui import stdgui2 import wx import gnuradio.wxgui.plot as plot @@ -43,7 +44,7 @@ class scope_sink_f(gr.hier_block2): gr.io_signature(0,0,0)) msgq = gr.msg_queue(2) # message queue that holds at most 2 messages - self.guts = gr.oscope_sink_f(sample_rate, msgq) + self.guts = wxgui.oscope_sink_f(sample_rate, msgq) for i in range(num_inputs): self.connect((self, i), (self.guts, i)) @@ -64,7 +65,7 @@ class scope_sink_c(gr.hier_block2): gr.io_signature(0,0,0)) msgq = gr.msg_queue(2) # message queue that holds at most 2 messages - self.guts = gr.oscope_sink_f(sample_rate, msgq) + self.guts = wxgui.oscope_sink_f(sample_rate, msgq) for i in range(num_inputs): c2f = blocks.complex_to_float() self.connect((self, i), c2f) @@ -425,11 +426,11 @@ class scope_window(wx.Panel): sink = self.info.scopesink s = evt.GetString() if s == 'Norm': - sink.set_trigger_mode(gr.gr_TRIG_MODE_NORM) + sink.set_trigger_mode(wxgui.TRIG_MODE_NORM) elif s == 'Auto': - sink.set_trigger_mode(gr.gr_TRIG_MODE_AUTO) + sink.set_trigger_mode(wxgui.TRIG_MODE_AUTO) elif s == 'Free': - sink.set_trigger_mode(gr.gr_TRIG_MODE_FREE) + sink.set_trigger_mode(wxgui.TRIG_MODE_FREE) else: assert 0, "Bad trig_mode_choice string" diff --git a/gr-wxgui/python/waterfallsink_nongl.py b/gr-wxgui/python/waterfallsink_nongl.py index 37b8281927..bd93a84ab7 100644 --- a/gr-wxgui/python/waterfallsink_nongl.py +++ b/gr-wxgui/python/waterfallsink_nongl.py @@ -89,7 +89,7 @@ class waterfall_sink_f(gr.hier_block2, waterfall_sink_base): fft_rate=fft_rate, average=average, avg_alpha=avg_alpha, title=title) - self.s2p = gr.serial_to_parallel(gr.sizeof_float, self.fft_size) + self.s2p = blocks.stream_to_vector(gr.sizeof_float, self.fft_size) self.one_in_n = blocks.keep_one_in_n(gr.sizeof_float * self.fft_size, max(1, int(self.sample_rate/self.fft_size/self.fft_rate))) @@ -120,7 +120,7 @@ class waterfall_sink_c(gr.hier_block2, waterfall_sink_base): fft_rate=fft_rate, average=average, avg_alpha=avg_alpha, title=title) - self.s2p = gr.serial_to_parallel(gr.sizeof_gr_complex, self.fft_size) + self.s2p = blocks.stream_to_vector(gr.sizeof_gr_complex, self.fft_size) self.one_in_n = blocks.keep_one_in_n(gr.sizeof_gr_complex * self.fft_size, max(1, int(self.sample_rate/self.fft_size/self.fft_rate))) diff --git a/gr-wxgui/swig/CMakeLists.txt b/gr-wxgui/swig/CMakeLists.txt new file mode 100644 index 0000000000..16e7d65050 --- /dev/null +++ b/gr-wxgui/swig/CMakeLists.txt @@ -0,0 +1,57 @@ +# 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. + +######################################################################## +# Setup swig generation +######################################################################## +include(GrPython) +include(GrSwig) + +set(GR_SWIG_INCLUDE_DIRS + ${CMAKE_CURRENT_BINARY_DIR}/../include + ${GR_WXGUI_INCLUDE_DIRS} + ${GNURADIO_CORE_SWIG_INCLUDE_DIRS} + ${GRUEL_INCLUDE_DIRS} + ${Boost_INCLUDE_DIRS} +) + +if(ENABLE_GR_CTRLPORT) + SET(GR_SWIG_FLAGS "-DGR_CTRLPORT") +endif(ENABLE_GR_CTRLPORT) + +set(GR_SWIG_DOC_FILE ${CMAKE_CURRENT_BINARY_DIR}/wxgui_swig_doc.i) +set(GR_SWIG_DOC_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/../lib) +set(GR_SWIG_TARGET_DEPS wxgui_generated_includes) +set(GR_SWIG_LIBRARIES gnuradio-wxgui) + +GR_SWIG_MAKE(wxgui_swig wxgui_swig.i) + +GR_SWIG_INSTALL( + TARGETS wxgui_swig + DESTINATION ${GR_PYTHON_DIR}/gnuradio/wxgui + COMPONENT "wxgui_python" +) + +install( + FILES + wxgui_swig.i + ${CMAKE_CURRENT_BINARY_DIR}/wxgui_swig_doc.i + DESTINATION ${GR_INCLUDE_DIR}/gnuradio/swig + COMPONENT "wxgui_swig" +) diff --git a/gr-wxgui/swig/wxgui_swig.i b/gr-wxgui/swig/wxgui_swig.i new file mode 100644 index 0000000000..1151b17ee5 --- /dev/null +++ b/gr-wxgui/swig/wxgui_swig.i @@ -0,0 +1,43 @@ +/* -*- 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. + */ + +#define WXGUI_API + +%include "gnuradio.i" + +//load generated python docstrings +%include "wxgui_swig_doc.i" + +%include "wxgui/trigger_mode.h" + +%{ +#include "wxgui/oscope_sink_x.h" +#include "wxgui/histo_sink_f.h" +#include "wxgui/oscope_sink_f.h" +%} + +%include "wxgui/oscope_sink_x.h" +%include "wxgui/histo_sink_f.h" +%include "wxgui/oscope_sink_f.h" + +GR_SWIG_BLOCK_MAGIC2(wxgui, histo_sink_f); +GR_SWIG_BLOCK_MAGIC2(wxgui, oscope_sink_f); diff --git a/grc/examples/xmlrpc/xmlrpc_server.grc b/grc/examples/xmlrpc/xmlrpc_server.grc index 7497117f28..3a133fd7c4 100644 --- a/grc/examples/xmlrpc/xmlrpc_server.grc +++ b/grc/examples/xmlrpc/xmlrpc_server.grc @@ -170,7 +170,7 @@ </param> <param> <key>trig_mode</key> - <value>gr.gr_TRIG_MODE_AUTO</value> + <value>wxgui.TRIG_MODE_AUTO</value> </param> <param> <key>y_axis_label</key> -- cgit v1.2.3 From f5fb7e9d9df913eb8ca23c47b6b9aa117656971f Mon Sep 17 00:00:00 2001 From: Tom Rondeau <trondeau@vt.edu> Date: Wed, 20 Mar 2013 10:48:05 -0400 Subject: wxgui: fixing up some sloppiness after merge from master. --- gr-wxgui/python/fftsink_nongl.py | 29 +++++++++-------------------- 1 file changed, 9 insertions(+), 20 deletions(-) (limited to 'gr-wxgui/python') diff --git a/gr-wxgui/python/fftsink_nongl.py b/gr-wxgui/python/fftsink_nongl.py index c65fc07ae4..57eb2840cd 100644 --- a/gr-wxgui/python/fftsink_nongl.py +++ b/gr-wxgui/python/fftsink_nongl.py @@ -21,7 +21,7 @@ # from gnuradio import gr, gru, fft -+import gnuradio.filter as grfilter +import gnuradio.filter as grfilter from gnuradio import blocks from gnuradio import analog from gnuradio.wxgui import stdgui2 @@ -41,7 +41,8 @@ class fft_sink_base(object): y_divs=8, ref_level=50, sample_rate=1, fft_size=512, fft_rate=default_fft_rate, - average=False, avg_alpha=None, title='', peak_hold=False,use_persistence=False,persist_alpha=0.2): + average=False, avg_alpha=None, title='', + peak_hold=False, use_persistence=False, persist_alpha=0.2): # initialize common attributes self.baseband_freq = baseband_freq @@ -110,7 +111,8 @@ class fft_sink_f(gr.hier_block2, fft_sink_base): def __init__(self, parent, baseband_freq=0, ref_scale=2.0, y_per_div=10, y_divs=8, ref_level=50, sample_rate=1, fft_size=512, fft_rate=default_fft_rate, average=False, avg_alpha=None, - title='', size=default_fftsink_size, peak_hold=False, use_persistence=False,persist_alpha=0.2, **kwargs): + title='', size=default_fftsink_size, peak_hold=False, + use_persistence=False, persist_alpha=0.2, **kwargs): gr.hier_block2.__init__(self, "fft_sink_f", gr.io_signature(1, 1, gr.sizeof_float), @@ -121,7 +123,8 @@ class fft_sink_f(gr.hier_block2, fft_sink_base): sample_rate=sample_rate, fft_size=fft_size, fft_rate=fft_rate, average=average, avg_alpha=avg_alpha, title=title, - peak_hold=peak_hold,use_persistence=use_persistence,persist_alpha=persist_alpha) + peak_hold=peak_hold, use_persistence=use_persistence, + persist_alpha=persist_alpha) self.s2p = blocks.stream_to_vector(gr.sizeof_float, self.fft_size) self.one_in_n = blocks.keep_one_in_n(gr.sizeof_float * self.fft_size, @@ -167,7 +170,8 @@ class fft_sink_c(gr.hier_block2, fft_sink_base): sample_rate=sample_rate, fft_size=fft_size, fft_rate=fft_rate, average=average, avg_alpha=avg_alpha, title=title, - peak_hold=peak_hold, use_persistence=use_persistence,persist_alpha=persist_alpha) + peak_hold=peak_hold, use_persistence=use_persistence, + persist_alpha=persist_alpha) self.s2p = blocks.stream_to_vector(gr.sizeof_gr_complex, self.fft_size) self.one_in_n = blocks.keep_one_in_n(gr.sizeof_gr_complex * self.fft_size, @@ -611,15 +615,10 @@ class test_app_block (stdgui2.std_top_block): input_rate = 100*20.48e3 # Generate a complex sinusoid -<<<<<<< HEAD:gr-wxgui/python/fftsink_nongl.py - #src1 = analog.sig_source_c(input_rate, analog.GR_SIN_WAVE, 100*2e3, 1) - src1 = analog.sig_source_c(input_rate, analog.GR_CONST_WAVE, 100*5.75e3, 1) -======= #src1 = gr.sig_source_c (input_rate, gr.GR_SIN_WAVE, 100*2e3, 1) src1 = gr.sig_source_c (input_rate, gr.GR_CONST_WAVE, 100*5.75e3, 1) noise1 = analog.noise_source_c(analog.GR_UNIFORM, 1.0/10) add1 = blocks.add_cc() ->>>>>>> master:gr-wxgui/src/python/fftsink_nongl.py # We add these throttle blocks so that this demo doesn't # suck down all the CPU available. Normally you wouldn't use these. @@ -634,15 +633,6 @@ class test_app_block (stdgui2.std_top_block): self.connect(noise1, (add1,1)) self.connect(add1, thr1, sink1) -<<<<<<< HEAD:gr-wxgui/python/fftsink_nongl.py - #src2 = analog.sig_source_f(input_rate, analog.GR_SIN_WAVE, 100*2e3, 1) - src2 = analog.sig_source_f(input_rate, analog.GR_CONST_WAVE, 100*5.75e3, 1) - thr2 = blocks.throttle(gr.sizeof_float, input_rate) - sink2 = fft_sink_f(panel, title="Real Data", fft_size=fft_size*2, - sample_rate=input_rate, baseband_freq=100e3, - ref_level=0, y_per_div=20, y_divs=10) - vbox.Add(sink2.win, 1, wx.EXPAND) -======= #src2 = gr.sig_source_f (input_rate, gr.GR_SIN_WAVE, 100*2e3, 1) src2 = gr.sig_source_f (input_rate, gr.GR_CONST_WAVE, 100*5.75e3, 1) noise2 = analog.noise_source_f(analog.GR_UNIFORM, 1.0/10) @@ -653,7 +643,6 @@ class test_app_block (stdgui2.std_top_block): sample_rate=input_rate, baseband_freq=100e3, ref_level=0, y_per_div=20, y_divs=10) vbox.Add (sink2.win, 1, wx.EXPAND) ->>>>>>> master:gr-wxgui/src/python/fftsink_nongl.py self.connect(src2, (add2,0)) self.connect(noise2, (add2,1)) -- cgit v1.2.3 From 005639344364edad157cfceeab2a47fae22878e1 Mon Sep 17 00:00:00 2001 From: Tim O'Shea <tim.oshea753@gmail.com> Date: Fri, 29 Mar 2013 13:04:13 -0400 Subject: gr-wxgui: blocks naming fix --- gr-wxgui/python/fftsink_nongl.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gr-wxgui/python') diff --git a/gr-wxgui/python/fftsink_nongl.py b/gr-wxgui/python/fftsink_nongl.py index 57eb2840cd..f567a22256 100644 --- a/gr-wxgui/python/fftsink_nongl.py +++ b/gr-wxgui/python/fftsink_nongl.py @@ -140,7 +140,7 @@ class fft_sink_f(gr.hier_block2, fft_sink_base): self.avg = grfilter.single_pole_iir_filter_ff(1.0, self.fft_size) # FIXME We need to add 3dB to all bins but the DC bin - self.log = gr.nlog10_ff(20, self.fft_size, + self.log = blocks.nlog10_ff(20, self.fft_size, -20*math.log10(self.fft_size) # Adjust for number of bins -10*math.log10(power/self.fft_size) # Adjust for windowing loss -20*math.log10(ref_scale/2)) # Adjust for reference scale @@ -187,7 +187,7 @@ class fft_sink_c(gr.hier_block2, fft_sink_base): self.avg = grfilter.single_pole_iir_filter_ff(1.0, self.fft_size) # FIXME We need to add 3dB to all bins but the DC bin - self.log = gr.nlog10_ff(20, self.fft_size, + self.log = blocks.nlog10_ff(20, self.fft_size, -20*math.log10(self.fft_size) # Adjust for number of bins -10*math.log10(power/self.fft_size) # Adjust for windowing loss -20*math.log10(ref_scale/2)) # Adjust for reference scale -- cgit v1.2.3