ChangeSets
Version 16 (Tom Rondeau, 10/19/2011 06:28 pm) → Version 17/35 (Tom Rondeau, 10/20/2011 03:39 pm)
h1. ChangeSets: API and Code Changes between Versions
h2. Version 3.5
h3. New Build Tool: CMake
GNU Radio is working to move away from the use of autotools and instead use cmake. Version 3.5 will have a parallel build of both systems while we make this switch. Cmake will be the default and preferred build, but anyone having issues getting it to work can fall back on using autotools.
Using cmake:
<pre>
mkdir build ; cd build
cmake [OPTIONS] ../
make [-jN]
make test
sudo make install
</pre>
The optional OPTIONS can be things like passing specific directories to locations of dependencies (like QWT, which may be installed in a non-standard place) or to turn components on of off. By default all components are enabled. To disable, use -DENABLE_COMPONENT=On/Off/True/False/Force, where COMPONENT is the directory name in all caps, like gr-qtgui becomes GR_QTGUI.
See [[CMakeWork]] for more details.
The old autotools way where $(top_srcdir) is the directory where the source is located and $(top_builddir) is where you want to build everything (they can be the same).
<pre>
cd $(top_srcdir)
./bootstrap
cd $(top_builddir)
$(top_srcdir)/configure [OPTIONS]
make [-jN]
make check
sudo make install
</pre>
h3. Digital Modulation
We are separating the digital modulation-specific blocks from gnuradio-core into their own top-level directory _gr-digital_. This creates a new *gnuradio* module in Python called *digital* that can be accessed as:
@from gnuradio import digital@
Many blocks have been moved from gnuradio-core and others have been removed completely as they were obsolete or duplicated elsewhere.
h4. New Blocks
* digital_constellation_decoder_cb
* digital_constellation
* digital_constellation_receiver_cb
* digital_cpmmod_bc
* digital_gmskmod_bc
* python/bpsk.py
* python/qpsk.py
* python/generic_mod_demod.py
* python/qam.py
* /python/utils/alignment.py
* /python/utils/gray_code.py
* /python/utils/mod_codes.py
h4. Moved Blocks
* digital_binary_slicer_fb
* digital_clock_recovery_mm_cc
* digital_clock_recovery_mm_ff
* digital_cma_equalizer_cc
* digital_correlate_access_code_bb
* digital_costas_loop_cc
* digital_crc32
* digital_fll_band_edge_cc
* digital_kurtotic_equalizer_cc
* digital_lms_dd_equalizer_cc
* digital_mpsk_receiver_cc (superseded in new blocks; may be removed)
* digital_ofdm_frame_acquisition
* digital_ofdm_frame_sink
* digital_ofdm_insert_preamble
* digital_ofdm_mapper_bcv
* digital_ofdm_sampler
* python/cpm.py
* python/gmsk.py
* python/crc.py
* python/modulation_utils.py (replaces modulation_utils2)
* python/ofdm_packet_utils.py
* python/ofdm.py
* python/ofdm_receiver.py
* python/ofdm_sync_fixed.py
* python/ofdm_sync_ml.py
* python/ofdm_sync_pnac.py
* python/ofdm_sync_pn.py
* python/packet_utils.py
* python/pkt.py
* python/psk.py
h4. Removed Blocks
* python/dbpsk.py
* python/dbpsk2.py
* python/dqpsk.py
* python/dqpsk2.py
* python/d8psk.py
* python/d8psk2.py
h3. Control Loops
All blocks that use a second-order control loop to track a phase and frequency are being replaced to inherit from the gri_control_loop parent class. This class takes care of setting the gains given a loop bandwidth and damping frequency. By default, it sets the damping frequency for a critically damped system so only the loop bandwidth is required. The constructor looks like:
@gri_control_loop(float loop_bw, float max_freq, float min_freq);@
All blocks that have this structure used to set the internal alpha and beta gains individually. Now, the constructors for their blocks have been replaced to accept the loop bandwidth instead of the two gains. All values, the loop bandwidth, damping factor, alpha, beta, current phase, and current frequency can all be retrieved (get_) and set (set_).
This affects the following blocks:
* gr_pll_carrier_tracking_cc
* gr_pll_freqdet_cf
* gr_pll_refout_cc
* *gr_pfb_clock_sync_ccf* (TBD)
* *gr_pfb_clock_sync_fff* (TBD)
* digital_costas_loop_cc
* digital_constellation_receiver_cb
* digital_mpsk_receiver_cc
* digital_fll_band_edge_cc
h3. Moving All USRP-based examples/apps to UHD
Completed in bold.
h4. gnuradio-examples/python
* *apps/hf_explorer/hfx2.py*
* *apps/hf_radio/input.py*
* *apps/hf_radio/radio.py*
* *apps/hf_radio/ssbdemod.py*
* *digital/benchmark_qt_rx2.py*
* *digital/benchmark_qt_rx.py*
* *digital/benchmark_rx2.py*
* *digital/benchmark_rx.py*
* *digital/benchmark_tx2.py*
* *digital/benchmark_tx.py*
* *digital/rx_voice.py*
* *digital/tunnel.py*
* *digital/tx_voice.py*
* *digital/usrp_receive_path.py*
* *digital/usrp_transmit_path.py*
* *multi-antenna/multi_fft.py* (removed, easily redone in GRC)
* *multi-antenna/multi_file.py* (removed, easily redone in GRC)
* *multi-antenna/multi_scope.py* (removed, easily redone in GRC)
* *multi_usrp/multi_usrp_oscope.py* (removed, easily redone in GRC)
* *multi_usrp/multi_usrp_rx_cfile.py* (removed, easily redone in GRC)
* *ofdm/benchmark_ofdm_rx.py*
* *ofdm/benchmark_ofdm_tx.py*
* *ofdm/receive_path.py*
* *ofdm/transmit_path.py*
* *ofdm/tunnel.py*
* *usrp/fm_tx_2_daughterboards.py*
* *usrp/fm_tx4.py*
* *usrp/max_power.py*
* *usrp/usrp_am_mw_rcv.py*
* *usrp/usrp_benchmark_usb.py*
* *usrp/usrp_nbfm_ptt.py*
* *usrp/usrp_nbfm_rcv.py*
* *usrp/usrp_spectrum_sense.py*
* *usrp/usrp_test_loop_lfsr.py*
* *usrp/usrp_tv_rcv_nogui.py*
* *usrp/usrp_tv_rcv.py*
* *usrp/usrp_wfm_rcv2_nogui.py*
* *usrp/usrp_wfm_rcv_fmdet.py*
* *usrp/usrp_wfm_rcv_nogui.py*
* *usrp/usrp_wfm_rcv_pll.py*
* *usrp/usrp_wfm_rcv.py*
* *usrp/usrp_wfm_rcv_sca.py*
* *usrp/usrp_wxapt_rcv.py*
* *usrp2/usrp2_wfm_qt.py*
* *usrp2/usrp2_wfm_rcv.py*
h4. gr-utils/src/python
* *usrp_fft.py*
* *usrp2_fft.py*
* *usrp_oscope.py*
* *usrp_rx_nogui.py*
* *usrp_siggen_gui.py*
* *usrp_siggen.py*
h4. gr-noaa/apps
* usrp_rx_hrpt.grc
* usrp_rx_htpt_nogui.grc
* usrp_rx_lrit.grc
h4. gr-pager/apps
* usrp_flex_all.py
* usrp_flex_band.py
* usrp_flex.py
* usrp_rx_flex.grc
h4. gr-qtgui/apps
* *usrp_display.py*
* *usrp2_display.py*
h4. gr-radio-astronomy/src/python
Removed. The radio astronomy has been replaced by simple-ra in cgran (https://www.cgran.org/wiki/simple_ra)
* *usrp_psr_receiver.py*
* *usrp_ra_receiver.py*
h2. Version 3.5
h3. New Build Tool: CMake
GNU Radio is working to move away from the use of autotools and instead use cmake. Version 3.5 will have a parallel build of both systems while we make this switch. Cmake will be the default and preferred build, but anyone having issues getting it to work can fall back on using autotools.
Using cmake:
<pre>
mkdir build ; cd build
cmake [OPTIONS] ../
make [-jN]
make test
sudo make install
</pre>
The optional OPTIONS can be things like passing specific directories to locations of dependencies (like QWT, which may be installed in a non-standard place) or to turn components on of off. By default all components are enabled. To disable, use -DENABLE_COMPONENT=On/Off/True/False/Force, where COMPONENT is the directory name in all caps, like gr-qtgui becomes GR_QTGUI.
See [[CMakeWork]] for more details.
The old autotools way where $(top_srcdir) is the directory where the source is located and $(top_builddir) is where you want to build everything (they can be the same).
<pre>
cd $(top_srcdir)
./bootstrap
cd $(top_builddir)
$(top_srcdir)/configure [OPTIONS]
make [-jN]
make check
sudo make install
</pre>
h3. Digital Modulation
We are separating the digital modulation-specific blocks from gnuradio-core into their own top-level directory _gr-digital_. This creates a new *gnuradio* module in Python called *digital* that can be accessed as:
@from gnuradio import digital@
Many blocks have been moved from gnuradio-core and others have been removed completely as they were obsolete or duplicated elsewhere.
h4. New Blocks
* digital_constellation_decoder_cb
* digital_constellation
* digital_constellation_receiver_cb
* digital_cpmmod_bc
* digital_gmskmod_bc
* python/bpsk.py
* python/qpsk.py
* python/generic_mod_demod.py
* python/qam.py
* /python/utils/alignment.py
* /python/utils/gray_code.py
* /python/utils/mod_codes.py
h4. Moved Blocks
* digital_binary_slicer_fb
* digital_clock_recovery_mm_cc
* digital_clock_recovery_mm_ff
* digital_cma_equalizer_cc
* digital_correlate_access_code_bb
* digital_costas_loop_cc
* digital_crc32
* digital_fll_band_edge_cc
* digital_kurtotic_equalizer_cc
* digital_lms_dd_equalizer_cc
* digital_mpsk_receiver_cc (superseded in new blocks; may be removed)
* digital_ofdm_frame_acquisition
* digital_ofdm_frame_sink
* digital_ofdm_insert_preamble
* digital_ofdm_mapper_bcv
* digital_ofdm_sampler
* python/cpm.py
* python/gmsk.py
* python/crc.py
* python/modulation_utils.py (replaces modulation_utils2)
* python/ofdm_packet_utils.py
* python/ofdm.py
* python/ofdm_receiver.py
* python/ofdm_sync_fixed.py
* python/ofdm_sync_ml.py
* python/ofdm_sync_pnac.py
* python/ofdm_sync_pn.py
* python/packet_utils.py
* python/pkt.py
* python/psk.py
h4. Removed Blocks
* python/dbpsk.py
* python/dbpsk2.py
* python/dqpsk.py
* python/dqpsk2.py
* python/d8psk.py
* python/d8psk2.py
h3. Control Loops
All blocks that use a second-order control loop to track a phase and frequency are being replaced to inherit from the gri_control_loop parent class. This class takes care of setting the gains given a loop bandwidth and damping frequency. By default, it sets the damping frequency for a critically damped system so only the loop bandwidth is required. The constructor looks like:
@gri_control_loop(float loop_bw, float max_freq, float min_freq);@
All blocks that have this structure used to set the internal alpha and beta gains individually. Now, the constructors for their blocks have been replaced to accept the loop bandwidth instead of the two gains. All values, the loop bandwidth, damping factor, alpha, beta, current phase, and current frequency can all be retrieved (get_) and set (set_).
This affects the following blocks:
* gr_pll_carrier_tracking_cc
* gr_pll_freqdet_cf
* gr_pll_refout_cc
* *gr_pfb_clock_sync_ccf* (TBD)
* *gr_pfb_clock_sync_fff* (TBD)
* digital_costas_loop_cc
* digital_constellation_receiver_cb
* digital_mpsk_receiver_cc
* digital_fll_band_edge_cc
h3. Moving All USRP-based examples/apps to UHD
Completed in bold.
h4. gnuradio-examples/python
* *apps/hf_explorer/hfx2.py*
* *apps/hf_radio/input.py*
* *apps/hf_radio/radio.py*
* *apps/hf_radio/ssbdemod.py*
* *digital/benchmark_qt_rx2.py*
* *digital/benchmark_qt_rx.py*
* *digital/benchmark_rx2.py*
* *digital/benchmark_rx.py*
* *digital/benchmark_tx2.py*
* *digital/benchmark_tx.py*
* *digital/rx_voice.py*
* *digital/tunnel.py*
* *digital/tx_voice.py*
* *digital/usrp_receive_path.py*
* *digital/usrp_transmit_path.py*
* *multi-antenna/multi_fft.py* (removed, easily redone in GRC)
* *multi-antenna/multi_file.py* (removed, easily redone in GRC)
* *multi-antenna/multi_scope.py* (removed, easily redone in GRC)
* *multi_usrp/multi_usrp_oscope.py* (removed, easily redone in GRC)
* *multi_usrp/multi_usrp_rx_cfile.py* (removed, easily redone in GRC)
* *ofdm/benchmark_ofdm_rx.py*
* *ofdm/benchmark_ofdm_tx.py*
* *ofdm/receive_path.py*
* *ofdm/transmit_path.py*
* *ofdm/tunnel.py*
* *usrp/fm_tx_2_daughterboards.py*
* *usrp/fm_tx4.py*
* *usrp/max_power.py*
* *usrp/usrp_am_mw_rcv.py*
* *usrp/usrp_benchmark_usb.py*
* *usrp/usrp_nbfm_ptt.py*
* *usrp/usrp_nbfm_rcv.py*
* *usrp/usrp_spectrum_sense.py*
* *usrp/usrp_test_loop_lfsr.py*
* *usrp/usrp_tv_rcv_nogui.py*
* *usrp/usrp_tv_rcv.py*
* *usrp/usrp_wfm_rcv2_nogui.py*
* *usrp/usrp_wfm_rcv_fmdet.py*
* *usrp/usrp_wfm_rcv_nogui.py*
* *usrp/usrp_wfm_rcv_pll.py*
* *usrp/usrp_wfm_rcv.py*
* *usrp/usrp_wfm_rcv_sca.py*
* *usrp/usrp_wxapt_rcv.py*
* *usrp2/usrp2_wfm_qt.py*
* *usrp2/usrp2_wfm_rcv.py*
h4. gr-utils/src/python
* *usrp_fft.py*
* *usrp2_fft.py*
* *usrp_oscope.py*
* *usrp_rx_nogui.py*
* *usrp_siggen_gui.py*
* *usrp_siggen.py*
h4. gr-noaa/apps
* usrp_rx_hrpt.grc
* usrp_rx_htpt_nogui.grc
* usrp_rx_lrit.grc
h4. gr-pager/apps
* usrp_flex_all.py
* usrp_flex_band.py
* usrp_flex.py
* usrp_rx_flex.grc
h4. gr-qtgui/apps
* *usrp_display.py*
* *usrp2_display.py*
h4. gr-radio-astronomy/src/python
Removed. The radio astronomy has been replaced by simple-ra in cgran (https://www.cgran.org/wiki/simple_ra)
* *usrp_psr_receiver.py*
* *usrp_ra_receiver.py*