diff options
author | Ben Reynwar <ben@reynwar.net> | 2013-03-07 23:11:20 -0700 |
---|---|---|
committer | Ben Reynwar <ben@reynwar.net> | 2013-03-07 23:11:20 -0700 |
commit | a7c7cf1186ec73786e6bbefb430c940c8747f857 (patch) | |
tree | b2f39e170547202ed772d95260563a73288b3326 /gr-digital/python/psk.py | |
parent | b841288cfb261da28746c4b3aaa7a1dfc078ebfd (diff) |
digital: Enabling uninstalled python imports.
Diffstat (limited to 'gr-digital/python/psk.py')
-rw-r--r-- | gr-digital/python/psk.py | 138 |
1 files changed, 0 insertions, 138 deletions
diff --git a/gr-digital/python/psk.py b/gr-digital/python/psk.py deleted file mode 100644 index 1816ffb4ba..0000000000 --- a/gr-digital/python/psk.py +++ /dev/null @@ -1,138 +0,0 @@ -# -# Copyright 2005,2006,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. -# - -""" -PSK modulation and demodulation. -""" - -from math import pi, log -from cmath import exp - -import digital_swig -import modulation_utils -from utils import mod_codes, gray_code -from generic_mod_demod import generic_mod, generic_demod -from generic_mod_demod import shared_mod_args, shared_demod_args - -# Default number of points in constellation. -_def_constellation_points = 4 -# The default encoding (e.g. gray-code, set-partition) -_def_mod_code = mod_codes.GRAY_CODE -# Default use of differential encoding -_def_differential = True - -def create_encodings(mod_code, arity, differential): - post_diff_code = None - if mod_code not in mod_codes.codes: - raise ValueError('That modulation code does not exist.') - if mod_code == mod_codes.GRAY_CODE: - if differential: - pre_diff_code = gray_code.gray_code(arity) - post_diff_code = None - else: - pre_diff_code = [] - post_diff_code = gray_code.gray_code(arity) - elif mod_code == mod_codes.NO_CODE: - pre_diff_code = [] - post_diff_code = None - else: - raise ValueError('That modulation code is not implemented for this constellation.') - return (pre_diff_code, post_diff_code) - -# ///////////////////////////////////////////////////////////////////////////// -# PSK constellation -# ///////////////////////////////////////////////////////////////////////////// - -def psk_constellation(m=_def_constellation_points, mod_code=_def_mod_code, - differential=_def_differential): - """ - Creates a PSK constellation object. - """ - k = log(m) / log(2.0) - if (k != int(k)): - raise StandardError('Number of constellation points must be a power of two.') - points = [exp(2*pi*(0+1j)*i/m) for i in range(0,m)] - pre_diff_code, post_diff_code = create_encodings(mod_code, m, differential) - if post_diff_code is not None: - inverse_post_diff_code = mod_codes.invert_code(post_diff_code) - points = [points[x] for x in inverse_post_diff_code] - constellation = digital_swig.constellation_psk(points, pre_diff_code, m) - return constellation - -# ///////////////////////////////////////////////////////////////////////////// -# PSK modulator -# ///////////////////////////////////////////////////////////////////////////// - -class psk_mod(generic_mod): - """ - Hierarchical block for RRC-filtered PSK modulation. - - The input is a byte stream (unsigned char) and the - output is the complex modulated signal at baseband. - - Args: - constellation_points: Number of constellation points (must be a power of two) (integer). - mod_code: Whether to use a gray_code (digital.mod_codes.GRAY_CODE) or not (digital.mod_codes.NO_CODE). - differential: Whether to use differential encoding (boolean). - """ - # See generic_mod for additional arguments - __doc__ += shared_mod_args - - def __init__(self, constellation_points=_def_constellation_points, - mod_code=_def_mod_code, - differential=_def_differential, - *args, **kwargs): - constellation = psk_constellation(constellation_points, mod_code, differential) - super(psk_mod, self).__init__(constellation, differential, *args, **kwargs) - -# ///////////////////////////////////////////////////////////////////////////// -# PSK demodulator -# -# ///////////////////////////////////////////////////////////////////////////// - -class psk_demod(generic_demod): - - """ - Hierarchical block for RRC-filtered PSK modulation. - - The input is a byte stream (unsigned char) and the - output is the complex modulated signal at baseband. - - Args: - constellation_points: Number of constellation points (must be a power of two) (integer). - mod_code: Whether to use a gray_code (digital.mod_codes.GRAY_CODE) or not (digital.mod_codes.NO_CODE). - differential: Whether to use differential encoding (boolean). - """ - # See generic_mod for additional arguments - __doc__ += shared_mod_args - def __init__(self, constellation_points=_def_constellation_points, - mod_code=_def_mod_code, - differential=_def_differential, - *args, **kwargs): - constellation = psk_constellation(constellation_points, mod_code, differential) - super(psk_demod, self).__init__(constellation, differential, *args, **kwargs) - -# -# Add these to the mod/demod registry -# -modulation_utils.add_type_1_mod('psk', psk_mod) -modulation_utils.add_type_1_demod('psk', psk_demod) -modulation_utils.add_type_1_constellation('psk', psk_constellation) |