summaryrefslogtreecommitdiff
path: root/gnuradio-core/src/python/gnuradio/blks2impl
diff options
context:
space:
mode:
authorTom Rondeau <trondeau@vt.edu>2012-12-21 15:11:39 -0500
committerTom Rondeau <trondeau@vt.edu>2012-12-21 21:19:13 -0500
commit55d3e4a47958be287648a2021f7e92d81086b2d9 (patch)
treeae0195c457f2cf2734376679cc88c2d728040680 /gnuradio-core/src/python/gnuradio/blks2impl
parentfa781237f341a74a243a9fb930daee7e62c3a682 (diff)
blocks: removes blocks moved to gr-blocks from gnuradio-core.
Also fixes up some other missing moves.
Diffstat (limited to 'gnuradio-core/src/python/gnuradio/blks2impl')
-rw-r--r--gnuradio-core/src/python/gnuradio/blks2impl/CMakeLists.txt29
-rw-r--r--gnuradio-core/src/python/gnuradio/blks2impl/__init__.py1
-rw-r--r--gnuradio-core/src/python/gnuradio/blks2impl/digital_voice.py.real102
-rw-r--r--gnuradio-core/src/python/gnuradio/blks2impl/filterbank.py171
-rw-r--r--gnuradio-core/src/python/gnuradio/blks2impl/rational_resampler.py127
-rw-r--r--gnuradio-core/src/python/gnuradio/blks2impl/stream_to_vector_decimator.py101
6 files changed, 0 insertions, 531 deletions
diff --git a/gnuradio-core/src/python/gnuradio/blks2impl/CMakeLists.txt b/gnuradio-core/src/python/gnuradio/blks2impl/CMakeLists.txt
deleted file mode 100644
index dae287ca3a..0000000000
--- a/gnuradio-core/src/python/gnuradio/blks2impl/CMakeLists.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-# Copyright 2010-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(GrPython)
-
-GR_PYTHON_INSTALL(FILES
- __init__.py
- filterbank.py
- rational_resampler.py
- stream_to_vector_decimator.py
- DESTINATION ${GR_PYTHON_DIR}/gnuradio/blks2impl
- COMPONENT "core_python"
-)
diff --git a/gnuradio-core/src/python/gnuradio/blks2impl/__init__.py b/gnuradio-core/src/python/gnuradio/blks2impl/__init__.py
deleted file mode 100644
index a4917cf64c..0000000000
--- a/gnuradio-core/src/python/gnuradio/blks2impl/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-# make this a package
diff --git a/gnuradio-core/src/python/gnuradio/blks2impl/digital_voice.py.real b/gnuradio-core/src/python/gnuradio/blks2impl/digital_voice.py.real
deleted file mode 100644
index 6ec66825c1..0000000000
--- a/gnuradio-core/src/python/gnuradio/blks2impl/digital_voice.py.real
+++ /dev/null
@@ -1,102 +0,0 @@
-#!/usr/bin/env python
-#
-# Copyright 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.
-#
-
-"""
-Digital voice Tx and Rx using GSM 13kbit vocoder and GMSK.
-
-Runs channel at 32kbit/sec. Currently uses fake channel coding,
-but there's room for a rate 1/2 coder.
-"""
-
-from gnuradio import gr, gru
-from gnuradio.blksimpl.gmsk import gmsk_mod, gmsk_demod
-
-from gnuradio.vocoder import gsm_full_rate
-
-# Size of gsm full rate speech encoder output packet in bytes
-
-GSM_FRAME_SIZE = 33
-
-# Size of packet in bytes that we send to GMSK modulator:
-#
-# Target: 256kS/sec air rate.
-#
-# 256kS 1 sym 1 bit 1 byte 0.020 sec 80 bytes
-# ---- * ----- * ----- * ------ * --------- = --------
-# sec 8 S 1 sym 8 bits frame frame
-#
-# gr_simple_framer add 10 bytes of overhead.
-
-AIR_FRAME_SIZE = 70
-
-
-class digital_voice_tx(gr.hier_block):
- """
- Hierarchical block for digital voice tranmission.
-
- The input is 8kS/sec floating point audio in the range [-1,+1]
- The output is 256kS/sec GMSK modulated complex baseband signal in the range [-1,+1].
- """
- def __init__(self, fg):
- samples_per_symbol = 8
- symbol_rate = 32000
- bt = 0.3 # Gaussian filter bandwidth * symbol time
-
- src_scale = gr.multiply_const_ff(32767)
- f2s = gr.float_to_short()
- voice_coder = gsm_full_rate.encode_sp()
-
- channel_coder = gr.fake_channel_encoder_pp(GSM_FRAME_SIZE, AIR_FRAME_SIZE)
- p2s = gr.parallel_to_serial(gr.sizeof_char, AIR_FRAME_SIZE)
-
- mod = gmsk_mod(fg, sps=samples_per_symbol,
- symbol_rate=symbol_rate, bt=bt,
- p_size=AIR_FRAME_SIZE)
-
- fg.connect(src_scale, f2s, voice_coder, channel_coder, p2s, mod)
- gr.hier_block.__init__(self, fg, src_scale, mod)
-
-
-class digital_voice_rx(gr.hier_block):
- """
- Hierarchical block for digital voice reception.
-
- The input is 256kS/sec GMSK modulated complex baseband signal.
- The output is 8kS/sec floating point audio in the range [-1,+1]
- """
- def __init__(self, fg):
- samples_per_symbol = 8
- symbol_rate = 32000
-
- demod = gmsk_demod(fg, sps=samples_per_symbol,
- symbol_rate=symbol_rate,
- p_size=AIR_FRAME_SIZE)
-
- s2p = gr.serial_to_parallel(gr.sizeof_char, AIR_FRAME_SIZE)
- channel_decoder = gr.fake_channel_decoder_pp(AIR_FRAME_SIZE, GSM_FRAME_SIZE)
-
- voice_decoder = gsm_full_rate.decode_ps()
- s2f = gr.short_to_float ()
- sink_scale = gr.multiply_const_ff(1.0/32767.)
-
- fg.connect(demod, s2p, channel_decoder, voice_decoder, s2f, sink_scale)
- gr.hier_block.__init__(self, fg, demod, sink_scale)
diff --git a/gnuradio-core/src/python/gnuradio/blks2impl/filterbank.py b/gnuradio-core/src/python/gnuradio/blks2impl/filterbank.py
deleted file mode 100644
index 29e50bc2a3..0000000000
--- a/gnuradio-core/src/python/gnuradio/blks2impl/filterbank.py
+++ /dev/null
@@ -1,171 +0,0 @@
-#
-# Copyright 2005,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.
-#
-
-import sys
-from gnuradio import gr, gru
-
-def _generate_synthesis_taps(mpoints):
- return [] # FIXME
-
-
-def _split_taps(taps, mpoints):
- assert (len(taps) % mpoints) == 0
- result = [list() for x in range(mpoints)]
- for i in xrange(len(taps)):
- (result[i % mpoints]).append(taps[i])
- return [tuple(x) for x in result]
-
-
-class synthesis_filterbank(gr.hier_block2):
- """
- Uniformly modulated polyphase DFT filter bank: synthesis
-
- See http://cnx.org/content/m10424/latest
- """
- def __init__(self, mpoints, taps=None):
- """
- Takes M complex streams in, produces single complex stream out
- that runs at M times the input sample rate
-
- Args:
- mpoints: number of freq bins/interpolation factor/subbands
- taps: filter taps for subband filter
-
- The channel spacing is equal to the input sample rate.
- The total bandwidth and output sample rate are equal the input
- sample rate * nchannels.
-
- Output stream to frequency mapping:
-
- channel zero is at zero frequency.
-
- if mpoints is odd:
-
- Channels with increasing positive frequencies come from
- channels 1 through (N-1)/2.
-
- Channel (N+1)/2 is the maximum negative frequency, and
- frequency increases through N-1 which is one channel lower
- than the zero frequency.
-
- if mpoints is even:
-
- Channels with increasing positive frequencies come from
- channels 1 through (N/2)-1.
-
- Channel (N/2) is evenly split between the max positive and
- negative bins.
-
- Channel (N/2)+1 is the maximum negative frequency, and
- frequency increases through N-1 which is one channel lower
- than the zero frequency.
-
- Channels near the frequency extremes end up getting cut
- off by subsequent filters and therefore have diminished
- utility.
- """
- item_size = gr.sizeof_gr_complex
- gr.hier_block2.__init__(self, "synthesis_filterbank",
- gr.io_signature(mpoints, mpoints, item_size), # Input signature
- gr.io_signature(1, 1, item_size)) # Output signature
-
-
- if taps is None:
- taps = _generate_synthesis_taps(mpoints)
-
- # pad taps to multiple of mpoints
- r = len(taps) % mpoints
- if r != 0:
- taps = taps + (mpoints - r) * (0,)
-
- # split in mpoints separate set of taps
- sub_taps = _split_taps(taps, mpoints)
-
- self.ss2v = gr.streams_to_vector(item_size, mpoints)
- self.ifft = gr.fft_vcc(mpoints, False, [])
- self.v2ss = gr.vector_to_streams(item_size, mpoints)
- # mpoints filters go in here...
- self.ss2s = gr.streams_to_stream(item_size, mpoints)
-
- for i in range(mpoints):
- self.connect((self, i), (self.ss2v, i))
-
- self.connect(self.ss2v, self.ifft, self.v2ss)
-
- # build mpoints fir filters...
- for i in range(mpoints):
- f = gr.fft_filter_ccc(1, sub_taps[i])
- self.connect((self.v2ss, i), f)
- self.connect(f, (self.ss2s, i))
-
- self.connect(self.ss2s, self)
-
-class analysis_filterbank(gr.hier_block2):
- """
- Uniformly modulated polyphase DFT filter bank: analysis
-
- See http://cnx.org/content/m10424/latest
- """
- def __init__(self, mpoints, taps=None):
- """
- Takes 1 complex stream in, produces M complex streams out
- that runs at 1/M times the input sample rate
-
- Args:
- mpoints: number of freq bins/interpolation factor/subbands
- taps: filter taps for subband filter
-
- Same channel to frequency mapping as described above.
- """
- item_size = gr.sizeof_gr_complex
- gr.hier_block2.__init__(self, "analysis_filterbank",
- gr.io_signature(1, 1, item_size), # Input signature
- gr.io_signature(mpoints, mpoints, item_size)) # Output signature
-
- if taps is None:
- taps = _generate_synthesis_taps(mpoints)
-
- # pad taps to multiple of mpoints
- r = len(taps) % mpoints
- if r != 0:
- taps = taps + (mpoints - r) * (0,)
-
- # split in mpoints separate set of taps
- sub_taps = _split_taps(taps, mpoints)
-
- # print >> sys.stderr, "mpoints =", mpoints, "len(sub_taps) =", len(sub_taps)
-
- self.s2ss = gr.stream_to_streams(item_size, mpoints)
- # filters here
- self.ss2v = gr.streams_to_vector(item_size, mpoints)
- self.fft = gr.fft_vcc(mpoints, True, [])
- self.v2ss = gr.vector_to_streams(item_size, mpoints)
-
- self.connect(self, self.s2ss)
-
- # build mpoints fir filters...
- for i in range(mpoints):
- f = gr.fft_filter_ccc(1, sub_taps[mpoints-i-1])
- self.connect((self.s2ss, i), f)
- self.connect(f, (self.ss2v, i))
- self.connect((self.v2ss, i), (self, i))
-
- self.connect(self.ss2v, self.fft, self.v2ss)
diff --git a/gnuradio-core/src/python/gnuradio/blks2impl/rational_resampler.py b/gnuradio-core/src/python/gnuradio/blks2impl/rational_resampler.py
deleted file mode 100644
index 33b5b0b1f3..0000000000
--- a/gnuradio-core/src/python/gnuradio/blks2impl/rational_resampler.py
+++ /dev/null
@@ -1,127 +0,0 @@
-#
-# Copyright 2005,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.
-#
-
-from gnuradio import gr, gru, filter
-
-_plot = None
-
-def design_filter(interpolation, decimation, fractional_bw):
- """
- Given the interpolation rate, decimation rate and a fractional bandwidth,
- design a set of taps.
-
- Args:
- interpolation: interpolation factor (integer > 0)
- decimation: decimation factor (integer > 0)
- fractional_bw: fractional bandwidth in (0, 0.5) 0.4 works well. (float)
- Returns:
- : sequence of numbers
- """
-
- if fractional_bw >= 0.5 or fractional_bw <= 0:
- raise ValueError, "Invalid fractional_bandwidth, must be in (0, 0.5)"
-
- beta = 5.0
- trans_width = 0.5 - fractional_bw
- mid_transition_band = 0.5 - trans_width/2
-
- taps = gr.firdes.low_pass(interpolation, # gain
- 1, # Fs
- mid_transition_band/interpolation, # trans mid point
- trans_width/interpolation, # transition width
- gr.firdes.WIN_KAISER,
- beta # beta
- )
-
- return taps
-
-
-
-class _rational_resampler_base(gr.hier_block2):
- """
- base class for all rational resampler variants.
- """
- def __init__(self, resampler_base,
- interpolation, decimation, taps=None, fractional_bw=None):
- """
- Rational resampling polyphase FIR filter.
-
- Either taps or fractional_bw may be specified, but not both.
- If neither is specified, a reasonable default, 0.4, is used as
- the fractional_bw.
-
- Args:
- interpolation: interpolation factor (integer > 0)
- decimation: decimation factor (integer > 0)
- taps: optional filter coefficients (sequence)
- fractional_bw: fractional bandwidth in (0, 0.5), measured at final freq (use 0.4) (float)
- """
-
- if not isinstance(interpolation, int) or interpolation < 1:
- raise ValueError, "interpolation must be an integer >= 1"
-
- if not isinstance(decimation, int) or decimation < 1:
- raise ValueError, "decimation must be an integer >= 1"
-
- if taps is None and fractional_bw is None:
- fractional_bw = 0.4
-
- d = gru.gcd(interpolation, decimation)
- interpolation = interpolation // d
- decimation = decimation // d
-
- if taps is None:
- taps = design_filter(interpolation, decimation, fractional_bw)
-
- resampler = resampler_base(interpolation, decimation, taps)
- gr.hier_block2.__init__(self, "rational_resampler",
- gr.io_signature(1, 1, resampler.input_signature().sizeof_stream_item(0)),
- gr.io_signature(1, 1, resampler.output_signature().sizeof_stream_item(0)))
-
- self.connect(self, resampler, self)
-
-
-class rational_resampler_fff(_rational_resampler_base):
- def __init__(self, interpolation, decimation, taps=None, fractional_bw=None):
- """
- Rational resampling polyphase FIR filter with
- float input, float output and float taps.
- """
- _rational_resampler_base.__init__(self, filter.rational_resampler_base_fff,
- interpolation, decimation, taps, fractional_bw)
-
-class rational_resampler_ccf(_rational_resampler_base):
- def __init__(self, interpolation, decimation, taps=None, fractional_bw=None):
- """
- Rational resampling polyphase FIR filter with
- complex input, complex output and float taps.
- """
- _rational_resampler_base.__init__(self, filter.rational_resampler_base_ccf,
- interpolation, decimation, taps, fractional_bw)
-
-class rational_resampler_ccc(_rational_resampler_base):
- def __init__(self, interpolation, decimation, taps=None, fractional_bw=None):
- """
- Rational resampling polyphase FIR filter with
- complex input, complex output and complex taps.
- """
- _rational_resampler_base.__init__(self, filter.rational_resampler_base_ccc,
- interpolation, decimation, taps, fractional_bw)
diff --git a/gnuradio-core/src/python/gnuradio/blks2impl/stream_to_vector_decimator.py b/gnuradio-core/src/python/gnuradio/blks2impl/stream_to_vector_decimator.py
deleted file mode 100644
index d6808b722f..0000000000
--- a/gnuradio-core/src/python/gnuradio/blks2impl/stream_to_vector_decimator.py
+++ /dev/null
@@ -1,101 +0,0 @@
-#
-# Copyright 2008 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.
-#
-
-from gnuradio import gr
-
-class stream_to_vector_decimator(gr.hier_block2):
- """
- Convert the stream to a vector, decimate the vector stream to achieve the vector rate.
- """
-
- def __init__(self, item_size, sample_rate, vec_rate, vec_len):
- """
- Create the block chain.
-
- Args:
- item_size: the number of bytes per sample
- sample_rate: the rate of incoming samples
- vec_rate: the rate of outgoing vectors (same units as sample_rate)
- vec_len: the length of the outgoing vectors in items
- """
- self._vec_rate = vec_rate
- self._vec_len = vec_len
- self._sample_rate = sample_rate
-
- gr.hier_block2.__init__(self, "stream_to_vector_decimator",
- gr.io_signature(1, 1, item_size), # Input signature
- gr.io_signature(1, 1, item_size*vec_len)) # Output signature
-
- s2v = gr.stream_to_vector(item_size, vec_len)
- self.one_in_n = gr.keep_one_in_n(item_size*vec_len, 1)
- self._update_decimator()
- self.connect(self, s2v, self.one_in_n, self)
-
- def set_sample_rate(self, sample_rate):
- """
- Set the new sampling rate and update the decimator.
-
- Args:
- sample_rate: the new rate
- """
- self._sample_rate = sample_rate
- self._update_decimator()
-
- def set_vec_rate(self, vec_rate):
- """
- Set the new vector rate and update the decimator.
-
- Args:
- vec_rate: the new rate
- """
- self._vec_rate = vec_rate
- self._update_decimator()
-
- def set_decimation(self, decim):
- """
- Set the decimation parameter directly.
-
- Args:
- decim: the new decimation
- """
- self._decim = max(1, int(round(decim)))
- self.one_in_n.set_n(self._decim)
-
- def _update_decimator(self):
- self.set_decimation(self._sample_rate/self._vec_len/self._vec_rate)
-
- def decimation(self):
- """
- Returns the actual decimation.
- """
- return self._decim
-
- def sample_rate(self):
- """
- Returns configured sample rate.
- """
- return self._sample_rate
-
- def frame_rate(self):
- """
- Returns actual frame rate
- """
- return self._sample_rate/self._vec_len/self._decim