diff options
Diffstat (limited to 'gr-fcd/examples')
-rw-r--r-- | gr-fcd/examples/CMakeLists.txt | 41 | ||||
-rw-r--r-- | gr-fcd/examples/fcd_apt_rx.grc | 704 | ||||
-rw-r--r-- | gr-fcd/examples/fcd_fft_wx.grc | 320 | ||||
-rw-r--r-- | gr-fcd/examples/fcd_nfm_rx.cc | 114 | ||||
-rw-r--r-- | gr-fcd/examples/fcd_nfm_rx.grc | 1035 |
5 files changed, 2214 insertions, 0 deletions
diff --git a/gr-fcd/examples/CMakeLists.txt b/gr-fcd/examples/CMakeLists.txt new file mode 100644 index 000000000..477a6311b --- /dev/null +++ b/gr-fcd/examples/CMakeLists.txt @@ -0,0 +1,41 @@ +# Copyright 2012 Free Software Foundation, Inc. +# +# This file is part of GNU Radio +# +# GNU Radio is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3, or (at your option) +# any later version. +# +# GNU Radio is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU Radio; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, +# Boston, MA 02110-1301, USA. + +include_directories(${GR_FCD_INCLUDE_DIRS}) +include_directories(${GNURADIO_CORE_INCLUDE_DIRS}) +include_directories(${GR_AUDIO_INCLUDE_DIRS}) + +add_executable(fcd_nfm_rx fcd_nfm_rx.cc) +target_link_libraries(fcd_nfm_rx gnuradio-fcd) + +INSTALL(TARGETS + fcd_nfm_rx + DESTINATION ${GR_PKG_DATA_DIR}/examples/fcd + COMPONENT "fcd_examples" +) + +if(ENABLE_PYTHON) + INSTALL(FILES + fcd_apt_rx.grc + fcd_fft_wx.grc + fcd_nfm_rx.grc + DESTINATION ${GR_PKG_DATA_DIR}/examples/fcd + COMPONENT "fcd_examples" + ) +endif() diff --git a/gr-fcd/examples/fcd_apt_rx.grc b/gr-fcd/examples/fcd_apt_rx.grc new file mode 100644 index 000000000..c4d3e64d1 --- /dev/null +++ b/gr-fcd/examples/fcd_apt_rx.grc @@ -0,0 +1,704 @@ +<?xml version='1.0' encoding='ASCII'?> +<flow_graph> + <timestamp>Sun May 8 18:01:53 2011</timestamp> + <block> + <key>options</key> + <param> + <key>id</key> + <value>fcd_apt_rx</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>title</key> + <value>NOAA APT Receiver</value> + </param> + <param> + <key>author</key> + <value>Alexandru Csete OZ9AEC</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> + </param> + <param> + <key>_coordinate</key> + <value>(10, 10)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>id</key> + <value>samp_rate</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> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>audio_sink</key> + <param> + <key>id</key> + <value>audio_sink</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>samp_rate</key> + <value>48000</value> + </param> + <param> + <key>device_name</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> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>blks2_fm_demod_cf</key> + <param> + <key>id</key> + <value>blks2_fm_demod_cf</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>chan_rate</key> + <value>samp_rate</value> + </param> + <param> + <key>audio_decim</key> + <value>2</value> + </param> + <param> + <key>deviation</key> + <value>max_dev</value> + </param> + <param> + <key>audio_pass</key> + <value>5000</value> + </param> + <param> + <key>audio_stop</key> + <value>7000</value> + </param> + <param> + <key>gain</key> + <value>1.0</value> + </param> + <param> + <key>tau</key> + <value>75e-6</value> + </param> + <param> + <key>_coordinate</key> + <value>(568, 307)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>blks2_rational_resampler_xxx</key> + <param> + <key>id</key> + <value>blks2_rational_resampler_xxx_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>fff</value> + </param> + <param> + <key>decim</key> + <value>48000</value> + </param> + <param> + <key>interp</key> + <value>11025</value> + </param> + <param> + <key>taps</key> + <value>[]</value> + </param> + <param> + <key>fractional_bw</key> + <value>0</value> + </param> + <param> + <key>_coordinate</key> + <value>(516, 522)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>id</key> + <value>wav_file</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>value</key> + <value>prefix + datetime.now().strftime("%Y.%m.%d.%H.%M.%S") + ".wav"</value> + </param> + <param> + <key>_coordinate</key> + <value>(762, 652)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>id</key> + <value>prefix</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>value</key> + <value>"FCD_APT_REC-"</value> + </param> + <param> + <key>_coordinate</key> + <value>(625, 653)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>import</key> + <param> + <key>id</key> + <value>import_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>import</key> + <value>from datetime import datetime</value> + </param> + <param> + <key>_coordinate</key> + <value>(508, 653)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_wavfile_sink</key> + <param> + <key>id</key> + <value>wavfile_sink</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>file</key> + <value>wav_file</value> + </param> + <param> + <key>nchan</key> + <value>1</value> + </param> + <param> + <key>samp_rate</key> + <value>11025</value> + </param> + <param> + <key>bits_per_sample</key> + <value>16</value> + </param> + <param> + <key>_coordinate</key> + <value>(805, 530)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_chooser</key> + <param> + <key>id</key> + <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>137500000</value> + </param> + <param> + <key>choices</key> + <value>[137500000,137620000,137912500,137100000]</value> + </param> + <param> + <key>labels</key> + <value>["NOAA-15","NOAA-17","NOAA-18","NOAA-19"]</value> + </param> + <param> + <key>type</key> + <value>drop_down</value> + </param> + <param> + <key>style</key> + <value>wx.RA_HORIZONTAL</value> + </param> + <param> + <key>grid_pos</key> + <value>1,0,1,1</value> + </param> + <param> + <key>notebook</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(18, 479)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>id</key> + <value>max_dev</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>value</key> + <value>17000</value> + </param> + <param> + <key>_coordinate</key> + <value>(299, 10)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_chooser</key> + <param> + <key>id</key> + <value>fcd_lna_gain</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>label</key> + <value>LNA gain [dB]</value> + </param> + <param> + <key>value</key> + <value>20.0</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> + </param> + <param> + <key>labels</key> + <value>[]</value> + </param> + <param> + <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>(207, 481)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_static_text</key> + <param> + <key>id</key> + <value>rec_info</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>label</key> + <value>Recording to</value> + </param> + <param> + <key>value</key> + <value>wav_file</value> + </param> + <param> + <key>converver</key> + <value>str_converter</value> + </param> + <param> + <key>formatter</key> + <value>None</value> + </param> + <param> + <key>grid_pos</key> + <value>1,1,1,1</value> + </param> + <param> + <key>notebook</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(641, 14)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>low_pass_filter</key> + <param> + <key>id</key> + <value>low_pass_filter</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>fir_filter_ccf</value> + </param> + <param> + <key>decim</key> + <value>1</value> + </param> + <param> + <key>interp</key> + <value>1</value> + </param> + <param> + <key>gain</key> + <value>1</value> + </param> + <param> + <key>samp_rate</key> + <value>samp_rate</value> + </param> + <param> + <key>cutoff_freq</key> + <value>25000</value> + </param> + <param> + <key>width</key> + <value>5000</value> + </param> + <param> + <key>win</key> + <value>firdes.WIN_HAMMING</value> + </param> + <param> + <key>beta</key> + <value>6.76</value> + </param> + <param> + <key>_coordinate</key> + <value>(334, 307)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>fcd_source_c</key> + <param> + <key>id</key> + <value>fcd_source_c_0</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> + </param> + <param> + <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>(25, 299)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>wxgui_fftsink2</key> + <param> + <key>id</key> + <value>fftsink</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>title</key> + <value>FCD Spectrum</value> + </param> + <param> + <key>samp_rate</key> + <value>samp_rate</value> + </param> + <param> + <key>baseband_freq</key> + <value>sat_freq</value> + </param> + <param> + <key>y_per_div</key> + <value>10</value> + </param> + <param> + <key>y_divs</key> + <value>10</value> + </param> + <param> + <key>ref_level</key> + <value>0.0</value> + </param> + <param> + <key>ref_scale</key> + <value>1.0</value> + </param> + <param> + <key>fft_size</key> + <value>512</value> + </param> + <param> + <key>fft_rate</key> + <value>15</value> + </param> + <param> + <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> + <param> + <key>win</key> + <value>None</value> + </param> + <param> + <key>win_size</key> + <value></value> + </param> + <param> + <key>grid_pos</key> + <value>0,0,1,2</value> + </param> + <param> + <key>notebook</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(335, 103)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <connection> + <source_block_id>low_pass_filter</source_block_id> + <sink_block_id>blks2_fm_demod_cf</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_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_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_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_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_key>0</source_key> + <sink_key>0</sink_key> + </connection> +</flow_graph> diff --git a/gr-fcd/examples/fcd_fft_wx.grc b/gr-fcd/examples/fcd_fft_wx.grc new file mode 100644 index 000000000..c045bbfa2 --- /dev/null +++ b/gr-fcd/examples/fcd_fft_wx.grc @@ -0,0 +1,320 @@ +<?xml version='1.0' encoding='ASCII'?> +<flow_graph> + <timestamp>Sun May 8 18:02:35 2011</timestamp> + <block> + <key>options</key> + <param> + <key>id</key> + <value>fcd_fft_wx</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>title</key> + <value>Funcube Dongle FFT scope</value> + </param> + <param> + <key>author</key> + <value>Alexandru Csete OZ9AEC</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> + </param> + <param> + <key>_coordinate</key> + <value>(10, 10)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>id</key> + <value>samp_rate</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>value</key> + <value>96000</value> + </param> + <param> + <key>_coordinate</key> + <value>(201, 11)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_text_box</key> + <param> + <key>id</key> + <value>fcd_freq</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>label</key> + <value>FCD freq</value> + </param> + <param> + <key>value</key> + <value>145500000</value> + </param> + <param> + <key>converver</key> + <value>float_converter</value> + </param> + <param> + <key>formatter</key> + <value>None</value> + </param> + <param> + <key>grid_pos</key> + <value>1,0,1,1</value> + </param> + <param> + <key>notebook</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(300, 11)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_chooser</key> + <param> + <key>id</key> + <value>fcd_lna_gain</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>label</key> + <value>LNA gain [dB]</value> + </param> + <param> + <key>value</key> + <value>20.0</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> + </param> + <param> + <key>labels</key> + <value>[]</value> + </param> + <param> + <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>(446, 10)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>wxgui_fftsink2</key> + <param> + <key>id</key> + <value>wxgui_fftsink2_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>title</key> + <value>FCD Spectrum</value> + </param> + <param> + <key>samp_rate</key> + <value>samp_rate</value> + </param> + <param> + <key>baseband_freq</key> + <value>fcd_freq</value> + </param> + <param> + <key>y_per_div</key> + <value>10</value> + </param> + <param> + <key>y_divs</key> + <value>10</value> + </param> + <param> + <key>ref_level</key> + <value>0</value> + </param> + <param> + <key>ref_scale</key> + <value>1.0</value> + </param> + <param> + <key>fft_size</key> + <value>512</value> + </param> + <param> + <key>fft_rate</key> + <value>15</value> + </param> + <param> + <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> + <param> + <key>win</key> + <value>None</value> + </param> + <param> + <key>win_size</key> + <value></value> + </param> + <param> + <key>grid_pos</key> + <value>0,0,1,2</value> + </param> + <param> + <key>notebook</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(442, 176)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>fcd_source_c</key> + <param> + <key>id</key> + <value>fcd_source_c_1</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>fcd_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> + </param> + <param> + <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>(95, 192)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <connection> + <source_block_id>fcd_source_c_1</source_block_id> + <sink_block_id>wxgui_fftsink2_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> +</flow_graph> diff --git a/gr-fcd/examples/fcd_nfm_rx.cc b/gr-fcd/examples/fcd_nfm_rx.cc new file mode 100644 index 000000000..97ef7cf19 --- /dev/null +++ b/gr-fcd/examples/fcd_nfm_rx.cc @@ -0,0 +1,114 @@ +/* + * Copyright 2011 Free Software Foundation, Inc. + * + * 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. + */ + +/* + * Simple GNU Radio C++ example for using the Funcube Dongle. + * + * Construct a simple narrow band FM receiver using the gr-fcd + * block as source. + * + * This example uses "hw:1" as FCD source device and the default + * audio device for output. + * + */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +// Include header files for each block used in flowgraph +#include <gr_top_block.h> +#include <gr_firdes.h> +#include <gr_fir_filter_ccf.h> +#include <gr_quadrature_demod_cf.h> +#include <gr_audio_sink.h> +#include <fcd_source_c.h> + +// other includes +#include <iostream> +#include <boost/program_options.hpp> + + +namespace po = boost::program_options; + +int main(int argc, char **argv) +{ + int rate = 48000; // Audio card sample rate + float pi = 3.141592654; + + + //variables to be set by po + std::string device; + int freq; + float gain; + + //setup the program options + po::options_description desc("Command line options"); + desc.add_options() + ("help", "This help message") + ("device", po::value<std::string>(&device)->default_value("hw:1"), "Audio input device") + ("freq", po::value<int>(&freq)->default_value(145500), "RF frequency in kHz") + ("gain", po::value<float>(&gain)->default_value(20.0), "LNA gain in dB") + ; + po::variables_map vm; + po::store(po::parse_command_line(argc, argv, desc), vm); + po::notify(vm); + + //print the help message + if (vm.count("help")){ + std::cout << "Narrow band FM receiver example" << std::endl << desc << std::endl; + return ~0; + } + + + // Construct a top block that will contain flowgraph blocks. + gr_top_block_sptr tb = gr_make_top_block("fcd_nfm_rx"); + + // FCD source + fcd_source_c_sptr fcd = fcd_make_source_c(device); + fcd->set_freq_khz(freq); + fcd->set_lna_gain(gain); + + // Low pass filter + std::vector<float> taps = gr_firdes::low_pass(1.0, 96000, 5000.0, 1000.0); + gr_fir_filter_ccf_sptr filter = gr_make_fir_filter_ccf (2, taps); + + // FM demodulator + // gain = sample_rate / (2*pi*max_dev) + gr_quadrature_demod_cf_sptr demod = gr_make_quadrature_demod_cf (rate/(2.0*pi*5000.0)); + + // Audio sink + audio_sink::sptr sink = audio_make_sink(rate); + + // Connect blocks + tb->connect(fcd, 0, filter, 0); + tb->connect(filter, 0, demod, 0); + tb->connect(demod, 0, sink, 0); + + // Tell GNU Radio runtime to start flowgraph threads; the foreground thread + // will block until either flowgraph exits (this example doesn't) or the + // application receives SIGINT (e.g., user hits CTRL-C). + // + // Real applications may use tb->start() which returns, allowing the foreground + // thread to proceed, then later use tb->stop(), followed by tb->wait(), to cleanup + // GNU Radio before exiting. + tb->run(); + + // Exit normally. + return 0; +} diff --git a/gr-fcd/examples/fcd_nfm_rx.grc b/gr-fcd/examples/fcd_nfm_rx.grc new file mode 100644 index 000000000..9dac3fcb8 --- /dev/null +++ b/gr-fcd/examples/fcd_nfm_rx.grc @@ -0,0 +1,1035 @@ +<?xml version='1.0' encoding='ASCII'?> +<flow_graph> + <timestamp>Sun May 8 18:05:32 2011</timestamp> + <block> + <key>options</key> + <param> + <key>id</key> + <value>fcd_nfm_rx</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>title</key> + <value>FCD FM Receiver</value> + </param> + <param> + <key>author</key> + <value>OZ9AEC</value> + </param> + <param> + <key>description</key> + <value>Simple FM receiver using the Funcube Dongle</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> + </param> + <param> + <key>_coordinate</key> + <value>(10, 10)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_static_text</key> + <param> + <key>id</key> + <value>rx_freq</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>label</key> + <value>Receive</value> + </param> + <param> + <key>value</key> + <value>freq+(offset_coarse+offset_fine)</value> + </param> + <param> + <key>converver</key> + <value>float_converter</value> + </param> + <param> + <key>formatter</key> + <value>None</value> + </param> + <param> + <key>grid_pos</key> + <value>5,3,1,1</value> + </param> + <param> + <key>notebook</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(491, 10)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_slider</key> + <param> + <key>id</key> + <value>offset_fine</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>label</key> + <value>Fine tune</value> + </param> + <param> + <key>value</key> + <value>0</value> + </param> + <param> + <key>min</key> + <value>-1000</value> + </param> + <param> + <key>max</key> + <value>1000</value> + </param> + <param> + <key>num_steps</key> + <value>400</value> + </param> + <param> + <key>style</key> + <value>wx.SL_HORIZONTAL</value> + </param> + <param> + <key>converver</key> + <value>float_converter</value> + </param> + <param> + <key>grid_pos</key> + <value>6,0,1,2</value> + </param> + <param> + <key>notebook</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(9, 279)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_slider</key> + <param> + <key>id</key> + <value>offset_coarse</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>label</key> + <value>Coarse tune</value> + </param> + <param> + <key>value</key> + <value>0</value> + </param> + <param> + <key>min</key> + <value>-48000</value> + </param> + <param> + <key>max</key> + <value>48000</value> + </param> + <param> + <key>num_steps</key> + <value>960</value> + </param> + <param> + <key>style</key> + <value>wx.SL_HORIZONTAL</value> + </param> + <param> + <key>converver</key> + <value>float_converter</value> + </param> + <param> + <key>grid_pos</key> + <value>6,2,1,2</value> + </param> + <param> + <key>notebook</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(10, 130)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_slider</key> + <param> + <key>id</key> + <value>width</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>label</key> + <value>Filter</value> + </param> + <param> + <key>value</key> + <value>10000</value> + </param> + <param> + <key>min</key> + <value>2000</value> + </param> + <param> + <key>max</key> + <value>40000</value> + </param> + <param> + <key>num_steps</key> + <value>760</value> + </param> + <param> + <key>style</key> + <value>wx.SL_HORIZONTAL</value> + </param> + <param> + <key>converver</key> + <value>float_converter</value> + </param> + <param> + <key>grid_pos</key> + <value>7,0,1,1</value> + </param> + <param> + <key>notebook</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(9, 431)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_slider</key> + <param> + <key>id</key> + <value>trans</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>label</key> + <value>Trans</value> + </param> + <param> + <key>value</key> + <value>1500</value> + </param> + <param> + <key>min</key> + <value>500</value> + </param> + <param> + <key>max</key> + <value>5000</value> + </param> + <param> + <key>num_steps</key> + <value>900</value> + </param> + <param> + <key>style</key> + <value>wx.SL_HORIZONTAL</value> + </param> + <param> + <key>converver</key> + <value>float_converter</value> + </param> + <param> + <key>grid_pos</key> + <value>8,0,1,1</value> + </param> + <param> + <key>notebook</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(10, 577)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_slider</key> + <param> + <key>id</key> + <value>af_gain</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>label</key> + <value>VOL</value> + </param> + <param> + <key>value</key> + <value>1</value> + </param> + <param> + <key>min</key> + <value>0</value> + </param> + <param> + <key>max</key> + <value>5</value> + </param> + <param> + <key>num_steps</key> + <value>50</value> + </param> + <param> + <key>style</key> + <value>wx.SL_HORIZONTAL</value> + </param> + <param> + <key>converver</key> + <value>float_converter</value> + </param> + <param> + <key>grid_pos</key> + <value>8,1,1,1</value> + </param> + <param> + <key>notebook</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(168, 726)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>low_pass_filter</key> + <param> + <key>id</key> + <value>low_pass_filter</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>fir_filter_ccf</value> + </param> + <param> + <key>decim</key> + <value>1</value> + </param> + <param> + <key>interp</key> + <value>1</value> + </param> + <param> + <key>gain</key> + <value>1</value> + </param> + <param> + <key>samp_rate</key> + <value>samp_rate</value> + </param> + <param> + <key>cutoff_freq</key> + <value>width/2</value> + </param> + <param> + <key>width</key> + <value>trans</value> + </param> + <param> + <key>win</key> + <value>firdes.WIN_HAMMING</value> + </param> + <param> + <key>beta</key> + <value>6.76</value> + </param> + <param> + <key>_coordinate</key> + <value>(742, 258)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_simple_squelch_cc</key> + <param> + <key>id</key> + <value>gr_simple_squelch_cc_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>threshold</key> + <value>sql_lev</value> + </param> + <param> + <key>alpha</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(226, 499)</value> + </param> + <param> + <key>_rotation</key> + <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>gr_multiply_const_vxx</key> + <param> + <key>id</key> + <value>gr_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> + <key>id</key> + <value>audio_sink</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>samp_rate</key> + <value>48000</value> + </param> + <param> + <key>device_name</key> + <value></value> + </param> + <param> + <key>ok_to_block</key> + <value>True</value> + </param> + <param> + <key>num_inputs</key> + <value>2</value> + </param> + <param> + <key>_coordinate</key> + <value>(882, 511)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>id</key> + <value>samp_rate</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>value</key> + <value>96000</value> + </param> + <param> + <key>_coordinate</key> + <value>(210, 12)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>wxgui_fftsink2</key> + <param> + <key>id</key> + <value>fftsink</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>title</key> + <value></value> + </param> + <param> + <key>samp_rate</key> + <value>samp_rate</value> + </param> + <param> + <key>baseband_freq</key> + <value>rx_freq*display_selector</value> + </param> + <param> + <key>y_per_div</key> + <value>10</value> + </param> + <param> + <key>y_divs</key> + <value>10</value> + </param> + <param> + <key>ref_level</key> + <value>0</value> + </param> + <param> + <key>ref_scale</key> + <value>1.0</value> + </param> + <param> + <key>fft_size</key> + <value>512</value> + </param> + <param> + <key>fft_rate</key> + <value>15</value> + </param> + <param> + <key>peak_hold</key> + <value>False</value> + </param> + <param> + <key>average</key> + <value>True</value> + </param> + <param> + <key>avg_alpha</key> + <value>0.5</value> + </param> + <param> + <key>win</key> + <value>None</value> + </param> + <param> + <key>win_size</key> + <value>800,300</value> + </param> + <param> + <key>grid_pos</key> + <value>0,0,5,4</value> + </param> + <param> + <key>notebook</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(742, 24)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_slider</key> + <param> + <key>id</key> + <value>sql_lev</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>label</key> + <value>SQL</value> + </param> + <param> + <key>value</key> + <value>-100</value> + </param> + <param> + <key>min</key> + <value>-100</value> + </param> + <param> + <key>max</key> + <value>0</value> + </param> + <param> + <key>num_steps</key> + <value>500</value> + </param> + <param> + <key>style</key> + <value>wx.SL_HORIZONTAL</value> + </param> + <param> + <key>converver</key> + <value>float_converter</value> + </param> + <param> + <key>grid_pos</key> + <value>7,2,1,1</value> + </param> + <param> + <key>notebook</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(328, 728)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>id</key> + <value>xlate_filter_taps</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>value</key> + <value>firdes.low_pass(1, samp_rate, 48000, 5000, firdes.WIN_HAMMING, 6.76)</value> + </param> + <param> + <key>_coordinate</key> + <value>(428, 294)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_chooser</key> + <param> + <key>id</key> + <value>display_selector</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>label</key> + <value>Spectrum</value> + </param> + <param> + <key>value</key> + <value>0</value> + </param> + <param> + <key>choices</key> + <value>[0, 1]</value> + </param> + <param> + <key>labels</key> + <value>['Baseband','RF']</value> + </param> + <param> + <key>type</key> + <value>drop_down</value> + </param> + <param> + <key>style</key> + <value>wx.RA_HORIZONTAL</value> + </param> + <param> + <key>grid_pos</key> + <value>5,0,1,1</value> + </param> + <param> + <key>notebook</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(481, 728)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_text_box</key> + <param> + <key>id</key> + <value>freq</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>label</key> + <value>FCD Freq</value> + </param> + <param> + <key>value</key> + <value>144470000</value> + </param> + <param> + <key>converver</key> + <value>float_converter</value> + </param> + <param> + <key>formatter</key> + <value>None</value> + </param> + <param> + <key>grid_pos</key> + <value>5,1,1,1</value> + </param> + <param> + <key>notebook</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(339, 9)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_freq_xlating_fir_filter_xxx</key> + <param> + <key>id</key> + <value>xlating_fir_filter</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>ccc</value> + </param> + <param> + <key>decim</key> + <value>1</value> + </param> + <param> + <key>taps</key> + <value>xlate_filter_taps</value> + </param> + <param> + <key>center_freq</key> + <value>-(offset_coarse+offset_fine)</value> + </param> + <param> + <key>samp_rate</key> + <value>samp_rate</value> + </param> + <param> + <key>_coordinate</key> + <value>(433, 189)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_slider</key> + <param> + <key>id</key> + <value>rf_gain</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>label</key> + <value>RF</value> + </param> + <param> + <key>value</key> + <value>20</value> + </param> + <param> + <key>min</key> + <value>-5</value> + </param> + <param> + <key>max</key> + <value>30</value> + </param> + <param> + <key>num_steps</key> + <value>35</value> + </param> + <param> + <key>style</key> + <value>wx.SL_HORIZONTAL</value> + </param> + <param> + <key>converver</key> + <value>float_converter</value> + </param> + <param> + <key>grid_pos</key> + <value>7,1,1,1</value> + </param> + <param> + <key>notebook</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(11, 725)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>fcd_source_c</key> + <param> + <key>id</key> + <value>fcd_source_c_1</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>freq</value> + </param> + <param> + <key>lna</key> + <value>rf_gain</value> + </param> + <param> + <key>ppm</key> + <value>-120</value> + </param> + <param> + <key>dci</key> + <value>0.0</value> + </param> + <param> + <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>(165, 157)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <connection> + <source_block_id>xlating_fir_filter</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>xlating_fir_filter</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>low_pass_filter</source_block_id> + <sink_block_id>gr_simple_squelch_cc_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>gr_multiply_const_vxx_1</source_block_id> + <sink_block_id>audio_sink</sink_block_id> + <source_key>0</source_key> + <sink_key>1</sink_key> + </connection> + <connection> + <source_block_id>gr_multiply_const_vxx_1</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>gr_simple_squelch_cc_0</source_block_id> + <sink_block_id>nbfm_normal</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>nbfm_normal</source_block_id> + <sink_block_id>gr_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>xlating_fir_filter</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> +</flow_graph> |